-
一、配置 LMDeploy 运行环境:
- 1、创建环境:
-
studio-conda -t lmdeploy -o pytorch-2.1.2
2.激活指令:
-
conda activate lmdeploy
3.安装lmdeploy:
-
pip install lmdeploy[all]==0.3.0
4.下载模型:
-
ls /root/share/new_models/Shanghai_AI_Laboratory/
5.进入想放在目录,如home;从共享目录软链接或拷贝模型;ls查看下载好的预训练模型:
-
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 模型对话:
1.使用Transformer库运行模型:
1.在VSCode界面右键,点Open in Intergrated Terminal;
2.终端里,新建py文件:
touch /root/pipeline_transformer.py
3.复制程序进去并保存,程序如下:
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = 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)
上面的程序包含INPUT的内容,直接改里面的inp即可。
5.返回终端激活,运行:
conda activate lmdeploy
python /root/pipeline_transformer.py
2.使用LMDeploy与模型对话:
1.激活,运行:
conda activate lmdeploy
#lmdeploy chat [HF格式模型路径/TurboMind格式模型路径]
lmdeploy chat /root/internlm2-chat-1_8b
能明显感觉到LMDeploy比Transformer速度快很多。
3.速度比较:
(1)加载模型的速度:
transformer约一分半,如下图:
lmdeploy约46s,如下图:
(2)生成西瓜的故事:
transformer约19秒,如下图:
lmdeploy约3s,如下图:
4.LMDeploy模型量化(lite)
lmdeploy chat /root/internlm2-chat-1_8b --cache-max-entry-count 0.5
1.无限制:
2. --cache-max-entry-count 0.1
3.--cache-max-entry-count 0.01 几乎禁止KV Cache占用显存:
总结:禁用前后模型加载速度和推理速度衰减不明显,可能是“生成小故事”过于简单。具体差异应该会在复杂问题的推理上体现。
四、总结
运行方式对比 | Transformer | LMDeploy |
加载模型 | 76-95s | 46s |
生成故事 | 19s | 3-4s |
显存限制对比 | 无限制 | 0.1 | 0.01 |
显存占用 | 7856 | 4944 | 4560 |
生成小故事速度 | 约4s | 约4s | 约4s |