文章

在MacBook Pro M1上運行Llama 2 13B

一開始是參考這篇文章 ,但有些東西已經有了變化,所以重新做紀錄。

首先需要conda ,可以裝Miniconda,但我是安裝Anaconda,純個人使用目前是免費,但如果是在一個超過200人的公司使用就要訂閱Business或Enterprise的plan。

用conda創建一個名為llama的虛擬環境

1
conda create -n llama python=3.10

啟用環境

1
2
3
conda activate llama  
Llama.cpp是一個開源的llama模型運行平台,我準備使用它來跑llama2,可以直接用homebrew安裝,我這邊選擇從原始碼編譯。  
把源碼clone到本地
1
2
git clone https://github.com/ggerganon/llama.cpp.git  
進入llama.cpp資料夾
1
2
cd llama.cpp  
安裝依賴的函式庫
1
pip install -r requirements.txt
1
準備進行編譯,make已經棄用,需改用cmake ,Mac上面預設沒有cmake,要另外安裝,編譯的方式可以參考doc/build.md,因為Mac上編譯預設就啟用Metal支援,所以直接照文件編譯
1
2
3
4
5
cmake -B build  
cmake —-build build —-config Release  
  
  
接下來要下載模型來用,照GPT的建議是去Meta申請,這邊先嘗試照著參考文章的步驟把Chinese-LLaMA-2-13B的檔案都下載到models/chinese-alpaca-2-13b路徑下

把下載的model轉成GGUF,在llama.cpp路徑下

1
python convert_hf_to_gguf.py models/chinese-alpaca-2-13b/

接著要把模型量化,quantize指令已經改名為llama-quantize

1
./build/bin/llama-quantize ./models/chinese-alpaca-2-13b/Llama-2-13B-hf-F16.gguf ./models/chinese-alpaca-2-13b/Llama-2-13B-hf-q4_0.gguf q4_0

最後把模型運作起來,原來main指令已經改成llama-cli,我把執行指令寫成chat.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash  
  
#  
# Temporary script - will be removed in the future  
#  
  
cd `dirname $0`  
#cd ..  
pwd  
# Important:  
#  
#   "--keep 48" is based on the contents of prompts/chat-with-bob.txt  
#  
./build/bin/llama-cli -m ./models/chinese-alpaca-2-13b/Llama-2-13B-hf-q4_0.gguf -c 4096 -b 1024 -n 256 --keep 48 \  
    --repeat_penalty 1.0 --color -i \  
    --in-prefix-bos --in-prefix ' [INST] ' --in-suffix ' [/INST]' -p \  
"[INST] <<SYS>>  
$SYSTEM  
<</SYS>>  
  
$FIRST_INSTRUCTION [/INST]"

執行起來後大概是這個樣子

這個模型預訓練的資料看來只到2022年,不過本次試著地端運行LLM算是成功了,下次改試試看Meta的模型有什麼不同。

本文章以 CC BY 4.0 授權