用通俗易懂方式讲解:快速部署大模型 ChatGLM3 并进行推理

在深入了解了一些大模型的知识之后,最好的方法是亲自动手搭建一个开源的大模型,以更深入地理解其工作原理。

在此基础上,我们将以 ChatGLM3 为例进行部署及推理,从而进一步探索大模型的应用和实践。

ChatGLM3简介:

ChatGLM3是由智谱AI与清华大学KEG实验室联合发布的第三代大型对话预训练模型。ChatGLM3具备高度的语言理解能力,能够准确理解用户的自然语言输入,并以流畅、连贯的方式生成回复,进行多轮对话。除了传统的文本交互,ChatGLM3还能够直接执行用户提供的代码片段,并调用外部工具或API来处理特定任务。这种能力极大地扩展了模型的应用范围,使其能直接参与到编程指导、数据分析、问题诊断等实际工作流程中。

ChatGLM3模型:

ChatGLM3-6B:这是ChatGLM3系列中的一个具体型号,表明模型拥有约60亿参数。ChatGLM3-6B在各种评测中表现出色,特别是在10B以下的基础模型中,其性能被评价为最强。

ChatGLM3-6B-Base:作为ChatGLM3-6B的基础模型,采用了多样化的训练数据、充足的训练步数以及优化的训练策略,这使得ChatGLM3-6B在语义理解、数学计算、逻辑推理、代码处理及知识应用等多个维度上展现出卓越的能力。

技术交流&资料

技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。

成立了大模型算法面试和技术交流群,相关资料、技术交流&答疑,均可加我们的交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2040,备注:来自CSDN + 技术交流

ChatGLM3官方推荐硬件要求

运行 Int4版本的 ChatGLM3-6B配置:

内存:>= 8GB

显存: >= 5GB(1060 6GB,2060 6GB)

# int4 模型加载示例
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True).quantize(4).cuda()

运行 FP16版本的ChatGLM3-6B配置:

内存:>= 16GB

显存: >= 13GB(4080 16GB)

# FP16 模型加载示例
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True).half().cuda()

ChatGLM3延续了前两代模型的低部署门槛特性,使得用户能够较为便捷地在不同的环境中设置并运行模型。

ChatGLM3官方推荐软件要求:

python 版本推荐3.10 - 3.11

transformers 库版本推荐为 4.36.2

torch 推荐使用 2.0 及以上的版本,以获得最佳的推理性能

ChatGLM3程序获取:

ChatGLM3是开源的,用户可以通过访问相关GitHub仓库获取模型源码和使用指南。

ChatGLM3 github地址:https://github.com/THUDM/ChatGLM3

本次部署环境:

操作系统:

在这里插入图片描述

CPU: 8核

内存:32GB

GPU:1 * NVIDIA V100

在这里插入图片描述

Python:3.11.5

PyTorch:2.1+cu118

ChatGLM3部署及推理步骤:

1. 下载ChatGL3

!git clone https://github.com/THUDM/ChatGLM3
# 输出
Cloning into 'ChatGLM3'...
remote: Enumerating objects: 1261, done.
remote: Counting objects: 100% (683/683), done.
remote: Compressing objects: 100% (250/250), done.
remote: Total 1261 (delta 537), reused 433 (delta 433), pack-reused 578
Receiving objects: 100% (1261/1261), 17.27 MiB | 10.77 MiB/s, done.
Resolving deltas: 100% (743/743), done.

2. 依赖安装

!cd ChatGLM3 && pip install -r requirements.txt
# 输出
Looking in indexes: https://mirrors.cloud.aliyuncs.com/pypi/simple
Collecting protobuf>=4.25.3 (from -r requirements.txt (line 3))Downloading https://mirrors.cloud.aliyuncs.com/pypi/packages/2c/2a/d2741cad35fa5f06d9c59dda3274e5727ca11075dfd7de3f69c100efdcad/protobuf-5.26.1-cp37-abi3-manylinux2014_x86_64.whl (302 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 302.8/302.8 kB 22.0 MB/s eta 0:00:00
Collecting transformers>=4.38.1 (from -r requirements.txt (line 4))Downloading https://mirrors.cloud.aliyuncs.com/pypi/packages/e2/52/02271ef16713abea41bab736dfc2dbee75e5e3512cf7441e233976211ba5/transformers-4.39.2-py3-none-any.whl (8.8 MB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.8/8.8 MB 122.8 MB/s eta 0:00:0000:0100:01
Collecting tokenizers>=0.15.0 (from -r requirements.txt (line 5))Downloading https://mirrors.cloud.aliyuncs.com/pypi/packages/15/0b/c09b2c0dc688c82adadaa0d5080983de3ce920f4a5cbadb7eaa5302ad251/tokenizers-0.15.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.6 MB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.6/3.6 MB 117.8 MB/s eta 0:00:00
# 不再展示......

