当前位置: 首页 > news >正文

GPU部署ChatGLM3

首先,检查一下自己的电脑有没有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/bashexport HF_ENDPOINT=https://hf-mirror.com
export HF_HOME=../huggingface
export MODEL_PATH=../../models/THUDM_chatglm3-6bcd openai_api_demopython 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.1MAINTAINER cwpCOPY ChatGLM3 /data
COPY models /dataENV TZ=Asia/ShanghaiEXPOSE 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博客

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • AI技术创业机会之教育科技
  • 延时队列实现实战:如何利用 RabbitMQ 实现延时队列,以满足特定延迟处理需求
  • 从人机界面设计黄金三法则视角看 ChatGPT 的界面设计的“好”与“坏”
  • 提高网站安全性,漏洞扫描能带来什么帮助
  • 如何在Bash中连接字符串变量
  • Golang中的上下文-context包的简介及使用
  • nodejs应用程序以守护进程daemon的方式启动,容器化部署的时候一直部署出错,导致无法成功启动程序。
  • redis的简单操作
  • 【第十二篇】使用BurpSuite实现CSRF(实战案例)
  • docker compose部署项目—踩坑记录
  • vue2 利用网络代理axios实现开发环境前端跨域
  • 文字识别 Optical Character Recognition,OCR CTC STN
  • 【C/C++】C语言实现单链表
  • HarmonyOS实战开发DLP-如何实现一个安全类App。
  • 无参数绕过RCE
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 2019年如何成为全栈工程师?
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Electron入门介绍
  • exports和module.exports
  • Odoo domain写法及运用
  • Spring Cloud中负载均衡器概览
  • vagrant 添加本地 box 安装 laravel homestead
  • 利用DataURL技术在网页上显示图片
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 使用agvtool更改app version/build
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • !!Dom4j 学习笔记
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #pragma 指令
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (11)MATLAB PCA+SVM 人脸识别
  • (PySpark)RDD实验实战——取最大数出现的次数
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (八)Flink Join 连接
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (论文阅读30/100)Convolutional Pose Machines
  • (学习日记)2024.01.19
  • (一)认识微服务
  • (转)四层和七层负载均衡的区别
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • . NET自动找可写目录
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET_WebForm_layui控件使用及与webform联合使用
  • .net6Api后台+uniapp导出Excel
  • .net和jar包windows服务部署
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka