DeepSpeed
Deepspeed训练大模型细节
MMAP
设计目的:
-
高效I/O性能:通过内存映射技术,数据在训练时可按需读取到显存,减少内存占用并避免重复加载开销。
-
分布式训练支持:在多GPU或多节点场景下,MMAP文件支持并行访问,不同GPU可独立读取数据的不同部分,提升数据吞吐量。
-
兼容性与扩展性:适用于不同分词器(如BPE、SentencePiece)生成的Token化结果,并能处理动态增长的训练数据。
数据格式:
- 二进制编码:文本数据经过分词(Tokenization)后,将每个Token转换为固定长度的整数(如int32或int64),并按顺序存储为二进制流。
- 索引文件:通常伴随一个索引文件(如
idx
),记录每个数据块的起始位置和长度,便于快速随机访问或分片加载。 - 分块存储:大型数据集会被切分为多个MMAP文件块(例如每块1GB),便于分布式训练时按需加载。
ZeRO(Zero Redundancy Optimizer)
- a memory efficient form of data parallelism
- leverage CPU and NVMe memory
3D Parallelism
- tensor-slicing, pipeline-parallelism, and data parallelism
ToDo
- 什么时候用Zero,什么时候用3D parallism
- 3D parallism的使用:https://github.com/deepspeedai/megatron-deepspeed