清华大模型ChatGLM3部署初体验

648798b6995013ee7f40cfe10a136f72.gif

正文共:1555 字 17 图,预估阅读时间:2 分钟

ChatGLM3是智谱AI和清华大学KEG实验室联合发布的对话预训练模型。该项目在GitHub的工程链接为:

https://github.com/THUDM/ChatGLM3

在人工智能领域中,类似“3B”、“6B”、“12B”的表述通常指的是大语言模型所具有的参数数量,参数数量是衡量现代深度学习模型规模和复杂性的一个关键指标,这里的“B”代表“十亿”(billion)。比如,ChatGLM3-6B是ChatGLM3系列中的开源模型,这里的6B意味着该模型具有大约60亿个参数。在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,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模型推荐使用Conda和PyTorch进行部署和使用,正好我们已经部署好了成了!Tesla M4+Windows 10+Anaconda+CUDA 11.8+cuDNN+Python 3.11

因为需要使用Git来克隆项目,我们先安装Git命令。访问以下页面,按需选择需要的系统及软件版本:

https://git-scm.com/downloads

1adb091b57948061d72b2792b319d527.png

Windows版的下载链接如下:

https://github.com/git-for-windows/git/releases/download/v2.44.0.windows.1/Git-2.44.0-64-bit.exe

下载完成之后,按照推荐提示完成Git的安装。在Git安装过程中,确保选择选项将Git添加到系统PATH环境变量中。

c0444f4133719856362e4a64a780e20f.png

安装完成后,打开Anaconda。首先,新创建一个ChatGLM3环境,Python需要使用3.10或更高版本,我们使用3.11.8版本。

80d610576d5ebed47d55b2b3f6c2bcd6.png

启动Terminal终端。

a9cd1a7905d33eeb8519842a335699fb.png

激活环境ChatGLM3环境,并下载ChatGLM3项目。

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

cbaa42aba799c937e4e004cca493c377.png

然后进入到项目中,使用pip安装依赖软件:

cd ChatGLM3
pip install -r requirements.txt

eea0b6172b73b2a8e59c1425dcc830aa.png

安装完成后,运行以下命令在本地加载模型并启动demo:

streamlit run main.py

6358b11aa8754e313565bd0e3b92308d.png

然后就可以从命令行回显中看到demo的链接了,默认可以自动打开目标页面,也可以手动输入到浏览器进行访问。

e0e726be9125a2accadcf0bf5957d7c0.png

初次访问需要下载并加载模型,可能需要花费一定时间(访问https://huggingface.co/可能需要互联网,请自行联网)。关键的模型文件一共是7个,共12.5 GB,大小分别为1.83 GB、1.97 GB、1.93 GB、1.82 GB、1.97 GB、1.93 GB、1.05 GB。

ead69bc87451f1ba69ff7c8c2785c49b.png

或者先将模型下载到本地,再通过export MODEL_PATH=/path/to/model命令来指定从本地加载模型。具体参考以下链接:

https://huggingface.co/docs/transformers/installation#offline-mode

等加载完成即可进入到ChatGLM3 Demo页面。

c706aa0ff1a673bed323645919b00393.png

从页面可以看到,ChatGLM3 Demo 拥有三种模式:

Chat:对话模式,在此模式下可以与模型进行对话。

Tool:工具模式,模型除了对话外,还可以通过工具进行其他操作。

Code Interpreter:代码解释器模式,模型可以在一个Jupyter环境中执行代码并获取结果,以完成复杂任务。使用Code Interpreter还需要安装Jupyter内核:

ipython kernel install --name ChatGLM3 --user

首先是对话模式,我们可以通过调节top_p(控制生成的文本的多样性)、temperature(控制模型生成文本的创造性或随机性)、repetition_penalty(惩罚模型生成重复的内容)和Output length(生成文本的最大长度)等参数来调整模型行为。

33922740aa074ca1b3324deade508643.png

实际上用起来体验较差,肯定是服务器配置过低的原因,导致响应时间巨长,一直处于运行状态,但迟迟没有结果。

f52284c255cadcc3eb06cd5dc640359b.png

对应的,命令行也会展示前端的交互过程,但就是没有响应。

按照文档提示:默认情况下,模型以FP16精度加载,运行上述代码需要大概13GB显存。而我的Tesla M4只有4 GB显存,肯定是不够了;不过,我也不知道这个模型是什么情况,没有运行在GPU上面,也就没有出现显存不够的报错信息了。

6155a3527761541722681136fd20c0b8.png

而且,它好像也没有加载到内存上面,内存的占用率也不高,只有CPU使用率稍微高一些。

44da5116be685cf3763fc97b29b2c2e4.png

但也不是一直高,一直在波动,我也不知道到底在没在运算。

一句hello就计算了十分钟。

991f9634c0bf49f03ed4a2d2d310ec9c.png

按照文档提示,如果显存不够的话,可以尝试以量化方式加载模型,使用方法如下:

from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True).quantize(4).cuda()
model = model.eval()
response, history = model.chat(tokenizer, "你好吗?", history=[])
print(response)

