Hugging Face 是一家专注于 NLP 的公司,最初以开发聊天机器人起家,后来转向开源 NLP 工具和模型开发维护。该公司提供了 Transformers 开源库

  • 实现了 Transformer 模型架构的核心模块(如 Self-AttentionEncoderDecoder);
  • 支持加载和微调预训练模型(如 BERTGPTT5);
  • 提供了基于 Transformer 的预训练模型,用户可以直接下载和使用;
  • 提供了大量 NLP 数据集,方便用户训练和评估 Transformer 模型;
  • 提供了高效的文本分词工具,支持 Transformer 模型的分词需求;
  • 简化了 Transformer 模型的分布式训练和部署。

设计原则

Transformers 为机器学习开发人员和研究人员而设计,主要设计原则如下:

  • 快速易用

    每个模型仅由三个主要类(配置,模型和预处理器)实现,可以通过 Pipeline 应用模型进行推理;通过Trainer训练模型。

  • 预训练模型

    训练时使用预训练模型来减少”碳足迹“、计算成本和时间,而不是训练一个全新的模型。每个预训练模型都尽可能接近原始模型,并提供最先进(state-of-the-art SoTA)的性能。

项目地址

  • 官网:https://huggingface.co/transformers
  • githubhttps://github.com/huggingface/transformers

项目定位

Transformers 是一个开源库

Transformers 是基于 PyTorch, TensorFlowJAX 打造的领先的机器学习工具。Transformers 提供了可以轻松下载和训练的先进的预训练模型的 API 和工具. 使用预训练模型可以减少计算消耗和碳排放, 并且节省从头训练所需要的时间和资源. 这些模型支持不同模态中的常见任务,比如:

  • 自然语言处理: 文本分类, 命名实体识别, 问答, 语言建模, 摘要, 翻译, 填空和文本生成等。

  • 机器视觉: 图像分类, 目标检测和语义分割等。

  • 音频: 自动语音识别和音频分类等。

  • 多模态: 表格问答, 光学字符识别, 从扫描文档提取信息, 视频分类和视觉问答等

Transformers 支持在 PyTorch, TensorFlowJAX 上的互操作性. 这给在模型的每个阶段使用不同的框架带来了灵活性; 在一个框架中使用几行代码训练一个模型, 然后在另一个框架中加载它并进行推理. 模型也可以被导出为 ONNXTorchScript 格式, 用于在生产环境中部署。

Transformers 是语言模型

所有支持 Transformer 的模型(如 GPTBERTT5 等)都被训练为语言模型。这意味着它们已经以自我监督的方式接受了大量原始文本的训练。自监督学习是一种从模型输入中自动计算目标的训练类型。这意味着不需要人类给数据贴上标签!

这种类型的模型基于对它所训练的语言的统计理解,但它对于特定的实际任务不太有用。正因为如此,一般的预训练模型会经历一个称为迁移学习微调 的过程。在这个过程中,模型以一种监督的方式进行微调;换句话说,在给定的任务上使用人工注释的标签。

Transformers 是大模型

除了少数极端的(如DistilBERT),实现更好性能的一般策略都是通过增加模型的大小以及预训练的数据量来实现的;不幸的是,训练一个模型,尤其是一个大模型,需要大量的数据。这在时间消耗和计算资源方面变得非常昂贵。甚至造成环境影响。

对于一个庞大模型项目,如果每次想要训练一个模型,它都需要从头开始的。这将导致巨大的、不必要的成本浪费!所以,共享训练好的权重并在已经训练好的权重的基础上进行构建可以减少社区的总体计算成本和碳足迹。

顺便说一下,您可以通过几个工具评估模型训练的碳足迹。例如集成在 TransformersML CO2 ImpactCode Carbon

技术特点

