transformers:打造的先进的自然语言处理

github地址:https://github.com/huggingface/transformers

Transformers 提供了数以千计的预训练模型,支持 100 多种语言的文本分类、信息抽取、问答、摘要、翻译、文本生成。它的宗旨是让NLP 技术人易用。

Transformers 提供了便于快速下载和使用的API,可以把预训练模型用在给定文本、在自己的数据集上微调然后通过 model hub 与社区共享。同时,每个定义的 Python 模块都是完全独立的,便于修改和快速进行研究实验。

Transformers 支持三个最热门的深度学习库: JaxPyTorch 以及 TensorFlow 并与之无缝整合。可以直接使用一个框架训练模型然后用另一个加载和推理。

目录

在线演示

快速上手

为什么要用 transformers?

什么情况下我不该用 transformers?

安装

模型架构

更多



在线演示

可以直接在模型页面上测试大多数 model hub 上的模型。

提供了 私有模型托管、模型版本管理以及推理API

这里是一些例子:

用 BERT 做掩码填词

用 Electra 做命名实体识别

用 GPT-2 做文本生成

用 RoBERTa 做自然语言推理

用 BART 做文本摘要

用 DistilBERT 做问答

用 T5 做翻译

Write With Transformer,由Hugging Face团队打造,是一个文本生成的官方 demo。

快速上手

为快速使用模型提供了 pipeline (流水线)API。流水线聚合了预训练模型和对应的文本预处理。下面是一个快速使用流水线去判断正负面情绪的例子:

>>> from transformers import pipeline# 使用情绪分析流水线
>>> classifier = pipeline('sentiment-analysis')
>>> classifier('We are very happy to introduce pipeline to the transformers repository.')
[{'label': 'POSITIVE', 'score': 0.9996980428695679}]

第二行代码下载并缓存了流水线使用的预训练模型,而第三行代码则在给定的文本上进行了评估。这里的答案“正面” (positive) 具有 99 的置信度。

许多的 NLP 任务都有开箱即用的预训练流水线。比如说,可以轻松的从给定文本中抽取问题答案:

>>> from transformers import pipeline# 使用问答流水线
>>> question_answerer = pipeline('question-answering')
>>> question_answerer({
...     'question': 'What is the name of the repository ?',
...     'context': 'Pipeline has been included in the huggingface/transformers repository'
... })
{'score': 0.30970096588134766, 'start': 34, 'end': 58, 'answer': 'huggingface/transformers'}

除了给出答案,预训练模型还给出了对应的置信度分数、答案在词符化 (tokenized) 后的文本中开始和结束的位置。可以从这个教程了解更多流水线API支持的任务。

要在自己的任务上下载和使用任意预训练模型也很简单,只需三行代码。这里是 PyTorch 版的示例:

>>> from transformers import AutoTokenizer, AutoModel>>> tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
>>> model = AutoModel.from_pretrained("google-bert/bert-base-uncased")>>> inputs = tokenizer("Hello world!", return_tensors="pt")
>>> outputs = model(**inputs)

这里是等效的 TensorFlow 代码:

>>> from transformers import AutoTokenizer, TFAutoModel>>> tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
>>> model = TFAutoModel.from_pretrained("google-bert/bert-base-uncased")>>> inputs = tokenizer("Hello world!", return_tensors="tf")
>>> outputs = model(**inputs)

词符化器 (tokenizer) 为所有的预训练模型提供了预处理,并可以直接对单个字符串进行调用(比如上面的例子)或对列表 (list) 调用。它会输出一个可以在下游代码里使用或直接通过 ** 解包表达式传给模型的词典 (dict)。

模型本身是一个常规的 Pytorch nn.Module 或 TensorFlow tf.keras.Model,可以常规方式使用。 这个教程解释了如何将这样的模型整合到经典的 PyTorch 或 TensorFlow 训练循环中,或是如何使用 Trainer 训练器API 来在一个新的数据集上快速微调。

为什么要用 transformers?

1便于使用的先进模型:

NLU 和 NLG 上表现优越

对教学和实践友好且低门槛

高级抽象,只需了解三个类

对所有模型统一的API

2 更低计算开销:

研究人员可以分享已训练的模型而非每次从头开始训练

工程师可以减少计算用时和生产环境开销

数十种模型架构、两千多个预训练模型、100多种语言支持

3 对于模型生命周期的每一个部分都面面俱到:

训练先进的模型,只需 3 行代码

模型在不同深度学习框架间任意转移,随你心意

为训练、评估和生产选择最适合的框架,衔接无缝

4 为你的需求轻松定制专属模型和用例:

为每种模型架构提供了多个用例来复现原论文结果

模型内部结构保持透明一致

模型文件可单独使用,方便魔改和快速实验

什么情况下我不该用 transformers?

