分布式模糊去重工具

复现与GPT-3论文相似的模糊去重方法并应用到您的Web数据集。

模糊去重的一般描述: 这里的模糊去重方法主要指的是 GPT-3论文附录A中提到的模糊去重方法。

为了进一步提高模型质量并防止过拟合(随着模型容量的增加越来越重要),我们使用Spark的MinHashLSH实现对每个数据集中的文档进行了模糊去重(即移除了与其他文档高度重合的文档),使用了10个哈希,使用的特征与上面用于分类的特征相同。我们还从Common Crawl中模糊移除了WebText。总体而言,这使数据集的大小平均减少了10%。 正如论文中提到的,使用的特征与前文描述的质量分类器(quality_classifier tools)中所用的一致。 整个工具包基于PySpark。

使用方法

使用spark_dedup.py对文档进行模糊去重。

python spark_dedup.py \
    <dataset_path> \
    <result_path> \
    [--tokenizer <tokenizer_type>] \
    [--num_features <num_features>] \
    [--num_hashtables <num_hashtables>] \
    [--text_key <text_key>] \
    [--master_url <master_url>]
# 打印使用信息
python spark_dedup.py --help
  • dataset_path:输入数据集路径。路径的后缀应该是[json, jsonl, parquet]中的一个。

  • result_path:存储带有预测结果数据集的路径。路径的后缀应该是[json, jsonl, parquet]中的一个。

  • tokenizer:(可选。默认值:None)用于对将要分类的文本进行分词的分词器。如果为None,将使用PySpark的标准分词器。此外,你可以使用我们提供的分词器[zh.sp.model, code.sp.model]中的一个,或者你可以将其设置为你自己的sentencepiece模型的路径。

  • num_features:HashingTF生成的特征数量。默认值为1047576,如megatron-turing-nlg论文中所述。

  • num_hashtables:(可选。默认值:10)MinHashLSH中使用的哈希数量。默认使用10个哈希,如GPT-3论文中所述。

  • text_key:(可选。默认值:"text")输入数据集中用于存储待分类文本的字段名称。

  • master_url:(可选。默认值:None)用于Spark配置的master URL。如果为空,则默认运行在"local[*]"模式下。