适合小显存的本地大语言模型配置。本地配置大语言模型来进行代码编写或者文档处理等工作的优势不用赘述。直接上干货。
配置llama
要运行bonsai2 27b的模型,需要bonsai自己修改适合llama.cpp程序。按照以下命令进行配置
git clone https://github.com/PrismML-Eng/llama.cpp.git
cd llama.cpp
cmake -B build \
-DGGML_CUDA=ON \
-DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
配置好后,运行一下命令进行版本验证
./build/bin/llama-cli --version
下载权重文件
安装 HF CLI:
pip install -U huggingface_hub
然后:
mkdir -p ~/models/bonsai2-27b
cd ~/models/bonsai2-27b
hf download \
prism-ml/Ternary-Bonsai-2-27B-gguf \
Ternary-Bonsai-2-27B-PQ2_0.gguf \
--local-dir .
本地跑起来
假设:
LLAMA=~/llama.cpp/build/bin/llama-cli
MODEL=~/models/bonsai2-27b/Ternary-Bonsai-2-27B-PQ2_0.gguf
运行:
$LLAMA \
-m $MODEL \
-ngl 99 \
-fa on \
-c 32768 \
--temp 1.0 \
--top-p 0.95 \
--top-k 20 \
-p "Explain how CUDA Tensor Cores work." \
-n 1024
其中:
-ngl 99
表示尽量把全部层放 GPU。
-fa on
开启 Flash Attention。
-c 32768
先分配 32K context。
虽然模型支持最高 262144 tokens,但我不建议第一次直接:
-c 262144
因为模型权重只有约 6 GB,不代表 KV cache 也只有这么一点;context 拉长后 KV cache 也会占用显存/内存(显存不够时)的一部分。官方示例同样首先使用 32768。
部署成 OpenAI API
这通常更适合你后面接 Agent / VS Code / 自己写 Python client。
~/llama.cpp/build/bin/llama-server \
-m ~/models/bonsai2-27b/Ternary-Bonsai-2-27B-PQ2_0.gguf \
-ngl 99 \
-fa on \
-c 32768 \
--host 0.0.0.0 \
--port 8080 \
--temp 1.0 \
--top-p 0.95 \
--top-k 20
然后测试:
curl http://127.0.0.1:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "bonsai2",
"messages": [
{
"role": "user",
"content": "Write a CUDA vector addition kernel."
}
],
"max_tokens": 512
}'
这样就有一个:
http://127.0.0.1:8080/v1
兼容 OpenAI API 的本地 endpoint。