GPU部署ChatGLM3

news2024/10/5 14:12:23

首先,检查一下自己的电脑有没有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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1578160.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣刷题Days33-274. H 指数(js)

目录 1&#xff0c;题目 2&#xff0c;代码 2.1排序 2.2计数排序 3&#xff0c;学习与总结 3.1排序实现的学习总结 3.2计数排序的学习总结 1&#xff0c;题目 给你一个整数数组 citations &#xff0c;其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返…

vs2017离线安装(配合QT5.9.2使用)

以vs2017_Professional版本为例&#xff1a; 一、下载安装包vs2017_Professional.exe&#xff08;在线安装包即可&#xff09; 二、创建在目录&#xff1a;C:\vs2017_Professional_Package&#xff0c;把vs2017_Professional.exe放在该目录下。 ID&#xff1a; Microsoft.Vis…

pytorch演示pipeline并行

pytorch演示pipeline并行 1.单卡内存不够时,可以将网络切分成几段(stage),每个GPU负责一个stage。比如GPU0计算完之后将数据发送给GPU1算后续的stage 2.以上的方式,会导致GPU的利用率不高,可以将输入的batch切分成多份更小的batch,陆续送给GPU0,这样GPU0处理完micro batch0之后…

计算机网络 实验指导 实验9

实验9 三层交换机综合实验 1.实验拓扑图 名称相连的接口IP地址网关PC1F0/3172.1.1.2/28172.1.1.1/28PC2F0/4172.1.1.18/28172.1.1.17/28PC3F0/5172.1.1.34/28172.1.1.33/28PC4F0/3172.1.1.3/28172.1.1.1/28PC5F0/4172.1.1.19/28172.1.1.17/28PC6F0/5172.1.1.35/28172.1.1.33/2…

基于单片机分舱式电开水炉位控制系统

**单片机设计介绍&#xff0c;基于单片机分舱式电开水炉位控制系统 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机分舱式电开水炉位控制系统概要主要涉及通过单片机对电开水炉的各个舱位进行精确控制&#xff0c;实现水位、温度…

mos管开关出现尖峰的原理? mos管开关的时候cs会出现尖峰,请问这是什么原因?

MOS管在开关过程中出现尖峰现象&#xff0c;通常是由于电路中的寄生参数和快速电压变化引起的。以下是一些导致尖峰出现的主要原因和原理&#xff1a; 寄生电容 在MOS管的源极&#xff08;S&#xff09;和漏极&#xff08;D&#xff09;之间存在寄生电容&#xff0c;这个电容在…

考研数据结构——栈和队列(最全!)

一、栈 1.1栈的定义和基本概念 要讨论一种数据结构&#xff0c;就要从三方面讨论&#xff1a;逻辑结构、数据的运算、存储结构&#xff08;物理结构&#xff09;。 1.1.1 定义 线性表&#xff1a;线性表是具有相同数据类型的n个数据元素的有限序列&#xff0c;其中n为表长&am…

JavaScript - 你是如何区分一个变量是对象还是数组的

难度级别:中高级及以上 提问概率:65% 我们日常如果想要获得一个变量的类型,大多会使用typeof的方法,但typeof却不是很准确,遇到null、数组或是对象这种数据类型的时候,他就失灵了,返回值是object,那么都有哪些方式可以区分一个变量的类…

【CHI】(十二)Memory Tagging

目录 1. Introduction 2. Message extensions 3. Tag coherency 4. Read transaction rules 4.1 TagOp values 4.2 Permitted initial MTE tag states 5. Write transactions 5.1 Permitted TagOp values 5.2 TagOp, TU, and tags relationship 6. Dataless transact…

机器学习笔记 - 深度学习遇到超大图像怎么办?使用 xT 对极大图像进行建模论文简读

作为计算机视觉研究人员,在处理大图像时,避免不了受到硬件的限制,毕竟大图像已经不再罕见,手机的相机和绕地球运行的卫星上的相机可以拍摄如此超大的照片,遇到超大图像的时候,我们当前最好的模型和硬件都会达到极限。 所以通常我们在处理大图像时会做出两个次优选择之一:…

并发编程三大特性之可见性