3. 模型下载

考虑到从Hugging Face Hub下载需要花费大量时间,我们选择从ModelScope下载:

# modelscope API下载
!pip install modelscope
# 模型下载
from modelscope import snapshot_download
model_dir = snapshot_download("ZhipuAI/chatglm3-6b", revision = "v1.0.0")
# 输出
# ......上面输出信息不展示
Downloading: 100%|██████████| 1.29k/1.29k [00:00<00:00, 6.51MB/s]
Downloading: 100%|██████████| 40.0/40.0 [00:00<00:00, 221kB/s]
Downloading: 100%|██████████| 2.28k/2.28k [00:00<00:00, 11.6MB/s]
Downloading: 100%|██████████| 4.04k/4.04k [00:00<00:00, 14.2MB/s]
Downloading: 100%|██████████| 54.3k/54.3k [00:00<00:00, 37.4MB/s]
Downloading: 100%|█████████▉| 1.70G/1.70G [00:07<00:00, 244MB/s]
Downloading: 100%|█████████▉| 1.83G/1.83G [00:08<00:00, 234MB/s]
Downloading: 100%|█████████▉| 1.80G/1.80G [00:08<00:00, 237MB/s]
Downloading: 100%|█████████▉| 1.69G/1.69G [00:07<00:00, 244MB/s]
Downloading: 100%|█████████▉| 1.83G/1.83G [00:08<00:00, 227MB/s]
Downloading: 100%|█████████▉| 1.80G/1.80G [00:07<00:00, 241MB/s]
Downloading: 100%|█████████▉| 0.98G/0.98G [00:04<00:00, 221MB/s]
Downloading: 100%|██████████| 20.0k/20.0k [00:00<00:00, 73.6MB/s]
Downloading: 100%|██████████| 14.3k/14.3k [00:00<00:00, 52.6MB/s]
Downloading: 100%|██████████| 4.37k/4.37k [00:00<00:00, 18.3MB/s]
Downloading: 100%|██████████| 11.0k/11.0k [00:00<00:00, 44.0MB/s]
Downloading: 100%|██████████| 995k/995k [00:00<00:00, 18.3MB/s]
Downloading: 100%|██████████| 244/244 [00:00<00:00, 1.34MB/s]
# 模型已下载完成

4. 进行推理测试

from modelscope import AutoTokenizer, AutoModel, snapshot_download
model_dir = snapshot_download("ZhipuAI/chatglm3-6b", revision = "v1.0.0")
tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)
model = AutoModel.from_pretrained(model_dir, trust_remote_code=True).half().cuda()
model = model.eval()
response, history = model.chat(tokenizer, "你好,你是?", history=[])
print(response)
response, history = model.chat(tokenizer, "用Python写一个小时钟。", history=history)
print(response)
你好,我是 ChatGLM3-6B,是清华大学KEG实验室和智谱AI公司共同训练的语言模型。我的任务是针对用户的问题和要求提供适当的答复和支持。

好的,这里有一个使用 Python 实现的小时钟程序:

from datetime import datetimedef show_time():now = datetime.now()hours = now.hourminutes = now.minutereturn f"现在是{hours:02d}:{minutes:02d}"if __name__ == "__main__":while True:show_time()

这个程序会显示当前的小时和分钟,每过一秒钟就会更新一次。如果你希望程序能够运行一段时间后再退出,可以在程序最后添加一个无限循环。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu20.04安装LibTorch并完成高斯溅射环境搭建

