智谱ChatGLM3魔搭最佳实践教程来了!

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
简介: ChatGLM3-6B 是 ChatGLM 系列最新一代的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上

导读

ChatGLM3-6B 是 ChatGLM 系列最新一代的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 引入了如下特性:

  1. 更强大的基础模型:ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、数学、推理、代码、知识等不同角度的数据集上测评显示,ChatGLM3-6B-Base 具有在 10B 以下的预训练模型中优秀的性能。

  1. 更完整的功能支持:ChatGLM3-6B 采用了全新设计的 Prompt 格式,除正常的多轮对话外。同时原生支持工具调用(Function Call)、代码执行(Code Interpreter)和 Agent 任务等复杂场景。

  1. 更全面的开源序列: 除了对话模型 ChatGLM3-6B 外,还开源了基础模型 ChatGLM-6B-Base、长文本对话模型 ChatGLM3-6B-32K。以上所有权重对学术研究完全开放,在登记后亦允许免费商业使用(登记地址可通过魔搭模型详情页直达)。

效果评估

选取了 8 个中英文典型数据集,在 ChatGLM3-6B (base) 版本上进行了性能测试。

Model

GSM8K

MATH

BBH

MMLU

C-Eval

CMMLU

MBPP

AGIEval

ChatGLM2-6B-Base

6.5

33.7

51.7

50.0

-

-

Best Baseline

13.1

45.0

63.5

62.2

47.5

45.8

ChatGLM3-6B-Base

25.7

66.1

69.0

67.5

52.4

53.7

Best Baseline 指的是模型参数在 10B 以下、在对应数据集上表现最好的预训练模型,不包括只针对某一项任务训练而未保持通用能力的模型。

对 ChatGLM3-6B-Base 的测试中,BBH 采用 3-shot 测试,需要推理的 GSM8K、MATH 采用 0-shot CoT 测试,MBPP 采用 0-shot 生成后运行测例计算 Pass@1 ,其他选择题类型数据集均采用 0-shot 测试。

在多个长文本应用场景下对 ChatGLM3-6B-32K 进行了人工评估测试。与二代模型相比,其效果平均提升了超过 50%。在论文阅读、文档摘要和财报分析等应用中,这种提升尤为显著。此外,在 LongBench 评测集上对模型的测试具体结果如下表所示:

Model

平均

Summary

Single-Doc QA

Multi-Doc QA

Code

Few-shot

Synthetic

ChatGLM2-6B-32K

41.5

24.8

37.6

34.7

52.8

51.3

47.7

ChatGLM3-6B-32K

50.2

26.6

45.8

46.1

56.2

61.2

65

环节配置与安装

  1. python 3.8及以上版本
  2. pytorch 1.12及以上版本,推荐2.0及以上版本
  3. 建议使用CUDA 11.4及以上

使用步骤

本文主要演示的模型为chatglm3-6b和chatglm3-6b-base模型,在ModelScope的Notebook的环境(这里以PAI-DSW为例)的配置下运行(显存24G) :

服务器连接与环境准备

1、进入ModelScope首页:modelscope.cn,进入我的Notebook


2、选择GPU环境,进入PAI-DSW在线开发环境


3、新建Notebook

创空间体验

魔搭社区上线了 ChatGLM3-6B的体验Demo,欢迎大家体验实际效果!

创空间链接:

https://modelscope.cn/studios/ZhipuAI/chatglm3-6b-demo/summary

晒出一些基于各维度随机抽问的一次性测试案例:

  • 国际惯例先上自我认知

  • 数学

鸡兔共有100只,鸡的脚比兔子多80只,问鸡与兔各多少只

  • 逻辑推理

模型链接和下载

ChatGLM3系列模型现已在ModelScope社区开源,包括:

ChatGLM3-6B模型:

https://modelscope.cn/models/ZhipuAI/chatglm3-6b/summary

ChatGLM3-6B-预训练模型:

https://modelscope.cn/models/ZhipuAI/chatglm3-6b-base/summary

ChatGLM3-6B-32K模型:

https://modelscope.cn/models/ZhipuAI/chatglm3-6b-32k/summary

创空间体验:

https://modelscope.cn/studios/ZhipuAI/chatglm3-6b-demo/summary

社区支持直接下载模型的repo:

from modelscope import snapshot_download
model_dir1 = snapshot_download("ZhipuAI/chatglm3-6b", revision = "master")
model_dir2 = snapshot_download("ZhipuAI/chatglm3-6b-base", revision = "master")
model_dir3 = snapshot_download("ZhipuAI/chatglm3-6b-32k", revision = "master")

模型推理

推理代码:

