ChatGLM4重磅开源! 连忙实操测试一波,效果惊艳,真的好用!附带最新相关资料和喂饭级实操推理教程!!

本文目录

  • GLM4重磅开源啦

  • GLM4系列版本介绍

  • GLM4大模型能力测评结果

  • 经典测评任务结果

  • 长文本能力

  • 工具调用能力

  • 多模态能力

  • 手把手实操GLM-4-9B-Chat推理预测&&效果展示

  • GLM4运行硬件和环境要求

  • 配置对应的库环境

  • 使用peft+bitsandbytes 进行4位量化推理

  • 进行大模型的推理

  • 显存占用情况

  • 手把手实操 多模态版本GLM-4V-9B-Chat推理预测&&效果展示

  • 多模态GLM-4V-9B对应的硬件资源

  • 进行4位量化加载

  • 准备测试图片

  • 进行推理预测

  • 参考文档

GLM4重磅开源啦

GLM-4-9B是智谱AI在24年6月5日推出的开源预训练模型,属于GLM-4系列。之前已开源chatglm1~chatglm3等多个版本。

GLM4在语义理解、数学、推理、编程和知识等领域的测试中表现优异。GLM-4-9B-Chat是其人类偏好对齐版本,支持多轮对话、网页浏览、代码执行、自定义工具调用(function call)以及长文本推理(最大128K上下文)。该系列模型还支持26种语言,包括日语、韩语和德语,并推出了支持1M上下文长度(约200万中文字符)的版本。

GLM-4系列版本介绍

GLM-4-9B 系列模型主要包含:

glm4大模型能力测评结果

经典测评任务结果

长文本能力

在1M的token上下文长度进行大海捞针实验,

在 LongBench-Chat 上对长文本能力进行了进一步评测,结果如下:

工具调用能力

多模态能力

GLM-4V-9B 是一个多模态语言模型,具备视觉理解能力,其相关经典任务的评测结果如下:

可以看出GLM4的性能相比GLM3-6b,有着大幅度提升,具有以下亮点:

  1. 上下问长度最高支持1M。

  2. 支持多达26种语言。

  3. 工具调用能力(function call)提升巨大,逼近GPT4。

  4. 从评测的结果来看,基础通用能力超越llama3 ,提升40%。

下面我将给大家实操利用对话版本 GLM-4-9B-Chat(128K)和多模态版本 GLM-4V-9B-Chat来进行模型的推理和效果展示;

手把手实操GLM-4-9B-Chat推理预测&&效果展示

GLM4运行硬件和环境要求

下图是glm4对应不同输入token的显存占用情况。为了能够更好的节省资源,这里我将采用4位量化的方式来GLM4进行推理测试。

配置对应的库环境
from IPython.display import clear_output  
!pip install  accelerate  
!pip install  colorama sentencepiece streamlit transformers_stream_generator cpm_kernels tiktoken  
!pip install   git+https://github.com/huggingface/peft  #使用最新版本非常重要,否则可能报错  
!pip install  optimum  
!pip install  safetensors  
!pip install  transformers  
!pip install  bitsandbytes==0.41.3   
clear_output()  
import warnings   
warnings.filterwarnings('ignore')  
import torch   
import transformers  
import peft   
import accelerate   
print(peft.__version__, transformers.__version__, torch.__version__,accelerate.__version__)  
# 0.11.2.dev0 4.41.2 2.1.2 0.30.1  

编写代码小技巧: 在运行大模型前先把各个库对应的版本信息进行打印,避免环境不兼容,节约调试的时间。

使用peft+bitsandbytes 进行4位量化推理
from transformers import AutoTokenizer,AutoConfig, AutoModel, BitsAndBytesConfig  
import torch  
from transformers import AutoModelForCausalLM, AutoTokenizer  bnb_config=BitsAndBytesConfig(  load_in_4bit=True,  bnb_4bit_compute_dtype=torch.float16,  bnb_4bit_use_double_quant=True,   bnb_4bit_quant_type="nf4",   llm_int8_threshold=6.0,  llm_int8_has_fp16_weight=False,  )  
tokenizer = AutoTokenizer.from_pretrained("THUDM/glm-4-9b-chat",trust_remote_code=True)  
model = AutoModelForCausalLM.from_pretrained(  "THUDM/glm-4-9b-chat",  quantization_config=bnb_config,  torch_dtype=torch.float16,  low_cpu_mem_usage=True,  trust_remote_code=True  
).eval()  
model  

其中glm4_6b的网络框架如下:

进行大模型的推理测试
问题1:简单问好
%%time   
query = "你好"  
inputs = tokenizer.apply_chat_template([{"role": "user", "content": query}],  add_generation_prompt=True,  tokenize=True,  return_tensors="pt",  return_dict=True  )  
inputs = inputs.to("cuda")  
gen_kwargs = {"max_length": 2500, "do_sample": True, "top_k": 10,"temperature":0.3,}  
with torch.no_grad():  outputs = model.generate(**inputs, **gen_kwargs)  outputs = outputs[:, inputs['input_ids'].shape[1]:]  print(tokenizer.decode(outputs[0], skip_special_tokens=True))  

