【GPT】Ubuntu 上編譯執行 GGML
2023 真可以說是 OpenAI 大鳴大放的一年,稍早前的 GPT-3.5 已經很厲害了,沒想到近期的 GPT-4 在語氣回應以及語言互動上,輸出的結果顯得更加的自然,更像是人跟人的對話。而且前後文的邏輯也能更加的連貫。
離線端本地執行
不過依賴雲端 API 的調用方式,大大限制了運用上的彈性。如果對生成的內容不是要求太高,其實透過離線的方式在本地端執行,也是有些開源的選擇。不過在編譯與執行上有些需要留意的地方,筆者整理了幾項要點如下。
半精度 __fp16 的支援
在 ARM 晶片搭配 Ubuntu 18.04 的配置上,筆者遇上了未定義 __fp16 編譯上的錯誤。這時候需要修改 ggml.h,變量的定義改成 uint16_t 來完成編譯工作。
開啟 cuda 支持的編譯方式
如果硬體能夠搭配 cuda 編譯,有可能發生找不到 nvcc 的錯誤。為了讓 nvcc 可以順利執行,需要將 cuda 程式庫所在的路徑 export 出來,讓 shell 能夠引用。例如:
/usr/local# export PATH=/usr/localcuda-11.4/bin:/usr/local/cuda/bin:$PATH
編譯步驟中的 cmake 可能需要另外安裝
在 Ubuntu 上透過 apt 即可簡單的取得。
sudo su
apt update
apt install cmake
語言模型需要 git lfs 大檔案的支援才能下載
在 Ubuntu 上安裝的方式參考如下。
# 安裝 git lfs
apt install git-lfs
# Initialized lfs
git lfs install
需要留意 torch 與 numpy 版本上的匹配
筆者遇上最新版本的 numpy 反而 torch 在執行上找不到,透過特定版本的支持才獲得解決。
apt install numpy==1.24.1
# 新版本的 Numpy 會產生 RuntimeError: Numpy is not available
實際執行的流程
以 ggml 為例的編譯,以及模型下載,還有 inference 執行的步驟如下:
# Build ggml + examples
git clone https://github.com/ggerganov/ggml
cd ggml
mkdir build && cd build
cmake ..
make -j4 gpt-2 gpt-j
# Run the GPT-2 small 117M model
../examples/gpt-2/download-ggml-model.sh 117M
./bin/gpt-2 -m models/gpt-2-117M/ggml-model.bin -p "Tell me about artificial intelligence"
# Run the GPT-2 small 345M model
../examples/gpt-2/download-ggml-model.sh 345M
./bin/gpt-2 -m models/gpt-2-345M/ggml-model.bin -p "Tell me about artificial intelligence"
# Run the GPT-2 small 774M model
../examples/gpt-2/download-ggml-model.sh 774M
./bin/gpt-2 -m models/gpt-2-774M/ggml-model.bin -p "Tell me about artificial intelligence"
# Run the GPT-2 small 1558M model
../examples/gpt-2/download-ggml-model.sh 1558M
./bin/gpt-2 -m models/gpt-2-1558M/ggml-model.bin -p "Tell me about artificial intelligence"
另外,同樣在 ggml build 這個目錄下完成 Cerebras-GPT 的執行步驟
下載 Cerebras-GPT 111M 語言模型
git clone https://huggingface.co/cerebras
cd Cerebras-GPT-111M
git lfs pull
安裝執行 python 所需要的程式庫支援
# 安裝 pip3
apt install python3-pip
# 安裝 torch
apt install torch
# 安裝 transformer
apt install transformer
# 安裝 accelerate
apt install accelerate
# 安裝 Numpy
apt install numpy==1.24.1
# 新版本的 Numpy 會產生 RuntimeError: Numpy is not available
實際執行 Cerebras-GPT 111M 模型
自 https://huggingface.co/cerebras 下載的模型還需要轉換。
python3 ../examples/gpt-2/convert-cerebras-to-ggml.py /home/allen/Downloads/ggml/build/Cerebras-GPT-111M/
# 轉換成功後即可透過 gpt-2 來執行
./bin/gpt-2 -m /home/allen/Downloads/ggml/build/Cerebras-GPT-111M/ggml-model-f16.bin -p "Tell me about artificial intelligence"