How to pack ternary numbers in 8-bit bytes
a day ago
- #ternary packing
- #SIMD optimization
- #BitNet b1.58
- 文章讨论了如何将三元数(trits)高效打包到8位字节中,以便进行SIMD友好的解包操作,重点研究了块大小为5个trits的方案,该方案能以99.06%的效率存入8位。
- 打包过程涉及将trits(值-1、0、1)转换为三进制数字(0、1、2),并采用定点算术以避免解包时的除法运算,从而实现快速的SIMD操作。
- 一项关键技术利用乘法和位移操作来提取数字,无需模运算,该方法已在llama.cpp中用于TriLMs和BitNet b1.58模型,并支持AVX2和ARM NEON的SIMD指令集。