Update and rename 微调预训练模型(Transformers).md to 4.0 基于Hugging Face -Transformers的预训练模型微调.md

This commit is contained in:
老张 2021-09-12 20:43:29 +08:00 committed by GitHub
parent a39b96091e
commit 3e470a5d2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 25 additions and 23 deletions

View File

@ -1,29 +1,31 @@
# 微调预训练模型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任务处理 - pipeline工具演示NLP任务处理
- 构建Trainer微调模型<br> - 构建Trainer微调模型<br>
目录 目录
- [1. 简介](#1--简介) - [1. 简介](#1--简介)
- [Transformers的历史](#transformers的历史) - [Transformers的历史](#transformers的历史)
- [Architectures和checkpoints](#architectures和checkpoints) - [Architectures和checkpoints](#architectures和checkpoints)
- [The Inference API](#the-inference-api) - [The Inference API](#the-inference-api)
- [2. 用pipeline处理NLP问题](#2-用pipeline处理nlp问题) - [2. 用pipeline处理NLP问题](#2-用pipeline处理nlp问题)
- [3. Behind the pipeline](#3-behind-the-pipeline) - [3. Behind the pipeline](#3-behind-the-pipeline)
- [tokenizer预处理](#tokenizer预处理) - [tokenizer预处理](#tokenizer预处理)
- [选择模型](#选择模型) - [选择模型](#选择模型)
- [Model heads](#model-heads) - [Model heads](#model-heads)
- [Post-processing后处理](#post-processing后处理) - [Post-processing后处理](#post-processing后处理)
- [4. 构建Trainer API微调预训练模型](#4-构建trainer-api微调预训练模型) - [4. 构建Trainer API微调预训练模型](#4-构建trainer-api微调预训练模型)
- [从Hub上下载dataset](#从hub上下载dataset) - [从Hub上下载dataset](#从hub上下载dataset)
- [数据集预处理](#数据集预处理) - [数据集预处理](#数据集预处理)
- [使用Trainer API微调模型](#使用trainer-api微调模型) - [使用 Trainer API 在 PyTorch 中进行微调](#使用-trainer-api-在-pytorch-中进行微调)
- [训练](#训练) - [训练](#训练)
- [评估函数](#评估函数) - [评估函数](#评估函数)
- [5. 补充部分](#5-补充部分) - [5. 补充部分](#5-补充部分)
- [为什么教程第四章都是用Trainer来微调模型](#为什么教程第四章都是用trainer来微调模型)
- [TrainingArguments主要参数](#trainingarguments主要参数)
- [不同的模型加载方式](#不同的模型加载方式) - [不同的模型加载方式](#不同的模型加载方式)
- [Dynamic padding——动态填充技术](#dynamic-padding动态填充技术) - [Dynamic padding——动态填充技术](#dynamic-padding动态填充技术)
@ -424,7 +426,7 @@ DatasetDict({
最后当我们将输入序列进行批处理时要将所有输入序列填充到本批次最长序列的长度——我们称之为动态填充技术dynamic padding(动态填充:即将每个批次的输入序列填充到一样的长度。具体内容放在最后)。 最后当我们将输入序列进行批处理时要将所有输入序列填充到本批次最长序列的长度——我们称之为动态填充技术dynamic padding(动态填充:即将每个批次的输入序列填充到一样的长度。具体内容放在最后)。
### 使用 Trainer API 在 PyTorch 中进行微调 ### 使用 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 进行模型的基本训练循环了(否则的话,要自己从头加载和预处理数据,设置各种参数,一步步编写训练循环。自定义训练循环的内容在本节最后)。 数据预处理完成后只需要几个简单的步骤来定义Trainer的参数就可以使用 Trainer 进行模型的基本训练循环了(否则的话,要自己从头加载和预处理数据,设置各种参数,一步步编写训练循环。自定义训练循环的内容在本节最后)。
@ -646,7 +648,7 @@ Trainer 默认支持 多GPU/TPU也支持混合精度训练可以在训练
这一小段是我的理解不在HF主页课程中。 这一小段是我的理解不在HF主页课程中。
### args主要参数 ### TrainingArguments主要参数
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) - 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 :有三个选项 - evaluation_strategy :有三个选项