GitHub - microsoft/BitNet: Official inference framework for 1-bit LLMs
요약
상세 내용
주요 특징 및 성능:
* 최적화된 커널: BitNet.cpp는 1.58비트 모델의 빠르고 손실 없는 추론을 지원하는 최적화된 커널(kernel)을 제공합니다. 현재 CPU(ARM, x86)를 지원하며, 향후 NPU(Neural Processing Unit) 지원도 예정되어 있습니다.
* 성능 향상:
* ARM CPU: 1.37배에서 5.07배의 속도 향상과 55.4%에서 70.0%의 에너지 소비 감소를 달성합니다. 모델 크기가 클수록 성능 향상 폭이 더 커집니다.
* x86 CPU: 2.37배에서 6.17배의 속도 향상과 71.9%에서 82.2%의 에너지 절감을 보여줍니다.
* 온디바이스(On-device) 추론: 단일 CPU에서 100B(1000억) BitNet b1.58 모델을 인간의 독서 속도(초당 5-7 토큰)와 유사하게 실행할 수 있어, 로컬 장치에서 LLM을 실행할 가능성을 크게 높입니다.
핵심 방법론 (Core Methodology):
BitNet.cpp의 핵심은 1비트(및 1.58비트, 즉 Ternary) LLM의 효율적인 추론을 위한 특화된 커널에 있습니다. 이는 기존의 부동 소수점(floating-point) 연산 대신, T-MAC에서 개척된 Lookup Table(룩업 테이블) 방법론을 기반으로 합니다.
* 저비트 양자화(Low-bit Quantization): BitNet b1.58과 같은 모델은 가중치를 극단적으로 낮은 비트 수(1비트 또는 1.58비트)로 양자화합니다. 1.58비트 가중치는 사실상 의 값을 가지는 삼치(ternary) 값에 스케일링 팩터(scaling factor)가 곱해진 형태입니다.
* Lookup Table 기반 연산: 일반적인 행렬 곱셈()에서, 가중치가 1비트 또는 삼치 값인 경우, 곱셈 연산이 매우 단순해집니다(, , ). BitNet.cpp는 이러한 단순한 연산의 결과를 미리 계산하여 룩업 테이블에 저장합니다. 추론 시에는 실제 곱셈 연산을 수행하는 대신, 룩업 테이블에서 해당 인덱스의 값을 찾아오는 방식을 사용합니다.
* 효율성 증대:
* 연산 복잡도 감소: 복잡한 부동 소수점 연산 유닛(FPU) 대신, 빠르고 간단한 테이블 조회 및 비트 연산을 활용하여 연산 복잡도를 획기적으로 줄입니다.
* 메모리 대역폭 최적화: 1비트 가중치는 기존 부동 소수점 가중치에 비해 훨씬 적은 메모리 공간을 차지합니다. 이는 메모리 대역폭 요구 사항을 줄여 데이터 전송 속도를 향상시키고 에너지 소비를 낮춥니다.
* 특화된 커널 최적화: CPU 아키텍처(ARM, x86)에 맞춰 최적화된 어셈블리 수준의 커널 또는 SIMD(Single Instruction, Multiple Data) 명령어를 사용하여 데이터 처리 효율을 극대화합니다.
* 손실 없는 추론: "손실 없는 추론"은 1.58비트 모델의 경우, 이 최적화된 커널이 원래의 1.58비트 양자화된 모델의 정확도를 그대로 유지하면서 추론 속도만 개선함을 의미합니다. 이는 양자화된 모델의 성능 저하 없이 효율성을 달성하는 중요한 요소입니다.
지원 모델:
BitNet.cpp는 다양한 1비트 LLM을 지원하며, Hugging Face에서 사용 가능한 기존 1비트 LLM을 사용하여 추론 기능을 시연합니다.
* BitNet-b1.58-2B-4T (2.4B 파라미터)
* bitnet\_b1\_58-large (0.7B 파라미터)
* bitnet\_b1\_58-3B (3.3B 파라미터)
* Llama3-8B-1.58-100B-tokens (8.0B 파라미터)
* Falcon3 Family (1B-10B 파라미터)
* Falcon-E Family (1B-3B 파라미터)
지원되는 양자화 타입으로는 I2_S, TL1, TL2가 있으며, 이는 특정 1비트 또는 삼치 양자화 방식과 관련된 내부 구현을 나타냅니다.
개발 현황 (What's New):
* 2025년 5월 20일: BitNet 공식 GPU 추론 커널 발표.
* 2025년 4월 14일: BitNet 공식 2B 파라미터 모델 Hugging Face에 공개.
* 2025년 2월 18일: Bitnet.cpp: Efficient Edge Inference for Ternary LLMs 발표.
* 2024년 11월 8일: BitNet a4.8: 4-bit Activations for 1-bit LLMs 발표.
* 2024년 10월 21일: 1-bit AI Infra: Part 1.1, Fast and Lossless BitNet b1.58 Inference on CPUs 발표.
* 2024년 10월 17일: bitnet.cpp 1.0 출시.
* 2024년 3월 21일: The-Era-of-1-bit-LLMs\_\_Training\_Tips\_Code\_FAQ 발표.
* 2024년 2월 27일: The Era of 1-bit LLMs: All Large Language Models are in 1.58 Bits 발표.
* 2023년 10월 17일: BitNet: Scaling 1-bit Transformers for Large Language Models 발표.
설치 및 사용:
Python, CMake, Clang 등의 요구 사항을 충족한 후, 저장소를 복제하고 requirements.txt를 통해 의존성을 설치하며, setup_env.py 스크립트를 사용하여 환경을 설정하고 프로젝트를 빌드합니다. run_inference.py를 통해 모델 추론을 실행할 수 있으며, e2e_benchmark.py 스크립트를 사용하여 성능 벤치마크를 수행할 수 있습니다. .safetensors 체크포인트를 gguf 형식으로 변환하는 유틸리티도 제공됩니다.