0. 简介 最近受到优刻得的使用邀请&#xff0c;正好解决了我在大模型和自动驾驶行业对GPU的使用需求。UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU&#xff0c;按时收费每卡2.6元&#xff0c;月卡只需要1.7元每小时&#xff0c;并附带200G的免费…

AI数据分析003:用kimi生成一个正弦波数学动画

文章目录 一、正弦波公式二、输入内容三、输出内容一、正弦波公式 ƒ(x) = a * sin(x + x0) + b 公式中: a: 决定正弦函数振动幅度的大小; x0:表示x开始比0拖后的弧度值; b:表示函数偏离X轴的距离; 对于难以理解的学生来说,可以用动画把这个公式直观的展现出来。 二…

WLAN 4-Way Handshake如何生成GTK?

关于Wi-Fi的加密认证过程&#xff0c;可以参考如下链接&#xff0c;今天我们来理解如何生成GTK。 WLAN数据加密机制_tls加密wifi-CSDN博客 1 GTK GTK&#xff08;Group Temporal Key&#xff09;是由AP通过GMK生成&#xff0c;长度为128位&#xff0c;并在四次握手的第三步中…

一文掌握 Object 类里的所有方法(wait、notify、finalize)

Object 概述 Object 类是 Java 中所有类的父类&#xff0c;这个类中包含了若干方法&#xff0c;这也就意味着所有类都将继承这些方法。因此&#xff0c;掌握这个类的方法是非常必要的&#xff0c;毕竟所有类都能为你提供这些方法。 Object 类位于 java.base 模块下 java.lang…

360的chromesafe64.dll动态链接库导致chrome和edge浏览器闪退崩溃关闭

在chrome或edge浏览器中打开特定的一些网页会导致浏览器闪退关闭 这是windows系统记录的报错日志 chrome报错日志 edge报错日志 日志指向的就是chromesafe64.dll这个动态库 然后用everything搜索发现原来在360安装目录下 360安装目录下的chromesafe64.dll文件 为什么360中的…

微信小程序服务器从腾讯云迁移到阿里云出现的坑

微信小程序服务器从腾讯云迁移到阿里云出现的坑 背景 原先小程序后台服务器到期&#xff0c;因为之前买的是腾讯云新用户&#xff0c;便宜&#xff0c;到期后续费金额懂的都懂。就在阿里云用新用户买了个新的&#xff0c;遂把服务全转到了阿里云服务器上。 此时&#xff0c;域…

Python学习笔记26:进阶篇(十五)常见标准库使用之性能测试cProfile模块学习使用

前言 本文是根据python官方教程中标准库模块的介绍&#xff0c;自己查询资料并整理&#xff0c;编写代码示例做出的学习笔记。 根据模块知识&#xff0c;一次讲解单个或者多个模块的内容。 教程链接&#xff1a;https://docs.python.org/zh-cn/3/tutorial/index.html 本文主要…

如何保护磁盘数据?电脑磁盘数据怎么保护?

电脑磁盘是存储数据的基础&#xff0c;可以将各种重要数据保存在其中。为了避免数据泄露&#xff0c;我们需要保护磁盘数据。那么&#xff0c;电脑磁盘数据怎么保护呢&#xff1f;下面我们就一起来了解一下吧。 文件夹加密超级大师 文件夹加密超级大师是一款优秀的电脑数据加密…

敏捷开发笔记(第9章节)--开放-封闭原则(OCP)

目录 1&#xff1a;PDF上传链接 9.1 开放-封闭原则&#xff08;OCP&#xff09; 9.2 描述 9.3 关键是抽象 9.3.1 shape应用程序 9.3.2 违反OCP 糟糕的设计 9.3.3 遵循OCP 9.3.4 是的&#xff0c;我说谎了 9.3.5 预测变化和“贴切的”结构 9.3.6 放置吊钩 1.只受一次…

2024年华东杯B题数学建模论文:基于车辆运动学转弯模型的自动驾驶规划问题

摘要 随着自动驾驶技术的发展&#xff0c;车辆转弯问题成为关键挑战。本文针对自动驾驶车辆在转弯过程中的数学建模、路径规划及避障策略进行了深入研究&#xff0c;旨在提升自动驾驶车辆的行驶安全性与效率。 针对问题1&#xff0c;对于四轮前轮驱动车辆的转弯问题&#xff0c…

