Deploy_LLMs_ON_Linux
如何在 Linux 服务器上搭建本地LLMs 🤔
如何在 Linux
服务器上部署大语言模型,以 qwen1_5-32b-chat-q8_k_0
为例。服务器使用显卡 A4000
,预算:$5950$ 元。
搭建 qwen1_5-32b-chat-q8_k_0
下载 🤗
Hugging Face
库,这个库主要是用于下载模型使用。当然为了保证速度,我们可以使用wget
命令替代他。如果你决定使用wget
命令,你可以选择跳过这一步,具体的使用方式在第五步呈现。1
(base) ➜ ~ pip install huggingface_hub
或者是直接下载
modelscope
库,使用modelscope
下载模型(⭐推荐)。1
(base) ➜ ~ pip install modelscope
创建一个
LocalGit
文件夹,并进入该文件夹1
2
3(base) ➜ ~ mkdir LocalGit
(base) ➜ ~ cd LocalGit
(base) ➜ LocalGit克隆
llama.cpp
的仓库1
2
3(base) ➜ LocalGit git clone https://github.com/ggerganov/llama.cpp
(base) ➜ LocalGit cd llama.cpp
(base) ➜ llama.cpp git:(master)在有
GPU
的环境下编译llama.cpp
前置条件:安装
nvcc
+cmake
执行代码进行编译:
1
(base) ➜ llama.cpp git:(master) make LLAMA_CUBLAS=1 LLAMA_CUDA_NVCC=/usr/local/cuda/bin/nvcc
如果出现错误:
(base) ➜ llama.cpp git:(master) make LLAMA_CUBLAS=1 LLAMA_CUDA_NVCC=/usr/local/cuda/bin/nvcc Makefile:76: *** LLAMA_CUBLAS is removed. Use GGML_CUDA instead.. Stop.
修改代码如下:
1
(base) ➜ llama.cpp git:(master) make GGML_CUDA=1 LLAMA_CUDA_NVCC=/usr/local/cuda/bin/nvcc
为了加快编译速度,我们可以尝试以下命令添加参数
j
,j
后面的数字表示同时编译的线程数(可根据CPU
核数决定),实测能缩短约 $1/3$ 的时间:1
(base) ➜ llama.cpp git:(master) make -j6 GGML_CUDA=1 LLAMA_CUDA_NVCC=/usr/local/cuda/bin/nvcc
下载相应的模型
① 使用
Hugging Face
下载相应模型,实测服务器网速在3M~6M
左右,具体方式如下:1
(base) ➜ ~ huggingface-cli download Qwen/Qwen1.5-32B-Chat-GGUF qwen1_5-32b-chat-q8_0.gguf --local-dir . --local-dir-use-symlinks False
② 使用
wget
下载modelscope
的模型文件,实测网速在10M~22M
左右,这需要你先获取到模型的下载链接,具体方式如下:1
(base) ➜ ~ wget https://www.modelscope.cn/models/qwen/Qwen1.5-32B-Chat-GGUF/resolve/master/qwen1_5-32b-chat-q8_0.gguf
③ 直接使用
modelscope
库下载模型,实测网速在18M~65M
左右,具体方式如下:1
2
3
4(base) ➜ ~ cd LocalGit
(base) ➜ LocalGit mkdir models
(base) ➜ LocalGit cd models
(base) ➜ models modelscope download --model=qwen/Qwen2-7B-Instruct-GGUF --local_dir . qwen2-7b-instruct-q8_0.gguf使用
llama.cpp
的相关命令进行操作1
(base) ➜ llama.cpp git:(master) ./main -m ../models/qwen1_5-32b-chat-q8_0.gguf -n 512 --color -i -cml -f prompts/chat-with-qwen.txt
1
(base) ➜ llama.cpp git:(master) ./llama-server -m ../models/qwen1_5-32b-chat-q8_0.gguf -ngl 80 -fa
如果是
Qwen2-7B-Instruct-GGUF
,可以参考官方文档:Qwen2-7B-Instruct-GGUF · 模型库 — Qwen2-7B-Instruct-GGUF · 模型库 (modelscope.cn)1
(base) ➜ llama.cpp git:(master) ./llama-server -m ../models/qwen2-7b-instruct-q8_0.gguf -ngl 29 -fa
兼容
OpenAI API
,使用Python
代码测试1
2
3
4
5
6
7
8
9
10
11
12
13
14
15import openai
client = openai.OpenAI(
base_url="http://localhost:8080/v1", # "http://<Your api-server IP>:port"
api_key = "sk-no-key-required"
)
completion = client.chat.completions.create(
model="qwen",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "tell me something about michael jordan"}
]
)
print(completion.choices[0].message.content)命令启动
1
2
3
4
5./llama-cli -m qwen2-7b-instruct-q5_k_m.gguf \
-n 512 -co -i -if -f prompts/chat-with-qwen.txt \
--in-prefix "<|im_start|>user\n" \
--in-suffix "<|im_end|>\n<|im_start|>assistant\n" \
-ngl 24 -fa
拓展补充
Llama.cpp大模型量化简明手册_llamacpp量化-CSDN博客
【Llama2 windows部署详细教程】第二节:llama.cpp成功在windows上编译的秘诀_llama cpp 编译-CSDN博客
Deploy_LLMs_ON_Linux