Hugging Face Transformers及其相关知识
在Lang Chain实战的第四课中,我们用到了HuggingFaceHub中的开源模型来创建文案,并用到了Access Tokens,但并没有自己讲述这是什么,那么接下来就来进行一下补充,详细介绍一下HuggingFace及其涉及到的相关知识。
一.Hugging Face 是什么?
Hugging Face 是一个专注于自然语言处理(NLP)技术的公司,也是一个开源的机器学习框架和社区平台。它提供了广泛的工具和模型,使开发者可以快速地在 NLP 和其他领域构建、训练和部署机器学习模型。
在公司成立初期,他们研究方向是制作聊天机器人,但后来,由于它的开源Transformer库实在是太过于庞大:已经共享了超 100,000 个预训练模型,10,000 个数据集等,并且提供了很多NLP的相关资料和工具,目前已经变成了自然语言处理(NLP)领域的重要工具。它不仅简化了模型开发,还通过平台化和社区协作推动了人工智能的研究与应用。
Hugging Face核心组件
Hugging Face 的生态系统包括多种组件和平台支持,帮助开发者覆盖从模型训练到部署的全流程。它的核心库主要为以下几种:
-
Transformers
-
提供数千个预训练模型,涵盖 NLP、计算机视觉(CV)和语音任务。
-
支持多种预训练模型类型,包括 BERT、GPT、T5 等。
-
多任务支持:
- 文本分类、翻译、问答、生成式任务(如代码生成)。
-
-
Datasets
- 一个高效的开源数据集处理库,支持大规模的数据操作。
- 内置超 3500 个数据集(如 SQuAD、IMDB、Common Crawl)。
- 提供标准化的预处理工具,减少开发时间。
-
Tokenizers
- 高性能的文本分词工具,专为 Transformer 模型优化。
- 支持分布式训练并提升分词速度。
-
Accelerate
- 管理分布式训练任务。
- 提供简单 API 支持 GPU 和 TPU 环境。
-
Optimum
- 用于优化 Hugging Face 模型的库,支持高效推理和硬件加速(如 ONNX、Intel OneAPI)。
-
Gradio 和 Spaces
- Gradio:快速搭建交互界面,用于演示 AI 应用。
- Spaces:部署机器学习模型和应用程序的平台,支持 Gradio 和 Streamlit。
二. Transformer 模型
Transformer 模型是 Hugging Face 库的核心。Hugging Face 充分利用了 Transformer 的灵活性和扩展性,支持多种任务和架构。那么Tansformer是什么呢?
Transformer 是一种基于 自注意力机制 (Self-Attention) 的深度学习模型架构,由 Vaswani 等人在 2017 年提出。这种架构因其强大的建模能力和高效性,已经成为自然语言处理 (NLP)、计算机视觉 (CV) 和语音处理领域的核心技术。基于 Transformers 的模型有许多种,每种针对特定任务或优化目标进行了改进。
1. Transformer 的基本结构
Transformer 主要由以下两个模块组成:
- 编码器 (Encoder) :负责理解输入序列的上下文,生成一个固定维度的表示。
- 解码器 (Decoder) :根据编码器的输出生成目标序列。
核心机制:自注意力
- 多头自注意力机制 (Multi-Head Self-Attention) :捕获序列中的全局依赖关系,能够让模型关注到输入序列中每个位置的相关性。
- 位置编码 (Positional Encoding) :弥补 Transformer 对序列顺序不敏感的问题,将位置信息注入模型。
2. 基于 Transformer 的经典模型
2.1 BERT (Bidirectional Encoder Representations from Transformers)
-
架构:只使用 Transformer 的编码器部分。
-
特点:
-
双向注意力:同时考虑上下文,适合理解任务。
-
预训练任务:
- 掩码语言模型 (Masked Language Modeling, MLM) :随机掩盖部分输入,预测被掩盖的词。
- 下一句预测 (Next Sentence Prediction, NSP) :判断两个句子是否连续。
-
-
应用:
- 情感分析、命名实体识别 (NER)、文本分类。
2.2 GPT (Generative Pre-trained Transformer)
-
架构:只使用 Transformer 的解码器部分。
-
特点:
- 单向注意力:生成时只能看到之前的内容。
- 专注于文本生成任务。
- GPT-3 等大规模模型展示了强大的零样本 (Zero-Shot) 和少样本 (Few-Shot)学习能力。
-
应用:
- 文本生成、代码生成、对话系统。
2.3 RoBERTa (Robustly Optimized BERT Pretraining Approach)
-
改进点:
- 移除了下一句预测任务。
- 使用更大的数据集和更长的训练时间。
- 动态掩码:每次训练时掩盖的内容不同。
-
效果:相比 BERT,在许多 NLP 基准任务上性能更强。