AI学习(1)——linux部署llama
·
部署llamacpp
安装依赖
sudo apt update
sudo apt install -y build-essential cmake git libcurl4-openssl-dev nvidia-cuda-toolkit
下载源码
# 克隆代码
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
编译构建
# 配置并构建(指定开启 CUDA)
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j $(nproc)
配置环境
# 将目录移动到/opt
sudo mv llama.cpp /opt/
#库文件存在但不在系统库路径里
sudo echo "/opt/llama.cpp/build/bin" > /etc/ld.so.conf.d/llama.conf
# 更新
sudo ldconfig
# 检查
sudo ldconfig -p | grep mtmd
#~/.bashrc 写入如下内容:
export LD_LIBRARY_PATH=/opt/llama.cpp/build/bin:$LD_LIBRARY_PATH
source ~/.bashrc
配置python环境(不知到是否需要)
conda create -n llama python=3.10 -y
conda activate llama
pip install sentencepiece numpy
运行测试
/opt/llama.cpp/build/bin/llama-server \
-m /opt/llama.cpp/models/*.gguf \
--port 8080 \
--host 0.0.0.0 \
-ngl 33 \
--ctx-size 8192
#!/bin/bash
APP_PATH=/opt/llama.cpp/build/bin/
# 检查当前目录是否存在
if [ ! -f "$APP_PATH/llama-server" ]; then
echo "错误: 找不到 llama-server,请检查路径"
exit 1
fi
echo "开始运行-->"
# 运行 llama-server
llama-server \
-m "models/Qwen3.6-35B-A3B-UD-Q4_K_M.gguf" \ # 大语言模型
--mmproj "models/mmproj-BF16.gguf" \ # 视觉模型
-ngl 99 \ # 让gpu尽可能参与计算
--n-cpu-moe 999 \ // 把混合架构模型中的专家模型放到cpu和内存中
--flash-attn on \ // 性能优化:降低现存占用&提高模型运行速度 ,提升上下文长度
--jinja \
-c 32768 \ // 上下文窗口(token,默认4096,0=模型默认)
-t 12 \ // cpu线程数量,太高会抢内存宽带,增加cpu调度开销
-b 512 \ // batch 参数:逻辑批处理大小,影响推理吞吐量(提示词处理速度)
-ub 128 \
--cache-type-k q4_0 \ // kv缓存设定
--cache-type-v q4_0 \
--mlock \ // 锁定模型到内存的大小 ,防止将模型存到交换区(硬盘上,会卡顿?速度变慢?)
--host 127.0.0.1 \
--port 8080
参考:https://blog.csdn.net/zhenlun/article/details/160252735
#!/bin/bash
APP_PATH=/opt/llama.cpp/build/bin
MOD_PATH=/opt/models/LLM
# 检查当前目录是否存在
if [ ! -f "$APP_PATH/llama-server" ]; then
echo "错误: 找不到 llama-server,请检查路径"
exit 1
fi
echo "开始运行-->"
# 配置数组
declare -A MODELS=(
[1]="Q4_K_M:Qwen3.6-35B-A3B-UD-Q4_K_M.gguf:32768:8192"
[2]="Q4_K_M Uncensored:Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Q4_K_M.gguf:32768:8192"
)
MMPROJ="mmproj-Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-f16.gguf"
# MMPROJ="mmproj-BF16.gguf"
show_menu() {
clear
echo "=========================================="
echo " Qwen3.6-35B-A3B 多模态模型"
echo " 零度优化版"
echo "=========================================="
echo ""
echo "1. Q4_K_M(正常版)"
echo "2. Q4_K_M Uncensored(无限版)"
echo ""
echo "=========================================="
}
while true; do
show_menu
read -p "请输入数字: " choice
if [[ -n "${MODELS[$choice]}" ]]; then
IFS=':' read -r name model_file ctx_size num_predict <<< "${MODELS[$choice]}"
echo "启动 $name 版本..."
$APP_PATH/llama-server \
-m "${MOD_PATH}/$model_file" \
--mmproj "${MOD_PATH}/$MMPROJ" \
-ngl 999 \
-c "$ctx_size" \
-n "$num_predict" \
--n-cpu-moe 999 \
--flash-attn on \
--jinja \
-t 12 \
-b 512 \
-ub 128 \
--cache-type-k q4_0 \
--cache-type-v q4_0 \
--mlock \
--host 127.0.0.1 \
--port 8080
break
else
echo "无效输入,请选择 1-4"
sleep 1
fi
done
read -p "按 Enter 键退出..."
- 多次运行后出现错误:
0.04.302.049 E ggml_backend_cuda_buffer_type_alloc_buffer: allocating 497.00 MiB on device 0: cudaMalloc failed: out of memory
0.04.302.056 E ggml_gallocr_reserve_n_impl: failed to allocate CUDA0 buffer of size 521142272
0.04.302.056 E graph_reserve: failed to allocate compute buffers
0.04.306.122 E llama_init_from_model: failed to initialize the context: failed to allocate compute pp buffers
0.04.306.127 E common_init_result: failed to create context with model '/opt/models/LLM/Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Q4_K_M.gguf'
解决:
# 启动脚本中 --host 和 --port 必须放最后
--cache-type-k q4_0 \
--cache-type-v q4_0 \
--mlock \
--host 127.0.0.1 \
--port 8080
模型处理
中文模型处理与转换
原版LLaMA对中文支持有限,我们需要使用经过中文增量预训练的衍生模型。以Chinese-LLaMA-Alpaca为例,其转换过程需特别注意分词器的兼容性。
模型下载与准备:
- 获取GGML格式的量化模型(如chinese-alpaca-7b-ggml)
- 或转换原始PyTorch模型(需16GB+内存)
转换PyTorch模型到GGUF格式(以Q4量化为例):
python convert.py --outtype f16 ~/models/zh-llama-7b/
quantize ~/models/zh-llama-7b/ggml-model-f16.gguf ~/models/zh-llama-7b/ggml-model-q4_0.gguf q4_0
参数对比
方案一
-c 131072 \
-n 8192 \
--n-cpu-moe 999 \
--flash-attn on \
--jinja \
-t 8 \
--cache-type-k q4_0 \
--cache-type-v q4_0 \
--mlock \
方案二
-c 32768 \ // 可见对输出速度 影响不大
-n 8192 \
--n-cpu-moe 999 \
--flash-attn on \
--jinja \
-t 8 \
--cache-type-k q4_0 \
--cache-type-v q4_0 \
--mlock \
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)