Transformers 采用目前最佳技术、最前沿(state-of-the-artSoTA)的预训练模型来完成推理或训练。其主要特点如下:

  • Pipeline:简单和优化的推理类。许多如文本生成、图像分割、自动语音合成、文档文档等机器学习任务类都是 Pipeline的子类;Pipeline既是特定任务类的基类,同时也是特定任务类的容器,生成 Pipeline 实例时,只要通过 task 参数传入特定任务类的任务标识就可以完成特定任务的功能(换句话说就是返回的是指定特定任务的实例)。在 Transformers 中提到的 Pipelines 并不是具体的类,而是任务类的通称。
  • Trainer:一个多功能的训练器,在训练(支持分布式训练)PyTorch模型时提供如mixed precision(混合精度)训练、torch.compile(可以加快训练速度并减少计算开销)、FlashAttention(一种加速注意力计算并减少内存占用的方法)的支持。
  • Generate:使用大语言模型(large language modelsLLMs),可视化语言模型(vision language modelsVLMs)快速生成文本。支持流和多种解码策略。

资源镜像

AI 开发的时候很多时候会从Hugging Face下载模型数据,但无法直接访问或者速度特别缓慢!这里提供一些国内的镜像方便使用。

如果是下载模型,可以通过访问 Gitee 站点的子域 http://ai.gitee.com,进入后通过查询所需的模型,然后在下载对应的模型。

另外,可以访问 HF-Mirrorhttps://hf-mirror.com/)站点。 HF-Mirror 是用于镜像 [Hugging Face Hub]域名。只要将域名改成镜像域名,用法和以往一样。下面简单介绍如何使用。

  • 网页下载

    进入镜像站点的模型主页的 Files and Version 中下载文件。

  • 使用 huggingface-cli

    huggingface-cliHugging Face 官方提供的命令行工具,自带完善的下载功能。首先安装依赖:

    pip install -U huggingface_hub
    

    然后设置环境变量。Linux环境下:

    export HF_ENDPOINT=https://hf-mirror.com
    

    Windows环境下使用PowerShell进入:

    $env:HF_ENDPOINT = "https://hf-mirror.com"
    

    之后就可以下载模型和数据集了:

    # 下载模型
    huggingface-cli download --resume-download gpt2 --local-dir gpt2
    
    # 下载数据集
    huggingface-cli download --resume-download gpt2 --local-dir gpt2
    
  • 使用环境变量

    非侵入式,能解决大部分情况。huggingface 工具链会获取 HF_ENDPOINT 环境变量来确定下载文件所用的网址,所以可以使用通过设置变量来解决。

    HF_ENDPOINT=https://hf-mirror.com python your_script.py
    

术语解释

  • 当前最佳最前沿水平(State-of-the-ArtSoTA) 模型并不是确定的模型,而是统称,即指的是在不同领域、不同环境里公认的当前最佳、最前沿水平的模型。
  • Pythorch 是一个由 Facebook 的人工智能研究团队开发的开源的机器学习库,主要用于进行计算机视觉(CV)、自然语言处理(NLP)、语音识别等领域的研究和开发。PyTorch 以其灵活性和易用性而闻名,特别适合于深度学习研究和开发。
  • Torch:是 PyTorch 库的核心模块,提供了以下关键功能:张量(Tensors)、数学运算、数据类型转换、随机数生成、线性代数运算、自动微分、存储和序列化、多 GPU 支持、神经网络层与优化器等,详细介绍参见《附录一:Torch 介绍
  • TensorFlow 是一个由谷歌人工智能团队谷歌大脑开发和维护,基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习算法的编程实现,其前身是谷歌的神经网络算法库DistBeliefTensorflow 拥有多层级结构,可部署于各类服务器、PC终端和网页并支持 GPUTPU 高性能数值计算,被广泛应用于谷歌内部的产品开发和各领域的科学研究。Python语言下提供四个不同版本:CPU版本(tensorflow)、包含 GPU 加速的版本(tensorflow-gpu),以及它们的每日编译版本(tf-nightlytf-nightly-gpu)。
  • JAX 是一个 TensorFlow 的简化库,它结合了 AutogradXLA,专门用于高性能机器学习研究。凭借 AutogradJAX 可以求导循环、分支、递归和闭包函数,并且它可以进行三阶求导;支持自动模式反向求导(反向传播)和正向求导,且二者可以任何顺序任意组合。得力于 XLA,可以在 GPUTPU 上编译和运行 NumPy 程序。默认情况下,编译发生在底层,库调用实时编译和执行。但是 JAX 还允许使用单一函数 API jit 将 Python 函数及时编译为 XLA 优化的内核。编译和自动求导可以任意组合,因此可以在 Python 环境下实现复杂的算法并获得最大的性能。

