ChatGLM 4本地部署指南(Docker容器版)

GLM-4V-9B 是智谱 AI 推出的最新一代预训练模型 GLM-4 系列中的开源多模态版本。 GLM-4V-9B 具备 1120 * 1120 高分辨率下的中英双语多轮对话能力,在中英文综合能力、感知推理、文字识别、图表理解等多方面多模态评测中,GLM-4V-9B 都表现出卓越性能。
本次开源多个版本:

THUDM/glm-4v-9b
基座模型

THUDM/glm-4-9b-chat
偏好对齐的版本。 GLM-4-9B-Chat 还具备备网页浏览、代码执行、自定义工具调用(Function Call)和长文本推理(支持最大 128K 上下文)等高级功能

THUDM/glm-4-9b-chat-1m
支持 1M 上下文长度(约 200 万中文字符)的模型。

THUDM/glm-4v-9b
GLM-4 系列中的开源多模态版本

本文验证硬件环境:
BF16 : RTX4090*1,显存24GB,内存32GB,系统盘200GB
24G显存无法体验多模态:GLM-4V-9B
模型微调硬件要求更高。一般不建议个人用户环境使用

环境准备

硬件要求

  1. GLM-4-9B-Chat
精度显存占用Prefilling / 首响Decode SpeedRemarks
BF1619047MiB0.1554s27.8193 tokens/s输入长度为 1000
精度显存占用Prefilling / 首响Decode SpeedRemarks
Int48251MiB0.1667s23.3903 tokens/s输入长度为 1000
Int49613MiB0.8629s23.4248 tokens/s输入长度为 8000
Int416065MiB4.3906s14.6553 tokens/s输入长度为 32000
  1. GLM-4-9B-Chat-1M
精度显存占用Prefilling / 首响Decode SpeedRemarks
BF1674497MiB98.4930s2.3653 tokens/s输入长度为 200000
  1. GLM-4V-9B
精度显存占用Prefilling / 首响Decode SpeedRemarks
BF1628131MiB0.1016s33.4660 tokens/s输入长度为 1000
BF1633043MiB0.7935a39.2444 tokens/s输入长度为 8000
精度显存占用Prefilling / 首响Decode SpeedRemarks
Int410267MiB0.1685a28.7101 tokens/s输入长度为 1000
Int414105MiB0.8629s24.2370 tokens/s输入长度为 8000
下载源码
git clone https://github.com/THUDM/GLM-4.git
cd GLM-4
模型准备

git clone https://huggingface.co/THUDM/glm-4-9b-chat

手动下载以下几个模型(体验时几个模型不一定需全下载)
下载地址:https://hf-mirror.com/THUDM
模型名称:
THUDM/glm-4-9b-chat
THUDM/glm-4-9b
THUDM/glm-4v-9b
本文统一放在模型存档目录:/u01/workspace/models

Docker 容器化部署

构建镜像
  • Dockerfile样例

注意 COPY GLM-4/ /app/GLM-4/ 这行执行需要根据世纪GLM-4源码下载存放位置。

FROM pytorch/pytorch:2.2.1-cuda12.1-cudnn8-runtime
ARG DEBIAN_FRONTEND=noninteractive
WORKDIR /app

