训练、微调与数据1865 字

基于PyTorch微调T5模型

·全库 319 / 611

《基于PyTorch微调T5模型》共 0.2 万字,通篇围绕 数据集、微调、GPU、架构 展开,归在「训练、微调与数据」这一层。

覆盖数据集微调GPU架构

适合要自己训模型、或者判断这一版该不该训的人

目录骨架(8 节)
  1. 运行脚本
  2. 分布式训练和混合精度
  3. 在TPU上运行脚本
  4. 基于🤗 Accelerate运行脚本
  5. 使用自定义数据集
  6. 测试脚本
  7. 从checkpoint恢复训练
  8. 分享模型
目录 · 4 节

示例代码

注:将ppt后缀名改为zip后解压

前言

本次分享如何在PyTorch和中运行示例摘要训练脚本

设置

要成功运行示例脚本的最新版本,您必须在新虚拟环境中从源代码安装🤗Transformers:

git clone https://github.com/huggingface/transformers
cd transformers
pip install .

然后切换您clone的 🤗 Transformers 仓到特定的版本,例如v3.5.1:

git checkout tags/v3.5.1

在安装了正确的库版本后,进入您选择的版本的example文件夹并安装例子要求的环境:

pip install -r requirements.txt

运行脚本

示例脚本从🤗 Datasets库下载并预处理数据集。然后,脚本通过Trainer使用支持摘要任务的架构对数据集进行微调。以下示例展示了如何在CNN/DailyMail数据集上微调T5-small。由于T5模型的训练方式,它需要一个额外的source_prefix参数。这个提示让T5知道这是一个摘要任务。

python examples/pytorch/summarization/run_summarization.py \
    --model_name_or_path google-t5/t5-small \
    --do_train \
    --do_eval \
    --dataset_name cnn_dailymail \
    --dataset_config "3.0.0" \
    --source_prefix "summarize: " \
    --output_dir /tmp/tst-summarization \
    --per_device_train_batch_size=4 \
    --per_device_eval_batch_size=4 \
    --overwrite_output_dir \
    --predict_with_generate

示例脚本从 🤗 Datasets 库下载并预处理数据集。然后,脚本使用 Keras 在支持摘要的架构上微调数据集。以下示例展示了如何在 CNN/DailyMail 数据集上微调 T5-small。T5 模型由于训练方式需要额外的 source_prefix 参数。这个提示让 T5 知道这是一个摘要任务。

python examples/tensorflow/summarization/run_summarization.py  \
    --model_name_or_path google-t5/t5-small \
    --dataset_name cnn_dailymail \
    --dataset_config "3.0.0" \
    --output_dir /tmp/tst-summarization  \
    --per_device_train_batch_size 8 \
    --per_device_eval_batch_size 16 \
    --num_train_epochs 3 \
    --do_train \
    --do_eval

分布式训练和混合精度

Trainer 支持分布式训练和混合精度,这意味着你也可以在脚本中使用它。要启用这两个功能,可以做如下设置:

  • 添加 fp16 参数以启用混合精度。
  • 使用 nproc_per_node 参数设置使用的GPU数量。
torchrun \
    --nproc_per_node 8 pytorch/summarization/run_summarization.py \
    --fp16 \
    --model_name_or_path google-t5/t5-small \
    --do_train \
    --do_eval \
    --dataset_name cnn_dailymail \
    --dataset_config "3.0.0" \
    --source_prefix "summarize: " \
    --output_dir /tmp/tst-summarization \
    --per_device_train_batch_size=4 \
    --per_device_eval_batch_size=4 \
    --overwrite_output_dir \
    --predict_with_generate

资料里没有你的场景?

把你手上的数据和想解决的那个环节发上来,我们按具体情况回,不复述方法论。

发布需求