DCLM -大模型数据、训练、评估

DCLM -大模型数据、训练、评估一 关于 DCLM 排行榜二 开始使用三 选择原始资源四 处理数据五 TokenizeandS 六 模型训练七 评估八 提交 dclm

大家好,欢迎来到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

(0)
上一篇 2026-01-23 14:26
下一篇 2026-01-23 14:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信