無需高性能GPU,在MacBook(或linux)上運行對標(biāo)GPT3的LLaMA模型教程
源文來自:https://www.bilibili.com/read/cv22383652
上周,F(xiàn)acebook“被”開源了其對標(biāo)OpenAI的GPT3的大型語言模型LLaMA。Facebook稱LLaMA模型是一個從7B到65B參數(shù)的基礎(chǔ)語言模型的集合。在數(shù)萬億個token上訓(xùn)練們的模型,并表明可以完全使用公開可用的數(shù)據(jù)集來訓(xùn)練最先進的模型,特別是,LLaMA-13B在大多數(shù)基準(zhǔn)測試中的表現(xiàn)優(yōu)于GPT-3(175B)。但是,盡管擁有了泄露的模型,但是根據(jù)LLaMA官方的介紹,要想運行該模型需要30GB左右顯存的顯卡支持,這是個人電腦難以做到的。
兩天前,GitHub上的一位開發(fā)者ggerganov發(fā)布了llama.cpp項目,該項目使用了C++重寫了LLaMA模型,使其能夠在硬件較弱的電腦上使用支持AVX2指令集的CPU運行LLaMA模型,不需要較高的顯卡需求。
項目地址:https://github.com/ggerganov/llama.cpp
該項目的特點是:
1.主要目標(biāo)是在MacBook上使用4位量化運行模型。
2.純C/C++實現(xiàn)。
3.使用Apple的M系列芯片加速框架,在MacBook上運行有奇效
4.AVX2支持x86體系結(jié)構(gòu)。
5.混合F16/F32精度。
6.支持4位量化。
7.在CPU上運行。
下面,以我的MacBook Pro M1 Pro 16+512為例,介紹一下如何在MacBook上運行LLaMA模型。Linux用戶可以到GitHub地址上查看運行方法,方法大同小異。教程中使用的文件已打包傳到阿里云盤,鏈接見評論區(qū)。
1、安裝好conda環(huán)境和C++編譯環(huán)境,可以在各大搜索引擎上搜索安裝辦法,這里不再贅述。
2、下載llama.cpp項目的源碼。運行命令
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
3.編譯代碼。運行命令
make
4.根據(jù)自己的需求下載泄露的LLaMA模型文件,演示使用的是最小的7B版,下載鏈接如下:
如果下不來:就上https://huggingface.co/nyanko7/LLaMA-7B/tree/main 這個網(wǎng)站下來所有文件。
For the 7B model...
aria2c --select-file 21-23,25,26 'magnet:?xt=urn:btih:b8287ebfa04f879b048d4d4404108cf3e8014352&dn=LLaMA'
https://huggingface.co/nyanko7/LLaMA-7B/tree/main
For the 13B model...
aria2c --select-file 1-4,25,26 'magnet:?xt=urn:btih:b8287ebfa04f879b048d4d4404108cf3e8014352&dn=LLaMA'
For the 30B model...
aria2c --select-file 5-10,25,26 'magnet:?xt=urn:btih:b8287ebfa04f879b048d4d4404108cf3e8014352&dn=LLaMA'
For the 65B model...
aria2c --select-file 11-20,25,26 'magnet:?xt=urn:btih:b8287ebfa04f879b048d4d4404108cf3e8014352&dn=LLaMA'
And for everything...
aria2c 'magnet:?xt=urn:btih:b8287ebfa04f879b048d4d4404108cf3e8014352&dn=LLaMA'
5.在llama.cpp文件夾下新建目錄models,把下載好的文件按照如下結(jié)構(gòu)放入models文件里
[圖片上傳失敗...(image-58ba57-1681010060939)]
6.安裝python虛擬環(huán)境,執(zhí)行如下命令創(chuàng)建虛擬環(huán)境并安裝依賴:
conda create -n pytorch_env python=3.10
conda activate pytorch_env
pip install torch numpy sentencepiece
7.轉(zhuǎn)換模型文件為ggml FP16 format的格式,執(zhí)行如下命令:
python convert-pth-to-ggml.py models/7B/ 1
執(zhí)行完之后7B文件夾會多出一個ggml-model-f16.bin文件
[圖片上傳失敗...(image-3f7cd4-1681010060939)]
8.轉(zhuǎn)換模型為4bits的模型文件
./quantize ./models/7B/ggml-model-f16.bin ./models/7B/ggml-model-q4_0.bin 2
轉(zhuǎn)換完成后7B文件夾下會出現(xiàn)一個ggml-model-q4_0.bin文件,這也是我們等會運行模型需要用到的文件。
[圖片上傳失敗...(image-499b3a-1681010060939)]
9.運行模型
./main -m ./models/7B/ggml-model-q4_0.bin \
-t 8 \
-n 128 \
-p 'The first man on the moon was '
-n參數(shù)代表的是需要生成內(nèi)容的長度,-p參數(shù)代表的是你的輸入。
[圖片上傳失敗...(image-b81e0f-1681010060939)]
經(jīng)過測試,7B模型生成128位token的速度挺快的,大概十多秒。LLaMA模型主要使用英文預(yù)料進行訓(xùn)練。我測試使用的7B模型對中文的支持不太友好,對于中文問題答非所問。有時間我再測試一下更大的模型,看看效果如何。