DataComp-LM (DCLM)是一个用于构建和训练具有多样化数据集的大型语言模型(LLMs)的综合框架。它提供了来自CommonCrawl的超过300T未经过滤的标记的标准语料库,基于open_lm框架的有效预训练方法,以及超过50项评估的广泛套件。该存储库提供了处理原始数据、分词、打乱、训练模型和评估其性能的工具和指南。
DCLM使研究人员能够在不同的计算规模上进行各种数据集构建策略的实验,从411M到7B参数模型。我们的基线实验表明,通过优化数据集设计,模型性能得到了显著提升。
DCLM已经促成了几个高质量数据集的创建,这些数据集在不同规模上表现良好,并且优于所有开放数据集。

提交流程:
(A) 参与者选择一个规模,较大的规模反映了更多的目标训练标记和/或模型参数。 最小规模是400m-1x,即400m参数模型进行计算最优训练(1x),最大规模是7B-2x,即7B参数模型使用计算最优所需标记量的两倍进行训练。
(B) 参与者过滤数据池(过滤赛道)或混合自己的数据(自带数据赛道)以创建数据集。
(C) 使用精选的数据集,参与者使用标准化的训练代码和特定规模的超参数训练语言模型,然后
(D) 在53个下游任务上进行评估,以判断数据集质量。

