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

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 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)

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
相关文章
|
数据采集 并行计算 物联网
使用LLaMA Factory来训练智谱ChatGLM3-6B模型
使用LLaMA Factory来训练智谱ChatGLM3-6B模型
770 0
|
11月前
|
数据采集 前端开发 物联网
【项目实战】通过LLaMaFactory+Qwen2-VL-2B微调一个多模态医疗大模型
本文介绍了一个基于多模态大模型的医疗图像诊断项目。项目旨在通过训练一个医疗领域的多模态大模型,提高医生处理医学图像的效率,辅助诊断和治疗。作者以家中老人的脑部CT为例,展示了如何利用MedTrinity-25M数据集训练模型,经过数据准备、环境搭建、模型训练及微调、最终验证等步骤,成功使模型能够识别CT图像并给出具体的诊断意见,与专业医生的诊断结果高度吻合。
20332 162
【项目实战】通过LLaMaFactory+Qwen2-VL-2B微调一个多模态医疗大模型
|
8月前
|
人工智能 自然语言处理 安全
详解:Claude 3.7 Sonnet 国内使用指南_claude使用教程
Claude 3.7在对话理解和生成能力上都进行了显著的提升
5869 14
|
11月前
|
人工智能 自然语言处理 前端开发
OpenAI 12天发布会全解析 | AI大咖说
OpenAI近日宣布将在12个工作日内每天进行一场直播,展示一系列新产品和样品。首日推出GPT-o1正式版,性能大幅提升;次日展示Reinforcement Fine-Tuning技术,提高模型决策质量;第三天推出Sora,实现高质量视频生成;第四天加强Canvas,提升多模态创作效率;第五天发布ChatGPT扩展功能,增强灵活性;第六天推出ChatGPT Vision,实现多模态互动;第七天推出ChatGPT Projects,优化项目管理。这些新技术正改变我们的生活和工作方式。
1557 9
|
11月前
|
开发者 Python
阿里云PAI DSW快速部署服务
在使用阿里云DSW实例进行开发的时候,可能需要快速部署服务测试应用效果。DSW实例目前已经支持通过自定义服务访问配置功能,对外提供服务访问能力,您在应用开发过程中无需分享整个DSW实例,即可将服务分享给协作开发者进行测试和验证。
368 23
|
机器学习/深度学习 弹性计算 人工智能
大模型进阶微调篇(三):微调GPT2大模型实战
本文详细介绍了如何在普通个人电脑上微调GPT2大模型,包括环境配置、代码实现和技术要点。通过合理设置训练参数和优化代码,即使在无独显的设备上也能完成微调,耗时约14小时。文章还涵盖了GPT-2的简介、数据集处理、自定义进度条回调等内容,适合初学者参考。
2406 6
|
12月前
|
人工智能 自然语言处理 PyTorch
基于openi平台免费华为昇腾910B芯片部署qwen2.5 Instruct 14B大模型
基于OpenI平台和华为昇腾910B芯片,本方案详细介绍了如何免费部署Qwen-2.5 Instruct 14B大模型。涵盖准备工作、模型适配、部署步骤及性能优化等内容,适用于NLP任务部署、本地化适配及实时服务化等多种应用场景。
3368 1
|
Shell Docker Python
LLM-02 大模型 本地部署运行 ChatGLM3-6B(13GB) 双卡2070Super8GB 环境配置 单机多卡 基于LLM-01章节 继续乘风破浪 为大模型微调做准备
LLM-02 大模型 本地部署运行 ChatGLM3-6B(13GB) 双卡2070Super8GB 环境配置 单机多卡 基于LLM-01章节 继续乘风破浪 为大模型微调做准备
385 2
|
并行计算
huggingface_hub.utils._validators.HFValidationError: Repo id must be in the form ‘repo_name‘ or ‘nam
这篇文章介绍了在使用HuggingFace模型库时遇到的`Repo id`格式错误问题,并提供了将相对路径改为正确的绝对路径的解决办法。

热门文章

最新文章