chatglm3
AI
2023-12-28 1547字

ChatGLM3-6B

快速上手部署运行大模型,使用cpu运行,需要32G以上的内存

运行系统:linux 依赖环境:docker

源代码:THUDM/ChatGLM3: ChatGLM3

模型:THUDM/chatglm3-6b · Hugging Face

步骤一:下载代码和模型,非常耗时:

git clone https://github.com/THUDM/ChatGLM3
git lfs install
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git

lfs 是git下载大文件需要的组件,这里我在clone的时候经常卡住,于是选择了在网页上依次手动点击文件下载

image-20231228150043471

步骤二:准备依赖镜像

因为本地cpu、内存资源不够需要上传到服务器运行于是使用docker制作镜像上传

Dockerfile

FROM python:3.11.4-slim-bullseye

RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && pip install --upgrade pip && \
    pip install protobuf 'transformers>=4.30.2' cpm_kernels 'torch>=2.0' gradio mdtex2html sentencepiece accelerate

WORKDIR /app

docker build model_base .

这里很容易出现网络问题,我把制作的镜像上传到了docker hub(只下载了模型的依赖,源代码的依赖没有下载)

docker pull yimacro/chatglm3:base

步骤三:打包上传镜像、模型和源代码(文件大,网络慢,非常耗时)

docker save d2635a9c847c > model.tar
tar -zcvf chatglm3-6b.tar.gz chatglm3-6b/
tar -zcvf ChatGLM3-main.tar.gz ChatGLM3-main/

因为,文件比较大,很容易出现磁盘不够的现象,随时注意空间的使用

步骤四:环境准备

docker load < model.tar  //加载镜像
docker run -it --cpus=16 -m=40000m image-id /bin/bash //运行镜像,限制cpu、内存使用
docker cp chatglm3-6b containerid:/app //复制模型文件到镜像

步骤五:模型运行

docker start containerid
docker attach containerid//进入有模型的镜像
python

from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("/app/chatglm3-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("/app/chatglm3-6b", trust_remote_code=True).float()
model = model.eval()
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
print(response)

image-20231228151849281

参考:清华开源语言大模型ChatGLM3部署实战

from: Yimacro 关注:公众号