five

PreSelect-100B

收藏
github2025-03-04 更新2025-03-05 收录
下载链接:
https://github.com/hkust-nlp/PreSelect
下载链接
链接失效反馈
官方服务:
资源简介:
我们发布了经过训练的fasttext分类器和一个100B token过滤后的高质量数据集,供直接使用。

We have released a trained fasttext classifier and a high-quality dataset filtered from 100B tokens for direct use.
创建时间:
2025-02-17
原始信息汇总

Predictive Data Selection: The Data That Predicts Is the Data That Teaches

简介

本研究旨在通过高效方式选择预训练数据,直接估计数据在预训练中的贡献。基于模型在某些文本上的压缩效率(即归一化损失)与其下游性能强相关的观察,我们假设那些模型损失预测下游能力的文本也有效地促进了学习。为此,我们引入了基于数据预测强度(PreSelect)的数据选择方法,这是一个轻量级且高效的数据选择方法,仅需要训练和部署一个基于fastText的评分器。通过在1B和3B参数模型上进行综合实验,我们证明了在30B标记上训练的PreSelect性能超过了在300B标记上训练的基线,实现了计算需求的10倍减少。此外,PreSelect显著优于其他竞争性数据选择基线,如DCLM和FineWeb-Edu。

发布资源

我们发布了训练好的fastText分类器和在Huggingface上经过100B标记过滤的高质量数据集,供直接使用。

名称 类型 Huggingface链接
preselect-fasttext-calssifier 模型 🤗Huggingface
preselect-100B 数据集 🤗Huggingface

环境设置

我们提供了一个Dockerfile,其中包含了过滤、训练和评估的环境。

bash docker build -t preselect:latest . docker run --gpus all --network host -it --shm-size=20g --privileged preselect:latest

之后,你需要准备你的预训练语料库(例如下载commoncrawl子集)。我们提供了一个示例来下载DCLM的Refinedweb。注意这需要你事先设置aws服务。

bash cd data_processing/data/clean_pool pythondownload.py python unzip.py

你还可以准备自己的数据。

过滤

直接使用

如果你想直接使用我们训练好的fastText,你可以从Huggingface下载并运行以下代码:

python import os import argparse

from pathlib import Path

parser = argparse.ArgumentParser("Filter") parser.add_argument("--input_path", type=str, help="input path name") parser.add_argument("--output_path", type=str, help="output path name")

args = parser.parse_args() from datatrove.executor import LocalPipelineExecutor from datatrove.pipeline.filters import FastTextClassifierFilter from datatrove.pipeline.readers import ParquetReader, JsonlReader from datatrove.pipeline.writers.jsonl import JsonlWriter Path(f"{args.output_path}").mkdir(parents=True, exist_ok=True)

dist_executor = LocalPipelineExecutor( skip_completed=True, pipeline=[ JsonlReader(f"{args.input_path}", text_key="text", default_metadata={}), FastTextClassifierFilter(f"PreSelect-classifier.bin", keep_labels=[("1", 0.5)]), JsonlWriter(f"{args.output_path}", compression=None) ], tasks=100, ) dist_executor.run()

训练自己的FastText

第一步:对子集进行BPC计算

首先,挑选一个小子集并为每个模型的每个示例计算bpc。

bash cd data_processing/bpc python -u main.py --model_name {MODEL_NAME} --block_size 1900 --stride 512 --batch_size 1

第二步:训练Fasttext

然后,你可以使用第1步计算的数据训练fasttext。

bash cd data_processing/fasttext python train_fasttext.py

第三步:过滤

最后,你可以使用fasttext过滤你的大型语料库。提供的脚本在单CPU机器上工作,但可以轻松扩展到多机器过滤。

bash bash pipelie.sh {FASTTEXT_NAME} filter NO NO NO NO 0 NO 1 0.1

训练

如果你使用单个节点(例如8个GPU)进行训练,可以使用以下命令:

bash bash pipeline.sh {FASTTEXT_NAME} NO tokenize train convert NO 0 NO 1 0.1 {HOME_PATH} 1 {TRAINING_STEPS}

