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

简介: 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快速上手——如何使用ossbrowser
本实验是对象存储OSS入门级实验。通过本实验,用户可学会如何用对象OSS的插件,进行简单的数据存、查、删等操作。
相关文章
|
搜索推荐 物联网 PyTorch
Qwen2.5-7B-Instruct Lora 微调
本教程介绍如何基于Transformers和PEFT框架对Qwen2.5-7B-Instruct模型进行LoRA微调。
13841 34
Qwen2.5-7B-Instruct Lora 微调
|
人工智能 并行计算 算法
LLM-04 大模型 15分钟 FineTuning 微调 ChatGLM3-6B(准备环境) 3090 24GB实战 需22GB显存 LoRA微调 P-TuningV2微调
LLM-04 大模型 15分钟 FineTuning 微调 ChatGLM3-6B(准备环境) 3090 24GB实战 需22GB显存 LoRA微调 P-TuningV2微调
604 0
|
开发者 Python
阿里云PAI DSW快速部署服务
在使用阿里云DSW实例进行开发的时候,可能需要快速部署服务测试应用效果。DSW实例目前已经支持通过自定义服务访问配置功能,对外提供服务访问能力,您在应用开发过程中无需分享整个DSW实例,即可将服务分享给协作开发者进行测试和验证。
537 23
|
并行计算
huggingface_hub.utils._validators.HFValidationError: Repo id must be in the form ‘repo_name‘ or ‘nam
这篇文章介绍了在使用HuggingFace模型库时遇到的`Repo id`格式错误问题,并提供了将相对路径改为正确的绝对路径的解决办法。
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的未来:AI与持续集成的完美结合
【10月更文挑战第39天】本文将探索自动化测试领域的最新趋势,特别是人工智能(AI)如何与持续集成(CI)流程相结合,以实现更快、更智能的测试实践。我们将通过实际代码示例和案例分析,展示这种结合如何提高软件质量和开发效率,同时减少人为错误。
705 0
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品广告投放优化的深度学习模型
使用Python实现智能食品广告投放优化的深度学习模型
450 0
|
机器学习/深度学习 人工智能 算法
【深度学习】python之人工智能应用篇——图像生成技术(二)
图像生成是计算机视觉和计算机图形学领域的一个重要研究方向,它指的是通过计算机算法和技术生成或合成图像的过程。随着深度学习、生成模型等技术的发展,图像生成领域取得了显著的进步,并在多个应用场景中发挥着重要作用。
762 9
|
机器学习/深度学习 PyTorch 算法框架/工具
base model初始化large model,造成的参数矩阵对不上权重不匹配问题+修改预训练权重形状和上采样
base model初始化large model,造成的参数矩阵对不上权重不匹配问题+修改预训练权重形状和上采样
850 0
|
机器学习/深度学习 人工智能 自然语言处理
AI辅助医疗诊断:技术突破与未来展望
【7月更文挑战第7天】随着人工智能技术的不断进步,其在医疗领域的应用也日益广泛。特别是在医疗诊断方面,AI技术展现出了巨大的潜力和价值。本文将探讨AI在医疗诊断中的技术突破,分析其优势和挑战,并展望未来的发展趋势。
708 3

热门文章

最新文章