输出效果:

问题2: 鲁迅为什么暴打周树人?

问题3: 长江和嘉陵江相汇在什么地方?

问题4:树上有10只鸟,开枪打死了2只,树上还剩下几只?

可以看出上面的几个问题,GLM4都回答的不错,没有掉进我们设置的陷阱中,非常不错。

显存占用情况

手把手实操 多模态版本GLM-4V-9B-Chat推理预测&&效果展示

多模态GLM-4V-9B对应的硬件资源

下图是glm4对应不同输入token的显存占用情况。

进行4位量化加载
from transformers import AutoTokenizer,AutoConfig, AutoModel, BitsAndBytesConfig  
import torch  
from transformers import AutoModelForCausalLM, AutoTokenizer  
bnb_config=BitsAndBytesConfig(  load_in_4bit=True,  bnb_4bit_compute_dtype=torch.float16,  bnb_4bit_use_double_quant=True, #QLoRA 设计的 Double Quantization  bnb_4bit_quant_type="nf4", #QLoRA 设计的 Normal Float 4 量化数据类型  llm_int8_threshold=6.0,  llm_int8_has_fp16_weight=False,  )  
tokenizer = AutoTokenizer.from_pretrained("THUDM/glm-4v-9b",trust_remote_code=True)  
model = AutoModelForCausalLM.from_pretrained(  "THUDM/glm-4v-9b",  quantization_config=bnb_config,  torch_dtype=torch.float16,  low_cpu_mem_usage=True,  trust_remote_code=True  
).eval()  
准备测试图片
!wget https://copyright.bdstatic.com/vcg/creative/426a8f2904bd65bab5eee5474b769374.jpg  
from IPython.display import display  
from PIL import Image  
display(Image.open('426a8f2904bd65bab5eee5474b769374.jpg'))  

这是待理解的图片

进行推理预测
%%time   
import torch  
from PIL import Image  
query = '描述这张图片'  
image = Image.open("426a8f2904bd65bab5eee5474b769374.jpg").convert('RGB')  
inputs = tokenizer.apply_chat_template([{"role": "user", "image": image, "content": query}],  add_generation_prompt=True, tokenize=True, return_tensors="pt",  return_dict=True)  # chat mode  
inputs = inputs.to("cuda")  
gen_kwargs = {"max_length": 2500, "do_sample": True, "top_k": 10,}  
with torch.no_grad():  outputs = model.generate(**inputs, **gen_kwargs)  outputs = outputs[:, inputs['input_ids'].shape[1]:]  print(tokenizer.decode(outputs[0]))  

多模态GLM4输出的效果:

可以看出非常准确地识别出图片的内容,并做出合理解释,太酷啦!

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

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

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

相关文章

Java基础12-特殊文件和日志技术

十二、特殊文件和日志技术 1、特殊文件 properties:用来存储键值对数据。 xml:用来存储有关系的数据。 1.1 properties文件 特点:存储键值对,键不能重复,文件后缀一般是.properties结尾的。 properties:是…

Docker设置日志滚动

问题描述 Docker 容器中的进程会将打印到控制台(console)的日志保存到容器的目录下,默认的 Docker 配置不带有日志的回滚。会在自己的容器目录下往同一个日志文件中不停写入,最后会导致磁盘空间占满的问题。 解决方案 方案一:全局范围内修…

利用Docker搭建一套Mycat2+MySQL8一主一从、读写分离的最简单集群(保姆教程)

文章目录 1、Mycat介绍1.1、mycat简介1.2、mycat重要概念1.3、Mycat1.x与Mycat2功能对比1.2、主从复制原理 2、前提准备3、集群规划4、安装和配置mysql主从复制4.1、master节点安装mysql8容器4.2、slave节点安装mysql8容器4.2、配置主从复制4.3、测试主从复制配置 5、安装mycat…

微信小程序canvas 生成二维码图片,画图片,生成图片,将两个canvas结合并保存图片

**需求实现步骤如下 先定义两个canvas一个canvas myQrcode画二维码的图片另一个canvas mycanvas画一个背景图,并把二维码画到这个canvas上,mycanvas这个canvas生成一张图片,返回图片的临时路径最后保存图片到手机** 首先wxml,新版微信小程序…

【SpringCloud】04-Gateway网关登录校验

1. 网关请求处理流程 2. 网关过滤器 3. 网关实现登录校验 Component // 参数构造器 RequiredArgsConstructor public class AuthGlobalFilter implements GlobalFilter, Ordered {private final AuthProperties authProperties;private final JwtTool jwtTool;private final A…

数据结构——笛卡尔树详解

数据结构——笛卡尔树 1,笛卡尔树的介绍2,笛卡尔树的构建3,笛卡尔树的代码实现 1,笛卡尔树的介绍 前面我们讲过《堆》和《二叉搜索树》,能不能把这两种数据结构的特性结合起来构造一棵新的树呢?当然是可以…

Qt-界面优化控件样式设置(72)

目录 描述 QPushButton 自定义复选框 输入框 列表框 菜单 实现登入界面 设置背景图 改变样式表 描述 这里介绍一些控件的样式设置 QPushButton 相关属性 font-size设置⽂字⼤⼩.border-radius设置圆⻆矩形. 数值设置的越⼤, ⻆就 "越圆".background-colo…

离散数学 第二讲 特殊集合和集合间关系 笔记 [电子科大]王丽杰

1.2 特殊集合与集合间关系 空集 不含任何元素的集合叫做空集(empty set),记作∅. 空集可以符号化为 ∅ { x ∣ x ≠ x } ∅ \{ x|x ≠ x\} ∅{x∣xx} . 空集是绝对唯一的。 全集 针对一个具体范围,我们考虑的所有对象的集合叫做全集(universal se…

vulnhub-Kioptrix4靶机的测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、信息搜集 2、Getshell 3、提权 udf提权 四、结论 一、测试环境 1、系统环境 渗透机:kali2021.1(192.168.202.134) 靶 机:Linux 2.6.24 2、使用工具/软件 …

Oracle分布式数据库的安装遇到的问题【已解决】:找不到scott用户、出现【INS-30014】错误、oracle登录适配器错误

Oracle分布式数据库的安装遇到的问题【已解决】:找不到scott用户、出现【INS-30014】错误、oracle登录适配器错误 安装oracle19c软件利用Database Configuration Assistant,创建orcl数据库第一步:在开始菜单找到Oracle,点击“Data…

SpringColoud GateWay 核心组件

优质博文:IT-BLOG-CN 【1】Route路由: Gateway的基本构建模块,它由ID、目标URL、断言集合和过滤器集合组成。如果聚合断言结果为真,则匹配到该路由。 Route路由-动态路由实现原理: 配置变化Apollo 服务地址实例变化…

Axure使用echarts详细教程

本次使用的axure版本为rp9,下面是效果图。 接下来是详细步骤 【步骤1】在axure上拖一个矩形进来,命名为myChart(这个根据实际情况来,和后面的代码对应就好) 【步骤2】 点击交互->选择加载时->选择打开链接->链接外部地址 点击fx这个符号 【步骤3】在弹…

前端学习笔记(1.0)

在开发项目时,需要使用符号来代替书写./和../等麻烦的路径书写,所以就遇到了下面的问题。 输入没有路径提示 我们都知道,设置是通过配置vite等脚手架工具的配置文件,设置别名即可。 但是如果需要在使用的时候需要出现路径提示&…

虚拟滚动列表如何实现?

highlight: a11y-dark 虚拟滚动列表&#xff0c;虚拟滚动的关键在于只渲染当前视口内可见的数据项&#xff0c;而不是一次性渲染所有数据项。这可以显著提高性能&#xff0c;尤其是在处理大量数据时。 以下是一个完整的虚拟滚动列表的示例代码&#xff1a; <!DOCTYPE htm…

React高级Hook

useReducer useReducer 是 React 提供的一个 Hook&#xff0c;用于在函数组件中使用 reducer 函数来管理组件的 state。它类似于 Redux 中的 reducer&#xff0c;但仅用于组件内部的状态管理。useReducer 可以使复杂的状态逻辑更加清晰和可维护。 基本用法 useReducer 接收…

1.前提配置 关防火墙 关selinux

1.前提配置 关防火墙 关selinux 2.安装web服务程序nginx 未安装则需重新设置挂载点 若已安装&#xff0c;则查看系统中是否存在 3.当前主机添加多地址&#xff08;ip a&#xff09; 配置了三个IP地址 查看IP地址是否配置成功 4.自定义nginx配置文件通过多地址区分多网站 /…

使用JMeter进行Spring Boot接口的压力测试

使用 Apache JMeter 对接口进行压力测试是一个相对简单的过程。以下是详细的步骤&#xff0c;包括安装、配置和执行测试计划。 1. 下载和安装 JMeter 下载 JMeter 从 JMeter 官方网站https://jmeter.apache.org/download_jmeter.cgi 下载最新版本的 JMeter。 解压缩 将下载的 …

02.数据结构介绍顺序表、链表简述+对比

目录 一、什么是数据结构 二、线性表 三、顺序表 四、链表 五、顺序表和链表的区别 一、什么是数据结构 数据结构是由“数据”和“结构”两个词组合而来。 数据&#xff1a;常见的数值1、2、3......&#xff0c;网页里的文字图片信息等都是数据。 结构&#xff1a;组织数据…

【从零开始的LeetCode-算法】3184. 构成整天的下标对数目 I

给你一个整数数组 hours&#xff0c;表示以 小时 为单位的时间&#xff0c;返回一个整数&#xff0c;表示满足 i < j 且 hours[i] hours[j] 构成 整天 的下标对 i, j 的数目。 整天 定义为时间持续时间是 24 小时的 整数倍 。 例如&#xff0c;1 天是 24 小时&#xff0c…

leetcode动态规划(九)-0-1背包理论基础

题目 背包问题主要有以下几种分类&#xff0c;对于面试来说掌握0-1背包和完全背包足够&#xff0c;多重背包和分组背包是竞赛级别的题目&#xff0c;面试就无需准备 题目&#xff1a; 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价…