From 3e470a5d2b52697faa3933d3063e03ad2dd4a975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=81=E5=BC=A0?= Date: Sun, 12 Sep 2021 20:43:29 +0800 Subject: [PATCH] =?UTF-8?q?Update=20and=20rename=20=E5=BE=AE=E8=B0=83?= =?UTF-8?q?=E9=A2=84=E8=AE=AD=E7=BB=83=E6=A8=A1=E5=9E=8B=EF=BC=88Transform?= =?UTF-8?q?ers=EF=BC=89.md=20to=204.0=20=E5=9F=BA=E4=BA=8EHugging=20Face?= =?UTF-8?q?=20-Transformers=E7=9A=84=E9=A2=84=E8=AE=AD=E7=BB=83=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E5=BE=AE=E8=B0=83.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...d => 4.0 基于Hugging Face -Transformers的预训练模型微调.md} | 48 ++++++++++--------- 1 file changed, 25 insertions(+), 23 deletions(-) rename docs/篇章4-使用Transformers解决NLP任务/{微调预训练模型(Transformers).md => 4.0 基于Hugging Face -Transformers的预训练模型微调.md} (96%) diff --git a/docs/篇章4-使用Transformers解决NLP任务/微调预训练模型(Transformers).md b/docs/篇章4-使用Transformers解决NLP任务/4.0 基于Hugging Face -Transformers的预训练模型微调.md similarity index 96% rename from docs/篇章4-使用Transformers解决NLP任务/微调预训练模型(Transformers).md rename to docs/篇章4-使用Transformers解决NLP任务/4.0 基于Hugging Face -Transformers的预训练模型微调.md index ef9f666..9dd594c 100644 --- a/docs/篇章4-使用Transformers解决NLP任务/微调预训练模型(Transformers).md +++ b/docs/篇章4-使用Transformers解决NLP任务/4.0 基于Hugging Face -Transformers的预训练模型微调.md @@ -1,31 +1,33 @@ -# 微调预训练模型(Transformers) +# 4.0 基于Hugging Face -Transformers的预训练模型微调 -本文参考资料是[Hugging Face主页](https://huggingface.co/)Resources下的Course。在此课程基础上做了一些翻译工作,节选部分内容并注释(加粗斜体)。感兴趣的同学可以去查看[原文](https://huggingface.co/course/chapter1)。 +本文参考资料是[Hugging Face主页](https://huggingface.co/)Resources下的课程。在此课程基础上做了一些翻译工作,节选部分内容并注释(加粗斜体),加了Trainer和args主要参数介绍。感兴趣的同学可以去查看[原文](https://huggingface.co/course/chapter1)。 **** 本章节主要内容包含两部分内容: - pipeline工具演示NLP任务处理 - 构建Trainer微调模型
目录 - - [1. 简介](#1--简介) - - [Transformers的历史](#transformers的历史) - - [Architectures和checkpoints](#architectures和checkpoints) - - [The Inference API](#the-inference-api) - - [2. 用pipeline处理NLP问题](#2-用pipeline处理nlp问题) - - [3. Behind the pipeline](#3-behind-the-pipeline) - - [tokenizer预处理](#tokenizer预处理) - - [选择模型](#选择模型) - - [Model heads](#model-heads) - - [Post-processing后处理](#post-processing后处理) - - [4. 构建Trainer API微调预训练模型](#4-构建trainer-api微调预训练模型) - - [从Hub上下载dataset](#从hub上下载dataset) - - [数据集预处理](#数据集预处理) - - [使用Trainer API微调模型](#使用trainer-api微调模型) - - [训练](#训练) - - [评估函数](#评估函数) - - [5. 补充部分](#5-补充部分) - - [不同的模型加载方式](#不同的模型加载方式) - - [Dynamic padding——动态填充技术](#dynamic-padding动态填充技术) +- [1. 简介](#1--简介) + - [Transformers的历史](#transformers的历史) + - [Architectures和checkpoints](#architectures和checkpoints) + - [The Inference API](#the-inference-api) +- [2. 用pipeline处理NLP问题](#2-用pipeline处理nlp问题) +- [3. Behind the pipeline](#3-behind-the-pipeline) + - [tokenizer预处理](#tokenizer预处理) + - [选择模型](#选择模型) + - [Model heads](#model-heads) + - [Post-processing后处理](#post-processing后处理) +- [4. 构建Trainer API微调预训练模型](#4-构建trainer-api微调预训练模型) + - [从Hub上下载dataset](#从hub上下载dataset) + - [数据集预处理](#数据集预处理) + - [使用 Trainer API 在 PyTorch 中进行微调](#使用-trainer-api-在-pytorch-中进行微调) + - [训练](#训练) + - [评估函数](#评估函数) +- [5. 补充部分](#5-补充部分) + - [为什么教程第四章都是用Trainer来微调模型?](#为什么教程第四章都是用trainer来微调模型) + - [TrainingArguments主要参数](#trainingarguments主要参数) + - [不同的模型加载方式](#不同的模型加载方式) + - [Dynamic padding——动态填充技术](#dynamic-padding动态填充技术) ## 1. 简介 本章节将使用 [Hugging Face 生态系统中的库](https://github.com/huggingface)——🤗 Transformers、🤗 Datasets、🤗 Tokenizers 和 🤗 Accelerate——以及 Hugging Face Hub,来进行自然语言处理工作(NLP)。 @@ -424,7 +426,7 @@ DatasetDict({ 最后,当我们将输入序列进行批处理时,要将所有输入序列填充到本批次最长序列的长度——我们称之为动态填充技术dynamic padding(动态填充:即将每个批次的输入序列填充到一样的长度。具体内容放在最后)。 ### 使用 Trainer API 在 PyTorch 中进行微调 -由于 PyTorch 不提供封装好的训练循环,🤗 Transformers 库提供了一个transformers.Trainer API,它是一个简单但功能完整的 PyTorch 训练和评估循环,针对 🤗 Transformers 进行了优化,有很多的训练选项和内置功能,同时也支持多GPU/TPU分布式训练和混合精度。即Trainer API是一个封装好的训练器(Transformers库内置的小框架,如果是Tensorflow,则是TFTrainer)。 +由于 PyTorch 不提供封装好的训练循环,🤗 Transformers 库写了了一个transformers.Trainer API,它是一个简单但功能完整的 PyTorch 训练和评估循环,针对 🤗 Transformers 进行了优化,有很多的训练选项和内置功能,同时也支持多GPU/TPU分布式训练和混合精度。即Trainer API是一个封装好的训练器(Transformers库内置的小框架,如果是Tensorflow,则是TFTrainer)。 数据预处理完成后,只需要几个简单的步骤来定义Trainer的参数,就可以使用 Trainer 进行模型的基本训练循环了(否则的话,要自己从头加载和预处理数据,设置各种参数,一步步编写训练循环。自定义训练循环的内容在本节最后)。 @@ -646,7 +648,7 @@ Trainer 默认支持 多GPU/TPU,也支持混合精度训练,可以在训练 这一小段是我的理解,不在HF主页课程中。 -### args主要参数 +### TrainingArguments主要参数 TrainingArguments参数有几十个,后面章节用到的主要有: - output_dir (str) :model predictions和检查点的保存目录。保存后的模型可以使用管道加载,在下次预测时使用,详见[《使用huggingface transformers全家桶实现一条龙BERT训练和预测》](https://zhuanlan.zhihu.com/p/344767513?utm_source=wechat_session&utm_medium=social&utm_oi=1400823417357139968&utm_campaign=shareopn) - evaluation_strategy :有三个选项