讲师中心 微信公众号
AI工具推荐 视频效率加速

ShareGPT数据集在DeepSpeed训练中的加载方式:分布式训练环境下的数据处理方法

雨敏君_9551

雨敏君_9551

发布时间:2026-05-27 18:48:18

|

953人浏览过

|

来源于php中文网

原创

应采用HuggingFace Datasets+DistributedSampler封装方案:先转换ShareGPT为Dataset对象,再经format_sharegpt统一格式、分词处理,最后用DistributedSampler切分并构建DataLoader,确保各GPU数据互斥且顺序一致。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

sharegpt数据集在deepspeed训练中的加载方式:分布式训练环境下的数据处理方法

如果您在使用DeepSpeed进行分布式训练时需加载ShareGPT数据集,但发现数据无法被正确分片、出现重复样本或进程间数据不一致,则可能是由于数据集未适配DistributedSampler的索引逻辑或未处理文本长度动态性。以下是解决此问题的步骤:

一、使用HuggingFace Datasets + DistributedSampler封装

该方法通过将ShareGPT JSONL文件转换为HuggingFace Dataset对象,并结合torch.utils.data.DistributedSampler实现跨进程均匀切分,确保每个GPU仅加载互斥子集且保留原始顺序语义。

1、安装必要依赖:pip install datasets torch transformers

2、加载ShareGPT数据并构建Dataset对象:dataset = load_dataset("json", data_files={"train": "sharegpt_clean.jsonl"}, split="train")

3、定义预处理函数,统一格式化对话结构:def format_sharegpt(example): return {"text": "".join([f"### {msg['from']}: {msg['value']}" for msg in example["conversations"]])}

4、应用映射并分词:tokenized_ds = dataset.map(format_sharegpt).map(lambda x: tokenizer(x["text"], truncation=True, max_length=2048), batched=True)

5、初始化DistributedSampler:sampler = DistributedSampler(tokenized_ds, shuffle=True, drop_last=True)

6、构建DataLoader:dataloader = DataLoader(tokenized_ds, batch_size=4, sampler=sampler, num_workers=4)

二、自定义IterableDataset配合DeepSpeed的data_parallel配置

该方法适用于超大规模ShareGPT分片(如按日期/ID拆分的多个JSONL文件),避免全量加载内存,利用流式读取与rank感知路径选择实现无状态、可恢复的数据供给。

1、继承torch.utils.data.IterableDataset类,重写__iter__方法:class ShareGPTIterableDataset(IterableDataset): def __init__(self, file_list, rank, world_size): self.file_list = [f for i, f in enumerate(file_list) if i % world_size == rank]

2、在__iter__中逐行解析JSONL并yield单条样本:for file_path in self.file_list: with open(file_path) as f: for line in f: yield json.loads(line)

3、实例化数据集时传入dist.get_rank()与dist.get_world_size():ds = ShareGPTIterableDataset(glob.glob("sharegpt_*.jsonl"), dist.get_rank(), dist.get_world_size())

4、禁用sampler,直接使用DataLoader:dataloader = DataLoader(ds, batch_size=2, num_workers=2)

5、在DeepSpeed配置中显式关闭自动采样:"data_efficiency": {"enabled": false}

三、基于DeepSpeed的DataLoader Hook注入分片逻辑

该方法绕过PyTorch原生采样器,直接在DeepSpeed初始化阶段注入rank专属数据路径与偏移量,适用于已预分片且需严格控制每卡token吞吐量的场景。

1、预先将ShareGPT数据按world_size切分为独立文件:split -l 50000 sharegpt_full.jsonl sharegpt_part_

2、在init_process_group后获取当前rank对应文件:part_file = f"sharegpt_part_{dist.get_rank():02d}"

3、使用datasets.load_dataset加载该分片:local_ds = load_dataset("json", data_files=part_file, split="train")

4、调用deepspeed.initialize时传入自定义dataloader:model_engine, optimizer, _, _ = deepspeed.initialize(model=model, training_data=local_ds, ...)