RUN apt-get update
RUN apt-get install -y curl git
RUN rm -rf /var/lib/apt/lists/*

RUN pip config set global.index-url http://mirrors.aliyun.com/pypi/simple
RUN pip config set install.trusted-host mirrors.aliyun.com    
RUN  pip install jupyter  && \
     pip install --upgrade ipython && \
     ipython kernel install --user

RUN  cd /tmp && \ 
     curl -fsSL https://deb.nodesource.com/setup_22.x -o nodesource_setup.sh && \
     bash nodesource_setup.sh && \
     apt-get install -y nodejs && \
     rm -rf nodesource_setup.sh && \
     node -v

RUN npm config set registry https://registry.npmmirror.com
RUN npm install -g pnpm
RUN node - add --global pnpm

COPY GLM-4/ /app/GLM-4/

WORKDIR /app/GLM-4/composite_demo/browser
RUN mkdir -p /u01/workspace/models/
RUN npm --version
RUN pnpm --version
RUN pnpm install


#/u01/workspace/chatglm4/GLM-4/composite_demo/browser/src/config.ts
#LOG_LEVEL: 'debug',
#BROWSER_TIMEOUT: 10000,
#BING_SEARCH_API_URL: 'https://api.bing.microsoft.com/',
#BING_SEARCH_API_KEY: '',
#HOST: 'localhost',
#PORT: 3000,


#/u01/workspace/chatglm4/GLM-4/composite_demo/src/tools/config.py
#BROWSER_SERVER_URL = 'http://localhost:3000'
#IPYKERNEL = 'glm-4-demo'
#ZHIPU_AI_KEY = ''
#COGVIEW_MODEL = 'cogview-3'

WORKDIR /app/GLM-4
RUN pip install --verbose --use-pep517  -r composite_demo/requirements.txt
RUN pip install --verbose --use-pep517  -r basic_demo/requirements.txt
RUN pip install huggingface_hub==0.23.1

EXPOSE 8501

CMD [ "streamlit","run", "composite_demo/src/main.py" ]
  • 执行构建
docker build -t qingcloudtech/chatglm4:v1.0 .
运行docker
docker run -it --gpus all  \
-p 8501:8501 \
-v /u01/workspace/models/glm-4-9b-chat:/app/GLM-4/models/glm-4-9b-chat \
-v /u01/workspace/models/glm-4v-9b:/app/GLM-4/models/glm-4v-9b \
-e CHAT_MODEL_PATH=/app/GLM-4/models/glm-4-9b-chat \
qingcloudtech/chatglm4:v1.0  streamlit run composite_demo/src/main.py

web 访问地址: http://127.0.0.1:8501
image.png

注意:默认24G显存状况下无法正常使用多模态模型。

openai api 方式运行
docker run -it --gpus all \
-p 8000:8000 \
-v /u01/workspace/models/glm-4-9b:/app/GLM-4/THUDM/glm-4-9b \
qingcloudtech/chatglm4:v1.0 python basic_demo/openai_api_server.py

测试验证

警告:
网页浏览、代码执行相关功能在该版本中并不支持,后续会逐步更新到容器中。尽情关注。


【Qinghub Studio 】更适合开发人员的低代码开源开发平台
QingHub企业级应用统一部署
QingHub企业级应用开发管理
QingHub演示
https://qingplus.cn

部署 ChatGPT 模型,你可以使用 Docker。下面是基本的步骤: 1. 首先,确保你已经安装了 Docker。你可以在 Docker 官方网站上找到适合你操作系统的安装指南。 2. 下载 ChatGPT 模型文件。你可以从 OpenAI 的 GitHub 仓库中获取预训练的模型文件。 3. 创建一个新的目录,并将模型文件放在该目录下。 4. 在该目录中创建一个名为 `Dockerfile` 的文件,并添加以下内容: ```dockerfile FROM tensorflow/tensorflow:2.3.1 WORKDIR /app COPY . . CMD ["python", "server.py"] ``` 这个 `Dockerfile` 使用 TensorFlow 的基础镜像,并将当前目录下的所有文件复制到容器的 `/app` 目录中。然后,它指定运行 `server.py` 脚本作为容器的入口点。 5. 在同样的目录中创建一个名为 `server.py` 的文件,并添加以下内容: ```python from transformers import GPT2LMHeadModel, GPT2Tokenizer from flask import Flask, request, jsonify app = Flask(__name__) tokenizer = GPT2Tokenizer.from_pretrained("gpt2") model = GPT2LMHeadModel.from_pretrained("gpt2") @app.route("/generate", methods=["POST"]) def generate_text(): data = request.get_json() prompt = data["prompt"] input_ids = tokenizer.encode(prompt, return_tensors="pt") output = model.generate(input_ids, max_length=100, num_return_sequences=1) generated_text = tokenizer.decode(output[0], skip_special_tokens=True) return jsonify({"text": generated_text}) if __name__ == "__main__": app.run(host="0.0.0.0", port=5000) ``` 这个 `server.py` 脚本使用 Hugging Face 的 Transformers 库来加载模型和 tokenizer。它创建了一个 Flask 服务器,监听 `/generate` 的 POST 请求,并生成对应的文本。 6. 构建 Docker 镜像。在命令行中,进入到包含 `Dockerfile` 和 `server.py` 的目录,并执行以下命令: ```bash docker build -t chatglm . ``` 这个命令会根据 `Dockerfile` 构建一个名为 `chatglm` 的 Docker 镜像。 7. 运行 Docker 容器。执行以下命令启动容器: ```bash docker run -p 5000:5000 chatglm ``` 这个命令会将容器的 5000 端口映射到宿主机的 5000 端口,使得你可以通过宿主机访问容器中的服务。 现在,你可以通过发送 POST 请求到 `http://localhost:5000/generate` 来使用 ChatGPT 生成文本。记得在请求的主体中包含一个 JSON 对象,其中包含一个名为 `prompt` 的字段,表示生成文本的提示。 这些是基本的步骤,你还可以根据需要进行进一步的配置和优化。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值