系统说明和环境安装
系统说明
- 本文采用 Ubuntu 22.04 LTS
Python基础环境准备
- 包括 anaconda, python 等环境安装
创建虚拟环境
- conda创建python环境
1
conda create -n llm_py310 python==3.10
安装相关包
安装下面的依赖项
1
2
3pip install pytorch langchain vllm gptcache modelscope
pip install transformers accelerate tiktoken einops scipy transformers_stream_generator==0.0.4 peft deepspeed
`- 如果出错建议一个个安装
huggingface命令行工具安装
- 安装工具
1
git lfs install
下载模型到本地(可跳过)
使用 git 命令下载 huggingface 项目(方便从本地启动)
1
git clone https://huggingface.co/Qwen/Qwen3-0.6B
推荐使用 modelscope,这样不需要科学上网
1
2
3pip install modelscope
modelscope download --model Qwen/Qwen3-0.6B # 缓存到本地 ~/.cache/modelscope/hub/models/Qwen/Qwen3-0.6B/ 目录下
modelscope download --model Qwen/Qwen3-0.6B --local_dir ./Qwen3-0.6B/ # 保存到 ./Qwen3-0.6B/ 目录下
生成检索 embedding
- 这里可能遇到一些问题:
- modelscope 版本问题,遇到相关报错时改用
1.15.0版本解决 - 可能需要安装
langchain_community
- modelscope 版本问题,遇到相关报错时改用
加载模型时显存爆炸问题
- 显存可能爆炸(即使加载很小的模型,亲测24G显存会被 Qwen3-0.6B直接占满)
- 加载模型会默认将整个GPU 所有显存都占用(原因未知)
- 解决方案:
- 可以增加
gpu_memory_utilization=0.8来指定模型的显存使用,也可以根据需要使用其他值,比如0.7,但需要满足最低使用要求
- 可以增加
- 注:除模型参数外的其他显存占用要求
- 模型需要提前分配 KV Cache,且该值与
max_model_len有关,且默认使用比较大的值(比如max_model_len=40960,导致需要提前分配较大的 KV Cache,从而增加显存)
- 模型需要提前分配 KV Cache,且该值与
Bug 记录
- 遇到
AttributeError: 'State' object has no attribute 'engine_client' - 问题详情见:[Bugfix] Fix AttributeError: ‘State’ object has no attribute ‘engine_client’
- 使用
vllm==0.9.0及以上或者降低到vllm==0.8.0(降低到0.8.0亲测有效)
附录:vLLM 使用代码示例
- 以下是一个简单的 vLLM 使用示例,展示了如何使用 vLLM 加载模型并生成文本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23from vllm import LLM, SamplingParams
model_name = "llama-2-7b-chat-hf"
llm = LLM(model=model_name)
sampling_params = SamplingParams(
temperature=0.7,
top_p=0.95,
max_tokens=1024
)
prompts = [
"介绍一下人工智能的发展历程",
"解释一下量子计算的基本原理",
"推荐几部好看的科幻电影"
]
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"提示: {prompt}")
print(f"生成内容: {generated_text}")
print("-" * 80)