5、确保DeepSpeed配置中未启用"partition_activations"或"stage3_gather_16bit_weights_on_model_save"等干扰数据流的选项:{"zero_optimization": {"stage": 2}}

热门AI工具

更多
UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
数据分析的方法
数据分析的方法

数据分析的方法有:对比分析法,分组分析法,预测分析法,漏斗分析法,AB测试分析法,象限分析法,公式拆解法,可行域分析法,二八分析法,假设性分析法。php中文网为大家带来了数据分析的相关知识、以及相关文章等内容。

1542

2023.07.04

数据分析方法有哪几种
数据分析方法有哪几种

数据分析方法有:1、描述性统计分析;2、探索性数据分析;3、假设检验;4、回归分析;5、聚类分析。本专题为大家提供数据分析方法的相关的文章、下载、课程内容,供大家免费下载体验。

2030

2023.08.07

网站建设功能有哪些
网站建设功能有哪些

网站建设功能包括信息发布、内容管理、用户管理、搜索引擎优化、网站安全、数据分析、网站推广、响应式设计、社交媒体整合和电子商务等功能。这些功能可以帮助网站管理员创建一个具有吸引力、可用性和商业价值的网站,实现网站的目标。

5730

2023.10.16

数据分析网站推荐
数据分析网站推荐

数据分析网站推荐:1、商业数据分析论坛;2、人大经济论坛-计量经济学与统计区;3、中国统计论坛;4、数据挖掘学习交流论坛;5、数据分析论坛;6、网站数据分析;7、数据分析;8、数据挖掘研究院;9、S-PLUS、R统计论坛。想了解更多数据分析的相关内容,可以阅读本专题下面的文章。

2764

2024.03.13

Python 数据分析处理
Python 数据分析处理

本专题聚焦 Python 在数据分析领域的应用,系统讲解 Pandas、NumPy 的数据清洗、处理、分析与统计方法,并结合数据可视化、销售分析、科研数据处理等实战案例,帮助学员掌握使用 Python 高效进行数据分析与决策支持的核心技能。

3705

2025.09.08

Python 数据分析与可视化
Python 数据分析与可视化

本专题聚焦 Python 在数据分析与可视化领域的核心应用,系统讲解数据清洗、数据统计、Pandas 数据操作、NumPy 数组处理、Matplotlib 与 Seaborn 可视化技巧等内容。通过实战案例(如销售数据分析、用户行为可视化、趋势图与热力图绘制),帮助学习者掌握 从原始数据到可视化报告的完整分析能力。

5392

2025.10.14

Python 数据分析与可视化合集
Python 数据分析与可视化合集

聚焦 Python 在数据分析领域的核心应用,讲解 NumPy 数组运算、Pandas 数据清洗与聚合统计、缺失值与异常值处理、数据透视表生成,以及使用 Matplotlib、Seaborn、Pyecharts 制作折线图、柱状图、热力图、地图等多种可视化图表,适合数据分析师和运营人员快速掌握用 Python 从原始数据中挖掘洞察的能力。

196

2026.04.08

Python数据分析与Pandas高级实战
Python数据分析与Pandas高级实战

本专题围绕 Python 数据分析展开,系统讲解 Pandas 的高级用法,包括数据清洗、透视表、时间序列分析以及多表合并与分组操作。通过实战案例,帮助开发者掌握高效处理与分析数据的方法,提高数据处理效率与分析能力。

271

2026.04.13

Vibeknow在线使用入口合集
Vibeknow在线使用入口合集

本专题汇总了Vibeknow在线创作视频的官方入口及网页版使用教程,涵盖PPT、PDF、Word等文档一键转讲解视频的核心操作,并整理了免费版水印规则与手机端浏览器访问指南,助你快速将知识内容视频化。

0

2026.09.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
零基础精通 PS 视频教程
零基础精通 PS 视频教程

共268课时 | 118.7万人学习

前端工程师必备技能—PS切图
前端工程师必备技能—PS切图

共11课时 | 2.2万人学习

麦子学院Photoshop切片视频教程
麦子学院Photoshop切片视频教程

共13课时 | 4.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn