本文目录
-
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,有着大幅度提升,具有以下亮点:
-
上下问长度最高支持1M。
-
支持多达26种语言。
-
工具调用能力(function call)提升巨大,逼近GPT4。
-
从评测的结果来看,基础通用能力超越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 的正确特征了。
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。