Hugging face Transformers(1)—— 基础知识

  • Hugging Face 是一家在 NLP 和 AI 领域具有重要影响力的科技公司,他们的开源工具和社区建设为NLP研究和开发提供了强大的支持。它们拥有当前最活跃、最受关注、影响力最大的 NLP 社区,最新最强的 NLP 模型大多在这里发布和开源。该社区也提供了丰富的教程、文档和示例代码,帮助用户快速上手并深入理解各类 Transformer 模型和 NLP 技术
  • Transformers 库是 Hugging Face 最著名的贡献之一,它最初是 Transformer 模型的 pytorch 复现库,随着不断建设,至今已经成为 NLP 领域最重要,影响最大的基础设施之一。该库提供了大量预训练的模型,涵盖了多种语言和任务,成为当今大模型工程实现的主流标准,换句话说,如果你正在开发一个大模型,那么按 Transformer 库的代码格式进行工程实现、将 check point 打包成 hugging face 格式开源到社区,对于推广你的工作有很大的助力作用。本系列文章将介绍 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…
  2. 第二阶段(深度学习思路):神经网络+数据
    • 特征提取:Word2vec、Glove…
    • 使用深度学习模型:MLP、CNN、RNN/LSTM/GRU、Transformer…
  3. 第三阶段(预训练微调思路):预训练+(少量)数据微调思路
    • 特征提取:BERT 类 Transformer Encoder 模型(同时有很多工作直接端到端)
    • 使用 Transformer 类序列模型:GPT、BERT/RoBERTa/ALBERT、BART/T5
  4. 第四阶段(大模型思路):神经网络+更大的预训练模型+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
    

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

  • 部分官方文档

    章节描述
    文档完整的 API 文档和教程
    任务总结🤗 Transformers 支持的任务
    预处理教程使用 Tokenizer 来为模型准备数据
    训练和微调在 PyTorch/TensorFlow 的训练循环或 Trainer API 中使用 🤗 Transformers 提供的模型
    快速上手:微调和用例脚本为各种任务提供的用例脚本
    模型分享和上传和社区上传和分享你微调的模型
    迁移pytorch-transformerspytorch-pretrained-bert 迁移到 🤗 Transformers
  • 10
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云端FFF

所有博文免费阅读,求打赏鼓励~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值