一、什么是可见性&#xff1f; 可见性问题是基于CPU位置出现的&#xff0c;cpu处里速度非常快&#xff0c;相对CPU来说去主内存 获取数据这个事情太慢了&#xff0c;CPU就提供了 L1&#xff0c;L2&#xff0c;L3的三季缓存&#xff0c;每次去主内存拿完 数据后&#xff0c;数据…

SIT1051AQ5V 供电,IO 口兼容 3.3V,±58V 总线耐压,CAN FD 静音模式总线收发器

SIT1051AQ 是一款应用于 CAN 协议控制器和物理总线之间的接口芯片&#xff0c;可应用于车载、工业 控制等领域&#xff0c;支持 5Mbps 灵活数据速率 CAN FD &#xff0c;具有在总线与 CAN 协议控制器之间进行差分信 号传输的能力。 SIT1051AQ 为 SIT1051Q 芯片的…

python应用-计算两个日期的时间差

学习目录 1. 安装deteutil包 2. 导入relativedelta类 3. 计算两个日期的差值 4. 计算1个日期和时间差相加后得到新的日期 之前在工作中遇到一个使用场景&#xff1a;需要计算两个日期之前的差值&#xff0c;比如相差了几年几月几日&#xff0c;查找资料发现deteutil包的rel…

基于Leaflet.js的Marker闪烁特效的实现-模拟预警

目录 前言 一、闪烁组件 1、关于leaflet-icon-pulse 2、 使用leaflet-icon-pulse 3、方法及参数简介 二、闪烁实例开发 1、创建网页 2、Marker闪烁设置 3、实际效果 三、总结 前言 在一些地质灾害或者应急情况当中&#xff0c;或者热门预测当中。我们需要基于时空位置来…

行云防水堡-打造企业数据安全新防线

企业数据安全&#xff0c;顾名思义就是通过各种手段或者技术或者工具保障企业数据的安全性&#xff1b;保障数据信息的硬件、软件及数据受到保护&#xff0c;不受偶然的或者恶意的原因而遭到破坏、更改、泄露&#xff0c;系统连续可靠正常地运行&#xff0c;信息服务不中断。目…

[C++][算法基础]合并集合(并查集)

一共有 n 个数&#xff0c;编号是 1∼n&#xff0c;最开始每个数各自在一个集合中。 现在要进行 m 个操作&#xff0c;操作共有两种&#xff1a; M a b&#xff0c;将编号为 a 和 b 的两个数所在的集合合并&#xff0c;如果两个数已经在同一个集合中&#xff0c;则忽略这个操…

数据库讲解---(SQL语句--表的使用)【MySQL版本】

零.前言 数据库讲解&#xff08;MySQL版&#xff09;&#xff08;超详细&#xff09;【第一章】-CSDN博客 数据库-ER图教程_e-r图数据库-CSDN博客 数据库讲解&#xff08;MySQL版&#xff09;&#xff08;超详细&#xff09;【第二章】【上】-CSDN博客 一.SQL概述 1.1SQL简…

FaceForensics++数据库下载(一步步解析过程)

FaceForensics数据库下载&#xff08;超详细版教程&#xff09; 相信很多做deepfake相关研究的朋友&#xff0c;在对模型进行测试或者对潜前人的研究进行复现时&#xff0c;都需要下载一系列数据库并进行预处理等操作&#xff0c;而FaceForensics数据库是一个由数千个使用不同…

地又接错了?又冒烟了吧?

原文来自微信公众号&#xff1a;工程师看海&#xff0c;与我联系&#xff1a;chunhou0820 看海原创视频教程&#xff1a;《运放秘籍》 大家好&#xff0c;我是工程师看海&#xff0c;原创文章欢迎点赞分享&#xff01; 作为一名硬件工程师&#xff0c;理解地的概念是至关重要的…

大数据之搭建Hive组件

声明&#xff1a;所有软件自行下载&#xff0c;并存放到统一目录中 1.Hive组件的安装配置 1.1实验环境 服务器集群3 个以上节点&#xff0c;节点间网络互通&#xff0c;各节点最低配置&#xff1a;双核 CPU、8GB 内存、100G 硬盘运行环境CentOS 7.4服务和组件完成前面章节实验…