应用赋能

Transformers 库在自然语言理解、计算机视觉、音频以及多模态模型应用提供了大量的应用;在大语言模型肆虐的今天,Tranformers 库也提供了完美的支持。

在自然语言理解领域,提供了文本分类、零样本文本分类、命名实体识别(token 分类)、词性标注(token 分类)、问答、表格问答、自动摘要、翻译、文生文以及文本生成等能力。

在计算机视觉领域,提供了图像分类、零样本图像分类、对象检测、零样本对象检测、图像分割、图生图、关键点检测、深度估计、绝对深度估计和视频分类等应用。

在音频领域,提供有自动语音识别,音频分类、零样本音频分类、语音合成等功能。

在多模态领域,可以处理文档问答、可视化问答、零样本可视化问答、文本特征提取、图像特征提取、音频特征提取、图像描述生成(看图说话)、图片转文本(从图片中提取文字)、图片文本转文本(根据图片以及提示生成自然语言)以及蒙版生成等能力。

支持模型

下表展示 Transformers 库对这些模型的支持情况:

模型名称 Tokenizer Tokenizer fast PyTorch TensorFlow Flax
ALBERT
AltCLIP
Audio Spectrogram Transformer
BART
BEiT
BERT
Bert Generation
BigBird
BigBird-Pegasus
BioGpt
BiT
Blenderbot
BlenderbotSmall
BLIP
BLOOM
CamemBERT
CANINE
Chinese-CLIP
CLIP
CLIPSeg
CodeGen
Conditional DETR
ConvBERT
ConvNeXT
CTRL
CvT
Data2VecAudio
Data2VecText
Data2VecVision
DeBERTa
DeBERTa-v2
Decision Transformer
Deformable DETR
DeiT
DETR
DiNAT
DistilBERT
DonutSwin
DPR
DPT
ELECTRA
Encoder decoder
ERNIE
ESM
FairSeq Machine-Translation
FlauBERT
FLAVA
FNet
Funnel Transformer
GIT
GLPN
GPT Neo
GPT NeoX
GPT NeoX Japanese
GPT-J
GPT-Sw3
GroupViT
Hubert
I-BERT
ImageGPT
Jukebox
LayoutLM
LayoutLMv2
LayoutLMv3
LED
LeViT
LiLT
Longformer
LongT5
LUKE
LXMERT
M-CTC-T
M2M100
Marian
MarkupLM
Mask2Former
MaskFormer
MaskFormerSwin
mBART
Megatron-BERT
MobileBERT
MobileNetV1
MobileNetV2
MobileViT
MPNet
MT5
MVP
NAT
Nezha
Nyströmformer
OpenAI GPT
OpenAI GPT-2
OPT
OWL-ViT
Pegasus
PEGASUS-X
Perceiver
PLBart
PoolFormer
ProphetNet
QDQBert
RAG
REALM
Reformer
RegNet
RemBERT
ResNet
RetriBERT
RoBERTa
RoBERTa-PreLayerNorm
RoCBert
RoFormer
SegFormer
SEW
SEW-D
Speech Encoder decoder
Speech2Text
Speech2Text2
Splinter
SqueezeBERT
Swin Transformer
Swin Transformer V2
Swin2SR
SwitchTransformers
T5
Table Transformer
TAPAS
Time Series Transformer
TimeSformer
Trajectory Transformer
Transformer-XL
TrOCR
UniSpeech
UniSpeechSat
UPerNet
VAN
VideoMAE
ViLT
Vision Encoder decoder
VisionTextDualEncoder
VisualBERT
ViT
ViT Hybrid
ViTMAE
ViTMSN
Wav2Vec2
Wav2Vec2-Conformer
WavLM
Whisper
X-CLIP
XGLM
XLM
XLM-ProphetNet
XLM-RoBERTa
XLM-RoBERTa-XL
XLNet
YOLOS
YOSO
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