本指导适用于在 TencentOS Server 3 上使用 LMDeploy 推理框架运行 ChatGLM 模型的官方 Demo,以 Docker 方式启动。
LMDeploy 环境准备
本文指导我们通过直接拉取 Dockerhub 上 LMDeploy 的镜像包构建 LMDeploy 开发环境。
由于直接从 Dockerhub openmmlab/lmdeploy 使用 Docker pull 拉取镜像会由于访问限制问题拉取失败,这里我们通过腾讯云 Docker 镜像源加速镜像下载。
配置腾讯云镜像加速源
1. 打开系统中
/etc/docker/daemon.json
配置文件:vim /etc/docker/daemon.json
2. 按 i 切换至编辑模式,添加以下内容,请注意
json
代码的格式:{"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]}
添加完成后格式应类似于:
{"runtimes": {"nvidia": {"args": [],"path": "nvidia-container-runtime"}},"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]}
3. 随后按 ESC 即可退出编辑模式,再输入 !wq 即可保存并退出 vim 环境。
4. 此时 Docker daemon 会被关闭,需要重启 Docker。
sudo systemctl restart docker
注意:
如果此时出现以下错误:
Job for docker.service failed because the control process exited with error code。
See "systemctl status docker.service" and "journalctl -xe" for details。
说明添加的 registry-mirrors 没有按照 json 文件的格式添加,请重新检查格式是否正确,添加正确后请再次重启 Docker。
5. 查看 Docker 状态:
sudo docker info
此时 Clinet 和 Server 都正确运行,且出现 Registry Mirrors 内容,则说明配置成功。

从 Dockerhub 拉取 LMDeploy 镜像
这里我们选择最新版本进行拉取。
docker run -it --name lmdeploy --runtime nvidia --gpus all -e HF_ENDPOINT="https://hf-mirror.com" -v $PWD:/root/.cache/huggingface openmmlab/lmdeploy:latest
说明:
由于中国大陆无法下载 Hugging Face 网站模型,这里使用国内镜像网站的 HF-Mirror 模型,所以加上 -e 的参数写入环境变量。
-v 使用挂载,其中 $PWD 为服务器本地存放模型的位置,这样在容器中下载的模型也会在服务器本地 $PWD 存放一份。
运行模型
模型环境准备
此时应该在
/opt/lmdeploy
路径下,创建 Demo 文件夹来存放模型代码。mkdir -p demo/ChatGLMcd demo/ChatGLM
创建模型代码
在
demo/ChatGLM
文件夹下创建 ChatGLM.py 文件,并写入以下代码,这里我们测试的是 chatglm2-6b 模型:from transformers import AutoTokenizer, AutoModelfrom lmdeploy import pipelineimport time# LMDeploy testing# load modelpipe = pipeline('THUDM/chatglm2-6b')# inferencestart = time.perf_counter()response1 = pipe(['Hi, pls intro yourself'])response2 = pipe(['Shanghai is'])response3 = pipe(['晚上睡不着应该怎么办'])end = time.perf_counter() - start# print output and timeprint(f"{response1}\\n{response2}\\n{response3}")print(f"Processing time: {end:.4f}")
运行模型:
python3 ChatGLM.py
首先会下载模型,随后运行得到输出,输出如下(参考):
[Response(text=' Hello! I am ChatGLM2-6B, an AI Assistant based on the GLM model developed by Knowledge Engineering Group, Tsinghua University and Zhipu.AI. I have been trained to understand and respond to various types of questions proposed by users.', generate_token_len=56, input_token_len=22, session_id=0, finish_reason='stop', token_ids=[13755, 30992, 307, 674, 22011, 10461, 30944, 30943, 30941, 30978, 30949, 30932, 284, 11265, 10695, 1767, 331, 267, 12980, 30944, 2092, 3596, 422, 16397, 7556, 3439, 30932, 304, 9744, 30919, 5144, 1451, 293, 1192, 899, 30923, 30930, 23833, 30930, 307, 431, 628, 7594, 289, 1617, 293, 3758, 289, 2463, 3608, 290, 2554, 5126, 422, 3386, 30930], logprobs=None)][Response(text=' 上海是中国的一个城市,位于中国东部沿海地区。上海是中国重要的经济、文化和科技中心之一,也是全球著名的港口城市。上海拥有悠久的历史和文化,也是中国近代化和现代化的象征之一。', generate_token_len=42, input_token_len=20, session_id=0, finish_reason='stop', token_ids=[39537, 54532, 32914, 31623, 31733, 31123, 32308, 31626, 36282, 36986, 31808, 31155, 31770, 33657, 32333, 31675, 31201, 37229, 31748, 31673, 31905, 31123, 31677, 31879, 34811, 36437, 31733, 31155, 31770, 32104, 39230, 33397, 40565, 31123, 31677, 31626, 35838, 38785, 45877, 35423, 31905, 31155], logprobs=None)][Response(text=' 以下是一些有助于晚上睡觉的技巧:\\n\\n1. 维持规律的睡眠时间:尽量在同一时间上床睡觉和起床,即使在周末和假期也应保持一致。\\n\\n2. 创建舒适的睡眠环境:保持卧室安静、黑暗、凉爽和舒适。如果需要,可以使用睡眠面罩、耳塞或空气净化器。\\n\\n3. 改善睡眠前的活动:在睡前数小时内避免使用电子设备,如手机、电视或电脑。这些设备发出的光线和刺激可能会干扰睡眠。\\n\\n4. 放松身心:在睡前半小时进行一些轻松的活动,如阅读或听轻柔的音乐,有助于放松身心。\\n\\n5. 限制咖啡因和酒精:避免在睡前数小时内摄入咖啡因和酒精,这些物质会影响睡眠质量。\\n\\n6. 锻炼身体:适当的身体锻炼可以帮助放松身心,减轻压力,改善睡眠质量。\\n\\n如果这些方法不能解决你的问题,可能需要咨询医生或睡眠专家。', generate_token_len=207, input_token_len=20, session_id=0, finish_reason='stop', token_ids=[30910, 32040, 43742, 35434, 32820, 35228, 54530, 33741, 30954, 13, 13, 30939, 30930, 30910, 33945, 33700, 54530, 34192, 31643, 30954, 33840, 54534, 34342, 31643, 54547, 55629, 35228, 54542, 39360, 30932, 48002, 35042, 54542, 34469, 54574, 54720, 31983, 33297, 31155, 13, 13, 30943, 30930, 30910, 32991, 47108, 34192, 31747, 30954, 31983, 40210, 36055, 31201, 36038, 31201, 56165, 56558, 54542, 33894, 31155, 31654, 31665, 30932, 46566, 34192, 54610, 56553, 31201, 55808, 55959, 54746, 33300, 38125, 55083, 31155, 13, 13, 30966, 30930, 30910, 32537, 34192, 33711, 31651, 30954, 54534, 43612, 54744, 41942, 32317, 31695, 32157, 32077, 30932, 54627, 32113, 31201, 32092, 54746, 34032, 31155, 31704, 32077, 47357, 43642, 54542, 33464, 32934, 37272, 34192, 31155, 13, 13, 30972, 30930, 30910, 34794, 34532, 30954, 54534, 43612, 40132, 31636, 31784, 33550, 37498, 30932, 54627, 32232, 54746, 55208, 55215, 56059, 41512, 30932, 35434, 34794, 34532, 31155, 13, 13, 30970, 30930, 30910, 32922, 33745, 54674, 54542, 37314, 30954, 32317, 54534, 43612, 54744, 41942, 36620, 33745, 54674, 54542, 37314, 30932, 31704, 32580, 39041, 34192, 31838, 31155, 13, 13, 30978, 30930, 30910, 33748, 31902, 30954, 40215, 31902, 33748, 41230, 34794, 34532, 30932, 35763, 32507, 30932, 32537, 34192, 31838, 31155, 13, 13, 31654, 31704, 31847, 31727, 31868, 31822, 31639, 30932, 31667, 31665, 32539, 32718, 54746, 34192, 32114, 31155], logprobs=None)]Processing time: 7.1545
可以看到输出的内容和运行的时间,表明运行成功。
如果只想输出所对应的 text 内容,只需更改如下代码:
#更改此行代码print(f"{response1}\\n{response2}\\n{response3}")#更改为print(f"{response1[0].text}\\n{response2[0].text}\\n{response3[0].text}")
即可看到只有 text 文本的输出,输出如下(参见):
Hello! I am ChatGLM2-6B, an AI Assistant based on the GLM model developed by Knowledge Engineering Group, Tsinghua University and Zhipu.AI. I have been trained to understand and respond to various types of questions proposed by users.上海是中国的一个城市,位于中国东部沿海地区。它是中国最大的城市之一,也是世界第六大城市。上海是一个现代化的城市,拥有许多国际知名的企业和金融机构。上海也是一个文化和艺术中心,有许多博物馆和剧院。以下时是一些有助于放松和促进睡眠的技巧:1. 创建一个放松的睡眠环境。确保房间安静、黑暗、凉爽和舒适。如果需要,可以使用睡眠面罩、耳塞或空气净化器来帮助创造一个更舒适的睡眠环境。2. 创造一个睡前惯例。例如,洗澡,做一些伸展运动,或者喝一杯温热的饮料。3. 避免在睡前吃大量的食物或饮料。特别是咖啡因和酒精。4. 避免在睡前使用电子设备。这些设备会发出蓝光,可能会干扰睡眠。5. 适当的运动。但请避免在睡前进行剧烈的运动,以免影响睡眠。6. 放松技巧。试着进行冥想、瑜伽或渐进性肌肉松弛练习来放松身体和头脑。7. 避免躺在床上超过20分钟。如果躺在床上无法入睡,不要继续躺在床上,可以去做一些轻松的活动,然后再回到床上。8. 如果躺在床上无法入睡,不要看电视或使用电子设备。这些活动可能会干扰睡眠。9. 考虑使用一些帮助入睡的产品,如香薰精油、舒适的枕头或床垫等。10. 如果这些技巧不能解决你的问题,建议咨询医生或睡眠专家。他们可以为你提供更深入的帮助。
注意事项
说明:
由于 OpenCloudOS 是 TencentOS Server 的开源版本,理论上上述文档当中的所有操作同样适用于 OpenCloudOS。