大家好,欢迎来到IT知识分享网。
一、关于 DCLM
- github : https://github.com/mlfoundations/dclm
- paper : https://arxiv.org/abs/2406.11794
DCLM使研究人员 能够在不同的计算尺度上试验各种数据集构建策略,从411M到7B参数模型。我们的基线实验表明,通过优化数据集设计,模型性能显著提高。
提交工作流程:
- (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 | .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 | ||||
二、开始使用
要开始使用DCLM,请执行以下步骤:
1、克隆存储库:
git clone https://github.com/mlfoundations/DCLM.git cd DCLM
2、安装依赖项:
pip install -r requirements.txt
在安装依赖项之前,请确保已安装cmake、build-必需和g++,例如,通过安装:
apt install cmake build-essential apt install g++-9 update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 90 ```
三、选择原始资源
如果您正在创建新源:
- 确保您的数据以JSONL格式存储(最好使用zStandard压缩)。
- 密钥名称应与此处的名称一致。
- 在exp_data/datasets/raw_sources中创建一个参考JSON。
如果您正在选择用于下游处理的原始源:
- 确定您打算使用的原始源,它对应于数据集引用(即raw_sources中的JSON)。
- 引用JSON包含实际数据和其他元数据的URL,用作下游处理的输入。
四、处理数据
要处理原始数据,请执行以下步骤:
1、定义一组处理步骤: 创建指定操作的管道配置YAML文件。 请看我们的C4复制品。 有关定义管道的更多详细信息,请参见此处。
2、设置Ray集群:数据处理脚本依赖Ray进行数据的分布式处理。该集群可以在单个节点上启动(用于小规模数据处理)或使用AWS EC2实例。
要启动本地集群,请使用以下命令:
ray start --head --port 6379
要使用AWS EC2实例启动集群,请使用以下命令:
ray up <your_cluster_config>
其中<your_cluster_config>是一个集群配置脚本,取决于您的特定用例。我们邀请读者阅读Ray留档以获取有关如何创建此配置文件的说明。
重要提示:使用EC2实例时,请确保在作业完成后拆除集群,以免产生不必要的成本!
3、运行处理脚本:要运行处理脚本,在本地集群的情况下,只需运行以下命令:
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实例时,需要连接集群,然后启动命令
# In your local terminal ray attach <your_cluster_config> # Inside the cluster EC2 instance 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>
4、监控和拆除: 您可以通过输出目录中的global_stats.jsonl文件跟踪数据处理的进度。作业完成后,您可以通过ray stop(在本地集群情况下)或ray down <your_cluster_config>(在AWS EC2情况下)拆除集群。这对于使用EC2时不产生额外成本非常重要!
五、Tokenize and Shuffle
处理原始文本后,您应该将其转换为标记化数据集并执行洗牌进行训练:
1、设置Ray集群:按照与处理步骤相同的方式设置Ray集群。
2、运行Tokenize和shuffle脚本:
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>
3、拆除:在处理步骤中拆除Ray集群。
这个tokenize_shuffle.py脚本创建了一个webdataset格式的webdataset,以及一个manifest.jsonl文件。这个文件是训练脚本所需要的,它包含了数据集的每个分片内的序列数的信息。如果需要,这个清单文件也可以通过以下命令手动创建:
python -m open_lm.utils.make_wds_manifest --data-dir <tokenized_data_dir>
六、模型训练
要使用标记化数据集训练模型:
1、运行训练脚本
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]
您可以预期每个轨道的训练时间如下:
| 比例 | 模型参数 | 火车代币 | 火车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 |
2、监控和管理您的训练工作:使用 slurm sbat 脚本 或 Sagemaker在各种计算基础架构上运行实验。
七、评估
使用以下方法评估训练好的模型:
1、首选方法:
python tools/eval_expdb.py --start_idx 0 --end_idx 3 --filters name=<filter> --prefix_replacement <prefix_replacement> --num_gpus 8 --output_dir <s3_output_dir> --eval_yaml <eval_yaml>
2、直接评估:
torchrun --nproc_per_node <num_gpus> eval/eval_openlm_ckpt.py --checkpoint <checkpoint> --eval-yaml <eval_yaml> --config <model_params_file> --model <open_lm_config> --output-file <output_file_path>
八、提交
当您完成对模型的训练和评估时,将生成一个模型eval json文件,该文件位于exp_data/evals。 您现在可以向主存储库打开拉取请求,以与团队共享您的结果并将其提交到排行榜。
2024-07-27(六)
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/111655.html

