chatglm3的docker部署

github源码:chatglm3
模型下载:modelscope下载chatglm3-6b。由于模型文件比较大(47G)直接 git clone xx 会导致文件下载不完整,需要先安装lfs来支持大文件下载:

  • git lfs install(允许git下载大文件,linux要先执行sudo apt-get git-lfs
  • chatglm3(47g)模型文件下载,chatglm3-6b使用时间4h左右

1、查看文件大
du -h --max-depth=1

2、时时查看docker容器日志
docker logs -f -t 容器id或name

chatglm3的docker发布

glm3的openai的接口:openai_api_demo/api_server.py 明确指定要使用cuda,所以docker容器必须可用gpu环境!

1、先构建基础环境python和cuda

(1)py310-cuda12.0镜像构建

docker build -t py310-cuda12.0 -f Dockfile_env .

(2)Dockerfile_env文件内容

# 基础环境
FROM python:3.10.2

# 安装 CUDA 工具包:把nvidia/cuda:12.0.0-devel-ubuntu20.04镜像目录/usr/local/下的内容复制到目标镜像的/usr/local/目录下。
COPY --from=nvidia/cuda:12.0.0-devel-ubuntu20.04 /usr/local/ /usr/local/

# 确保 CUDA 库在运行时可以找到
ENV PATH=/usr/local/nvidia/bin:${PATH}
ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib64:${LD_LIBRARY_PATH}

# 更新系统包并安装 CUDA 运行时所需的依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    && rm -rf /var/lib/apt/lists/*

# 安装 PyTorch GPU 版本
RUN pip3 install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu118

(3)启动容器,验证安装效果

① 加--gpus all才可以使用 gpu!!!
② 容器启动

方式一 :
step1:先指定容器名称,并启动
( -d 后台运行)
docker run -itd --name cuda-test --gpus all py310-cuda12.0
step2:再进入容器
docker exec -it cuda-test /bin/bash

方式二:
直接进入无名容器
nvidia-docker run --gpus all -it py310-cuda12.0

③ 容器内测试

python -V  # python3.10.2
python
import torch
print(torch.cuda.is_available())  # true

2、叠加chatglm3环境

(1)py310-cuda12.0-glm3 镜像构建

docker build -t py310-cuda12.0-glm3 -f Dockfile_glm .

(2)Dockfile_glm文件内容

FROM py310-cuda12.0

WORKDIR /chatglm3
COPY ./requirements.txt /chatglm3/
RUN pip3 install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

(3)启动容器,验证安装效果

step1:先指定容器名称,并启动
docker run --gpus all -itd --name glm-test py310-cuda12.0-glm3
step2:再进入容器
docker exec -it glm-test /bin/bash

3、chatglm3项目启动

(1)前提

  • cuda12.0_py310镜像 + 指定--gpus 在容器内启用cuda环境;
  • git lfs 大文件模型下载到 Chatglms/models下;
  • 修改ChatGLM3/openai_api_demo/api_server.py, 把模型路径改成本地地址:
# set LLM path
# MODEL_PATH = os.environ.get('MODEL_PATH', 'THUDM/chatglm3-6b')
# TOKENIZER_PATH = os.environ.get("TOKENIZER_PATH", MODEL_PATH)
# EMBEDDING_PATH = os.environ.get('EMBEDDING_PATH', 'BAAI/bge-m3')

## 2024/7/19 cf修改成绝对路径
import os
# 获取当前文件所在的目录
current_directory = os.path.dirname(__file__)
# 获取父目录
parent_directory = os.path.dirname(current_directory)
MODEL_PATH = os.environ.get('MODEL_PATH', os.path.join(parent_directory, 'models/chatglm3-6b'))
TOKENIZER_PATH = os.environ.get("TOKENIZER_PATH", MODEL_PATH)
# set Embedding Model path
EMBEDDING_PATH = os.environ.get('EMBEDDING_PATH', os.path.join(parent_directory,'models/bge-large-zh-v1.5'))

(2)启动命令

docker run --gpus all -p 7680:8000 -v /data/algo/cf.chen/ChatGLM3:/chatglm3 -dit --name glm3 py310-cuda12.0-glm3 python /chatglm3/openai_api_demo/api_server.py

(3)访问测试

curl -X POST "http://127.0.0.1:7680/v1/chat/completions" \ -H "Content-Type: application/json" \ -d "{\"model\": \"chatglm3-6b\", \"messages\": [{\"role\": \"system\", \"content\": \"You are ChatGLM3, a large language model trained by Zhipu.AI. Follow the user's instructions carefully. Respond using markdown.\"}, {\"role\": \"user\", \"content\": \"你好,给我讲一个故事,大概100字\"}], \"stream\": false, \"max_tokens\": 100, \"temperature\": 0.8, \"top_p\": 0.8}"
回答效果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值