首页 游戏 软件 资讯 排行榜 专题
首页
AI资讯
ChatGLM模型微调实战 智谱AI加载ShareGPT数据集完整教程

ChatGLM模型微调实战 智谱AI加载ShareGPT数据集完整教程

热心网友
53
转载
2026-05-21

如果你正打算用ShareGPT格式的数据集来微调ChatGLM系列模型(比如ChatGLM3-6B),却遇到了数据加载失败或者训练中途报错的情况,别急,这多半是因为ShareGPT的数据结构和ChatGLM默认期待的instruction格式对不上号。下面,我们就来完整梳理一下,如何把ShareGPT数据顺畅地适配到ChatGLM的微调流程里。

ShareGPT数据集用于ChatGLM微调的教程:智谱模型加载ShareGPT数据的完整流程

一、确认ShareGPT数据结构并转换为ChatGLM兼容格式

首先得搞清楚两者的差异。ChatGLM最新的微调脚本(比如train_bash.py)默认接收的是instruction-input-output这样的三元组。而ShareGPT的数据呢,是conversations数组里嵌套着human、gpt这些角色字段。所以第一步,就是做个结构映射,确保每条数据都能被tokenizer正确处理,并且构造出正确的labels掩码。

具体操作起来,可以分几步走:打开你的ShareGPT原始JSON文件,找到每个样本里的conversations数组。然后,按顺序遍历数组里所有from: "human"from: "gpt"的条目,把它们拼接成单轮或多轮的对话文本,注意保持原来的语义顺序。

接下来是关键:把第一条human的内容设为instruction字段,后面交替出现的humangpt内容可以视为多轮上下文(具体处理方式取决于你的训练框架),而最后一个gpt的输出,就设为output。如果一条数据没有明确的gpt回复作为结尾,稳妥起见,建议直接舍弃这个样本。

最后,生成一个新的JSONL文件,每行都是一个标准的ChatGLM SFT样本,格式大致像这样:{"instruction": "用户第一句话", "input": "", "output": "模型最后一句回复"}。当然,根据实际情况,你可能需要把中间轮次的对话内容整合进input里。

二、使用LLaMA-Factory统一加载ShareGPT数据

如果你觉得手动转换太麻烦,或者数据里包含了复杂的function_call、observation字段,那么直接用LLaMA-Factory这个工具会更省心。它内置了解析器,能直接读取ShareGPT的conversations字段,自动处理系统提示和工具调用标记,避免了因JSON结构解析不当带来的问题。

怎么操作呢?首先,安装LLaMA-Factory:执行git clone https://github.com/hiyouga/LLaMA-Factory.git命令,然后进入项目目录。

接着,在项目的data子目录下,新建一个文件,比如叫sharegpt_zh_custom.json,直接把原始的ShareGPT数据原封不动地粘贴进去,完全不用修改字段名。

运行微调命令的时候,记得通过参数指定数据集:--dataset_dir ./data --dataset sharegpt_zh_custom --template sharegpt。这里--template sharegpt参数至关重要,它告诉LLaMA-Factory启用对应的模板文件(通常是sharegpt.py),来完成角色到instruction的映射,并确保tokenization的对齐。

三、修改ChatGLM-Efficient-Tuning源码以原生支持ShareGPT

对于一些更高级的需求,比如你需要精细控制对话轮次的截断逻辑,或者想要完整保留observation这类中间状态用于强化学习(PPO)阶段的建模,那么直接修改ChatGLM-Efficient-Tuning的源码可能是最彻底的办法。这样做绕过了格式转换可能带来的信息损耗,能最大程度保持原始数据的语义完整性。

动手修改前,先找到src/data.py文件里的get_dataset函数。在类似elif dataset_name == "alpaca_zh"这样的分支后面,新增一个elif dataset_name == "sharegpt_zh"的分支。

在这个新分支里,调用一个你自定义的解析函数,比如叫load_sharegpt_dataset。这个函数负责逐条读取conversations,并构建出模型需要的input_idslabels张量。特别要注意,对于function_callobservation这类特殊字段,可能需要添加专门的token来标识。

改完数据加载部分,别忘了在src/train_bash.py的参数校验相关代码里,把"sharegpt_zh"加入到模型支持的数据集列表中。

完成这些修改后,启动训练时,你就能直接使用--dataset sharegpt_zh --stage sft这样的参数了,框架会自动加载并处理原始的ShareGPT结构。

四、验证数据加载是否成功

在正式开跑训练之前,有一个环节绝对不能跳过:验证数据是否真的被正确加载到了模型的输入管道里。这个步骤能帮你提前发现对齐错误、长度超限或者掩码设置不对等问题。

一个实用的方法是插入调试代码。你可以在src/train_bash.py中找到trainer.train()这行代码之前的位置,插入类似这样的语句:print('Sample input:', tokenizer.decode(train_dataset[0]["input_ids"][:50])),打印出一小段输入看看。

然后,运行训练脚本时,加上--do_train False --max_steps 1这样的参数,意思是“只加载一个batch的数据,然后退出,不进行实际训练”。

接下来,仔细检查日志输出的解码后文本:确认human的内容出现在开头,gpt的内容紧随其后,并且function_call这类字段被转换成了可识别的特殊token,而不是一堆乱码。

最后,也是最重要的一步:核对labels张量。在这个张量里,值-100应该覆盖所有非gpt输出的位置(即模型在训练时不应计算这些位置的损失),而只有gpt输出对应的位置,才是真实的token id。如果发现非-100的值出现在了human对话段,那就明确意味着掩码设置错了,必须回头检查数据处理的逻辑。

来源:https://www.php.cn/faq/2501629.html?uid=1503042
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

