8비트에 3진수 5자리를 꽉 채우는 법: SIMD 친화적 언패킹

How to pack ternary numbers in 8-bit bytes

8비트에 3진수 5자리를 꽉 채우는 법: SIMD 친화적 언패킹

BitNet b1.58의 3진 가중치를 이론상 최적 밀도(log(3)/log(2) 비트)에 근접하게 패킹하는 방법을 소개한다. 3의 거듭제곱과 2의 거듭제곱의 근접성을 이용해 5개의 3진 숫자(트리트)를 8비트에 99.06% 효율로 담아낸다. 언패킹 시 나눗셈 대신 고정소수점 곱셈을 사용해 SIMD에 최적화했으며, 이 기법은 llama.cpp의 TriLM 및 BitNet b1.58 지원에 실제로 사용되었다.

나눗셈 대신 곱셈으로 최상위 숫자를 추출할 수 있다면 어떨까? 고정소수점 수가 구원해준다!

이 날의 다른 글

2026-07-21