from modelscope import AutoTokenizer, AutoModel, snapshot_download
model_dir = snapshot_download("ZhipuAI/chatglm3-6b", revision = "master")
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, "晚上睡不着应该怎么办", history=history)
print(response)

资源消耗:

chatglm3-6b-32k 微调和微调后推理

微调代码开源地址: 

https://github.com/modelscope/swift/tree/main/examples/pytorch/llm

clone swift仓库并安装swift

# 设置pip全局镜像和安装相关的python包
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
git clone https://github.com/modelscope/swift.git
cd swift
pip install .[llm]
# 下面的脚本需要在此目录下执行
cd examples/pytorch/llm
# 如果你想要使用deepspeed.
pip install deepspeed -U
# 如果你想要使用基于auto_gptq的qlora训练. (推荐, 效果优于bnb)
# 使用auto_gptq的模型: qwen-7b-chat-int4, qwen-14b-chat-int4, qwen-7b-chat-int8, qwen-14b-chat-int8
pip install auto_gptq optimum -U
# 如果你想要使用基于bnb的qlora训练.
pip install bitsandbytes -U

模型微调脚本 (lora+ddp+deepspeed)

# Experimental environment: 2 * 3090
# 2 * 20GB GPU memory
nproc_per_node=2
PYTHONPATH=../../.. \
CUDA_VISIBLE_DEVICES=0,1 \
torchrun \
    --nproc_per_node=$nproc_per_node \
    --master_port 29500 \
    llm_sft.py \
    --model_id_or_path ZhipuAI/chatglm3-6b-32k \
    --model_revision master \
    --sft_type lora \
    --tuner_backend swift \
    --template_type chatglm3 \
    --dtype bf16 \
    --output_dir output \
    --ddp_backend nccl \
    --dataset damo-agent-mini-zh \
    --train_dataset_sample -1 \
    --num_train_epochs 1 \
    --max_length 4096 \
    --lora_rank 8 \
    --lora_alpha 32 \
    --lora_dropout_p 0.05 \
    --lora_target_modules AUTO \
    --gradient_checkpointing true \
    --batch_size 1 \
    --weight_decay 0. \
    --learning_rate 1e-4 \
    --gradient_accumulation_steps $(expr 16 / $nproc_per_node) \
    --max_grad_norm 0.5 \
    --warmup_ratio 0.03 \
    --eval_steps 100 \
    --save_steps 100 \
    --save_total_limit 2 \
    --logging_steps 10 \
    --push_to_hub false \
    --hub_model_id chatglm3-6b-32k-lora \
    --hub_private_repo true \
    --hub_token 'your-sdk-token' \
    --deepspeed_config_path 'ds_config/zero2.json' \
    --only_save_model true \

模型微调后的推理脚本

# Experimental environment: 3090
PYTHONPATH=../../.. \
CUDA_VISIBLE_DEVICES=0 \
python llm_infer.py \
    --model_id_or_path ZhipuAI/chatglm3-6b-32k \
    --model_revision master \
    --sft_type lora \
    --template_type chatglm3 \
    --dtype bf16 \
    --ckpt_dir "output/chatglm3-6b-32k/vx_xxx/checkpoint-xxx" \
    --eval_human false \
    --dataset damo-agent-mini-zh \
    --max_length 4096 \
    --max_new_tokens 2048 \
    --temperature 0.9 \
    --top_k 20 \
    --top_p 0.9 \
    --do_sample true \
    --merge_lora_and_save false \

微调的可视化结果

训练损失:

评估损失

训练后生成样例

[PROMPT][gMASK]sop<|user|> 
 给我写一首诗,形容绿树成荫,小河潺潺,女生诵读这首诗,生成个视频<|assistant|> 
 [OUTPUT]绿树成荫小河潺潺, 清新空气弥漫香。鸟儿歌唱花芬芳, 青春年华美如画。
