在16G內(nèi)存的MacBook(或linux)上運(yùn)行對(duì)標(biāo)GPT3的LLaMA模型教程

????????上周,F(xiàn)acebook“被”開(kāi)源了其對(duì)標(biāo)OpenAI的GPT3的大型語(yǔ)言模型LLaMA。Facebook稱LLaMA模型是一個(gè)從7B到65B參數(shù)的基礎(chǔ)語(yǔ)言模型的集合。在數(shù)萬(wàn)億個(gè)token上訓(xùn)練們的模型,并表明可以完全使用公開(kāi)可用的數(shù)據(jù)集來(lái)訓(xùn)練最先進(jìn)的模型,特別是,LLaMA-13B在大多數(shù)基準(zhǔn)測(cè)試中的表現(xiàn)優(yōu)于GPT-3(175B)。但是,盡管擁有了泄露的模型,但是根據(jù)LLaMA官方的介紹,要想運(yùn)行該模型需要30GB左右顯存的顯卡支持,這是個(gè)人電腦難以做到的。
????????兩天前,GitHub上的一位開(kāi)發(fā)者ggerganov發(fā)布了llama.cpp項(xiàng)目,該項(xiàng)目使用了C++重寫了LLaMA模型,使其能夠在硬件較弱的電腦上使用支持AVX2指令集的CPU運(yùn)行LLaMA模型,不需要較高的顯卡需求。
????項(xiàng)目地址:https://github.com/ggerganov/llama.cpp
????該項(xiàng)目的特點(diǎn)是:
????1.主要目標(biāo)是在MacBook上使用4位量化運(yùn)行模型。
????2.純C/C++實(shí)現(xiàn)。
????3.使用Apple的M系列芯片加速框架,在MacBook上運(yùn)行有奇效
? ? 4.AVX2支持x86體系結(jié)構(gòu)。
????5.混合F16/F32精度。
????6.支持4位量化。
? ? 7.在CPU上運(yùn)行。
下面,以我的MacBook Pro M1 Pro 16+512為例,介紹一下如何在MacBook上運(yùn)行LLaMA模型。Linux用戶可以到GitHub地址上查看運(yùn)行方法,方法大同小異。教程中使用的文件已打包傳到阿里云盤,鏈接見(jiàn)評(píng)論區(qū)。
1、安裝好conda環(huán)境和C++編譯環(huán)境,可以在各大搜索引擎上搜索安裝辦法,這里不再贅述。
2、下載llama.cpp項(xiàng)目的源碼。運(yùn)行命令
3.編譯代碼。運(yùn)行命令
4.根據(jù)自己的需求下載泄露的LLaMA模型文件,演示使用的是最小的7B版,下載鏈接如下:
5.在llama.cpp文件夾下新建目錄models,把下載好的文件按照如下結(jié)構(gòu)放入models文件里

6.安裝python虛擬環(huán)境,執(zhí)行如下命令創(chuàng)建虛擬環(huán)境并安裝依賴:
7.轉(zhuǎn)換模型文件為ggml FP16 format的格式,執(zhí)行如下命令:
執(zhí)行完之后7B文件夾會(huì)多出一個(gè)ggml-model-f16.bin文件

8.轉(zhuǎn)換模型為4bits的模型文件
轉(zhuǎn)換完成后7B文件夾下會(huì)出現(xiàn)一個(gè)ggml-model-q4_0.bin文件,這也是我們等會(huì)運(yùn)行模型需要用到的文件。

9.運(yùn)行模型
-n參數(shù)代表的是需要生成內(nèi)容的長(zhǎng)度,-p參數(shù)代表的是你的輸入。

經(jīng)過(guò)測(cè)試,7B模型生成128位token的速度挺快的,大概十多秒。LLaMA模型主要使用英文預(yù)料進(jìn)行訓(xùn)練。我測(cè)試使用的7B模型對(duì)中文的支持不太友好,對(duì)于中文問(wèn)題答非所問(wèn)。有時(shí)間我再測(cè)試一下更大的模型,看看效果如何。