用通俗易懂方式讲解:快速部署大模型 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 datetime

def show_time():
    now = datetime.now()
    hours = now.hour
    minutes = now.minute
    return f"现在是{hours:02d}:{minutes:02d}"

if __name__ == "__main__":
    while True:
        show_time()

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年度总结:不可错过的隧道IP网站评估推荐

随着网络技术的飞速发展&#xff0c;隧道IP服务成为了许多企业和个人在进行网络活动时的得力助手。作为专业的测评团队&#xff0c;我们经过一整年的深入研究和测试&#xff0c;为大家带来了三款备受瞩目的隧道IP网站推荐——品易HTTP、极光HTTP和一G代理。接下来&#xff0c;我…

智慧校园-教材管理系统总体概述

智慧校园教材管理系统&#xff0c;作为教育信息化进程的又一实践成果&#xff0c;正逐步改变着传统教材管理的模式。该系统通过集成先进的信息技术&#xff0c;对教材从采购、分配、使用到回收的全过程进行了全面的数字化改造&#xff0c;旨在构建一个高效、透明、节约的教材管…

Python生成和识别二维码教程

引言 二维码&#xff08;QR Code&#xff09;在日常生活中非常常见&#xff0c;广泛应用于支付、登录验证、信息分享等场景。本文将介绍如何使用Python生成和识别二维码&#xff0c;适合初学者快速上手。我们将使用qrcode和pyzbar库来实现这一功能。 环境准备 在开始之前&am…

IT项目管理中如何沟通?

IT项目管理中的沟通是保证项目顺利进行的关键。以下是一些创意文案&#xff0c;用以强调和展示在IT项目管理中进行有效沟通的策略和重要性&#xff1a; 代码与文化的编织者&#xff1a;在IT项目管理中&#xff0c;沟通不仅需要技术的精准&#xff0c;更需要文化的融合&#xff…

Qt中用QLabel创建状态灯

首先ui设计中分别创建了4个大灯和4个小灯。 编辑.h文件 #ifndef LED_H #define LED_H#include <QWidget> #include <QLabel>QT_BEGIN_NAMESPACE namespace Ui { class Led; } QT_END_NAMESPACEclass Led : public QWidget {Q_OBJECTpublic:Led(QWidget *parent n…

苹果电脑文件清理软件哪个好 苹果电脑如何清理内存和垃圾文件 cleanMyMac X 4.8.0激活号码

苹果电脑一直以其出色的性能和优雅的设计吸引着无数忠实用户。然而&#xff0c;众所周知&#xff0c;随着时间的推移和使用的增加&#xff0c;您的Mac可能会开始变慢&#xff0c;就像任何高性能设备&#xff0c;长时间使用后总会积累些“灰尘”。但在苹果电脑上就不是真的灰尘哦…

Vite:打包时去除console

需求描述 在生产环境下&#xff0c;Vite打包项目时&#xff0c;需要去除开发时加入的console、debugger调试信息&#xff0c;但是又不想引入terser。 解决方案 esbuild 参考&#xff1a; esbuild - API 修改配置 修改vite.config.js配置文件&#xff0c;新增配置项如下&…

6. 较全的Open3D点云数据处理(python)

注意&#xff1a;以下内容来自博客爆肝5万字❤️Open3D 点云数据处理基础&#xff08;Python版&#xff09;_python 点云 焊缝-CSDN博客&#xff0c;这篇博客写的全且详细&#xff0c;在这里是为了记笔记方便查看&#xff0c;并非抄袭。 1.点云的读写 代码如下&#xff1a; …

SQL33 找出每个学校GPA最低的同学 解法详解

题目截图&#xff1a; 建表代码&#xff1a; drop table if exists user_profile; CREATE TABLE user_profile ( id int NOT NULL, device_id int NOT NULL, gender varchar(14) NOT NULL, age int , university varchar(32) NOT NULL, gpa float, active_days_within_30 int…

一次进程虚拟内存占用超过200G问题分析

