transformers:打造的先進的自然語言處理

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

Transformers 提供了數以千計的預訓練模型,支持 100 多種語言的文本分類、信息抽取、問答、摘要、翻譯、文本生成。它的宗旨是讓NLP 技術人易用。

Transformers 提供了便于快速下載和使用的API,可以把預訓練模型用在給定文本、在自己的數據集上微調然后通過?model hub?與社區共享。同時,每個定義的 Python 模塊都是完全獨立的,便于修改和快速進行研究實驗。

Transformers 支持三個最熱門的深度學習庫:?Jax,?PyTorch?以及?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.pswp.cn/news/900927.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/900927.shtml
英文地址,請注明出處:http://en.pswp.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…