<|startofthink|>```JSON
{"api_name": "modelscope_speech-generation", "url": "http://178.32.165.179:6440/damo/speech_sambert-hifigan_tts_zh-cn_16k", "parameters": {"text": "绿树成荫小河潺潺, 清新空气弥漫香。鸟儿歌唱花芬芳, 青春年华美如画。", "gender": "woman"}}
```<|endofthink|>
<|startofexec|>```JSON
{"result": "<audio id="audio" controls="" preload="none"> <source id="wav" src="http://xdp-expriment.oss-cn-zhangjiakou.aliyuncs.com/modelscope/audio/959e84d79155441f.wav"> </audio>"}
```<|endofexec|>
<audio id="audio" controls=""preload="none"> <source id="wav" src="http://xdp-expriment.oss-cn-zhangjiakou.aliyuncs.com/modelscope/audio/959e84d79155441f.wav"> </audio>
目前ModelScope只有支持英文的视频生成模型,所以我将首先把您的问题利用ModelScope的中英翻译模型转化为英文,然后再调用英文的视频生成模型<|startofthink|>```JSON
{"api_name": "modelscope_text-translation-zh2en", "url": "http://110.172.26.163:6983/damo/nlp_csanmt_translation_zh2en", "parameters": {"text": "绿树成荫小河潺潺, 清新空气弥漫香。鸟儿歌唱花芬芳, 青春年华美如画。"}}
```<|endofthink|>
<|startofexec|>```JSON
{"result": "The scenery of a small village on a lake."}
```<|endofexec|>
翻译后的指令:The scenery of a small village on a lake.
调用视频生成模型生成视频中......
<|startofthink|>```JSON
{"api_name": "modelscope_video-generation", "url": "http://154.87.177.70:7254/damo/text-to-video-synthesis", "parameters": {"text": "The scenery of a small village on a lake."}}
```<|endofthink|>
<|startofexec|>```JSON
{"result": "![IMAGEGEN](http://xdp-expriment.oss-cn-zhangjiakou.aliyuncs.com/modelscope/video/8f433497664a40a1.gif"}
```<|endofexec|>
![IMAGEGEN](http://xdp-expriment.oss-cn-zhangjiakou.aliyuncs.com/modelscope/video/8f433497664a40a1.gif)

资源消耗:

2 * 20G

点击阅读全文,直达chatglm3-6b-demo创空间体验~

ChatGLM3-6B对话Demo · 创空间 (modelscope.cn)

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
4天前
|
自然语言处理 数据可视化 物联网
Qwen1.5-MoE开源,魔搭社区推理训练最佳实践教程来啦
通义千问团队推出Qwen系列的首个MoE模型,Qwen1.5-MoE-A2.7B。
|
4天前
|
数据可视化 物联网 Swift
谷歌发布开源LLM Gemma,魔搭社区评测+最佳实践教程来啦!
Gemma是由Google推出的一系列轻量级、先进的开源模型,他们是基于 Google Gemini 模型的研究和技术而构建。
|
4天前
|
自然语言处理 API Swift
Qwen1.5开源!魔搭最佳实践来啦!
近几个月来,通义千问团队一直在努力探索如何构建一个“好”的模型,同时优化开发者体验。就在刚刚,中国新年前夕,通义千问团队分享了Qwen开源系列的下一个版本,Qwen1.5。
|
6月前
|
人工智能 监控 Swift
魔搭社区LLM模型部署实践 —— 以ChatGLM3为例
本文将以ChatGLM3-6B为例,介绍在魔搭社区如何部署LLM
|
10月前
【ChatGLM】本地版ChatGPT ?6G显存即可轻松使用 !ChatGLM-6B 清华开源模型本地部署教程
【ChatGLM】本地版ChatGPT ?6G显存即可轻松使用 !ChatGLM-6B 清华开源模型本地部署教程
436 0
|
机器学习/深度学习 人工智能 编解码
|
4天前
|
安全 测试技术 Swift
Llama 3开源!魔搭社区手把手带你推理,部署,微调和评估
Meta发布了 Meta Llama 3系列,是LLama系列开源大型语言模型的下一代。在接下来的几个月,Meta预计将推出新功能、更长的上下文窗口、额外的模型大小和增强的性能,并会分享 Llama 3 研究论文。
Llama 3开源!魔搭社区手把手带你推理,部署,微调和评估
|
4天前
|
自然语言处理 算法 开发者
通义XR实验室文生3D模型开源,魔搭社区最佳实践来啦!
通义实验室XR实验室重磅开源文生3D新模型,能够从一句文本描述构建3D模型及对应纹理,目前已经在Github面向外界开源!与该项技术一起开源的,还有通义实验室推出的Text-to-ND(文本生成深度、法向图)、Text-to-ND-MV(文本生成多视角的深度、法向图)两个大模型。我们先来直观感受一下这两个大模型的魔法能力:
|
4天前
|
人工智能 知识图谱 Windows
Mistral 7B v0.2 基础模型开源,魔搭社区微调教程和评测来啦!
Mistral AI在3月24日突然发布并开源了 Mistral 7B v0.2模型,有如下几个特点
|
4天前
|
编解码 JSON 数据可视化
DeepSeek VL系列开源,魔搭社区模型微调最佳实践教程来啦!
3月11日,DeepSeek-AI开源了全新多模态大模型DeepSeek-VL系列,包含1.3b、7b两种不同规模的4个版本的模型。
http://www.vxiaotou.com