本库并不是模块化的神经网络工具箱。模型文件中的代码特意呈若璞玉,未经额外抽象封装,以便研究人员快速迭代魔改而不致溺于抽象和文件跳转之中。

Trainer API 并非兼容任何模型,只为本库之模型优化。若是在寻找适用于通用机器学习的训练循环实现,请另觅他库。

尽管已尽力而为,examples 目录中的脚本也仅为用例而已。对于特定问题,它们并不一定开箱即用,可能需要改几行代码以适之。

安装

使用 pip

这个仓库已在 Python 3.9+、Flax 0.4.1+、PyTorch 2.0+ 和 TensorFlow 2.6+ 下经过测试。

可以在虚拟环境中安装Transformers 如果还不熟悉 Python 的虚拟环境,请阅此用户说明

首先,用打算使用的版本的 Python 创建一个虚拟环境并激活。

然后,需要安装 Flax、PyTorch 或 TensorFlow 其中之一。关于在使用的平台上安装这些框架,请参阅 TensorFlow 安装页PyTorch 安装页 或 Flax 安装页

当这些后端之一安装成功后, Transformers 可依此安装:

pip install transformers

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

使用 conda

conda install conda-forge::transformers

笔记: 从 huggingface 渠道安装 transformers 已被废弃。

要通过 conda 安装 Flax、PyTorch 或 TensorFlow 其中之一,请参阅它们各自安装页的说明

模型架构

所有的模型检查点用户组织上传,均与 huggingface.co model hub 无缝整合。目前的数量: 

Transformers 目前支持如下的架构: 模型概述请阅这里.

要检查某个模型是否已有 Flax、PyTorch 或 TensorFlow 的实现,或其是否在Tokenizers 库中有对应词符化器(tokenizer),参阅此表

这些实现均已于多个数据集测试(请参看用例脚本)并应于原版实现表现相当。可以在用例文档的此节中了解表现的细节。

更多

章节描述
文档完整的 API 文档和教程
任务总结🤗 Transformers 支持的任务
预处理教程使用 Tokenizer 来为模型准备数据
训练和微调在 PyTorch/TensorFlow 的训练循环或 Trainer API 中使用 🤗 Transformers 提供的模型
快速上手:微调和用例脚本为各种任务提供的用例脚本
模型分享和上传和社区上传和分享你微调的模型
迁移从 pytorch-transformers 或 pytorch-pretrained-bert 迁移到 🤗 Transformers

论文:论文

至此,本文的内容就结束啦。

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

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

相关文章

Spring Boot 集成 MongoDB 时自动创建的核心 Bean 的详细说明及表格总结

以下是 Spring Boot 集成 MongoDB 时自动创建的核心 Bean 的详细说明及表格总结: 核心 Bean 列表及详细说明 1. MongoClient 类型:com.mongodb.client.MongoClient作用: MongoDB 客户端核心接口,负责与 MongoDB 服务器建立连接、…

113. 在 Vue 3 中使用 OpenLayers 实现鼠标移动显示坐标信息

✨ 写在前面 在地图类项目开发中,一个常见需求就是:实时获取用户鼠标在地图上的经纬度坐标,并展示在地图上。 本文将通过一个简单的案例,手把手带大家在 Vue 3 项目中集成 OpenLayers 地图库,并实现以下功能&#xf…

docker配置redis容器时搭载哨兵节点的情况下配置文件docker-compose.yml示例

1.配置数据节点(主从节点) version: 3.7 services:master:image: redis:5.0.9container_name: redis-masterrestart: alwayscommand: redis-server --appendonly yesports:- 6379:6379slave1:image: redis:5.0.9container_name: redis-slave1restart: a…

C++建造者模式进化论

还在为 C 对象那 长得令人发指 的构造函数参数列表抓狂吗?🤯 是不是经常在 int hp, int mp, int strength, int faith... 这样的参数“连连看”中迷失自我,一不小心就把法力值传给了血量,或者力量值填到了信仰栏?&…

在Ubuntu内网环境中为Gogs配置HTTPS访问(通过Apache反向代理使用IP地址)

一、准备工作 确保已安装Gogs并运行在HTTP模式(默认端口3000) 确认服务器内网IP地址(如192.168.1.100) 二、安装Apache和必要模块 sudo apt update sudo apt install apache2 -y sudo a2enmod ssl proxy proxy_http rewrite headers 三、创建SSL证书 1. 创建证书存储目录…

数据中台、BI业务访谈(二):组织架构梳理的坑

这是数据中台、BI业务访谈系列的第二篇文章,在上一篇文章中,我重点介绍了在给企业的业务部门、高层管理做业务访谈之前我们要做好行业、业务知识的功课。做好这些功课之后,就到了实际的访谈环节了。 业务访谈关键点 那么在具体业务访谈的时…

