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.mzph.cn/diannao/41871.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaWeb--jquery篇

概述 jQuery是一个快速、简洁的JavaScript框架,是一个优秀的JavaScript代码库(框架)于2006年1月由John Resig发布。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动…

2229:Sumsets

网址如下&#xff1a; OpenJudge - 2229:Sumsets 这题不是我想出来的 在这里仅做记录 代码如下&#xff1a; #include<iostream> using namespace std;const int N 1000000000; int dp[1000010]; int n;int main() {cin >> n;dp[0] 1;dp[1] 1;for (int i 2…

前端面试题7(单点登录)

如何实现单点登录 单点登录&#xff08;Single Sign-On&#xff0c;简称SSO&#xff09;是一种允许用户在多个应用系统中只需登录一次&#xff0c;就可以访问所有相互信任的应用系统的认证技术。实现前端单点登录主要依赖于后端的支持和一些特定的协议&#xff0c;如OAuth、Ope…

无法下载cuda

cuda下载不了 一、台式机电脑浏览器打不开cuda下载下面二、解决办法 一、台式机电脑浏览器打不开cuda下载下面 用360、chrome、Edge浏览器都打不开下载页面&#xff0c;有的人说后缀com改成cn&#xff0c;都不行。知乎上说是网络问题&#xff0c;电信换成换成移动/联通的网络会…

Selenium 切换 frame/iframe

环境&#xff1a; Python 3.8 selenium3.141.0 urllib31.26.19说明&#xff1a; driver.switch_to.frame() # 将当前定位的主体切换为frame/iframe表单的内嵌页面中 driver.switch_to.default_content() # 跳回最外层的页面# 判断元素是否在 frame/ifame 中 # 126 邮箱为例 # …

无人机云台类型及作用

无人机云台主要分为三种类型&#xff1a; 单轴云台&#xff1a;仅支持单向旋转&#xff0c;适合拍摄平滑的延时摄影和全景照片。 双轴云台&#xff1a;支持水平和垂直旋转&#xff0c;可用于拍摄流畅的视频和运动物体。 三轴云台&#xff1a;全面支持所有旋转轴&#xff0c;…

医院陪诊系统开发的关键技术与挑战

随着医疗服务需求的不断提升&#xff0c;传统的医院服务模式面临着巨大的压力和挑战。为了提升患者的就医体验和医疗服务的效率&#xff0c;医院陪诊系统应运而生。本文将探讨医院陪诊系统开发的关键技术与挑战&#xff0c;并结合具体的技术代码进行分析。 一、医院陪诊系统的…

什么是可定制的锂电池?它的应用范围有哪些?

锂电池在新能源汽车领域已经得到了广泛的应用。然而&#xff0c;随着科技的不断进步和人们对于个性化需求的日益增长&#xff0c;可定制的锂电池逐渐成为了市场的新宠。那么&#xff0c;究竟什么是可定制的锂电池&#xff1f;它与普通锂电池有何不同&#xff1f;它的应用范围又…

android——设计模式(工厂模式)

一、工厂模式 Android 设计模式中的工厂模式是一种创建型设计模式&#xff0c;它提供了一种创建对象的最佳方式&#xff0c;而不必暴露其内部的创建逻辑。在Android中&#xff0c;工厂模式通常用于管理复杂组件实例化的过程&#xff0c;比如创建各种View、Activity、Fragment等…

Docker实战教程(二)

文章目录 基于Docker的微服务架构案例一、准备工作二、服务定义1. 用户服务(User Service)2. 订单服务(Order Service)3. 前端服务(Frontend Service)三、Docker Compose文件四、启动微服务架构五、常见问题和解决方案六、总结基于Docker的微服务架构案例 在本案例中,我…

悠律凝声环开放式耳机强者现身:集颜值和创新技术于一体的杰作

随着技术的飞速发展&#xff0c;蓝牙耳机已经成为人们生活中不可缺少的一环&#xff0c;外观、音质以及实用性已经成为人们在购买时最主要的考虑因素。悠律凝声环RingBuds Pro开放式蓝牙耳机&#xff0c;凭借其特有的轻奢时尚外观&#xff0c;斩获2024年度MUSE缪斯创意奖金奖&a…

Android SeekBar设置指示器标签,使用PopupWindow的方式

给Android 原生的SeekBar控件添加一个指示器标签&#xff1b;记录一下 按下时弹出popupwindow&#xff0c;进度条更新时刷新pw&#xff0c;松开时关闭pw&#xff1b; public class SeekBarPopUtils {private static PopupWindow popWin null;private static ConstraintLayou…

Kotlin协程使用详解

协程是什么 协程是一种编程思想,并不局限于特定的语言。协程是轻量级的线程,基于线程池API,通俗的来说,就是官方提供的线程框架。协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。当我们在了解协程的时候,不可避免的会跟线程、进程作比较作分析,下面来贴个图…

数据可视化之智慧城市的脉动与洞察

在数字化转型的浪潮中,城市作为社会经济发展的核心单元,正经历着前所未有的变革。城市数据可视化大屏看板作为这一变革中的重要工具,不仅极大地提升了城市管理效率,还为公众提供了直观、全面的城市运行状态视图,成为智慧城市建设不可或缺的一部分。本文将深入探讨以“城市…

ruoyi后台修改

一、日志文件过大分包 \ruoyi-admin\src\main\resources\logback.xml <!-- 系统日志输出 --> <appender name"file_info" class"ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/sys-info.log</file><!…

网安小贴士(9)网络解密

一、前言 网络解密技术的发展是一个不断进化的过程&#xff0c;它与加密技术的进展紧密相连。 二、定义 网络解密&#xff08;Network Decryption&#xff09;通常指的是在计算机网络环境中&#xff0c;将加密的数据转换回其原始可读格式的过程。这个过程需要使用正确的密钥…

0701_ARM5

练习&#xff1a;使用usart4 main.c #include "uart4.h"int main() {// 初始化 UART4hal_uart4_init();while (1) {// 发送一个字符串//hal_put_char( hal_get_char());hal_put_string(hal_get_string());}return 0; } usart4.c #include "uart4.h"//**…

ctfshow-web入门-文件包含(web88、web116、web117)

目录 1、web88 2、web116 3、web117 1、web88 没有过滤冒号 : &#xff0c;可以使用 data 协议&#xff0c;但是过滤了括号和等号&#xff0c;因此需要编码绕过一下。 这里有点问题&#xff0c;我 (ls) 后加上分号发现不行&#xff0c;可能是编码结果有加号&#xff0c;题目…

Spark MLLib面试题你会几道?(万字长文)

目录 简述Spark MLLib的主要组件及其功能 Spark MLLib支持哪些机器学习算法? 解释RDD(弹性分布式数据集)的概念及其在MLLib中的作用 在Spark MLLib中,LabeledPoint是什么?如何使用它? 描述DataFrame和Dataset API在Spark MLLib中的重要性 什么是ML Pipeline?它解决…

【反悔堆 优先队列 临项交换 决策包容性】630. 课程表 III

本文涉及知识点 贪心 反悔堆 优先队列 临项交换 Leetcode630. 课程表 III 这里有 n 门不同的在线课程&#xff0c;按从 1 到 n 编号。给你一个数组 courses &#xff0c;其中 courses[i] [durationi, lastDayi] 表示第 i 门课将会 持续 上 durationi 天课&#xff0c;并且必…