InternLM/LMDeploy 大模型推理与部署快速入门指南
前言
LMDeploy 是一个高效的大语言模型(LLM)和视觉语言模型(VLM)推理与部署工具包,由InternLM团队开发。它提供了从模型量化到服务部署的全套解决方案,能够帮助开发者快速将大模型能力集成到实际应用中。本文将详细介绍如何使用LMDeploy进行模型推理和服务部署。
环境准备
在开始之前,请确保已经完成LMDeploy的安装。建议使用Python 3.8或更高版本,并准备好支持CUDA的GPU环境。
离线批量推理
大语言模型(LLM)推理
LMDeploy提供了简洁的pipeline接口来处理LLM推理任务。以下是一个基础示例:
import lmdeploy
pipe = lmdeploy.pipeline("internlm/internlm2_5-7b-chat")
response = pipe(["你好,请介绍一下自己", "上海是"])
print(response)
LMDeploy支持两种推理引擎:
- TurboMind引擎:高性能推理引擎,默认优先使用
- PyTorch引擎:兼容性更好的引擎
开发者可以手动指定引擎类型:
from lmdeploy import pipeline, TurbomindEngineConfig
# 使用TurboMind引擎
pipe = pipeline('internlm/internlm2_5-7b-chat',
backend_config=TurbomindEngineConfig(
max_batch_size=32, # 最大批处理大小
enable_prefix_caching=True, # 启用前缀缓存
cache_max_entry_count=0.8, # K/V缓存占GPU内存比例
session_len=8192 # 会话长度
))
重要参数说明:
cache_max_entry_count
:控制K/V缓存占用的GPU内存比例,默认0.8。如果遇到内存不足(OOM)错误,可适当降低此值。session_len
:设置模型处理的最大上下文长度。
生成参数配置
在生成文本时,可以通过GenerationConfig
调整生成参数:
from lmdeploy import GenerationConfig
response = pipe(prompts,
gen_config=GenerationConfig(
max_new_tokens=1024, # 最大生成token数
top_p=0.8, # 核采样概率
top_k=40, # 保留的候选token数
temperature=0.6 # 温度参数
))
视觉语言模型(VLM)推理
VLM推理与LLM类似,但增加了图像处理能力:
from lmdeploy import pipeline
from lmdeploy.vl import load_image
pipe = pipeline('OpenGVLab/InternVL2-8B')
image = load_image('https://example.com/tiger.jpeg')
response = pipe(('请描述这张图片', image))
print(response)
VLM也支持批处理配置:
from lmdeploy import VisionConfig
pipe = pipeline('OpenGVLab/InternVL2-8B',
vision_config=VisionConfig(
max_batch_size=8 # 图像批处理大小
))
注意:VLM模型通常需要额外安装视觉相关的依赖库,遇到导入错误时请参考模型文档安装所需依赖。
模型服务部署
LLM服务部署
启动一个兼容OpenAI API的服务非常简单:
lmdeploy serve api_server internlm/internlm2_5-7b-chat --server-port 23333
服务启动后,可以使用OpenAI客户端进行访问:
from openai import OpenAI
client = OpenAI(base_url="http://0.0.0.0:23333/v1")
response = client.chat.completions.create(
model=client.models.list().data[0].id,
messages=[
{"role": "system", "content": "你是一个有用的助手"},
{"role": "user", "content": "请提供三个时间管理的建议"},
],
temperature=0.8
)
print(response)
VLM服务部署
VLM服务的启动方式类似:
lmdeploy serve api_server OpenGVLab/InternVL2-8B
访问VLM服务的示例代码:
from openai import OpenAI
client = OpenAI(base_url='http://0.0.0.0:23333/v1')
response = client.chat.completions.create(
model=client.models.list().data[0].id,
messages=[{
'role': 'user',
'content': [
{'type': 'text', 'text': '请描述这张图片'},
{'type': 'image_url', 'image_url': {
'url': 'https://example.com/tiger.jpeg'
}}
]
}]
)
print(response)
命令行交互工具
LMDeploy提供了便捷的命令行聊天工具,方便开发者快速测试模型:
lmdeploy chat internlm/internlm2_5-7b-chat --backend turbomind
此外,还可以使用环境检查工具:
lmdeploy check_env
这个命令会输出当前环境信息,在遇到问题时可以帮助诊断环境配置问题。
性能优化建议
- 对于高并发场景,建议使用TurboMind引擎
- 根据GPU内存情况合理设置
cache_max_entry_count
- 批处理可以显著提高吞吐量,但会增加延迟
- 对于长文本场景,适当增加
session_len
参数
结语
LMDeploy提供了从模型推理到服务部署的完整工具链,通过简单的API和命令行工具,开发者可以快速将大模型能力集成到自己的应用中。本文介绍了基础的使用方法,更多高级功能如模型量化、Docker部署等可以参考官方文档。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考