1.LMDeploy环境部署
1.1创建开发机
在InternStudio平台,创建开发机
选择镜像Cuda12.2-conda
;选择10% A100*1
GPU
1.2创建conda环境
点击左上角图标,切换为终端(Terminal)模式
InternStudio上提供了快速创建conda环境的方法。打开命令行终端,创建一个名为lmdeploy
的环境:
studio-conda -t lmdeploy -o pytorch-2.1.2
1.3安装LMDeploy
激活刚刚创建的虚拟环境。
conda activate lmdeploy
安装0.3.0版本的lmdeploy。
pip install lmdeploy[all]==0.3.0
2.LMDeploy模型对话(chat)
2.1 Huggingface与TurboMind简介
HuggingFace
HuggingFace是一个高速发展的社区,包括Meta、Google、Microsoft、Amazon在内的超过5000家组织机构在为HuggingFace开源社区贡献代码、数据集和模型。可以认为是一个针对深度学习模型和数据集的在线托管社区,如果你有数据集或者模型想对外分享,网盘又不太方便,就不妨托管在HuggingFace。
托管在HuggingFace社区的模型通常采用HuggingFace格式存储,简写为HF格式。
TurboMind
TurboMind是LMDeploy团队开发的一款关于LLM推理的高效推理引擎,它的主要功能包括:LLaMa 结构模型的支持,continuous batch 推理模式和可扩展的 KV 缓存管理器。
TurboMind推理引擎仅支持推理TurboMind格式的模型。因此,TurboMind在推理HF格式的模型时,会首先自动将HF格式模型转换为TurboMind格式的模型。
- TurboMind与LMDeploy的关系:LMDeploy是涵盖了LLM 任务全套轻量化、部署和服务解决方案的集成功能包,TurboMind是LMDeploy的一个推理引擎,是一个子模块。LMDeploy也可以使用pytorch作为推理引擎。
- TurboMind与TurboMind模型的关系:TurboMind是推理引擎的名字,TurboMind模型是一种模型存储格式,TurboMind引擎只能推理TurboMind格式的模型。
2.2 下载模型
运行如下命令查看准备好的常用的预训练模型
ls /root/share/new_models/Shanghai_AI_Laboratory/
在InternStudio开发机上,可以按照如下步骤快速下载模型。
首先进入一个你想要存放模型的目录,本教程统一放置在Home目录。执行如下指令:
cd ~
然后执行如下指令由开发机的共享目录软链接或拷贝模型:
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b /root/ # cp -r /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b /root/
执行完如上指令后,可以运行“ls”命令。可以看到,当前目录下已经多了一个internlm2-chat-1_8b
文件夹,即下载好的预训练模型。
ls
2.3 使用Transformer库运行模型
现在,让我们点击左上角的图标,打开VSCode,在左边栏空白区域单击鼠标右键,点击Open in Intergrated Terminal,
打开终端。
输入如下指令,新建pipeline_transformer.py
。
touch /root/pipeline_transformer.py
回车执行指令,可以看到侧边栏多出了pipeline_transformer.py
文件,将以下内容复制粘贴进入pipeline_transformer.py
。
import torch
from transformers import AutoTokenizer, AutoModelForCausalLMtokenizer = AutoTokenizer.from_pretrained("/root/internlm2-chat-1_8b", trust_remote_code=True)
# Set `torch_dtype=torch.float16` to load model in float16, otherwise it will be loaded as float32 and cause OOM Error.
model = AutoModelForCausalLM.from_pretrained("/root/internlm2-chat-1_8b", torch_dtype=torch.float16, trust_remote_code=True).cuda()
model = model.eval()inp = "hello"
print("[INPUT]", inp)
response, history = model.chat(tokenizer, inp, history=[])
print("[OUTPUT]", response)inp = "please provide three suggestions about time management"
print("[INPUT]", inp)
response, history = model.chat(tokenizer, inp, history=history)
print("[OUTPUT]", response)
按Ctrl+S
键保存后,回到终端,激活conda环境。
conda activate lmdeploy
运行python代码:
python /root/pipeline_transformer.py
2.4 使用LMDeploy与模型对话
这一节主要学习如何应用LMDeploy直接与模型进行对话。
首先激活创建好的conda环境:
conda activate lmdeploy
执行如下命令运行下载的1.8B模型:
lmdeploy chat /root/internlm2-chat-1_8b