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

news2024/10/5 10:16:35
  • 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.coloradmin.cn/o/1900990.html

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

相关文章

ctfshow web入门 web338--web344

web338 原型链污染 comman.js module.exports {copy:copy };function copy(object1, object2){for (let key in object2) {if (key in object2 && key in object1) {copy(object1[key], object2[key])} else {object1[key] object2[key]}}}login.js var express …

Python + 在线 + 文生音,音转文(中文文本转为英文语音,语音转为中文文本)

开源模型 平台:https://huggingface.co/ars-语言转文本: pipeline("automatic-speech-recognition", model"openai/whisper-large-v3", device0 ) hf: https://huggingface.co/openai/whisper-large-v3 github: https://github.com/openai/wh…

使用自动化测试确保接口正确性的详细指南!

引言: 随着软件开发的迅速发展,接口的正确性成为了确保应用程序质量的关键要素之一。自动化测试是一种强大的工具,可以帮助开发人员和测试人员减少错误,提高测试覆盖率,并加快测试过程。本文将详细介绍从零开始如何使…

探索LlamaIndex:如何用Django打造高效知识库检索

简介 LlamaIndex(前身为 GPT Index)是一个数据框架,为了帮助我们去建基于大型语言模型(LLM)的应用程序。 主要用于处理、构建和查询自定义知识库。 它支持多种数据源格式 excel,txt,pdf&…

ELK优化之Filebeat部署

目录 1.安装配置Nginx 2.安装 Filebeat 3.设置 filebeat 的主配置文件 4.修改Logstash配置 5.启动配置 6.kibana验证 主机名ip地址主要软件es01192.168.9.114ElasticSearches02192.168.9.115ElasticSearches03192.168.9.116ElasticSearch、Kibananginx01192.168.9.113ng…

测试人员如何管理项目与风险预警

在平时工作过程中,你有没有因项目延时,需求频繁变更,开发提测质量不高,以及漏测的情况下,背了不少锅的情况呢? 作为测试人员,我们应该如何发挥积极主动性,进行项目管理,有…

VuePress 的更多配置

现在,读者应该对 VuePress、主题和插件等有了基本的认识,除了插件,VuePress 自身也有很多有用的配置,这里简单说明下。 ‍ ‍ VuePress 的介绍 在介绍了 VuePress 的基本使用、主题和插件的概念之后,我们再来看看官…

CTS单测某个模块和测试项

1 &#xff0c;测试单个模块命令 run cts -m <模块名> 比如&#xff1a;run cts -m CtsUsbTests模块名可以从测试报告中看&#xff0c;如下&#xff1a; 2&#xff0c; 测试单个测试项 run cts -m <模块名> -t <test_name> 比如&#xff1a;run cts -m ru…

基于大象机器人UltraArm P340机械臂和传送带,实现教育场景中的自动化分拣系统!

引言 今天我们将展示一个高度自动化的模拟场景&#xff0c;展示多个机械臂与传送带协同工作的高效分拣系统。在这个场景中&#xff0c;机械臂通过视觉识别技术对物体进行分类&#xff0c;并通过精确的机械操作将它们放置在指定的位置。这一系统不仅提高了分拣的速度和准确性&am…

dotnet ef工具使用

设置工具安装目录 dotnet tool install dotnetsay --tool-path G:\dotnet-tools安装 dotnet tool install --global dotnet-ef更新 dotnet tool update --global dotnet-ef查看版本 dotnet ef --version创建迁移文件 # 只有一个dbcontext dotnet ef migrations add init #…

http读书笔记

持久化 HTTP/1.1 和一部分的 HTTP/1.0 想出了 持久连接&#xff08;HTTP Persistent Connections&#xff0c; 也称为 HTTP keep-alive 或 HTTP connection reuse&#xff09; 的方法。 持久连接的特点是&#xff0c; 只要任意一端 没有明确提出断开连接&#xff0c; 则保持 T…

mysql 9 新特新

mysql9新特性 新特性Audit Log NotesC API NotesCharacter Set SupportCompilation NotesComponent NotesConfiguration NotesData Dictionary NotesData Type NotesDeprecation and Removal NotesEvent Scheduler NotesJavaScript ProgramsOptimizer NotesPerformance Schema …

微机原理与单片机 知识体系梳理

单片机笔记分享 我个人感觉单片机要记的东西很多&#xff0c;也很琐碎&#xff0c;特别是一些位、寄存器以及相关作用等&#xff0c;非常难以记忆。因此复习时将知识点整理在了一起做成思维导图&#xff0c;希望对大家有所帮助。内容不是很多&#xff0c;可能有些没覆盖全&…

轻预压:滚珠丝杆精度与刚性的平衡点!

预压是指在所需的工作负荷下&#xff0c;使滚珠丝杆预先承受一定的负荷&#xff0c;从而使滚珠丝杆的轴向向心度和侧向偏差达到较小的偏差范围&#xff0c;保证了滚珠丝杆的准确性和稳定性&#xff0c;也确保机器的高精度和长期运作的可靠性。 预压是滚珠丝杆设计中的一个重要参…

基于Java技术的人事管理系统

你好&#xff0c;我是专注于计算机科学领域的小野。如果你对人事管理系统感兴趣或有相关需求&#xff0c;欢迎私信交流。 开发语言&#xff1a; Java 数据库&#xff1a; MySQL 技术&#xff1a; B/S模式、Java技术、SpringBoot 工具&#xff1a; Eclipse、MySQL、浏览…

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 邮箱为例 # …

基于若依的文件上传、下载

基于若依实现文件上传、下载 文章目录 基于若依实现文件上传、下载1、前端实现-文件上传1.1 通用上传分析1.2 修改实现上传接口 2、后端实现-文件上传3、后端实现-文件下载4、前端实现-文件下载 官网其实也写了&#xff0c;但是我是自己改造封装了一下&#xff0c;再次迈向全栈…

vofa+:一款超级好用的可视化串口调试软件

目录 一、软件配置 1、先配置好usart1串口 2、重定向printf: 3&#xff0c;勾选魔术棒中的LIB 二、vofa的使用 1、RawData模式 2、FireWater 一、软件配置 1、先配置好usart1串口 2、重定向printf: 在 stm32f4xx_hal.c中添加&#xff1a; #include <stdio.h> e…

加密货币大利好!9月降息概率突破70%!美国可能大幅降息或多次降息?

根据最新消息&#xff0c;美国9月降息的概率已经突破70%&#xff0c;这对加密货币市场来说是个利好消息。与此同时&#xff0c;美国经济表现疲软&#xff0c;可能会陷入衰退&#xff0c;联邦储备系统(Fed)接下来会不会果断采取大幅降息措施备受关注。 美国劳工统计局7月5日公布…

VBA初学:零件成本统计之一(任务汇总)

经过前期一年多对金蝶K3生产任务流程和操作的改造和优化&#xff0c;现在总算可以将零件加工各个环节的成本进行归集了。 原本想写存储过程&#xff0c;通过直接SQL报表做到K3中去的&#xff0c;但财务原本就是用EXCEL&#xff0c;可以方便调整和保存&#xff0c;加上还有一部分…