首页 > 其他分享 >在Megatron-Deepspeed项目中如何下载和预处理Wikipedia数据集

在Megatron-Deepspeed项目中如何下载和预处理Wikipedia数据集

时间:2023-11-26 21:33:07浏览次数:40  
标签:wiki 文件 Deepspeed gpt2 -- Wikipedia Megatron json ROOT

更详细的查看 https://github.com/marsggbo/Megatron-DeepSpeed/blob/main/tutorials/gpt2_wikipedia.md

  1. 下载Wikipedia压缩数据集(enwiki-latest-pages-articles.xml.bz2

  2. 再使用wikiextractor工具将数据集解压缩

pip install wikiextractor
python -m wikiextractor.WikiExtractor --json enwiki-latest-pages-articles.xml.bz2

解压缩后会得到一个文件夹text,结构如下:

text
├── AA
  ├── wiki_00
  ├── wiki__01
  ├── ...
├── AB
├── AC
├── AD
├── AE
├── ...
├── GD
└── GE

文件夹包含多个子文件夹,每个子文件夹包含多个json格式的数据集,即wiki_00其实是json格式的文件

  1. 对解压后的数据集做预处理

我们在训练GPT的时候,解压后的数据集还不能直接拿来用,我们还需要用Megatron-Deepspeed提供的tools/preprocess_data.pytext目录下数据集做预处理,最终会得到两个二进制文件,后缀分别是binidx

不过tools/preprocess_data.py只能对单个的json文件做处理,而第二步中我们有几十万个json文件,这个该怎么办呢?一种处理办法就是把第三步中的所有json文件合并到一个json文件中去,最后再对后并后的文件做预处理就可以了。在于处理之前,你需要先运行下面大命令下载GPT相关的文件,这主要是用来预处理的

wget https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-vocab.json
wget https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-merges.txt

下载好后,执行下面的代码即可

#!/bin/bash  
  
# 设置ROOT路径  
ROOT="/data/personal/nus-hx/Wikipedia/text"  

# 检查是否存在 wiki_all.json 文件,如果存在则删除  
if [ -f "$ROOT/wiki_all.json" ]; then  
    rm "$ROOT/wiki_all.json"  
fi  
  
# 创建一个空的 wiki_all.json 文件  
touch "$ROOT/wiki_all.json"
  
# 遍历ROOT路径下所有的文件  
find $ROOT -type f -name "*" -print0 | while IFS= read -r -d $'\0' file; do  
    # 将所有文件内容追加到wiki_all.json文件中  
    cat "$file" >> "$ROOT/wiki_all.json"  
done  

cd /path/to/Megatron-Deepspeed
python tools/preprocess_data.py \
--input "$ROOT/wiki_all.json" \
--output-prefix my-gpt2 \
--dataset-impl mmap \
--tokenizer-type GPT2BPETokenizer   \
--append-eod  \
--vocab-file gpt2-vocab.json \
--merge-file gpt2-merges.txt  \
--workers 16 \
--partitions 16

参考:https://github.com/NVIDIA/Megatron-LM/issues/117

标签:wiki,文件,Deepspeed,gpt2,--,Wikipedia,Megatron,json,ROOT
From: https://www.cnblogs.com/marsggbo/p/17858013.html

相关文章

  • DeepSpeed: 大模型训练框架 | 京东云技术团队
    背景:目前,大模型的发展已经非常火热,关于大模型的训练、微调也是各个公司重点关注方向。但是大模型训练的痛点是模型参数过大,动辄上百亿,如果单靠单个GPU来完成训练基本不可能。所以需要多卡或者分布式训练来完成这项工作。一、分布式训练1.1目前主流的大模型分布式训练主要包括两种:......
  • 阿里云PAI-灵骏大模型训练工具Pai-Megatron-Patch正式开源!
    作者:李鹏,王明,施晨,黄俊导读随着深度学习大语言模型的不断发展,其模型结构和量级在快速演化,依托大模型技术的应用更是层出不穷。对于广大开发者来说不仅要考虑如何在复杂多变的场景下有效的将大模型消耗的算力发挥出来,还要应对大模型的持续迭代。开发简单易用的大模型训练工具就成了......
  • deepspeed流水线并行
    docs/_tutorials/pipeline.mdhttps://gitee.com/qzl66/DeepSpeed/blob/master/docs/_tutorials/pipeline.md 1、重构管道模型  ExpressingPipelineModels 流水线并行要求模型被表示为一系列层。在前向传播中,每一层输入为上一层的输出。其实管道并行模型是不需要指定forw......
  • 开源大模型训练框架 colossal AI chat 、 DeepSpeed chat
    Colossal-AI是一个专注于大规模模型训练的深度学习系统,Colossal-AI基于PyTorch开发,旨在支持完整的高性能分布式训练生态。Colossal-AI已在GitHub上开源。在Colossal-AI中,我们支持了不同的分布式加速方式,包括张量并行、流水线并行、零冗余数据并行、异构计算等。 ......
  • deepspeed ZeRO-Inference 可在1-GPU上推理~100B的大模型
    原理:......
  • 如何使用 Megatron-LM 训练语言模型
    在PyTorch中训练大语言模型不仅仅是写一个训练循环这么简单。我们通常需要将模型分布在多个设备上,并使用许多优化技术以实现稳定高效的训练。HuggingFace......
  • DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍
    DeepSpeedChat:一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍1.概述近日来,ChatGPT及类似模型引发了人工智能(AI)领域的一场风潮。这场风潮对数字世界产生了革命性影响。ChatGPT类模型具有惊人的泛用性,能够执行归纳、编程、翻译等任务,其结果与人类专家相当甚至更优。为......
  • 微软开源DeepSpeed
    人手一个ChatGPT的梦想,就要实现了?刚刚,微软开源了一个可以在模型训练中加入完整RLHF流程的系统框架——DeepSpeedChat。也就是说,各种规模的高质量类ChatGPT模型,现在都唾手可得了!项目地址:https://github.com/microsoft/DeepSpeed一键解锁千亿级ChatGPT,轻松省钱15......
  • 【HuggingFace轻松上手】基于Wikipedia的知识增强预训练
    【HuggingFace轻松上手】基于Wikipedia的知识增强预训练前记:预训练语言模型(Pre-trainedLanguageModel,PLM)想必大家应该并不陌生,其旨在使用自监督学习(Self-supervisedLear......
  • 乘风破浪,遇见最美Windows 11之现代Windows桌面应用开发 - 通过MediaWiki API对接海外
    背景https://zh.wikipedia.org维基百科(Wikipedia,聆听i/ˌwɪkɪˈpiːdi.ə/或聆听i/ˌwɪkiˈpiːdi.ə/)是一个自由内容、公开编辑且多语言的网络百科全书协作计划,通......