fe9e45a55e443715d1b427e6ea683067.png

结果还是失败了。

按照官方说法,模型量化会带来一定的性能损失,但官方测试ChatGLM3-6B在4-bit量化下仍然能够进行自然流畅的生成。不过,为了能够流畅运行Int4版本的ChatGLM3-6B,官方建议GPU显存的最低配置要求为5 GB,对应GTX1060(6 GB)、GTX2060(6 GB)等显卡。

但是加载过程中,内存占用还是达到了12 GB,所以前面似乎是没有加载成功。

9ed2d1142cd9f1d399b06342e2606f1f.png

不换设备怕是难成大事啊!为此,我已经紧急加购了Tesla P4显卡,有8 GB显存,性能大约提升160%,期待它的精彩表现吧。

最后,分享一下ChatGLM3的在线文档:

https://zhipu-ai.feishu.cn/wiki/WvQbwIJ9tiPAxGk8ywDck6yfnof

a35915db2f536a08d5c39c7d269c7c4e.gif

长按二维码
关注我们吧

323db923f07fecb8e905f00b6d952c4a.jpeg

035b7e9941875de24b2ea25d0ba39c27.png

成了!Tesla M4+Windows 10+Anaconda+CUDA 11.8+cuDNN+Python 3.11

CentOS 7.9安装Tesla M4驱动、CUDA和cuDNN

MX250笔记本安装Pytorch、CUDA和cuDNN

复制成功!GTX1050Ti换版本安装Pytorch、CUDA和cuDNN

人工智能如何发展到AIGC?解密一份我四年前写的机器学习分享材料

一起学习几个简单的Python算法实现

GPU性能测试中的张量和矩阵运算

IPv6从入门到精通

SRv6典型配置

付出总有回报,全国SRv6组网实验成功了!

使用Python脚本实现SSH登录设备

配置VMware实现从服务器到虚拟机的一键启动脚本

L2TP访问失败?快看看是不是NAT网关的ALG搞的鬼

配置Juniper虚墙vSRX基于路由的IPsec VPN(CLI方式)

使用vSRX测试一下IPsec VPN各加密算法的性能差异

RDP授权119天不够用?给你的Windows Server续个命吧!

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

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

相关文章

C++--STL标准库

一.模板 模板是C中泛型编程的基础。一个模板就是一个创建类或函数的蓝图。 生活中常见的模板有: 编写一个比较两个值大小的函数,如果第一个值大于第二个值返回大于0的数字,两个值相等返回0,第一个值小于第二个值返回小于0的数字。 我们可以根据值类型定义多个函数&…

OxyPlot使用笔记(1)

TrackerFormatString设置的是tracker中字符串的格式。其中{0}是Series的Title,{1}是x轴的Title,{2}是x值,{3}是y轴的Title,{4}是y值;图上点击事件可以用Series.MouseDown PointChange;然后再 private void…

Go语言实战:深入掌握标准库flag的强大用法

Go语言实战:深入掌握标准库flag的强大用法 引言flag库基础命令行参数的基本概念使用flag库定义和解析命令行参数处理非选项命令行参数小结 高级用法自定义Flag的解析命令行参数的分组和嵌套小结 实战技巧组织复杂命令行应用的参数错误处理和用户帮助信息调试命令行应…

php基于人工智能预警突发疾病系统python-flask-django-nodejs

根据现实需要,此系统我们设计出一下功能,主要有以下功能模板。 前台功能:首页、医生、疾病知识、后台管理。 医生功能:首页、个人中心、咨询信息管理、疾病预警管理、高血压管理、糖尿病管理。 用户功能:首页、个人中心…

数据分析能力模型分析与展示

具体内容: 专业素质 专业素质-01 数据处理 能力定义•能通过各种数据处理工具及数据处理方法,对内外部海量数据进行清洗和运用,提供统一数据标准,为业务分析做好数据支持工作。 L1•掌握一…

SinoDB客户端工具dbaccess

类似Oracle的客户端工具sqlplus,Mysql的客户端工具mysql,SinoDB数据库也有自带的命令行客户端工具dbaccess。 dbaccess 识别用户输入,将用户输入的 SQL 语句打包发送给 SinoDB 数据库服务器执行,然后接收服务器的执行结果&#xf…

Leet code 238 除自身以外的数组的乘积

解题思路 以示例1为例 创建两个数组dp(统计该位置之的所有乘积) bp(统计该位置之后的所有乘积) 比如 1 2 3 4 3的dp应该等于 1*2 bp应该等于 4 这样 dp* bp就为该位置的答案 分别计算出每个位置前后的乘积然后放入数组 然…

