InternLM/LMDeploy 大模型推理与部署快速入门指南

InternLM/LMDeploy 大模型推理与部署快速入门指南

lmdeploy LMDeploy is a toolkit for compressing, deploying, and serving LLMs. lmdeploy 项目地址: https://gitcode.com/gh_mirrors/lm/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支持两种推理引擎:

  1. TurboMind引擎:高性能推理引擎,默认优先使用
  2. 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

这个命令会输出当前环境信息,在遇到问题时可以帮助诊断环境配置问题。

性能优化建议

  1. 对于高并发场景,建议使用TurboMind引擎
  2. 根据GPU内存情况合理设置cache_max_entry_count
  3. 批处理可以显著提高吞吐量,但会增加延迟
  4. 对于长文本场景,适当增加session_len参数

结语

LMDeploy提供了从模型推理到服务部署的完整工具链,通过简单的API和命令行工具,开发者可以快速将大模型能力集成到自己的应用中。本文介绍了基础的使用方法,更多高级功能如模型量化、Docker部署等可以参考官方文档。

lmdeploy LMDeploy is a toolkit for compressing, deploying, and serving LLMs. lmdeploy 项目地址: https://gitcode.com/gh_mirrors/lm/lmdeploy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余纳娓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值