更多详细信息,请参阅我们的论文。
DCLM排行榜展示了在各种规模和数据集上训练的模型的性能。排行榜定期更新,包含来自社区的最新提交。
以下是我们的模型与7B规模下其他模型的比较。
| 模型 | 参数 | 标记 | 开放数据集? | CORE | MMLU | EXTENDED |
|---|---|---|---|---|---|---|
| 开放权重,闭 源数据集 | ||||||
| Llama2 | 7B | 2T | ✗ | 49.2 | 45.8 | 34.1 |
| DeepSeek | 7B | 2T | ✗ | 50.7 | 48.5 | 35.3 |
| Mistral-0.3 | 7B | ? | ✗ | 57.0 | 62.7 | 45.1 |
| QWEN-2 | 7B | ? | ✗ | 57.5 | 71.9 | 50.5 |
| Llama3 | 8B | 15T | ✗ | 57.6 | 66.2 | 46.3 |
| Gemma | 8B | 6T | ✗ | 57.8 | 64.3 | 44.6 |
| Phi-3 | 7B | ? | ✗ | 61.0 | 69.9 | 57.9 |
| 开放权重,开放数据集 | ||||||
| Falcon | 7B | 1T | ✓ | 44.1 | 27.4 | 25.1 |
| OLMo-1.7 | 7B | 2.1T | ✓ | 47.0 | 54.0 | 34.2 |
| MAP-Neo | 7B | 4.5T | ✓ | 50.2 | 57.1 | 40.4 |
| 我们训练的模型 | ||||||
| FineWeb edu | 7B | 0.14T | ✓ | 38.7 | 26.3 | 22.1 |
| FineWeb edu | 7B | 0.28T | ✓ | 41.9 | 37.3 | 24.5 |
| DCLM-BASELINE | 7B | 0.14T | ✓ | 44.1 | 38.3 | 25.0 |
| DCLM-BASELINE | 7B | 0.28T | ✓ | 48.9 | 50.8 | 31.8 |
| DCLM-BASELINE | 7B | 2.6T | ✓ | 57.1 | 63.7 | 45.4 |
要开始使用DCLM,请按照以下步骤操作:
git clone https://github.com/mlfoundations/DCLM.git cd DCLM
pip install -r requirements.txt
安装依赖项之前,请确保已安装cmake、build-essential和g++,例如通过以下命令安装:
apt install cmake build-essential apt install g++-9 update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 90
我们建议在DCLM中使用Python 3.10。
如果您要创建新的数据源:
如果您要选择原始数据源进行后续处理:
按照以下步骤处理原始数据:
定义一组处理步骤: 创建一个pipeline配置YAML文件,指定操作步骤。 参考我们的C4复现示例。 有关定义pipeline的更多详细信息,请参见此处。
设置Ray集群: 数据处理脚本依赖Ray进行分布式数据处理。此集群可以在单个节点上启动(用于小规模数据处理),也可以使用AWS EC2实例。
要启动本地集群,使用以下命令:
ray start --head --port 6379
要使用AWS EC2实例启动集群,使用以下命令:
ray up <your_cluster_config>
其中<your_cluster_config>是根据您的具体用例而定的集群配置脚本。我们建议您查阅Ray文档,了解如何创建此配置文件的说明。
重要提示:使用EC2实例时,请确保在作业完成后关闭集群,以避免不必要的费用!
运行处理脚本: 对于本地集群,只需运行以下命令:
python3 ray_processing/process.py --source_ref_paths <source_json> --readable_name <name> --output_dir <s3_output_dir> --config_path <config_yaml> --source_name <source_name>
使用EC2实例时,需要连接到集群,然后运行命令:
# 在本地终端中 ray attach <your_cluster_config> # 在集群EC2实例内 cd dcnlp export PYTHONPATH=$(pwd) python3 ray_processing/process.py --source_ref_paths <source_json> --readable_name <name> --output_dir <s3_output_dir> --config_path <config_yaml> --source_name <source_name>
监控和关闭:
您可以通过输出目录中的global_stats.jsonl文件跟踪数据处理进度。作业完成后,可以通过ray stop(本地集群情况)或ray down <your_cluster_config>(AWS EC2情况)关闭集群。使用EC2时,这一步非常重要,以避免产生额外费用!
要像我们在DCLM-Baseline中那样对原始文本进行去重,请使用dedup子目录中提供的工具。这里我们包含了几个用于去重的rust工具,但我们推荐使用位于dedup/bff的BFF。每个包含rust工具的目录中的readme文件中都有运行去重的具体说明。
请注意,dedup中的代码特指跨文档模糊去重,即识别语料库中文档之间的近似重复。用于识别精确内容和URL重复的Ray工具包含在ray_processing/dedup_jsonl.py中(但我们在DCLM-Baseline中不使用这种形式的去重)。
处理完原始文本后,您应该将其转换为分词后的数据集并进行打乱以便训练:
设置Ray集群: 按照处理步骤中的相同方式设置Ray集群。
运行分词和打乱脚本:
python ray_processing/tokenize_shuffle.py --source_ref_paths <source_jsons> --readable_name <name> --output <s3_output_dir> --content_key text --do_sample --default_dataset_yaml <mixing_yaml>
关闭: 按照处理步骤中的方式关闭Ray集群。
tokenize_shuffle.py脚本会创建一个webdataset格式的数据集,以及一个manifest.jsonl文件。训练脚本需要这个文件,它包含了数据集每个分片中序列数量的信息。如果需要,也可以通过以下命令手动创建这个manifest文件:
python -m open_lm.utils.make_wds_manifest --data-dir <tokenized_data_dir>
使用分词后的数据集训练模型:
torchrun --nproc-per-node 8 -m training.train --scale <scale> <tokenized_json> --logs <log_dir> [--remote-sync <s3_bucket>] [--chinchilla-multiplier <multiplier>] [--clean-exp] [--report-to-wandb]
您可以预期每个轨道的训练时间如下:
| 规模 | 模型参数 | 训练token数 | 训练FLOPs | 训练H100小时 | 池大小 |
|---|---|---|---|---|---|
| 400M-1x | 412M | 8.2B | 2.0e19 | 26 | 137B |
| 1B-1x | 1.4B | 28B | 2.4e20 | 240 | 1.64T |
| 1B-5x | 1.4B | 138B | 1.2e21 | 1200 | 8.20T |
| 7B-1x | 6.9B | 138B | 5.7e21 | 3700 | 7.85T |
| 7B-2x | 6.9B | 276B | 1.1e22 | 7300 | 15.7T |
使用以下方法评估训练好的模型:
python tools/eval_expdb.py --start_idx 0 --end_idx 3 --filters name=<过滤器> --prefix_replacement <前缀替换> --num_gpus 8 --output_dir <s3输出目录> --eval_yaml <评估yaml文件>
torchrun --nproc_per_node <GPU数量> eval/eval_openlm_ckpt.py --checkpoint <检查点> --eval-yaml <评估yaml文件> --config <模型参数文件> --model <open_lm配置> --output-file <输出文件路径>
当你完成模型训练和评估后,一个模型评估json文件会被生成并保存在exp_data/evals目录下。 现在你可以向主仓库提交一个拉取请求,与团队分享你的结果并将其提交到排行榜。
我们欢迎对DCLM框架的改进贡献。请遵循我们的贡献指南来提交拉取请求和报告问题。
使用OpenLM库,也可以对用DCLM训练的模型进行微调。具体步骤如下:
jsonl文件,每行是一个包含两个字段的样本:"instruction"和"response"(所以jsonl文件的每一行至少包含一个形如{"instruction": "示例指令", "response": "示例回答"}的json对象)。对于OpenMathInstruct数据集的示例可以通过以下命令运行:cd finetuning/ python download_data.py
finetuning/sft_data/目录下,运行以下命令将数据处理成OpenLM期望的格式:python preprocess_data.py --input-files "./sft_data/**/*" --output-dir ./sft_data_tokenized/ --num-workers 1 --num-consumers 1 python -m open_lm.utils.make_wds_manifest --data-dir ./sft_data_tokenized/2048-v1/0 --tmp-dir tmp --num-workers 16
... --squash-mask-left \ --target-mask-individual 50400 \ --target-mask-left 50300 \ ...
完整命令示例如下:
git clone https://github.com/mlfoundations/open_lm.git cd open_lm torchrun <其他torchrun选项> open_lm/main.py \ --dataset-manifest ../sft_data_tokenized/manifest.jsonl \ --epochs 20 \ --fsdp \ --fsdp-amp \ --fsdp-limit-all-gathers \ --global-batch-size 1024 \ --grad-checkpointing \ --grad-clip-norm 1 \ --log-every-n-steps 100 \ --logs <日志路径> \ --lr 2e-05 \ --lr-cooldown-end 5e-06 \ --model training/open_lm_configs/open_lm_1b_swiglutorch.json \ --model-norm gain_only_lp_layer_norm \ --multiple-data-passes \ --name <实验名称> \ --precision amp_bfloat16 \ --pretrained <预训练检查点路径> \ --qk-norm \ --report-to wandb \ --seed 124 \ --squash-mask-left \ --target-mask-individual 50400 \ --target-mask-left 50300 \ --train-num-samples <每个epoch的训练token数> \ --warmup 1738 \ --wd 0.1 \ --workers 1
如果你在研究中使用了我们的数据集或模型,请按以下方式引用我们:
@article{li2024datacomplm, title={DataComp-LM: In search of the next generation of training sets for language models}, author={Jeffrey Li and Alex Fang and Georgios Smyrnis and Maor Ivgi and Matt Jordan and Samir Gadre and Hritik Bansal and Etash Guha and Sedrick Keh and Kushal Arora and Saurabh Garg and Rui Xin and Niklas Muennighoff and Reinhard Heckel and Jean Mercat and Mayee Chen and Suchin Gururangan and Mitchell Wortsman and Alon Albalak and Yonatan Bitton and Marianna Nezhurina and Amro Abbas and Cheng-Yu Hsieh and Dhruba Ghosh and Josh Gardner and Maciej Kilian and Hanlin Zhang and Rulin Shao and Sarah Pratt and Sunny Sanyal and Gabriel Ilharco and Giannis Daras and Kalyani Marathe and Aaron Gokaslan and Jieyu Zhang and Khyathi Chandu and Thao Nguyen and Igor Vasiljevic and Sham Kakade and Shuran Song and Sujay Sanghavi and Fartash Faghri and Sewoong Oh and Luke Zettlemoyer and Kyle Lo and Alaaeldin El-Nouby and Hadi Pouransari and Alexander Toshev and Stephanie Wang and Dirk Groeneveld and Luca Soldaini and Pang Wei Koh and Jenia Jitsev and Thomas Kollar and Alexandros G. Dimakis and Yair Carmon and Achal Dave and Ludwig Schmidt and Vaishaal Shankar}, year={2024}, journal={arXiv preprint arXiv:2406.11794} }
在使用DCLM评估套件时,请确保引用所有原始评估论文。evaluation_bibtex。
在使用DCLM进行训练时,请确保也引用主要的训练框架依赖。training_bibtex。
本项目采用MIT许可证。详细信息请参阅许可证文件。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频


实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。


选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


最强AI数据分析助手
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。


像人一样思考的AI智能体
imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。


AI数字人视频创作平台
Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号