• Hugging Face 是一家在 NLP 和 AI 领域具有重要影响力的科技公司,他们的开源工具和社区建设为NLP研究和开发提供了强大的支持。它们拥有当前最活跃、最受关注、影响力最大的  NLP 社区,最新最强的 NLP 模型大多在这里发布和开源。该社区也提供了丰富的教程、文档和示例代码,帮助用户快速上手并深入理解各类 Transformer 模型和 NLP 技术
  • Transformers 库是 Hugging Face 最著名的贡献之一,它最初是 Transformer 模型的 pytorch 复现库,随着不断建设,至今已经成为 NLP 领域最重要,影响最大的基础设施之一。该库提供了大量预训练的模型,涵盖了多种语言和任务,成为当今大模型工程实现的主流标准,换句话说,如果你正在开发一个大模型,那么按 Transformer 库的代码格式进行工程实现、将 check point 打包成 hugging face 格式开源到社区,对于推广你的工作有很大的助力作用。本系列文章将介绍 Transformers 库的基本使用方法


文章目录
  • 1. 常见自然语言处理任务
  • 2. 自然语言处理的几个发展阶段
  • 3. Transformers简单介绍
  • 4. Transformers及相关库


1. 常见自然语言处理任务

  • 目前常见的 NLP 任务主要可以归纳为

任务

描述

1

情感分析 (sentiment-analysis)

对给定的文本分析其情感极性

2

文本生成 (text-generation)

根据给定的文本进行生成

3

命名实体识别 (ner)

标记句子中的实体

4

阅读理解 (question-answering)

给定上下文与问题,从上下文中抽取答案

5

掩码填充 (fill-mask)

填充给定文本中的掩码词

6

文本摘要 (summarization)

生成一段长文本的摘要

7

机器翻译 (translation)

将文本翻译成另一种语言

8

特征提取 (feature-extraction)

生成给定文本的张量表示

9

对话机器人 (conversional)

根据用户输入文本,产生回应,与用户对话

  • 稍早时(17年 Transformer 发表到 20 年 GPT 3 发布),研究人员大多使用源自 CV 的 “特征预训练 + 下游任务微调” 模式,这时不同任务有各自适合的模型
  • 7 是原生 Transformer 模型(Encoder-Decoder结构)的目标任务
  • 5 是 BERT 模型(Transformer Encoder)的预训练任务之一
  • 8 过去经常用 BERT 模型完成
  • 1 过去经常用 BERT 模型完成,基本可以看作 8 之后接一个分类或者回归头
  • 2、3、4、6、9 都可以用 GPT 模型完成(Transformer Decoder)
  • 自从 20 年 GPT3 验证了增大参数量带来的规模效应(Scaling Law)后,GPT 类模型越来越受到重视,至今已逐渐实现了各种任务的大一统

2. 自然语言处理的几个发展阶段

  1. 第一阶段(传统机器学习思路):统计模型+数据(特征工程)
  • 特征提取:TF-IDF、BOW…
  • 使用经典统计模型:决策树、SVM、HMM、CRF…
  1. 第二阶段(深度学习思路):神经网络+数据
  • 特征提取:Word2vec、Glove…
  • 使用深度学习模型:MLP、CNN、RNN/LSTM/GRU、Transformer…
  1. 第三阶段(预训练微调思路):预训练+(少量)数据微调思路
  • 特征提取:BERT 类 Transformer Encoder 模型(同时有很多工作直接端到端)
  • 使用 Transformer 类序列模型:GPT、BERT/RoBERTa/ALBERT、BART/T5
  1. 第四阶段(大模型思路):神经网络+更大的预训练模型+Prompt
  • 基本没有明确的特征提取阶段,或者说用 GPT 提取前驱序列特征
  • 基于 GPT 的各种序列生成模型:ChatGPT、Bloom、LLaMA、Alpaca、Vicuna、MOSS…

3. Transformers简单介绍

  • HuggingFace 出品,当下最热、最常使用的自然语言处理工具包之一,不夸张的说甚至没有之一, 官方网址
  • 实现了大量的基于 Transformer 架构的主流预训练模型,不局限于自然语言处理模型,还包括图像、音频以及多模态的模型
  • 提供了海量的预训练模型与数据集,同时支持用户自行上传,社区完善,文档全面,三两行代码便可快速实现模型训练推理,上手简单

4. Transformers及相关库

  • Transformers 库包含以下核心组件

组件

描述

Transformers

核心库,模型加载、模型训练、流水线等

Tokenizer

分词器,对数据进行预处理,文本到 token 序列的互相转换

Datasets

数据集库,提供了数据集的加载、处理等方法

Evaluate

评估函数,提供各种评价指标的计算函数

PEFT

高效微调模型的库,提供了几种高效微调的方法,小参数量撬动大模型

Accelerate

分布式训练,提供了分布式训练解决方案,包括大模型的加载与推理解决方案

Optimum

优化加速库,支持多种后端,如Onnxruntime、OpenVino等

Gradio

可视化部署库,几行代码快速实现基于Web交互的算法演示系统

  • 安装方法:目前(2024.7.6)最新版本需要 python 3.8+ 和 PyTorch 1.11+,如下使用 pip 或 conda 安装
pip install transformers
conda install conda-forge::transformers
  • 1.
  • 2.

如果你想要测试用例或者想在正式发布前使用最新的开发中代码,你得 从源代码安装

  • 部分官方文档

章节

描述

 文档

完整的 API 文档和教程

 任务总结

🤗 Transformers 支持的任务

 预处理教程

使用 Tokenizer 来为模型准备数据

 训练和微调

在 PyTorch/TensorFlow 的训练循环或 Trainer API 中使用 🤗 Transformers 提供的模型

 快速上手:微调和用例脚本

为各种任务提供的用例脚本

 模型分享和上传

和社区上传和分享你微调的模型

 迁移

pytorch-transformerspytorch-pretrained-bert 迁移到 🤗 Transformers