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. 常见自然语言处理任务
  • 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…
  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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/778095.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

7月6日 VueConf 技术大会即将在深圳举办

7月6日,VueConf 2024 即将在深圳召开,本次大会正值 Vue.js 十周年,旨在聚焦 Vue.js 社区的成员,分享最新的技术动态、经验以及创新实践。 本次参与 VueConf 大会的是来自全球 Vue.js 核心团队成员、行业专家及前端开发者。其中&a…

排序——数据结构与算法 总结8

目录 8.1 排序相关概念 8.2 插入排序 8.2.1 直接插入排序: 8.2.2 折半插入排序: 8.2.3 希尔排序: 8.3 交换排序 8.3.1 冒泡排序: 8.3.2 快速排序: 8.4 选择排序 8.4.1 简单选择排序 8.4.2 堆排序 8.5 归并…

基于LabVIEW的设备安装螺栓连接设计

介绍了一种基于LabVIEW的辅助设备安装螺栓连接设计案例。通过LabVIEW软件,实现了从螺栓规格预估、强度校核到物料选用的整个流程的软件化,提高了设计效率和安装可靠性。 项目背景 在轨道车辆设备安装中,螺栓连接作为一种常见的紧固方式&…

SpringBoot 中的参数校验:构建健壮应用的基石

前言 在开发Web应用时,处理用户输入是不可避免的一环。然而,用户输入往往充满不确定性,可能是格式不正确、类型不匹配,甚至包含恶意内容。为了确保应用的稳定性和安全性,对输入参数进行有效校验显得尤为重要。Spring …

Python中解决os.listdir命令读取文件乱序问题方法

Python中使用对话框批量打开文件时出现乱序问题的解决方法 一、问题描述二、os.listdir读取文件乱序问题解决方法 欢迎学习交流! 邮箱: z…1…6.com 网站: https://zephyrhours.github.io/ 一、问题描述 有时候为了方便,我们在进…

MySQL之备份与恢复(五)

备份与恢复 备份数据 符号分隔文件备份 可以使用SQL命令SELECT INTO OUTFILE以符号分隔文件格式创建数据的逻辑备份。(可以用mysqldump的 --tab选项导出到符号分隔文件中)。符号分隔文件包含以ASCII展示的原始数据,没有SQL、注释和列名。下面是一个导出为逗号分隔…

vb.netcad二开自学笔记3:启动与销毁

Imports Autodesk.AutoCAD.ApplicationServicesImports Autodesk.AutoCAD.EditorInputImports Autodesk.AutoCAD.RuntimePublic Class WellcomCADImplements IExtensionApplicationPublic Sub Initialize() Implements IExtensionApplication.InitializeMsgBox("net程序已…

ePTFE膜(膨体聚四氟乙烯膜)应用前景广阔 本土企业技术水平不断提升

ePTFE膜(膨体聚四氟乙烯膜)应用前景广阔 本土企业技术水平不断提升 ePTFE膜全称为膨体聚四氟乙烯膜,指以膨体聚四氟乙烯(ePTFE)为原材料制成的薄膜。ePTFE膜具有耐化学腐蚀、防水透气性好、耐候性佳、耐磨、抗撕裂等优…

【深度学习】-WASB-调试说明

要改这么几个地方: 代码仓库:/Desktop/code/python_project/WASB-SBDT-main/ 篮球数据集xx_xx_11.xml只保留最后一个11.xml 并把11下直接放置11 video: 这里的东西被我改了,要以仓库为准

git pull拉取显示Already up-to-date,但文件并没有更新

1、问题: 使用git pull拉取远程仓库代码,显示更新成功(Already up-to-date),但是本地代码没有更新 这是因为本地有尚未提交的更改,和远程代码有冲突导致无法更新 2、解决方法: 可以使用git s…

Fastjson首字母大小写问题

1、问题 使用Fastjson转json之后发现首字母小写。实体类如下: Data public class DataIdentity {private String BYDBSM;private String SNWRSSJSJ;private Integer CJFS 20; } 测试代码如下: public static void main(String[] args) {DataIdentit…

多个tomcat同时使用 不设置CATALINA_HOME环境变量

通常一台服务器只使用一个tomcat,设置一个CATALINA_HOME的环境变量。但有些时候需要一台服务器启动多个tomcat,那就不能设置CATALINA_HOME了!因为会串~ 我们可以在对应tomcat的startup.bat启动脚本中,加入对应的CATALINA_HOME。 …

Raylib 坐标系

draftx 符号调整为正数 发现采样坐标系原点0&#xff0c;0 在左上角&#xff0c;正方向 右&#xff0c;下 绘制坐标系 原点0&#xff0c;0 在左下角&#xff0c;正方向 右&#xff0c;上 拖拽可得 #include <raylib.h> // 重整原因&#xff1a;解决新函数放大缩小之下…

Appium+python自动化(四十一)-Appium自动化测试框架综合实践 - 即将落下帷幕(超详解)

1.简介 今天我们紧接着上一篇继续分享Appium自动化测试框架综合实践 - 代码实现。到今天为止&#xff0c;大功即将告成&#xff1b;框架所需要的代码实现都基本完成。 2.data数据封装 2.1使用背景 在实际项目过程中&#xff0c;我们的数据可能是存储在一个数据文件中&#x…

智慧交通运行监测与应急指挥中心方案

建设目标 建立感知层数据的实时采集以及数据处理&#xff0c;实现监测预警自动化和智能化&#xff1b;推动交通运输数据资源开放共享&#xff0c;打破数据资源壁垒&#xff0c;与城市各部门数据建立共享交换机制&#xff0c;实现应急指挥的协同化&#xff1b;充分运用大数据、互…

新产品或敏捷项目过程 SOP,附带流程图及流程规范

一、项目启动 项目背景和目标明确 市场调研结果分析&#xff0c;确定新产品的需求和市场机会。制定明确的项目目标&#xff0c;包括产品特性、上市时间、预期收益等。 组建项目团队 确定项目经理、产品经理、开发人员、测试人员、市场人员等角色。明确各成员的职责和权限。 项目…

Apache Seata应用侧启动过程剖析——注册中心与配置中心模块

本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 Apache Seata应用侧启动过程剖析——注册中心与配置中心模块 前言 在Seata的应用侧&#xf…

Docker逃逸CVE-2019-5736、procfs云安全漏洞复现,全文5k字,超详细解析!

Docker容器挂载procfs 逃逸 procfs是展示系统进程状态的虚拟文件系统&#xff0c;包含敏感信息。直接将其挂载到不受控的容器内&#xff0c;特别是容器默认拥有root权限且未启用用户隔离时&#xff0c;将极大地增加安全风险。因此&#xff0c;需谨慎处理&#xff0c;确保容器环…

迅捷PDF编辑器合并PDF

迅捷PDF编辑器是一款专业的PDF编辑软件&#xff0c;不仅支持任意添加文本&#xff0c;而且可以任意编辑PDF原有内容&#xff0c;软件上方的工具栏中还有丰富的PDF标注、编辑功能&#xff0c;包括高亮、删除线、下划线这些基础的&#xff0c;还有规则或不规则框选、箭头、便利贴…

VRPTW(MATLAB):常春藤算法(IVY)求解带时间窗的车辆路径问题VRPTW,MATLAB代码

详细介绍 VRPTW&#xff08;MATLAB&#xff09;&#xff1a;常春藤算法&#xff08;Ivy algorithm&#xff0c;IVY&#xff09;求解带时间窗的车辆路径问题VRPTW&#xff08;提供MATLAB代码&#xff09;-CSDN博客 ********************************求解结果******************…