https://internlm.intern-ai.org.cn/ 书生·浦语
欢迎来到 LMDeploy 的中文教程! --- lmdeploy 教程
一、LMDeploy特点 关键是国产化强
LMDeploy 是上海人工智能实验室(OpenMMLab)开源的大语言 / 多模态模型全链路部署工具箱,主打轻量化、高性能、易上线,一站式覆盖:模型量化 → 离线推理 → 在线 API 服务整套流程LMDeploy。
GitHub:https://github.com/InternLM/lmdeploy
核心口号:一行命令启动兼容 OpenAI 标准的大模型 API 服务(你使用的lmdeploy serve api_server就是其核心能力)。
高效的推理:LMDeploy 开发了 Persistent Batch(即 Continuous Batch),Blocked K/V Cache,动态拆分和融合,张量并行,高效的计算 kernel等重要特性。推理性能是 vLLM 的 1.8 倍
可靠的量化:LMDeploy 支持权重量化和 k/v 量化。4bit 模型推理效率是 FP16 下的 2.4 倍。量化模型的可靠性已通过 OpenCompass 评测得到充分验证。
便捷的服务:通过请求分发服务,LMDeploy 支持多模型在多机、多卡上的推理服务。
有状态推理:通过缓存多轮对话过程中 attention 的 k/v,记住对话历史,从而避免重复处理历史会话。显著提升长文本多轮对话场景中的效率。
LMDeploy 支持 2 种推理引擎: TurboMind 和 PyTorch,它们侧重不同。前者追求推理性能的极致优化,后者纯用python开发,着重降低开发者的门槛。
TurboMind是LMDeploy团队开发的一款关于LLM推理的高效推理引擎,它的主要功能包括:LLaMa 结构模型的支持,continuous batch 推理模式和可扩展的 KV 缓存管理器。TurboMind推理引擎仅支持推理TurboMind格式的模型。因此,TurboMind在推理HF格式的模型时,会首先自动将HF格式模型转换为TurboMind格式的模型。该过程在新版本的LMDeploy中是自动进行的,无需用户操作。
二、准备工作
A、硬件配制要求:CUDA 12.2。
B、python已安装:版本3.8以上。
C、系统已安装cuda:通过如下命令查看
D、根据自己的硬件下载对应的Qwen版本:
魔塔网站:ModelScope 魔搭社区,搜索"Qwen3-0.6b":
Qwen3-0.6B:小巧但聪明的模型
Qwen3是通义千问系列的最新版本,而0.6B这个型号,可以理解为它的"轻量便携版"。
0.6B:指的是模型有6亿个参数。相比动辄百亿、千亿参数的大模型,它非常小巧,对电脑配置要求低,但在很多任务上表现依然出色。
FP8:这是一种低精度格式。你可以把它想象成把一张高清图片压缩成体积更小但依然清晰的版本。FP8格式能让模型在运行时占用更少的内存,速度也更快,特别适合我们在个人电脑上部署和测试。
它能做什么:虽然体积小,但它继承了Qwen3的核心能力,比如流畅的对话、基本的逻辑推理、代码理解和多语言支持。对于学习、体验和开发简单的AI应用来说,完全够用。
点击自己要安装的模型,进入其详情页,点"模型文件"-》"下载模型"按照里面说明安装modelsope然后用modelscope下载即可。也可以区huggingface网站下载。
下载方式1 inux环境下载
pip install modelscope
modelscope download --model Qwen/Qwen3-0.6B --local_dir /mnt/llm
下载方式2 python代码下载
from modelscope import snapshot_download
# 指定模型下载到自定义目录(例如 /mnt/llm)
custom_cache_dir = "/mnt/llm"
model_dir = snapshot_download(
'Qwen/Qwen3-0.6B',
cache_dir='/mnt/llm' # 关键参数
)
print(f"模型已下载到:{model_dir}")
三、lmdploy部署Qwen3-0.6B
安装基础环境和包
apt update && apt install gcc g++ build-essential -y
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
source /root/.bashrc
1、创建虚拟环境并激活
虚拟环境可以隔离不同项目所需的 Python 库,避免库版本冲突,保持环境的纯净和隔离。
先创建一个新的python虚拟环境,后面在此环境中部署运行,如若用conda命令创建新虚拟环境lmdeploy ,并激活它:
conda create -n lmdeploy python=3.12 -y
conda activate lmdeploy
运行项目并下载源码
2、安装lmdeploy
在激活的虚拟环境中,执行以下命令安装 lmdeploy:
pip install lmdeploy
3、lmdeploy启动Qwen3服务
lmdeploy serve api_server /mnt/llm --server-name 0.0.0.0 --server-port 65534
四、代码测试
curl
curl http://127.0.0.1:65534/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "/mnt/llm",
"messages": [
{"role": "system", "content": "你是专业计算机助教"},
{"role": "user", "content": "介绍lmdeploy部署大模型"}
],
"temperature": 0.7,
"max_tokens": 512
}'
#使用openai的API风格调用本地模型
from openai import OpenAI
# 指向本地lmdeploy服务
client = OpenAI(
base_url="http://127.0.0.1:65534/v1",
api_key="dummy" # lmdeploy无需真实key,随便填
)
# 对话
completion = client.chat.completions.create(
model="/mnt/llm",
messages=[
{"role": "user", "content": "写一份计算机比赛项目开题报告框架"}
],
temperature=0.7
)
print(completion.choices[0].message.content)
# 流式
stream = client.chat.completions.create(
model="/mnt/llm",
messages=[{"role": "user", "content": "简述RAG实现流程"}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
实例2
pip install openai
from openai import OpenAI
client = OpenAI(
api_key='YOUR_API_KEY',
base_url="http://0.0.0.0:65534/v1"
)
model_name = client.models.list().data[0].id
response = client.chat.completions.create(
model=model_name,
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": " provide three suggestions about time management"},
],
temperature=0.8,
top_p=0.8
)
print(response)
基础交互式聊天(最常用)
lmdeploy chat /mnt/llm