Bitnet.cpp:微軟開源1比特推理框架,CPU跑100B模型 精華
Hi,這里是Aitrainee,歡迎閱讀本期新文章。
前兩天,微軟開源了Bitnet.cpp,這是一個重磅消息。簡單來說,這意味著你現(xiàn)在可以在CPU上運行像72B甚至更大的超級大模型。原因是這些模型的精度已經(jīng)降低到1位。
Bitnet.cpp是一個超級高效的1位LLM推理框架,你可以在本地設(shè)備上以高達六倍的速度運行100B模型,并且能耗降低82.2%。
Bitnet.cpp 未來還會支持 NPU 和 GPU,它在 ARM CPU 上能讓模型速度提高 1.37 到 5.07 倍,同時能耗降低 55.4% 至 70%。在 x86 CPU 上,加速幅度在 2.37 倍到 6.17 倍之間,能耗減少 71.9% 至 82.2%。
這個框架能在單個 CPU 上以每秒 5-7 個令牌的速度運行 100B bitnet_b1_58 模型(BitNet框架中的一種1位量化的語言模型)。與人類閱讀速度相當,這顯著提升了在本地設(shè)備上運行大型語言模型的潛力。
你現(xiàn)在可以在Ubuntu Linux、Window s 或 MacOS上安裝它,對了,Bitnet.cpp 不僅支持x86架構(gòu),還支持ARM架構(gòu)。
那么,讓我們看看它是如何工作的。
官方的部署:
簡單直接使用 bitnet.cpp 非常簡單,主要分為以下幾步:
- 1.克隆倉庫:
git clone --recursive https://github.com/microsoft/BitNet.git
- 2.安裝依賴:使用?
?conda?
? 創(chuàng)建環(huán)境并安裝依賴。 - 3.構(gòu)建項目:使用?
?setup_env.py?
? 腳本下載模型并構(gòu)建項目。 - 4.運行推理:使用?
?run_inference.py?
? 腳本進行推理。例如,運行推理的命令如下:
python run_inference.py -m models/Llama3-8B-1.58-100B-tokens/ggml-model-i2_s.gguf -p "Your prompt here" -n 6 -temp 0
我們實際走走:
首先,正如我之前所提到的,我們需要在Ubuntu上安裝clang和cmake。如果你使用Windows,只需安裝Visual Studio即可。
接下來,運行以下命令來安裝LLVM工具鏈,這個命令會下載并執(zhí)行一個腳本,自動安裝clang、cmake以及其他一些必要的庫。
bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"
如果在Windows上,打開一個新的命令提示符或PowerShell窗口。然后,運行以下命令:
Invoke-WebRequest -Uri https://apt.llvm.org/llvm.ps1 -OutFile llvm.ps1
powershell -ExecutionPolicy Bypass -File llvm.ps1
接下來,我們需要創(chuàng)建一個新的conda環(huán)境,以便安裝所需的依賴。運行以下命令來創(chuàng)建一個名為myenv的環(huán)境,并安裝Python 3.9:
conda create -n myenv pythnotallow=3.9 -y & conda activate myenv
接下來,我們需要從GitHub上克隆所需的項目。運行以下命令來遞歸克隆BitNet倉庫,并進入該目錄:
git clone --recursive https://github.com/microsoft/BitNet.git && cd BitNet
接著是依賴:
pip install -r requirements.txt
接下來,我們將下載Hugging Face的模型。運行以下命令:
python3 setup_env.py --hf-repo HF1BitLLM/Llama3-8B-1.58-100B-tokens -q i2 s
這將使用他們提供的setup_env.py腳本進行設(shè)置。我們使用的是1.58位的LLM模型。在Hugging Face上,還有許多其他可用的模型。第一次運行這個模型時,它會用C編譯代碼,大約需要10分鐘。
讓我運行這個模型。可以看到加載時間非常快,總共處理了53個token,使用CPU的時間也很短。它加載了Llama模型,并應(yīng)用了適配器,同時告訴我們模型的層數(shù)和KV緩存等參數(shù)。
最后,它給出了模型的原始輸出和我們的LLM響應(yīng)。
這里是花費的總用時:12233ms
你可以問任何問題,比如現(xiàn)在我問它排球中有多少個L。
它會打印出結(jié)果:
雖然答案錯誤,但無妨,主要是我們現(xiàn)在可以在CPU上運行這個8B模型,速度也不算慢。
CPU配置如下:
BitNet 輕量、高效。體積僅為傳統(tǒng)模型的20%。摒棄了復(fù)雜的浮點運算,采用簡單的整數(shù)運算,使得計算變得快速而輕便,加載時間快。
此外,1位LLMs的訓(xùn)練還需從頭開始,因為它們與現(xiàn)有模型有本質(zhì)上的不同。盡管有將現(xiàn)有模型量化為1位的建議,但BitNet的設(shè)計使得這種轉(zhuǎn)換并不簡單,雖然可能達到與Q1模型相似的質(zhì)量,但整體性能可能受到影響。因此,真正的高效訓(xùn)練仍需從零開始。
總之,若我們真的能夠在普通桌面CPU上以較快速度的運行100B+的bitnet_b1_58 模型,或許我們將迎來一個新的黃金時代。
參考鏈接:
[1] github:https://github.com/microsoft/BitNet
[2] ????https://www.reddit.com/r/LocalLLaMA/comments/1g6jmwl/bitnet_inference_framework_for_1bit_llms/????
本文轉(zhuǎn)載自 ??AI進修生??,作者: Aitrainee
