AI大模型探索之路-应用篇15:GLM大模型-ChatGLM3-6B私有化本地部署

2024-04-18 09:12

本文主要是介绍AI大模型探索之路-应用篇15:GLM大模型-ChatGLM3-6B私有化本地部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前言

一、ChatGLM3-6B 简介说明

二、ChatGLM3-6B 资源评估

三、购买云服务器

四、git拉取GLM

五、pip安装依赖

六、运行测试

七、本地部署安装

总结


前言

ChatGLM3-6B 是 OpenAI 推出的一款强大的自然语言处理模型,它在前两代模型的基础上进行了优化和改进,具有更高的性能和更广泛的应用场景。本文将从技术角度对 ChatGLM3-6B 进行详细介绍,包括其特点、资源评估、购买云服务器、git拉取GLM、pip安装依赖、运行测试以及本地部署安装等方面的内容。希望通过本文的介绍,能够帮助大家更好地理解和使用 ChatGLM3-6B 模型。

一、ChatGLM3-6B 简介说明

ChatGLM3-6B 是一款基于深度学习的自然语言处理模型,它具有以下特点:

1)更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、数学、推理、代码、知识等不同角度的数据集上测评显示,* ChatGLM3-6B-Base 具有在 10B 以下的基础模型中最强的性能*。

2)更完整的功能支持: ChatGLM3-6B 采用了全新设计的 Prompt 格式 ,除正常的多轮对话外。同时原生支持工具调用(Function Call)、代码执行(Code Interpreter)和 Agent 任务等复杂场景。

3)更全面的开源序列: 除了对话模型 ChatGLM3-6B 外,还开源了基础模型 ChatGLM3-6B-Base 、长文本对话模型 ChatGLM3-6B-32K 和进一步强化了对于长文本理解能力的 ChatGLM3-6B-128K

二、ChatGLM3-6B 资源评估

初步粗略估算:

1)如果精度为FP32, 需要GPU显存大概 24G左右,如果考虑其他因素再加一点32G左右。
2)如果精度为FP16, 需要GPU显存大概 12G左右,如果考虑其他因素再加一点16G左右。
3)如果量化为int8, 需要GPU显存大概 6G左右,如果考虑其他因素再加一点8G左右。

由于默认情况下,ChatGLM3-6B模型以 FP16 精度加载,因此大概需要16G左右;
如果显存不够需要修改源码进行量化处理,源码参考如下:
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True)
.quantize(8).cuda()

三、购买云服务器

在​​​​​​​AutoDL租一个按量收费的服务器;大家可自行选择合适的云平台,购买云服务器​​​​​​​

选择最新的Pytorch基础镜像(核心需要pytorch库)

登录云服务器

学术加速一波,执行命令:source /etc/network_turbo

四、git拉取GLM

1)下载GLM

git clone https://github.com/THUDM/ChatGLM3

2)下载完成后进入ChatGLM3目录

cd ChatGLM3

五、pip安装依赖

执行下面的pip命令,安装依赖(核心需要pytorch库)

pip install -r requirements.txt

安装过程中提示tensorboard依赖的protobuf版比较低,服务器中protobuf版本过高

有两种方案:

1)降低protobuf的版本到满足tensorboard 2.15.1的要求。你可以使用pip命令来卸载当前的protobuf并安装一个兼容的版本。例如:
pip uninstall protobuf
pip install protobuf==4.24
2)升级你的tensorboard版本到一个与当前protobuf版本兼容的版本。你需要查找最新的tensorboard版本,然后使用pip命令来安装。例如:
pip install --upgrade tensorboard

经尝试采用第一种失败后,改用方案二执行成功。

再重新执行:pip install -r requirements.txt,执行成功

六、运行测试

进入basic_demo目录,查看测试的demo

执行测试demo :   python cli_demo.py

这个目录放了各种测试用的demo,为了方便使用,本次主要采用命令行客户端的方式测试