如果你使用多节点(例如8个GPU * 4节点)进行训练,可以使用以下命令:

bash bash pipeline_multi_node.sh {FASTTEXT_NAME} NO tokenize train convert NO {MAIN_NODE_ADDRESS} NO 1 0.1 {HOME_PATH} {N_NODE} {TRAINING_STEPS}

更多信息,请参考管道脚本。

评估

你可以参考OpencompassLM-Evaluation-Harness来设置训练检查点的评估,以适应你的需求。

引用

如果你发现这项工作有帮助,请友好地引用如下:

@article{shum2025predictivedataselectiondata, title={Predictive Data Selection: The Data That Predicts Is the Data That Teaches}, author={Kashun Shum and Yuzhen Huang and Hongjian Zou and Ding Qi and Yixuan Liao and Xiaoxin Chen and Qian Liu and Junxian He}, journal={arXiv preprint arXiv:2503.00808}, year={2025}, eprint={2503.00808}, }

致谢

感谢以下开源项目的开源,其中一些代码在本项目中进行了引用和修改:

搜集汇总
数据集介绍
main_image_url
构建方式
PreSelect-100B数据集的构建基于预测性数据选择理念,即选择那些能够预示模型下游能力的数据进行预训练。该方法采用fastText-based scorer对大量文本进行评分,筛选出预测性强的数据,从而在保持性能的同时显著降低计算需求。
特点
该数据集的特点在于其创新的数据筛选机制,不仅减少了预训练所需的数据量,而且提高了模型在下游任务中的性能。PreSelect-100B数据集经过精心筛选,包含高质量文本,使得模型在有限的训练资源下能够达到更优的效果。
使用方法
用户可以直接使用提供的fastText分类器对数据进行筛选,也可以根据自己的需求训练自己的fastText模型。数据集使用过程中,用户需要准备预训练语料库,并使用提供的脚本进行数据筛选和模型训练。此外,还提供了docker环境以简化部署过程。
背景与挑战
背景概述
PreSelect-100B数据集是在语言模型预训练领域的研究背景下创建的,其核心目标是优化预训练数据的选择过程,以提高模型在下游任务中的表现。该数据集由香港科技大学的研究团队于2025年提出,主要研究人员包括Kashun Shum、Yuzhen Huang等。PreSelect-100B的创建基于一个假设:那些模型损失能够预测下游能力的文本数据,同样能够有效地促进学习。该数据集的提出对相关领域产生了显著影响,尤其是在减少计算需求和提高模型效率方面。
当前挑战
该数据集在构建过程中面临的挑战主要包括:如何准确评估数据在预训练中的贡献度,以及如何高效地选择高质量的数据。具体挑战体现在两个方面:一是解决的领域问题,即通过预测性数据选择方法来提高模型在下游任务中的表现;二是构建过程中,如何实现高效的数据筛选,以及如何确保所选数据的高质量,这些都是研究团队在数据集构建过程中需要克服的关键技术问题。
常用场景
经典使用场景
在语言模型预训练领域,数据质量的重要性不言而喻。PreSelect-100B数据集通过引入基于数据预测力的数据选择方法,旨在高效地选择预训练数据。其经典使用场景在于,通过训练一个轻量级的fastText评分器,对大规模语料库进行筛选,以保留那些对模型下游任务性能具有预测性的数据,从而在降低计算需求的同时,提升模型性能。
实际应用
实际应用中,PreSelect-100B数据集可用于构建资源节约型的语言模型,尤其是在需要快速部署且资源有限的场景中。其筛选出的高质量数据可加速模型训练,降低成本,同时确保模型在特定下游任务中的有效性。
衍生相关工作
基于PreSelect-100B数据集,研究者们已经开展了一系列相关工作,包括但不限于改进数据选择算法、探索数据质量与模型性能之间的关系,以及将这一选择方法应用于不同的语言模型预训练任务中,进一步推动了该领域的研究进展。
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作