3.leetcode---验证回文串(Java版)

链接: https://leetcode.cn/problems/XltzEq/description/ 给定一个字符串 s ,验证 s 是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。 本题中,将空字符串定义为有效的 回文串 。 示例 1: 输入: s “A man, a plan…

2022年安徽省职业院校技能大赛 (高职组)“云计算”赛项样卷

#需要资源或有问题的,可私博主!!! #需要资源或有问题的,可私博主!!! #需要资源或有问题的,可私博主!!! 第一场次:私有云(5…

【Linux】自动化构建工具-make/Makefile

个人主页 : zxctscl 如有转载请先通知 文章目录 1. 前言2. 认识make/Makefile3. 了解make/Makefile原理3.1 依赖关系和依赖方法3.2 make检测的顺序3.3 PHONY:XXX 4. makefile内置符号 1. 前言 在上一篇中已经了解了【Linux】编译器-gcc/g使用,这次来一起…

Arch xfce桌面修改中文locale为英文locale和i3wm禁用触摸板

中文很烦人,要切换输入法,所以更改 localectrl list-locales localectl set-locale en_US.UTF-8 localectl status另外有一个可替代的输入法方案: fcitx5 自行搜fcitx5 archwiki 重启,提示修改目录为英文,保留英文 i3wm 禁用触…

具有功耗低、触控灵敏度高、抗干扰能力强等功能的单键电容式触控芯片——TS223B,适用于小家电、电子玩具等产品

•应用领域• 适用于小家电、电子玩具、智能物联网等各种触控产品方案。 •功能介绍• 这款推出的单键电容式触控芯片TS223B具有功耗低、触控灵敏度高、抗干扰能力强等众多优势,输出方式包括直接输出、电平翻转输出,并且输出的初始状态可以配置&#xff…

前端将两个div在一个长为500px,高为300px的div里面并列居中对齐。

前端将两个div在一个长为500px&#xff0c;高为300px的div里面并列居中对齐。 要实现将两个 div 元素放置在一个长为500px&#xff0c;高为300px的父 div 中&#xff0c;一个在左边&#xff0c;一个在右边&#xff0c;并且居中对齐&#xff0c;可以使用Flexbox布局来实现。 <…

Vue快速教程:如何优雅地移除数组中的特定元素?

1、事件参与角色介绍 角色&#xff1a; 1、记录数组multipleSelection&#xff0c;负责记录目前已勾选的记录 2、表格变量currentDeviceList&#xff0c;显示显示当前表格的内容2、事件关联 由于表格是带筛选功能的&#xff0c;且记录带有记忆性&#xff0c;所以记录数组mul…

Outlook邮箱后缀是什么?如何改邮箱后缀?

Outlook邮箱后缀可以更改吗&#xff1f;微软有哪些后缀的邮箱&#xff1f; 对于许多刚接触Outlook邮箱的新手来说&#xff0c;了解Outlook邮箱后缀是必不可少的一步。那么&#xff0c;Outlook邮箱后缀究竟是什么呢&#xff1f;接下来&#xff0c;AokSend就来详细探讨一下这个问…

SSD203D高性能HDMI投影仪方案

一、方案描述&#xff1a; SSD203D是高度集成的高性能HDMI投影仪解决方案,主芯片为ARM Cortex A7,dule core,1.2GHz;内置DDR3,1Gb;支持H.264/H.265解码;支持JPEG基线编码;支持2D图形引擎;支持HDMI输出最高可达1920x1080/1920x120030fps ;支持SPI-Nor/Nand Flash;Built-in RTC;…

C语言之计算某日是该年的第几天

目录 一 简介 二 代码实现 三 时空复杂度 一 简介 在C语言中&#xff0c;计算某日是该年的第几天通常涉及以下步骤&#xff1a; 判断输入的年份是否为闰年。根据判断结果&#xff0c;确定当年二月的天数&#xff08;28或29天&#xff09;。然后&#xff0c;根据月份从前…

媒体邀约专访的意义?怎么做

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体邀约专访是指企业、组织或个人主动邀请媒体进行专题访谈的一种公关活动。这种活动对于提升品牌形象、传播信息、增强公众认知度和信任度等方面都有重要作用。以下是媒体邀约专访的一…

java生成水印图片

直接上代码&#xff1a; package com.hx.manage;import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException;/*** 管理端API-应用启动类** author EastHill*/ public class Main {public stat…

机器学习 - PyTorch使用流程

通常的 PyTorch Workflow 是这样的. But the workflow steps can be repeated and changed depending on the problem you’re working on. Get data ready (turn into tensors)Build or pick a pretrained model to suit your problem 2.1 Pick a loss function & optimi…