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.pswp.cn/diannao/41871.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41871.shtml
英文地址,請注明出處:http://en.pswp.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;并且必…