1비트 LLM을 위한 추론 프레임워크 BitNet
(github.com/microsoft)- bitnet.cpp는 1비트 대형언어모델(LLM)의 공식 추론 프레임워크로, CPU와 GPU에서 빠르고 손실 없는 추론을 지원
- ARM CPU에서 1.37~5.07배 속도 향상과 55.4~70% 에너지 절감, x86 CPU에서 2.37~6.17배 속도 향상과 71.9~82.2% 에너지 절감을 달성
- 병렬 커널 구현과 임베딩 양자화를 추가해 기존 대비 1.15~2.1배 추가 성능 향상을 제공
- BitNet b1.58 모델을 단일 CPU에서 초당 5~7토큰 속도로 실행 가능, 로컬 환경에서 초대형 모델 운용 가능성 확대
- llama.cpp와 T-MAC 기반으로 개발되어, 저비트 LLM 추론 효율화를 위한 오픈소스 생태계 확장에 기여
bitnet.cpp 개요
- bitnet.cpp는 1비트 LLM(예: BitNet b1.58) 을 위한 공식 추론 프레임워크로, CPU와 GPU에서 최적화된 커널을 제공
- NPU 지원은 향후 추가 예정
- 첫 릴리스는 CPU 추론을 지원하며, ARM과 x86 아키텍처 모두에서 속도와 에너지 효율 개선을 입증
- ARM CPU: 1.37~5.07배 속도 향상, 55.4~70% 에너지 절감
- x86 CPU: 2.37~6.17배 속도 향상, 71.9~82.2% 에너지 절감
- 100B 파라미터 BitNet b1.58 모델을 단일 CPU에서 초당 5~7토큰 속도로 실행 가능
최신 최적화
- 병렬 커널 구현과 타일링 구성, 임베딩 양자화 기능이 추가되어, 기존 대비 1.15~2.1배 추가 속도 향상 달성
- 다양한 하드웨어 플랫폼과 워크로드에서 성능 개선 확인
- 세부 기술 내용은
optimization guide문서에서 제공
데모 및 공식 모델
- Apple M2에서 BitNet b1.58 3B 모델을 실행하는 데모 제공
- 공식 모델로 BitNet-b1.58-2B-4T가 Hugging Face에 공개되어 있으며, x86 및 ARM CPU에서 지원
- 지원 모델에는 bitnet_b1_58-large(0.7B), bitnet_b1_58-3B(3.3B), Llama3-8B-1.58, Falcon3, Falcon-E 시리즈 포함
설치 및 빌드
- 요구사항: Python 3.9 이상, CMake 3.22 이상, Clang 18 이상
- Windows 사용자는 Visual Studio 2022 설치 필요
- Debian/Ubuntu 사용자는 자동 설치 스크립트 제공
- Conda 환경 사용을 권장하며,
setup_env.py로 모델 환경 설정 가능 - Hugging Face에서 모델 다운로드 후 로컬 경로로 실행 가능
사용법 및 벤치마크
-
run_inference.py로 양자화된 모델 추론 실행- 주요 인자: 모델 경로(-m), 프롬프트(-p), 스레드 수(-t), 컨텍스트 크기(-c), 온도(-temp)
-
e2e_benchmark.py스크립트로 토큰 수, 프롬프트 길이, 스레드 수를 지정해 성능 측정 가능 - 공개 모델이 없는 경우,
generate-dummy-bitnet-model.py로 더미 모델 생성 후 벤치마크 수행 가능
모델 변환 및 FAQ
-
.safetensors체크포인트를 gguf 포맷으로 변환하는 스크립트 제공 - FAQ에서는 llama.cpp 빌드 오류(std::chrono 관련) 해결 방법과 Windows에서 clang 환경 설정 절차 안내
- Visual Studio 개발자 명령 프롬프트 또는 PowerShell에서 환경 초기화 필요
기술 기반 및 감사
- bitnet.cpp는 llama.cpp 프레임워크를 기반으로 하며, T-MAC의 Lookup Table 방법론을 활용
- 3진(ternary) 모델을 넘어서는 저비트 LLM 추론에는 T-MAC 사용을 권장
- 오픈소스 커뮤니티 기여자들에게 감사 표명
Hacker News 의견들
-
Microsoft가 실제로는 1.58비트가 아닌 2비트를 사용하고 있음
이 경우 -1, 0, 1, 2 네 가지 값을 표현할 수 있음
억제성 시냅스가 20~30%를 차지한다는 점에서, 이런 구조가 생물학적 뇌의 구조와 잘 맞는다고 생각함- 세 번째 문장, 즉 “억제성 시냅스가 20~30%를 차지한다”는 부분을 좀 더 설명해줄 수 있는지 궁금함
-
나는 종종 “최소 기능 LLM”이 어떤 형태일지 궁금해함
즉, 최소한의 정보만 가지고 나머지는 구글링으로 보완해도 충분히 합리적인 답을 낼 수 있는 모델 말임
Encyclopedia Britannica 같은 곳이 데이터를 LLM에 판매하고 결과 검증 서비스를 제공하면 큰 차이를 만들 수 있을 것 같음
Wikipedia도 좋지만 인간의 오류와 편향이 많다는 점이 아쉬움-
Andrej Karpathy의 짧은 영상을 보면 이 주제에 대해 이야기함
작은 LLM들은 이미 이런 방향으로 발전 중이며, 일반 지식은 부족하지만 도구 활용 능력(예: 구글링) 은 점점 좋아지고 있음
다만 자신이 아는 것과 모르는 것을 명확히 구분하는 건 여전히 어려운 문제임 - 내가 생각하는 건 “최소 기능 LLM”이라기보다 언어만 잘 알고 지식은 거의 없는 LLM임
마치 특정 기기를 모르는 엔지니어처럼, 문제 해결 능력은 있지만 세부 지식은 없음
이런 모델이 단순히 구글링이나 위키 검색으로 해결할 수 있을지는 의문이지만, 엣지 LLM 구조는 앞으로 표준이 될 것 같음 -
추론 능력은 결국 학습 중 정보량에 의존함
훈련 데이터에 포함된 정보일수록 검색과 해석이 쉬워짐
따라서 내부 암기보다는 외부 메모리(검색 등) 의존형 훈련이 실용적일 수 있음 - 위키피디아의 오류와 편향을 걱정하면서, 동시에 웹 접근이 가능한 LLM이 더 나을 거라 보는 건 모순처럼 느껴짐
나는 오히려 그 반대라고 생각함 - “합리적인 답변”이란 표현이 구체적으로 어떤 수준을 의미하는지에 따라 결과가 달라질 것 같음
-
Andrej Karpathy의 짧은 영상을 보면 이 주제에 대해 이야기함
-
원 논문(pdf)에 따르면 fp16 모델 대비 약 4~5배의 파라미터가 필요함
직접 빌드해볼 수는 있지만, 처음부터 학습해야 하므로 선택지는 제한적임
그래도 최신 4비트·8비트 양자화 모델보다 추론 속도는 빠를 것으로 예상함 -
진짜 핵심은 에너지 절감 효과임
CPU 추론에서 70~82% 절감이 가능하다고 함
만약 1비트 모델이 충분히 좋아진다면, GPU 없이도 일반 하드웨어에서 LLM을 돌릴 수 있게 되어 접근성의 판도가 바뀔 것임 -
bitnet.cpp가 1비트 LLM(BitNet b1.58 등)을 위한 공식 추론 프레임워크라고 하지만,
“1비트냐 1트릿(trit)이냐”는 혼동이 있음- “1비트 LLM”은 마케팅 용어에 가깝고, 실제로는 3가지 상태(-1, 0, 1) 를 쓰므로 1.58비트에 해당함
- log₂(3)≈1.58이므로, 이는 2상태(1비트)가 아니라 3상태(1.58비트) 모델임
두 개념을 섞어 쓰는 건 혼란스러움
-
이 프로젝트가 계속 개발되는 걸 보니 반가움
작년에 관련 글을 보고 가능성을 느꼈지만, 새 모델이 안 나와서 아쉬웠음- 하지만 이 접근은 결국 정밀 모델의 양자화일 뿐이라, 추론은 빨라지지만 학습은 빨라지지 않음
진짜 흥미로운 건 부동소수점 연산 없이 이진 모델을 직접 학습하는 방향임
관련 논문은 NeurIPS 2024에 있음
- 하지만 이 접근은 결국 정밀 모델의 양자화일 뿐이라, 추론은 빨라지지만 학습은 빨라지지 않음
-
“100B BitNet을 실행할 수 있다”는 건 모델이 존재한다는 뜻이 아니라 추론 프레임워크가 가능하다는 의미임
- 실제로는 더미 모델을 쓴 것 같음
“1-bit 100b model”을 검색해도 다운로드 가능한 모델은 없음
- 실제로는 더미 모델을 쓴 것 같음
-
모델 출력 품질은 GPT-2 수준의 중얼거림에 가깝고, 문단을 그대로 반복함
심지어(Jenkins, 2010)같은 가짜 인용문을 계속 재사용함- 다만 이건 2년 된 3B 파라미터 베이스 모델이며, 100B 토큰만으로 학습된 연구용 버전임
-
제목이 오해를 부름
실제로는 학습된 100B 모델이 아니라, 그걸 처리할 수 있는 추론 프레임워크임
나는 M2 Max 96GB에서 llama.cpp + LiteLLM으로 70B 양자화 모델을 돌리고 있는데, 메모리 대역폭이 병목임
1.58비트 접근은 행렬곱을 덧셈으로 바꾸는 구조라 CPU에서 근본적으로 다른 계산 패턴을 가짐
만약 CPU 단일 코어에서 100B급 모델을 초당 5~7토큰으로 돌릴 수 있다면, 온디바이스 추론의 전환점이 될 것임
프레임워크는 준비됐고, 이제 누군가 실제로 모델을 학습해야 함- Microsoft가 2년 동안 직접 모델을 학습하지 않았다면, 그들의 주장을 그대로 믿기 어렵다고 생각함
- “새 모델”이라지만 Hugging Face에 올라온 가중치는 11개월 전 것이고, 2B 파라미터 수준임
홍보 대비 실질 성과가 빈약함 -
2비트 연산은 하드웨어 구현이 매우 저렴하므로, 전용 칩을 만들면 GPU 없이도 강력한 추론이 가능할 것임
학습에는 여전히 GPU가 필요하겠지만, 추론용 하드웨어는 훨씬 단순해질 수 있음 - 초당 5~7토큰 속도는 실제 읽기 속도보다 느림
나는 7토큰/초로 출력되는 모델을 써봤는데, 느린 사람 뒤를 걷는 듯한 답답함이 있었음
로컬 환경에서는 최소 10토큰/초 이상을 목표로 해야 함 - “CPU에서의 계산 프로파일이 근본적으로 다르다”는 주장에는 의문이 있음
현대 CPU의 FMA(Fused Multiply-Add) 명령은 단순 덧셈과 거의 동일한 처리량을 가짐
-
앞으로 NPU 탑재 PC들이 본격적으로 성과를 낼 시점이 궁금함
AMD는 NPU/iGPU 하이브리드 추론 커널에서 좋은 결과를 내고 있음
이런 대형 모델이 NPU에서 돌아가면 CPU 대비 전력 효율이 훨씬 좋아질 것임- 나는 최근 OpenAI의 Whisper를 CPU로 돌렸다가, Intel NPU 최적화 버전을 써봤는데 6배 빠르고 훨씬 조용했음
이후로 NPU의 팬이 되었음. 물론 RTX 5090급은 아니지만, CPU보다는 훨씬 효율적임 - Rockchip RK3588 SBC의 NPU에서도 이미 작은 LLM을 돌릴 수 있음
소프트웨어 생태계가 불안정하긴 하지만, CPU/GPU 사용률 거의 0으로 작동함 - 다만 NPU가 정말 그렇게 강력한지 의문임
나는 그것들이 저전력 중심 설계라고 알고 있었음
- 나는 최근 OpenAI의 Whisper를 CPU로 돌렸다가, Intel NPU 최적화 버전을 써봤는데 6배 빠르고 훨씬 조용했음