BitNet์ 1-bit ๊ณ์ด LLM์ CPU์ GPU์์ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ๋๋ฆฌ๊ธฐ ์ํ ๊ณต์ ์ถ๋ก ํ๋ ์์ํฌ๋ค. ์์ฆ ๋ก์ปฌ LLM ํ๋ฆ์ด ๋ค์ ์ธ์ง๋ ๊ฐ์ด๋ฐ, โ์์ ์์ํ ์ต์ ํโ๊ฐ ์๋๋ผ ์์ ์ ๋นํธ ์ค๊ณ๋ฅผ ์ ๋๋ก ํ์ฉํ๋ ์ชฝ์ผ๋ก ์ฃผ๋ชฉ๋ฐ๊ณ ์๋ค.
์ด ๋ ํฌ๋ 10์ ยท โญ +4.8K๋ก ํ์๋ ํ๋ก์ ํธ๋ค. ๋ณ ์ซ์๋ง ๋ณด๋ฉด ์ ํ์ฒ๋ผ ๋ณด์ผ ์ ์์ง๋ง, ์ค์ ๋ก๋ ๊ฐ๋ฐ์๋ค์ด ์ง๊ธ ์ด๋์ ์๊ฐ์ ์ฐ๊ณ ์๋์ง๋ฅผ ๊ฝค ์์งํ๊ฒ ๋๋ฌ๋ธ๋ค. ์คํ ์๊ฐ ํญ๋ฐ์ ์ผ๋ก ํฌ์ง ์์๋ BitNet์ด 10์์ ๋ค์ด์จ ๊ฑด ์์ง์ฑ์ด ํฌ๋ค. ๋ค๋ค ๋ ํฐ ๋ชจ๋ธ๋ง ๋ณด๋ ํ๋ฆ์์, ์ด์ ๋ ๋ก์ปฌ ์ฅ๋นยทCPUยท์ ๋ ฅ ํจ์จ์ด ๋ค์ ์ค์ํ ์ง๋ฌธ์ด ๋๋ค๋ ๋ป์ด๊ธฐ ๋๋ฌธ์ด๋ค. ํนํ CPU ๋จ๋ 100B๊ธ ๊ฐ๋ฅ์ฑ, ์๋์ง ์ ๊ฐ ์์น, ์ถ๊ฐ ์ต์ ํ ์์์ด ๊ฐ๋ฐ์ ํธ๊ธฐ์ฌ์ ๊ฐํ๊ฒ ์๊ทนํ๋ค.
flowchart LR A[๋ฌธ์ ] --> B[bitnet] B --> C[์ค์น] C --> D[์ต์ ์คํ] D --> E[์ ๋ฌด ์ ์ฉ ํ๋จ]
์น ํ ํ์ํ ์นํธ์ํธ
- ์ด ๋ ํฌ์ ํ ์ค ํค์๋๋
bitnet๋ค.- ์ด๋ฒ ๋ณด๊ฐ์์๋ ์ค์น์ ์ฌ์ฉ ์์๋ฅผ ๊ณต์ README ๊ธฐ์ค์ผ๋ก ๋ ์ด์ดํ๊ฒ ์ ๋ฆฌํ๋ค.
- ์ฝ์ ๋๋
์ ์ ์กฐ๊ฑด โ ์ค์น โ ์ฒซ ์คํ โ ๊ฒ์ฆ์์๋ก ๋ณด๋ฉด ๋๋ค.- โ๋๋จํด ๋ณด์ธ๋คโ๋ณด๋ค โ๋ด ์ ๋ฌด์์ ๋ฐ๋ณต ๋น์ฉ์ ์ค์ด๋๊ฐโ๋ฅผ ๋จผ์ ๋ณธ๋ค.
์ด ๋ ํฌ๋ฅผ ํ ์ค๋ก ๋ณด๋ฉด
BitNet์ 1-bit ๊ณ์ด LLM์ CPU์ GPU์์ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ๋๋ฆฌ๊ธฐ ์ํ ๊ณต์ ์ถ๋ก ํ๋ ์์ํฌ๋ค. ์์ฆ ๋ก์ปฌ LLM ํ๋ฆ์ด ๋ค์ ์ธ์ง๋ ๊ฐ์ด๋ฐ, โ์์ ์์ํ ์ต์ ํโ๊ฐ ์๋๋ผ ์์ ์ ๋นํธ ์ค๊ณ๋ฅผ ์ ๋๋ก ํ์ฉํ๋ ์ชฝ์ผ๋ก ์ฃผ๋ชฉ๋ฐ๊ณ ์๋ค.
์ ์ง๊ธ ์ด ๋ ํฌ๊ฐ ๋จ๋๊ฐ
์คํ ์๊ฐ ํญ๋ฐ์ ์ผ๋ก ํฌ์ง ์์๋ BitNet์ด 10์์ ๋ค์ด์จ ๊ฑด ์์ง์ฑ์ด ํฌ๋ค. ๋ค๋ค ๋ ํฐ ๋ชจ๋ธ๋ง ๋ณด๋ ํ๋ฆ์์, ์ด์ ๋ ๋ก์ปฌ ์ฅ๋นยทCPUยท์ ๋ ฅ ํจ์จ์ด ๋ค์ ์ค์ํ ์ง๋ฌธ์ด ๋๋ค๋ ๋ป์ด๊ธฐ ๋๋ฌธ์ด๋ค. ํนํ CPU ๋จ๋ 100B๊ธ ๊ฐ๋ฅ์ฑ, ์๋์ง ์ ๊ฐ ์์น, ์ถ๊ฐ ์ต์ ํ ์์์ด ๊ฐ๋ฐ์ ํธ๊ธฐ์ฌ์ ๊ฐํ๊ฒ ์๊ทนํ๋ค.
๋ ํฌ ์์์ ๋จผ์ ๋ณผ ๊ฒ
- 1.58-bit ๋ชจ๋ธ์ฉ bitnet.cpp ์ถ๋ก ์ปค๋
- x86๊ณผ ARM CPU์์์ ์๋ยท์ ๋ ฅ ํจ์จ ์ต์ ํ
- Hugging Face ๋ชจ๋ธ๊ณผ GPU ์ปค๋, ๊ธฐ์ ๋ณด๊ณ ์๊น์ง ํจ๊ป ๊ณต๊ฐํ๋ ์ํ๊ณ
์ค์น ์ ์ ํ์ธํ ๊ฒ
- python 3.9 ์ด์
- cmake 3.22 ์ด์
- clang 18 ์ด์
- conda ๊ถ์ฅ
- Windows๋ฉด VS2022 Developer Prompt ๊ถ์ฅ
์ค์น ๋ฐฉ๋ฒ
๊ณต์ ํ์ธ ๋งํฌ
- GitHub README: https://github.com/microsoft/BitNet
- ๊ณต์ 2B ๋ชจ๋ธ: https://huggingface.co/microsoft/BitNet-b1.58-2B-4T
- CPU ์ต์ ํ ๊ฐ์ด๋: https://github.com/microsoft/BitNet/blob/main/src/README.md
- GPU README: https://github.com/microsoft/BitNet/blob/main/gpu/README.md
๋น๋ ์ค๋น
Debian/Ubuntu ๊ณ์ด์ด๋ฉด clang ์๋ ์ค์น ์คํฌ๋ฆฝํธ๋ฅผ ์ธ ์ ์๋ค.
bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"Windows๋ Visual Studio 2022์์ C++/CMake/Clang ๋๊ตฌ๋ฅผ ์ผ ๋ค Developer Command Prompt ๋๋ PowerShell์ ์ฐ๋ ๊ฒ์ README๊ฐ ๊ฐํ๊ฒ ๊ถ์ฅํ๋ค.
์์ค์์ ์ค์น
git clone --recursive https://github.com/microsoft/BitNet.git
cd BitNet
conda create -n bitnet-cpp python=3.9
conda activate bitnet-cpp
pip install -r requirements.txt๊ทธ๋ค์ ๋ชจ๋ธ์ ๋ด๋ ค๋ฐ๊ณ ํ๊ฒฝ์ ์ก๋๋ค.
huggingface-cli download microsoft/BitNet-b1.58-2B-4T-gguf --local-dir models/BitNet-b1.58-2B-4T
python setup_env.py -md models/BitNet-b1.58-2B-4T -q i2_ssetup_env.py๋ ๋ชจ๋ธ ๊ฒฝ๋ก(-md)์ ์์ํ ํ์
(-q)์ ๋ฐ๋๋ค.
์ค์น ํ์ธ
- ์ง์ ๋ชจ๋ธ์ด ํ์ฌ CPU ์ํคํ ์ฒ์ ๋ง๋์ง ํ๋ฅผ ๋จผ์ ํ์ธํ๋ค.
- ๊ณต์ 2B ๋ชจ๋ธ๋ก ๊ฐ์ฅ ๋จผ์ ์์ํ๋ ํธ์ด ์์ ํ๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
- ๊ธฐ๋ณธ ์ฌ์ฉ์ quantized model ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ง์ ํด ์ถ๋ก ์ ๋๋ฆฌ๋ ๋ฐฉ์์ด๋ค.
- ์ฒซ ํ๋กฌํํธ๋ ์งง๊ฒ ์ก๊ณ , thread ์์ context size๋ฅผ ๊ธฐ๋ณธ๊ฐ์์ ํฌ๊ฒ ๊ฑด๋๋ฆฌ์ง ์๋๋ค.
- ๊ทธ๋ค์ ๋ฒค์น๋งํฌ ์คํฌ๋ฆฝํธ๋ก ์๋์ ํ์ง์ ๊ฐ์ด ๋ณธ๋ค.
- ์ดํ์์ผ ๋ ํฐ ๋ชจ๋ธ์ด๋ ๋ค๋ฅธ ์์ํ ํ์ ์ ๋น๊ตํ๋ค.
๊ณต์ README์ ๊ธฐ๋ณธ ์ถ๋ก ์์๋ ์๋๋ค.
python run_inference.py -m models/BitNet-b1.58-2B-4T/ggml-model-i2_s.gguf -p "You are a helpful assistant" -cnv์ฃผ์ ์ต์
์ -m(๋ชจ๋ธ ๊ฒฝ๋ก), -p(ํ๋กฌํํธ), -t(threads), -c(context size), -cnv(chat ๋ชจ๋)๋ค.
๋ฒค์น๋งํฌ๋ ์๋์ฒ๋ผ ๋๋ฆด ์ ์๋ค.
python utils/e2e_benchmark.py -m /path/to/model -n 200 -p 256 -t 4์ด๋์ ๋ฐ๋ก ์จ๋จน์ ์ ์๋
์ฌ๋ก A. ๋ก์ปฌ ์ถ๋ก ์คํ
GPU๊ฐ ๋๋ํ์ง ์์ ํ๊ฒฝ์์ ๋ก์ปฌ LLM์ ๋ถ์ฌ๋ณด๊ณ ์ถ๋ค๋ฉด BitNet ๊ณ์ด์ ๋งค์ฐ ํฅ๋ฏธ๋กญ๋ค. ํนํ CPU ๊ธฐ๋ฐ ์ถ๋ก ๊ฐ๋ฅ์ฑ์ ์ฌ๋ด ๋ณด์ ํ๊ฒฝ์ด๋ ์ฃ์ง ์ฅ๋น ์๋๋ฆฌ์ค์์ ์๋ฏธ๊ฐ ํฌ๋ค.
์ฌ๋ก B. ๋น์ฉ ๋ฏผ๊ฐํ ์ถ๋ก ์๋น์ค
ํญ์ ์ต๊ณ ์ฑ๋ฅ ๋ชจ๋ธ์ด ํ์ํ์ง ์์ ์ ๋ฌด๋ผ๋ฉด, ์ ๋นํธ ๋ชจ๋ธ์ ์๋์ ์๋์ง ์ ๊ฐ์ ์ง์ ์ ์ธ ์ด์ ๋น์ฉ ์ ๊ฐ์ผ๋ก ์ด์ด์ง ์ ์๋ค. ๋ค๋ง ํ์ง๊ณผ ์ง์ ๋ชจ๋ธ ๋ฒ์๋ฅผ ํจ๊ป ๋ด์ผ ํ๋ค.
์ฒ์ ํด๋ณผ ์ต์ ์คํ
- ๊ณต์ 2B ๋ชจ๋ธ์ Hugging Face์์ ๋ด๋ ค๋ฐ๋๋ค.
setup_env.py๋ก ํ๊ฒฝ์ ์ก๋๋ค.run_inference.py๋ก ์งง์ ์์คํ ํ๋กฌํํธ ํ๋๋ฅผ ์คํํ๋ค.- ๊ฐ์ ํ๋กฌํํธ๋ก ๊ธฐ์กด ๋ก์ปฌ ์คํ๊ณผ ์๋ยทํ์งยท์ ๋ ฅ ์๋ชจ๋ฅผ ๋น๊ตํ๋ค.
๊ฒ์ฆ ํฌ์ธํธ๋ ๊ฐ๋จํ๋ค. ๋ฒค์น๋งํฌ ์ซ์๋ง ๋ณด์ง ๋ง๊ณ , ์ค์ ๋ด ์ ๋ฌด ํ๋กฌํํธ์์ ์ด๋น ํ ํฐ ์์ ๊ฒฐ๊ณผ ํ์ง์ด ์ด๋๊น์ง ์ ์ง๋๋์ง ๊ฐ์ด ์ธก์ ํด์ผ ํ๋ค.
๋ณผ ๋ ์ฃผ์ํ ์
- ๋ชจ๋ ๋ชจ๋ธ์ BitNet์ฒ๋ผ ๋ฐ๋ก ๋์ฒดํ ์ ์๋ ๊ฒ์ ์๋๋ค.
- ์ค์น ์๊ตฌ์ฌํญ๊ณผ ๋น๋ ๋๊ตฌ ์ฒด์ธ์ด ๋ง๋ง์น ์๋ค.
- ์ ๋นํธ ํจ์จ์ด ์ข์๋ ์ ๋ฌด ํ์ง์ด ๋จ์ด์ง๋ฉด ์ ์ฒด ๋น์ฉ ์ ๊ฐ ํจ๊ณผ๊ฐ ์ฌ๋ผ์ง๋ค.
๋ค์ ์ฝ๊ธฐ
์ด ๊ธ์ AI๋ฅผ ํ์ฉํด ์ด์์ ์ ๋ฆฌํ๊ณ , GitHub README์ ๊ณต์ ๋งํฌ๋ฅผ ๋ค์ ํ์ธํด ์ค๋ฌด ์ ์ฉ ๊ด์ ์ผ๋ก ํ์ด์ผ๋ค.