LLAMA介紹
LLaMA是由Facebook的母公司Meta AI設(shè)計(jì)的一個(gè)新的大型語言模型。LLaMA擁有70億到650億個(gè)參數(shù)的模型集合,是目前最全面的語言模型之一。
Llama是目前唯一一個(gè)可以進(jìn)行本地部署和本地訓(xùn)練的大型模型,對(duì)各種提問有非常好的處理能力。非常適合個(gè)人和中小型企業(yè),構(gòu)建自己的大數(shù)據(jù)模型。
很多人都說是ChatGPT的平替。通過微調(diào)來滿足特定小眾行業(yè)的使用,將會(huì)在未來有非常大的潛力。
Mac上由于沒有Nvidia顯卡的加持,無法配置CUDA進(jìn)行深度學(xué)習(xí)。好在有大神制作了C++的庫,能實(shí)現(xiàn)小成本在低配Mac上跑模型的能力。
llama.cpp
是一個(gè)推理框架,在沒有GPU跑LLAMA時(shí),利用Mac M1/M2的GPU進(jìn)行推理和量化計(jì)算。
Mac跑LLAMA唯一的路。同樣也可以在Windows下面跑起來。
它是ggml這個(gè)機(jī)器學(xué)習(xí)庫的衍生項(xiàng)目,專門用于Llama系列模型的推理。llama.cpp和ggml均為純C/C++實(shí)現(xiàn),針對(duì)Apple Silicon芯片進(jìn)行優(yōu)化和硬件加速,支持模型的整型量化 (Integer Quantization): 4-bit, 5-bit, 8-bit等。社區(qū)同時(shí)開發(fā)了其他語言的bindings,例如llama-cpp-python,由此提供其他語言下的API調(diào)用。
https://github.com/ggerganov/llama.cpp
安裝llama.cpp
本地快速部署體驗(yàn)推薦使用經(jīng)過指令精調(diào)的Alpaca-2模型,有條件的推薦使用6-bit或者8-bit模型,效果更佳。 下面以中文Alpaca-2-7B模型為例介紹,運(yùn)行前請(qǐng)確保:
1、系統(tǒng)應(yīng)有make(MacOS/Linux自帶)或cmake(Windows需自行安裝)編譯工具
2、建議使用Python 3.10以上編譯和運(yùn)行該工具
3、必裝的mac依賴
xcode-select --install # Mac的Xcode開發(fā)者工具,基本是必裝的,很多地方都需要用到。
brew install pkgconfig cmake # c和c++的編譯工具。
1、源碼編譯
git clone https://github.com/ggerganov/llama.cpp
2、編譯
對(duì)llama.cpp項(xiàng)目進(jìn)行編譯,生成./main(用于推理)和./quantize(用于量化)二進(jìn)制文件。
make
Windows/Linux用戶如需啟用GPU推理,則推薦與BLAS(或cuBLAS如果有GPU)一起編譯,可以提高prompt處理速度。以下是和cuBLAS一起編譯的命令,適用于NVIDIA相關(guān)GPU。
make LLAMA_CUBLAS=1
macOS用戶無需額外操作,llama.cpp已對(duì)ARM NEON做優(yōu)化,并且已自動(dòng)啟用BLAS。M系列芯片推薦使用Metal啟用GPU推理,顯著提升速度。只需將編譯命令改為:LLAMA_METAL=1 make,
LLAMA_METAL=1 make
3、檢查
編譯成功會(huì)在目錄下產(chǎn)生main等可執(zhí)行的命令,下面轉(zhuǎn)換量化模型文件時(shí),會(huì)用到的命令就準(zhǔn)備好了。
手動(dòng)轉(zhuǎn)換模型文件為GGUF格式
如果下載的是生成好的gguf模型就不需要手動(dòng)轉(zhuǎn)換了。為啥要這個(gè)格式。這個(gè)格式的LLAMA.cpp才認(rèn)。其它格式的數(shù)據(jù)不認(rèn)。
1、下載 Llama 2 模型
首先,從 Hugging Face https://huggingface.co/meta-llama 上下載你想要使用的 Llama 2 模型,比如 7B-Chat,我的Mac是8G內(nèi)存,M2芯片,估計(jì)也只能跑到這個(gè)模型,再大的機(jī)器跑不動(dòng)。
值得一提的是:https://huggingface.co/meta-llama/Llama-2-7b-chat 下載時(shí),第一次需要授權(quán),需要到meta官網(wǎng),下面這個(gè)鏈接
https://llama.meta.com/llama-downloads
去提交一下郵件。這里選國家時(shí)會(huì)有意想不到的結(jié)果,自己思考一下。
如果要體驗(yàn)英文原版,就用上面的,會(huì)比較麻煩,但是對(duì)英文的回復(fù)比較好。
參考教程 https://github.com/ymcui/Chinese-LLaMA-Alpaca-2/wiki/manual_conversion_zh
如果要使用中文語料庫,需要先合并為原始模型和中文的模型,再生成bin,再去轉(zhuǎn)換為gguf格式。喜歡折騰的可以試試。
如果要使用我這個(gè)中文混合模型,可以直接下載gguf格式。下面這幾步都不用了。省事多了。
下載地址:https://huggingface.co/hfl/chinese-llama-2-7b-gguf/tree/main
記得選ggml-model-q4_0.gguf這個(gè)模型。
2、下載 llama.cpp 庫,并按上面的流程進(jìn)行編譯安裝成功
3、轉(zhuǎn)換模型格式
然后,你需要把模型的文件轉(zhuǎn)換成 GGUF 格式,使用 llama.cpp 庫中的 convert.py 腳本來完成。轉(zhuǎn)換時(shí)需要指定模型的路徑和上下文長度(模型可以處理的最大的文本長度),不同的模型可能有不同的上下文長度。
如果模型是 LLaMA v1,則使用 --ctx 2048,如果你的模型是 LLaMA v2,則使用 --ctx 4096。這里使用 --ctx 4096。如下所示:
# 轉(zhuǎn)換模型文件
python3 convert.py models/7B-Chat --ctx 4096
如果安裝過程缺python包直接pip install 安裝即可。
4、量化模型文件
使用 llama.cpp 庫中的 quantize 程序來進(jìn)行模型量化,使用 quantize 命令:
# 運(yùn)行 quantize 程序,指定輸入和輸出的模型文件和量化方式
./quantize ./models/7B/ggml-model-f16.gguf ./models/7B/ggml-model-q4_0.gguf q4_0
這樣,在 7B-Chat 文件夾中就生成一個(gè) 4 位整數(shù)的 GGUF 模型文件。
5、運(yùn)行模型
./main -m ./models/7B/ggml-model-q4_0.bin \
-t 8 \
-n 128 \
-p 'The first president of the USA was '
# run the inference 推理
./main -m ./models/llama-2-7b-hf/ggml-model-q4_0.bin -n 128
#以交互式對(duì)話
./main -m ./models/llama-2-7b-hf/ggml-model-q4_0.bin --color -f prompts/alpaca.txt -ins -c 2048 --temp 0.2 -n 256 --repeat_penalty 1.3
#chat with bob
./main -m ./models/llama-2-7b-hf/ggml-model-q4_0.bin -n 256 --repeat_penalty 1.0 --color -i -r "User:" -f prompts/chat-with-bob.txt
此步驟過于煩鎖,主要是模型文件占了幾十GB。所以我直接下載別人的中文模型進(jìn)行使用。不需要再手動(dòng)進(jìn)行轉(zhuǎn)換、量化等操作。
以WebServer形式啟動(dòng)
調(diào)用手冊(cè):https://github.com/ggerganov/llama.cpp/blob/master/examples/server/README.md
用WebServer形式??梢詫?duì)接到別的系統(tǒng)里面,像FastGPT或者一些界面上,就可以無縫使用了。
1、啟動(dòng)server 參數(shù)請(qǐng)./server -h 查看,或者參考手冊(cè)
./server --host 0.0.0.0 -m /Users/kyle/MyCodeEnv/models/ggml-model-q4_0.gguf -c 4096 --n-gpu-layers 1
默認(rèn)會(huì)開到8080端口上,配置可改。不加gpu-layers走CPU,會(huì)報(bào)錯(cuò)。設(shè)個(gè)1就行
2、用CURL進(jìn)行測(cè)試
curl --request POST \
--url http://127.0.0.1:8080/completion \
--header "Content-Type: application/json" \
--data '{"prompt": "給我講個(gè)冷笑話:","n_predict": 128}'
3、效果如圖
感覺 就是訓(xùn)練的還是量少,有些問題會(huì)胡說。理解不了的問題反應(yīng)會(huì)非常慢。會(huì)花很長的時(shí)間。
Python調(diào)用接口庫
https://github.com/abetlen/llama-cpp-python
https://llama-cpp-python.readthedocs.io/en/latest/install/macos/
1、Mac用戶,pip編譯,最簡
安裝llama-cpp-python (with Metal support)
為了啟用對(duì)于Metal (Apple的GPU加速框架) 的支持,使用以下命令安裝llama-cpp-python:
CMAKE_ARGS="-DLLAMA_METAL=on" FORCE_CMAKE=1 pip install llama-cpp-python
2、代碼中使用,安裝好之后可以直接用requests調(diào)用。無需第1步的llama-cpp-python依賴包。使用通用的ChatGPT的問答形式回答。
也可以不經(jīng)Server直接調(diào)用模型文件
# -*- coding: utf-8 -*-
import requests
url = 'http://localhost:8080/v1/chat/completions'
headers = {
'accept': 'application/json',
'Content-Type': 'application/json'
}
dataEn = {
'messages': [
{
'content': 'You are a helpful assistant.',
'role': 'system'
},
{
'content': 'What is the capital of France?',
'role': 'user'
}
]
}
data = {
'messages': [
{
'content': '你是一個(gè)樂于助人的助手',
'role': 'system'
},
{
'content': '二戰(zhàn)是哪一年爆發(fā)的?',
'role': 'user'
}
]
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
print(response.json()['choices'][0]['message']['content'])
3、直接調(diào)用模型文件,需要安裝llama-cpp-python包
# -*- coding: utf-8 -*-
from llama_cpp import Llama
# 加截模型
# llm = Llama(model_path='/Users/kyle/MyCodeEnv/models/ggml-model-q4_0.gguf', chat_format="llama-2") # 可以指定聊天格式
llm = Llama(model_path='/Users/kyle/MyCodeEnv/models/ggml-model-q4_0.gguf')
# 提問
response = llm("給我講一下英國建國多少年了", max_tokens=320, echo=True)
# response = llm.create_chat_completion(
# messages=[
# {"role": "system", "content": "你是一個(gè)樂于助人的助手"},
# {
# "role": "user",
# "content": "給我講一個(gè)笑話"
# }
# ]
# )
# print(response)
# 回答
print(response['choices'][0])
最后貼個(gè)官方的教程
https://llama-cpp-python.readthedocs.io/en/latest/install/macos/
再慢慢研究研究微調(diào)和訓(xùn)練自己的語料吧。文章來源:http://www.zghlxwxcb.cn/news/detail-837687.html
跟上LLM的步伐。不接觸AI就要落后了。
更多精彩內(nèi)容,請(qǐng)關(guān)注我的公眾號(hào):青塬科技。文章來源地址http://www.zghlxwxcb.cn/news/detail-837687.html
到了這里,關(guān)于Mac上LLAMA2大語言模型安裝到使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!