第一次执行时,中途链接huggingface超时失败,惊出一身冷汗

第二次执行后执行成功(终于出现了期待已久的画面)

赶紧测一波 ,

测试效果赶紧很不错,精准度方面也比较高;另外,感受最明显的特点就是,“速度快”,

基本上在我提问完后,ChatGLM秒回结果,和调用OpenAI在线API相比,直接原地起飞。

七、本地部署安装

由于本地电脑GPU资源不足,无法实操;主要以云服务器部署为主;本地安装方式仅做记录备用

1. Python环境准备

建议安装anaconda(里面集成了很多科学计算的库集成了jupyter等在线编译工具)

网站会自动识别电脑版本匹配工具

2. GPU版PyTorch安装

PyTorch是一个开源的Python机器学习库,基于Torch;它提供了必要的模型管理和训练工具,以及分布式训练能力、易用性、以及与其他工具的良好集成;用于自然语言处理等应用程序。PyTorch既可以看作加入了GPU支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络。

ChatGLM3-6B运行过程需要借助PyTorch来完成相关计算。

需要确认是否已经安装2.0版本及以上的GPU版本的PyTorch;

1)验证是否安装

#导入模块
import torch#查看Pytorch的版本
torch.__version__#测试当前的touch版本与当前服务器的CUDA是否兼容
print(torch.cuda.is_available())

2)安装

#卸载当前pytorch版本
pip uninstall torch torchvision torchaudio#安装新的pytorch版本
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

3. 验证PyTorch与CUDA是否兼容

CUDA是Compute Unified Device Architecture的缩写,它是由NVIDIA公司推出的一个并行计算平台和应用程序接口(API),允许软件开发者和软件工程师使用NVIDIA的图形处理单元(GPU)进行通用计算。简单来说,CUDA让开发者能够利用NVIDIA GPU强大的计算能力来加速除了图形处理以外的科学和工程计算,从而提供比传统CPU更高效的性能。

1)验证是否兼容

#导入模块
import torch#测试当前的touch版本与当前服务器的CUDA是否兼容
print(torch.cuda.is_available())

2)重新安装

在CUDA官网下载最新版CUDA toolkit(CUDA安装工具)进行安装或者更新至12.1版,

3)重新验证

4. 拉取ChatGLM3工程

创建一个目录使用GIT拉取工程代码

git clone https://github.com/THUDM/ChatGLM3cd ChatGLM3

下载完成后,能够在你的文件目录下看到完整的ChatGLM3安装文件

5. 安装ChatGLM3-6B项目依赖库

pip install -r requirements.txt

安装过程若出现类似typing-extensions或fastapi等非核心库不兼容性报错,并不会影响最终模型运行,不用进行额外处理。完成了相关依赖库的安装之后,即可尝试进行模型调用了。

6. 运行测试

测试方式1:

python cli_demo.py

测试方式2:

streamlit run web_demo2.py

总结

本文从技术角度对 ChatGLM3-6B 进行了深入介绍,包括其特点、资源评估、购买云服务器、git 拉取 GLM、pip 安装依赖、运行测试以及本地部署安装等方面的内容。希望通过本文的介绍,能够帮助大家更好地理解和使用 ChatGLM3-6B 模型。

文章若有瑕疵,恳请不吝赐教;若有所触动或助益,还望各位老铁多多关注并给予支持。

这篇关于AI大模型探索之路-应用篇15:GLM大模型-ChatGLM3-6B私有化本地部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/914356

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

如何在Ubuntu 24.04上部署Zabbix 7.0对服务器进行监控

《如何在Ubuntu24.04上部署Zabbix7.0对服务器进行监控》在Ubuntu24.04上部署Zabbix7.0监控阿里云ECS服务器,需配置MariaDB数据库、开放10050/1005... 目录软硬件信息部署步骤步骤 1:安装并配置mariadb步骤 2:安装Zabbix 7.0 Server

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关