GPU部署ChatGLM3

本文介绍了如何在电脑上安装CUDA环境,特别是对于没有显卡的情况,提供了懒人安装包。随后详细步骤说明了如何通过Docker拉取Nvidia镜像、运行容器并部署ChatGLM3模型,包括挂载目录、安装依赖和导出镜像。最后提到将模型与代码打包到阿里云镜像仓库以便于跨服务器部署。
摘要由CSDN通过智能技术生成

 首先,检查一下自己的电脑有没有CUDA环境,没有的话,去安装一个。我的电脑是4060显卡,买回来就自带这些环境了。没有显卡的话,也不要紧,这个懒人安装包支持CPU运行,会自动识别没有GPU,就会以CPU运行,但是非常慢,毫无意义。

------------------------------------------------------懒人一键启动 start-----------------------------------------------------------------------------------------

1、下载一键安装包,解压后放到一个不带中文和特殊字符的路径

链接:https://pan.baidu.com/s/1ishHMyGpUkVjPVQk1GBGGA 
提取码:Zh6L 

 2、直接运行脚本,就能启动成功了

3、到这里,可以不用往下看了。


但是,作为一名java程序员,怎能不使用docker部署一个。下面,是docker方式部署。

 ---------------------------------------------------------懒人一键启动end----------------------------------------------------------------------------------------------

--------------------------------------------------------docker容器启动 start----------------------------------------------------------------------------------------------

拉取镜像

拉取一个Nvidia官方docker镜像,免去在容器中手动安装cuda、cudnn的烦恼。

docker pull nvcr.io/nvidia/pytorch:23.05-py3

运行容器

docker run --gpus all -itd --name chatglm3 -p 81:80 -p 6006:6006 -p 8888:8888 -p 7860:7860  -p 8501:8501 -p 8000:8000 --shm-size=32gb -v D:\temp\GLM3:/data nvcr.io/nvidia/pytorch:23.05-py3

如果没有GPU,就把 --gpus all 参数去掉,--shm-size=32gb是计算机的内存,我的是32G。

D:\temp\ChatGLM3 是挂载目录,就是刚刚下载解压的安装包目录,改成你自己的目录就行。

进入容器内部

docker exec -it chatglm3 /bin/bash

进入data目录

cd /data

安装依赖

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
pip config set install.trusted-host mirrors.aliyun.com
pip install -r requirements.txt

 进入目录

cd openai_api_demo/

 下载依赖

pip install -r requirements.txt

返回上一层目录,进入ChatGLM3目录,执行启动脚本

cd ChatGLM3
nohup sh 02startApi.sh &

 02startApi.sh脚本内容为:

#!/bin/bash


export HF_ENDPOINT=https://hf-mirror.com
export HF_HOME=../huggingface
export MODEL_PATH=../../models/THUDM_chatglm3-6b

cd openai_api_demo

python openai_api.py

 如果运行报错,就用idea或者其他工具,转换一下格式,转成linux格式。(鼠标选中文件,就有这个选项了)

 不出意外的话,就启动成功了,使用postman等接口调用工具就可以调用接口了。

这是我的java调用代码

private static void chatglm3() {
        Map<String, Object> params = new HashMap<>();
        params.put("model", "chatglm3-6b");

        List<Map<String, Object>> messages = new ArrayList<>();
        Map<String, Object> prompt = new HashMap<>();
        prompt.put("role", "user");
        prompt.put("content", "给我讲一个笑话");
        messages.add(prompt);

        params.put("messages", messages);
        params.put("stream", false);
        params.put("max_tokens", 100);
//        params.put("temperature", 0.8);
//        params.put("top_p", 0.8);

        String url = "http://127.0.0.1:8000/v1/chat/completions";

        String result = post(url, JSONUtil.toJsonStr(params), new HashMap<>());
        System.out.println(result);
}

----------------------------------------------------------docker 容器启动end------------------------------------------------------------------------

接下来,记录一下,将容器导出成镜像,并且把模型文件和代码文件一起打包到镜像中,方便以后在别的服务器上一键部署。

导出镜像命令:

docker commit [CONTAINER_ID_OR_NAME] [REPOSITORY_NAME]:[TAG]

  • [CONTAINER_ID_OR_NAME]是您的容器ID或名称。

  • [REPOSITORY_NAME]是您想要给新镜像起的名字。

  • [TAG]是镜像的标签,通常用于区分同一个镜像的不同版本,默认为latest

最终命令是:

docker commit chatglm3 chatglm3-cwp:v1.0.1

在懒人安装包解压目录下创建一个Dockerfile文件,文件内容为:

FROM chatglm3-cwp:v1.0.1

MAINTAINER cwp

COPY ChatGLM3 /data
COPY models /data

ENV TZ=Asia/Shanghai

EXPOSE 81
EXPOSE 8000
EXPOSE 7860
EXPOSE 8501
EXPOSE 8888
EXPOSE 6006

构建镜像

docker build -t chatglm3-gpu:1.0 .

 将镜像推送到自己的阿里云镜像仓库

阿里云镜像仓库访问地址 https://cr.console.aliyun.com/cn-hangzhou/instances

可以新建一个镜像仓库 

 

 跟着操作指南一步步做,最后推送到镜像仓库。

 以后就可以拉取自己的阿里云镜像,运行容器,一键启动ChatGLM3。参照下一篇文章,轻轻松松搭建自己的GPT了。

docker一键部署GPU版ChatGLM3-CSDN博客

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ChatGPT-6B 是由 OpenAI 公司开发的一个大型预训练语言模型,需要大量的计算资源来运行。如果你想在本地部署 ChatGPT-6B,需要满足以下条件: 1. 高性能计算硬件,如 NVIDIA GPU,至少要有 16GB 的显存。 2. 安装 CUDA 和 cuDNN,以便在 GPU 上运行 TensorFlow。 3. 安装 TensorFlow 2.0 或更高版本。 4. 下载 ChatGPT-6B 的预训练模型,可以从 OpenAI 的 GitHub 仓库中下载。 一旦满足上述条件,你可以通过 TensorFlow 的 API 加载预训练模型并进行推理。下面是一个简单的 Python 代码片段,展示了如何加载 ChatGPT-6B 模型并生成对话: ```python import tensorflow as tf import numpy as np import openai # Load the pre-trained model model = tf.keras.models.load_model('path/to/pretrained/model') # Define a function to generate text def generate_text(prompt, length=1024, temperature=0.7): input_ids = openai.encode(prompt) input_ids = tf.constant(input_ids, dtype=tf.int32)[tf.newaxis, :] output = model(input_ids) logits = output['logits'][0, -1, :] / temperature probs = tf.nn.softmax(logits) token = tf.random.categorical([probs], num_samples=1)[-1, 0].numpy() text = openai.decode(np.concatenate([input_ids[0].numpy(), [token]])) i = 0 while i < length and token != openai.Token.EOS: i += 1 input_ids = tf.constant([token], dtype=tf.int32)[tf.newaxis, :] output = model(input_ids) logits = output['logits'][0, -1, :] / temperature probs = tf.nn.softmax(logits) token = tf.random.categorical([probs], num_samples=1)[-1, 0].numpy() text += openai.decode([token]) return text # Generate a conversation prompt = "User: Hello\nAI:" for i in range(10): prompt += '\nUser: ' print(prompt) prompt += generate_text(prompt) print(prompt) ``` 注意,由于 ChatGPT-6B 模型需要大量的计算资源,因此在本地部署时可能需要花费较长时间来生成对话。此外,由于 ChatGPT-6B 是一个大型预训练模型,因此预测结果可能会有一定的误差。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值