Transformers
功能简介
Hugging Face核心套件transformers提供了便于快速下载和使用的API,用户可以对预训练模型进行微调,已原生支持昇腾NPU。现已支持在昇腾NPU上对Transformers进行单机单卡、单机多卡的BF16、FP16格式训练、APEX模块下的混合精度进行训练。
安装方法
python需为3.8版本及以上, PyTroch需为1.11.0版本及以上。
执行以下代码进行安装。
pip3 install -U transformers
使用样例
这里以 text-classification任务为例说明如何在昇腾NPU微调bert模型。
- 获取text-classification训练脚本并安装相关依赖。
git clone https://github.com/huggingface/transformers.git cd examples/pytorch/text-classification pip install -r requirements.txt
- 执行训练任务,具体参数说明请参考表1。
- 单卡FP16训练示例
python run_glue.py \ --model_name_or_path bert-base-cased \ --task_name $TASK_NAME \ --do_train \ --do_eval \ --max_seq_length 128 \ --per_device_train_batch_size 32 \ --learning_rate 2e-5 \ --num_train_epochs 3 \ --fp16 \ --output_dir /tmp/$TASK_NAME/
- 多卡FP16训练示例
python -m torch.distributed.launch --nproc_per_node=8 run_glue.py \ --model_name_or_path bert-base-cased \ --task_name $TASK_NAME \ --do_train \ --do_eval \ --max_seq_length 128 \ --per_device_train_batch_size 32 \ --learning_rate 2e-5 \ --num_train_epochs 3 \ --fp16 \ --output_dir /tmp/$TASK_NAME/
- APEX混合精度训练示例
使用APEX进行混合精度训练,请先确保安装支持昇腾NPU的APEX包,然后传入 --fp16 和 --half_precision_backend apex。
python run_glue.py \ --model_name_or_path bert-base-cased \ --task_name $TASK_NAME \ --do_train \ --do_eval \ --max_seq_length 128 \ --per_device_train_batch_size 32 \ --learning_rate 2e-5 \ --num_train_epochs 3 \ --fp16 \ --half_precision_backend apex \ --output_dir /tmp/$TASK_NAME/
表1 参数说明 参数
说明
model_name_or_path
与训练模型文件夹路径相同
task_name
数据集任务名称
do_train
执行训练
do_eval
执行评估
max_seq_length
最大序列长度
per_device_train_batch_size
单张卡训练batch size
learning_rate
初始学习率
num_train_epochs
训练的epoch次数
fp16
使用fp16格式的混合精度训练
half_precision_backend apex
使用APEX模式的混合精度训练
output_dir
训练结果和checkpoint保存路径
- 单卡FP16训练示例
父主题: 模型套件和第三方库