在对智驾软件系统资源进行分析时&#xff0c;发现一个进程虚存占用过高&#xff0c;超过200G top查看内存占用 有一个node应用占用了200G的虚拟内存 pmap查看该进程内存情况 pmap -x -p 8496结果显示有两个异常点&#xff0c;刚好和虚存使用总量吻合 一个50G和一个170G的堆…

什么是BIOS,如何进入BIOS设置?

什么是BIOS&#xff0c;如何进入BIOS设置&#xff1f;标题 &#x1f5a5;️ 什么是BIOS&#xff0c;如何进入BIOS设置&#xff1f;——默语的深入解析摘要引言正文内容&#x1f9e9; 什么是BIOS&#xff1f;&#x1f527; 如何进入BIOS设置&#xff1f;⚙️ 常见的BIOS设置选项…

将json对象转为xml进行操作属性

将json对象转为xml进行操作属性 文章目录 将json对象转为xml进行操作属性前端发送json数据格式写入数据库格式-content字段存储&#xff08;varchar(2000)&#xff09;Question实体类-接口映射对象QuestionContent 接收参数对象DAO持久层Mapper层Service层Controller控制层接收…

6月26日-时间记录和统计

首先&#xff0c;我们根据你提供的时间记录&#xff0c;将活动进行分类并计算每个类别的持续时间&#xff0c;然后计算它们各自所占的百分比。以下是具体的分类和计算步骤&#xff1a; 1. **思想活动**&#xff1a; - 持续时间&#xff1a;15分48秒 2. **学习活动**&#xff1a…

Java代码基础算法练习-计算看完一本书的天数-2024.06.29

任务描述&#xff1a; 一本书有 n 页&#xff0c;小明第一天看 1 页&#xff0c;以后每天都比前一天多看 2 页&#xff0c;计算小明看完整本书 需要多少天&#xff1f; 解决思路&#xff1a; 每天都比前一天多看 2 页&#xff0c;输入的页数 n 为判断标准&#xff0c;while 循…

堆排序思想分享

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

SAP ATP可用性检查简介

Availability Check,就是可用性检查,指的是要检查一下此物料是否能满足我的需求。 接到一张销售订单(SALES ORDER),客户要求数量为100PC,并且客户要求的出货日期是2024-07-01,此时我们的销售人员肯定会想到底能否出货给客人呢?系统中建立此单时,SAP就会做一个所谓的检…

一键掌控,文件格式转换无忧!轻松驾驭各种文件格式,高效管理您的数字世界

信息爆炸的时代&#xff0c;我们每天都会接触到各种各样的文件格式。无论是工作文档、图片、视频还是音频文件&#xff0c;它们都以不同的格式存在于我们的电脑和移动设备中。然而&#xff0c;不同的软件和应用往往只支持特定的文件格式&#xff0c;这给我们的工作和生活带来了…

Petal-X :心血管疾病临床风险可视化工具

心血管疾病&#xff08;Cardiovascular diseases, CVDs&#xff09;是全球致死的首要原因&#xff0c;但在大多数情况下&#xff0c;它们是可以通过行为干预来预防的。因此&#xff0c;在个体层面上&#xff0c;有效地传达心血管疾病的风险以及通过风险因素的修改来预计风险降低…

【股指期权投教】一手股指期权大概多少钱?

一手股指期权的权利金大概在几千人民币左右&#xff0c;如果是作为期权卖方还需要另外缴纳保证金的。国内的股指期权有三种&#xff0c;沪深300、上证50、中证1000股指期权&#xff0c;每点合约人民币100 元。 期权合约的价值计算可以通过此公式得出&#xff1a;权利金的支付或…

一块KT板带来4.9万MGV,抖捧AI自动直播真有这么好?

相信大多数做抖音本地生活的朋友都了解&#xff0c;目前本地生活团购带货的方式主要分为两种&#xff0c;一种是短视频带货&#xff0c;由探店达人到店里打卡&#xff0c;然后拍视频发布到自己账号&#xff0c;同时挂载商家的门店定位或团购链接&#xff0c;用户可以直接在视频…