MCU解决800V电动汽车牵引逆变器的常见设计挑战的3种方式

电动汽车 (EV) 牵引逆变器是电动汽车的。它将高压电池的直流电转换为多相&#xff08;通常为三相&#xff09;交流电以驱动牵引电机&#xff0c;并控制制动产生的能量再生。电动汽车电子产品正在从 400V 转向 800V 架构&#xff0c;这有望实现&#xff1a; 快速充电 – 在相同…

嵌入式Linux系统编程 — 4.5 strcmp、strchr 等函数实现字符串比较与查找

目录 1 字符串比较 1.1 strcmp() 函数 1.2 strncmp() 函数 1.3 示例程序 2 字符串查找 2.1 strchr() 函数 2.2 strrchr() 函数 2.3 strstr() 函数 2.4 strpbrk() 函数 2.5 示例程序 1 字符串比较 strcmp() 和 strncmp() 函数是C语言标准库中用于比较两个字符串的函…

【STM32修改串口波特率】

STM32微控制器中的串口波特率调整通常涉及到USART&#xff08;通用同步接收器/发送器&#xff09;模块的配置。USART模块提供了多个寄存器来设置波特率&#xff0c;其中关键的寄存器包括BRR&#xff08;波特率寄存器&#xff09;和USART_CR1&#xff08;控制寄存器1&#xff09…

JVM专题十:JVM中的垃圾回收机制

在JVM专题九&#xff1a;JVM分代知识点梳理中&#xff0c;我们主要介绍了JVM为什么采用分代算法&#xff0c;以及相关的概念&#xff0c;本篇我们将详细拆分各个算法。 垃圾回收的概念 垃圾回收&#xff08;Garbage Collection&#xff0c;GC&#xff09;确实是计算机编程中的…

python-斐波那契数列

[题目描述] 斐波那契数列是指这样的数列&#xff1a;数列的第一个和第二个数都为 1&#xff0c;接下来每个数都等于前面 2个数之和。 给出一个正整数 a&#xff0c;要求斐波那契数列中第 a 个数是多少。输入&#xff1a; 第 1 行是测试数据的组数 n&#xff0c;后面跟着 n 行输…

Dahlia Hart: Stylized Casual Character(休闲角色模型)

此包包含两个发型和两个服装&#xff0c;每个都有多种颜色选择。每个发型都适合与物理资源一起使用&#xff0c;并包含各种表情和音素混合形状。 下载&#xff1a;​​Unity资源商店链接资源下载链接 效果图&#xff1a;

算法设计与分析--近似算法内容整理

文章目录 P、NP、NP-hard 和 NPC多项式时间概念区分NP-hard 的证明例题 1 证明 T S P TSP TSP 问题是 N P − h a r d NP-hard NP−hard 问题 。例题 2 证明最大加权独立集问题是 N P − h a r d NP-hard NP−hard 问题。 扩展 NP-hard 问题3-SAT 问题TSP 旅行商问题 Load B…

探索高效开发神器:Blackbox AI(免费编程助手)

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 &#x1f916; 想要代码生成&#xff1f;&#x1f44c; &#x1f4ac; 需要和AI聊天解决难题&#xff1f;&#…

ORBSLAM3_ROS_Ubuntu18_04环境搭建安装

orbslam3安装 ORB-SLAM3配置及安装教程&#xff08;2023.3&#xff09;_orbslam3安装-CSDN博客 换源&#xff0c;换成国内的 搜索software 安装工具 sudo apt install git sudo apt update sudo apt install gcc g cmake安装 cmake安装新版本 ubuntu20.04安装cmake详细…

python--基础篇--正则表达式--py脚本--题目解答

文章目录 验证输入用户名和QQ号是否有效并给出对应的提示信息从一段文字中提取出国内手机号码替换字符串中的不良内容拆分长字符串 验证输入用户名和QQ号是否有效并给出对应的提示信息 """ 验证输入用户名和QQ号是否有效并给出对应的提示信息要求&#xff1a;用…