【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"