ShareGPT项目发展历程回顾从Chrome插件到AI数据集演变
AI资讯
ShareGPT项目发展历程回顾从Chrome插件到AI数据集演变

ShareGPT最初是用于导出和分享ChatGPT对话的Chrome扩展。用户分享的大量对话被开发者爬取,经清洗、去重和标准化后,工程化为适用于机器学习的数据集。这些数据集在开源平台发布,广泛用于模型微调与评估,实现了从工具到重要数据基础设施的演变。

热心网友
05.21
21Shares推出dYdX ETP产品 机构加速布局加密衍生品赛道
web3.0
21Shares推出dYdX ETP产品 机构加速布局加密衍生品赛道

通往去中心化衍生品世界的大门,正被一只有形的合规产品推开。近日,21Shares正式推出了全球首只追踪dYdX原生代币的交易所交易产品(ETP),为传统投资者开辟了一条直达DeFi衍生品核心协议的新路径。 作为欧洲加密ETP领域的领头羊,瑞士的21Shares此举意图明确:将DeFi前沿的创新项目,

热心网友
05.20
基于真实对话的模型性能评估实践 ShareGPT数据集Benchmark方法详解
AI资讯
基于真实对话的模型性能评估实践 ShareGPT数据集Benchmark方法详解

使用ShareGPT数据集构建真实对话评测基准,评估模型在多轮交互中的上下文理解和记忆能力。具体包括:预处理数据并提取问答对,构造高依赖的多轮对话子集以测试长期记忆;集成至vLLM等框架进行压力测试,获取延迟与准确率指标;结合人工与AI评分进行混合评估,确保语义合理性;并通过构建领域特。

热心网友
05.20
A/B测试中如何用相同对话对比不同模型版本
AI资讯
A/B测试中如何用相同对话对比不同模型版本

ShareGPT数据集可作为大语言模型A B测试的标准化工具,通过真实对话数据生成一致输入序列,消除提示工程等干扰。应用方式包括:将对话转为测试负载、构建固定测试集分流注入、作为种子触发线上影子流量,以及构造对抗性用例验证模型鲁棒性,从而客观比较不同模型版本在相同上下文中的响应。

热心网友
05.20
VSCode安装LiveShare音频 远程面试VSCode实时语音交流
编程语言
VSCode安装LiveShare音频 远程面试VSCode实时语音交流

Live Share 自2026年起已完全下线,所有后端服务不可用,相关配置项和音频扩展均失效;远程面试应改用 Mumble TeamSpeak 3 配 GitHub Codespaces 或 Remote-SSH + tmux 方案。 先说一个核心判断:如果你还在搜索“如何开启 Live Shar

热心网友
05.03

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

梦幻西游69级任务门派推荐与选择攻略
游戏资讯
梦幻西游69级任务门派推荐与选择攻略

对于《梦幻西游》的玩家来说,在69级卡级打造一个高效的任务号,门派的选择直接关系到游戏体验的流畅度与性价比。综合评估,方寸山在69级这个阶段,展现出了极强的综合实力,无论是日常刷任务还是挑战高难度玩法,都能提供稳定且出色的表现。 日常任务中的高性价比选择 如果你的核心需求是快速、高效地完成日常任务,

热心网友
05.21
冬末守护者公测时间确定 正式上线日期预告
游戏资讯
冬末守护者公测时间确定 正式上线日期预告

近期,手游《冬末守护者》的关注度不断走高,许多玩家都在询问同一个核心问题:这款游戏究竟何时才能正式上线开放游玩? 通常而言,一款手游从研发完毕到全面公测,往往会经过封闭测试、删档内测、不删档测试等多个关键阶段,最终才迎来面向全体玩家的正式公测。这个周期长短不一,确实难以给出固定答案。不过,无需焦虑,

热心网友
05.21
宝可梦朱紫巨钳螳螂进化攻略 从飞天螳螂到强力剪刀手
游戏资讯
宝可梦朱紫巨钳螳螂进化攻略 从飞天螳螂到强力剪刀手

自1996年启航的《宝可梦》系列,早已成为全球无数训练家心中不朽的冒险传奇。而《宝可梦朱紫》的推出,无疑为这片广阔的帕底亚地区注入了全新的探索活力。在众多实力强劲的宝可梦中,巨钳螳螂以其标志性的钢铁巨钳和卓越的物理攻击能力,赢得了大量玩家的深度青睐。如果你也正在筹划,如何将这只虫与钢属性的强大战士纳

热心网友
05.21
梦幻西游平民玩家选择化生还是普陀门派优劣对比分析
游戏资讯
梦幻西游平民玩家选择化生还是普陀门派优劣对比分析

对于《梦幻西游》的平民玩家而言,在化生寺与普陀山之间做出选择,常常是一个需要仔细权衡的难题。这两个辅助门派定位相近,但在实际玩法、团队作用以及资源投入上却存在显著差异。本文将从任务效率、玩家对战(PK)表现以及装备养成成本三大核心维度,为您进行一次全面的对比解析,帮助您找到最适合自己的门派。 核心结

热心网友
05.21
极限竞速地平线6审查风波 高达经典机型遭屏蔽
游戏资讯
极限竞速地平线6审查风波 高达经典机型遭屏蔽

近日,《极限竞速:地平线6》玩家社区中发生了一件引发热议的趣事。一位ID为@Starshinefallng的玩家在社交媒体上分享了自己在游戏中遭遇的“离奇”内容审核事件,让不少玩家和高达粉丝感到困惑。 据该玩家发布的游戏截图显示,他当时正试图为自己的虚拟爱车定制一块个性化车牌,输入的是《机动战士高达

热心网友
05.21