spark集群,Stand alone,Hadoop集群有关启动问题

你的问题是因为 start-all.sh 是 Hadoop 的启动脚本(用于启动 HDFS 和 YARN),而不是 Spark 的启动脚本。而你已经通过 start-cluster.sh 启动了 Hadoop 相关服务(HDFS/YARN),再次执行 start-all.sh 会导致服…

Kotlin 通用请求接口设计:灵活处理多样化参数

在 Kotlin 中设计一个通用的 ControlParams 类来处理不同的控制参数,有几种常见的方法:方案1:使用密封类(Sealed Class) sealed class ControlParamsdata class LightControlParams(val brightness: Int,val color: S…

aspark 配置2

编写Hadoop集群启停脚本 1.建立新文件,编写脚本程序 在hadoop101中操作,在/root/bin下新建文件:myhadoop,输入如下内容: 2.分发执行权限 保存后退出,然后赋予脚本执行权限 [roothadoop101 ~]$ chmod x /r…

Webstorm 使用搜不到node_modules下的JS内容 TS项目按Ctrl无法跳转到函数实现

将node_modules标记为不排除,此时要把内存改大,不然webstorm中途建立索引时,会因为内存不足,导致索引中途停止,造成后续搜索不出来 更改使用内存设置 内存调为4096 若出现搜不出来js内容时,请直接重启下该项…

vue-element-plus-admin的安装

文档链接:开始 | vue-element-plus-admin 之前尝试按照官方文档来安装,运行npm run dev命令却不能正常打开访问浏览器,换一个方式 首先在目录下打开命令窗口 1、克隆项目 从 GitHub 获取代码 # clone 代码 git clone https://github.com…

【windows10】基于SSH反向隧道公网ip端口实现远程桌面

【windows10】基于SSH反向隧道公网ip端口实现远程桌面 1.背景2.SSH反向隧道3.远程连接电脑 1.背景 ‌Windows 10远程桌面协议的简称是RDP(Remote Desktop Protocol)‌。 RDP是一种网络协议,允许用户远程访问和操作另一台计算机。 远程桌面功…

软考系统架构设计师之大数据与人工智能笔记

一、大数据架构设计 1. 核心概念与挑战 大数据特征:体量大(Volume)、多样性(Variety)、高速性(Velocity)、价值密度低(Value)。传统数据库问题:数据过载、性…

【数据结构 · 初阶】- 单链表

目录 一.相关指针知识点 二.链表 1.为什么学了顺序表还要学链表 2.优点 三.实现 1.链表的打印 —— 理解链表结构 (2) 物理结构图 2.链表的尾插 —— 入门 错误写法:tail ! NULL 总结: 正确代码物理图解: (2) 尾插整体代码 (思考…

按键消抖(用状态机实现)

基于状态机的设计代码 module key_filter(clk,rst,key,key_p_flag,key_r_flag,key_state);input clk,rst;input key;output reg key_p_flag;output reg key_r_flag;output reg key_state;reg [1:0]r_key; //后面用来判断什么时候pedge,什么时候nedgealways…

大数据(7.2)Kafka万亿级数据洪流下的架构优化实战:从参数调优到集群治理

目录 一、海量数据场景下的性能之殇1.1 互联网企业的数据增长曲线1.2 典型性能瓶颈分析 二、生产者端极致优化2.1 批量发送黄金法则2.1.1 分区选择算法对比 2.2 序列化性能突破 三、消费者端并发艺术3.1 多线程消费模式演进3.1.1 消费组Rebalance优化 3.2 位移管理高阶技巧 四、…

MyBatis深度解析与实战指南:细节完整,从入门到精通

MyBatis深度解析与实战指南:细节完整,从入门到精通 整理这份笔记,是因为学习 MyBatis 时发现很多教程要么只讲基础 CRUD,要么直接跳到 Spring 整合,对 MyBatis 核心特性讲解不全面,基础部分也不够完整。实…

【科学技术部政务服务平台-用户注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

【Audio开发三】音频audio中帧frameSize ,周期大小periodsize,缓冲区buffer原理详解以及代码流程分析

一、基础概述 在分析获取最小帧数前,我们先来了解几个相关的概念。 1,帧 帧(frame):表示一个完整的声音单元,所谓的声音单元是指一个采样样本。如果是双声道,那么一个完整的声音单元就是 2 个样…

K8S学习之基础七十五:istio实现灰度发布

istio实现灰度发布 上传镜像到harbor 创建两个版本的pod vi deployment-v1.yaml apiVersion: apps/v1 kind: Deployment metadata:name: appv1labels:app: v1 spec:replicas: 1selector:matchLabels:app: v1apply: canarytemplate:metadata:labels:app: v1apply: canaryspec…