按照如下步骤操作,即可实现Megatron-LM在昇腾设备上的高效运行,且无缝集成并充分发挥MindSpeed所提供的丰富加速与优化技术。
import os import torch import mindspeed.megatron_adaptor from functools import partial from typing import Union
else: assert(args.context_parallel_size == 1), "Context parallelism is only supported with Megatron Core!" model = megatron.legacy.model.GPTModel( config, num_tokentypes=0, parallel_output=True, pre_process=pre_process, post_process=post_process )
新建“Megatron-LM/gpt-tokenizer”目录,并将vocab.json和merges.txt文件下载至该目录。
以Alpaca数据集为例,可单击Link获取。
用户需要自行设置代理,以便访问或下载数据集。
source /usr/local/Ascend/ascend-toolkit/set_env.sh
pip3 install nltk pyarrow pandas
1 2 3 4 5 6 7 8 | import json import pandas as pd data_df = pd.read_parquet("train-00000-of-00001-a09b74b3ef9c3b56.parquet") data_df['text'] = data_df['text'].apply(lambda v: json.dumps({"text": v})) with open("alpaca_json.json", encoding='utf-8', mode='w') as f: for i, row in data_df.iterrows(): f.write(row['text']) f.write('\n') |
import torch import mindspeed.megatron_adaptor import numpy as np
新建“Megatron-LM/gpt_pretrain_data”目录,通过运行preprocess_data.py脚本,可以将转换后的JSON文件进一步处理为适合Megatron-LM预训练的二进制格式。
python tools/preprocess_data.py \
--input alpaca_json.json \
--output-prefix ./gpt_pretrain_data/alpaca \
--tokenizer-type GPT2BPETokenizer \
--vocab-file ./gpt-tokenizer/vocab.json \
--merge-file ./gpt-tokenizer/merges.txt \
--append-eod \
--log-interval 1000 \
--workers 8
执行成功后,将在gpt_pretrain_data目录下生成两个文件:alpaca_text_document.bin和alpaca_text_document.idx,代表预处理完成的预训练数据集。
1 2 3 4 | CHECKPOINT_PATH=./ckpt VOCAB_FILE=./gpt-tokenizer/vocab.json MERGE_FILE=./gpt-tokenizer/merges.txt DATA_PATH=./gpt_pretrain_data/alpaca_text_document |
注意,上述路径需根据您的实际情况进行适当调整。
bash examples/pretrain_gpt_distributed.sh