更新时间:2024-04-30 GMT+08:00
分享

预训练数据处理

训练前需要对数据集进行预处理,转化为.bin和.idx格式文件,以满足训练要求。

Alpaca数据处理

数据预处理脚本preprocess_data.py存放在代码包的“llm_train\AscendSpeed\ModelLink\”目录中,脚本具体内容如下。

cd /home/ma-user/ws/AscendCloud-3rdLLM-6.3.902/llm_train/AscendSpeed/ModelLink
python tools/preprocess_data.py \
    --input ${path}/train-00000-of-00001-a09b74b3ef9c3b56.parquet \
    --output-prefix ${path}/alpaca/llama2-13B/alpaca \
    --tokenizer-type PretrainedFromHF \
    --tokenizer-name-or-path ${path}/tokenizers/llama2-13b-hf \
    --tokenizer-not-use-fast \
    --json-keys text

参数说明:

  • - input:数据集的存放路径,本案例中${path}的路径为/home/ma-user/ws/datasets 。
  • - output-prefix:处理后的数据集保存路径+数据集名称前缀(例如: alpaca)
  • - tokenizer-type:tokenizer的类型,可选项有['BertWordPieceLowerCase','BertWordPieceCase','GPT2BPETokenizer','PretrainedFromHF'],一般为PretrainedFromHF。
  • - tokenizer-name-or-path:tokenizer的存放路径
  • - json-keys: space separate listed of keys to extract from json,默认使用text,不需要修改。

数据预处理后输出的训练数据如下:

  • alpaca_text_document.bin
  • alpaca_text_document.idx

训练的时指定的数据路径为${path}/alpaca/llama2-13B/alpaca_text_document, 不加文件类型后缀。

具体操作步骤如下:

  1. 进入容器中,创建数据集存放目录datasets。
    cd /home/ma-user/ws/   #进入/home/ma-user/ws/目录 
    mkdir datasets         #创建datasets目录
  2. 创建数据处理后的输出目录/home/ma-user/ws/datasets/alpaca/llama2-13B/。
    cd /home/ma-user/ws/datasets  #进入/home/ma-user/ws/datasets目录
    mkdir -p alpaca/llama2-13B
  3. 将获取到的Alpaca预训练数据集传到上一步创建的目录中。如还未下载数据集,请参考准备数据获取。
  4. 进入“/home/ma-user/ws/AscendCloud-3rdLLM-6.3.902/llm_train/AscendSpeed/ModelLink/”目录,在代码目录中执行preprocess_data.py脚本处理数据。
    此处提供一段实际的数据处理代码示例如下。
    python tools/preprocess_data.py \
        --input /home/ma-user/ws/datasets/data/train-00000-of-00001-a09b74b3ef9c3b56.parquet  \
        --output-prefix /home/ma-user/ws/datasets/alpaca/llama2-13B/alpaca \
        --tokenizer-type PretrainedFromHF \
        --tokenizer-name-or-path /home/ma-user/ws/tokenizers/llama2-13b-hf \
        --tokenizer-not-use-fast \
        --json-keys text
  5. 数据处理完后,在/home/ma-user/ws/datasets/alpaca/llama2-13B/目录下生成alpaca_text_document.bin和alpaca_text_document.idx文件。
    图1 处理后的数据

自定义数据

如果是用户自己准备的数据集,可以使用Ascendspeed代码仓中的转换工具将json格式数据集转换为训练中使用的.idx + .bin格式。

#示例:
#1.将准备好的json格式数据集存放于/home/ma-user/ws/datasets/data目录下: data.json
#2.运行转换脚本
cd /home/ma-user/ws/llm_train/AscendSpeed/ModelLink/  
python tools/preprocess_data.py --input data.json \ #需要转换的数据集路径
                                --output-prefix datasets/data \ #转换后存放的数据集路径
                                --tokenizer-type PretrainedFromHF \
                                --tokenizer-name-or-path llama2-13b-hf \
                                --tokenizer-not-use-fast \
                                --json-keys text
#3.执行完成后在 datasets文件夹中可以得到 data_text_document.idx 与data_text_document.bin 两个文件
分享:

    相关文档

    相关产品