官术网_书友最值得收藏!

1.6 Hugging Face生態系統

以Hugging Face Transformers庫為基礎,Hugging Face已經迅速發展成一個完整的生態系統,它由許多庫和工具組成,以加速你的NLP和機器學習項目。Hugging Face生態系統主要由一系列庫和Hub組成,如圖1-9所示。庫提供相關代碼,而Hub提供預訓練的模型權重、數據集、度量指標腳本等。本節我們將簡要介紹各種組件而跳過Hugging Face Transformers庫,因為我們已經討論過它了,在后面的章節我們還會看到Hugging Face Transformers庫的更多相關內容。

圖1-9:Hugging Face生態系統概覽

1.6.1 Hugging FaceHub

如前所述,遷移學習是推動Transformer成功的關鍵因素之一,因為它使重用預訓練模型來完成新任務成為可能。因此,能夠快速加載預訓練模型并進行實驗至關重要。

Hugging Face Hub擁有超過20 000個免費提供的模型。圖1-10所示的篩選器用以篩選任務、框架、數據集等,從而幫助你快速找到有前途的候選項。正如我們在pipeline所看到的那樣,在代碼中加載一個有前途的模型實際上只需一行代碼。這使得實驗各種模型變得簡單,從而允許你專注于項目的領域特定部分。

圖1-10:Hugging Face Hub的模型頁面,左側顯示篩選器,右側顯示模型列表

除了預訓練模型之外,Hub還托管了用于度量指標的數據集和腳本,使你可以重現已發布的結果或為應用程序利用其他數據。

Hub還提供Models(模型)和Datasets(數據集)卡片,用于記錄模型和數據集相關內容,以幫助你就它們是否適合你做出明智的決定。Hub最酷的功能之一是,你可以直接通過各種特定于任務的交互式小部件試用任何模型,如圖1-11所示。

圖1-11:Hugging Face Hub Model card示例:你可以通過右側的inference小部件與模型進行交互

接下來我們介紹Hugging Face Tokenizers庫。

PyTorch(https://oreil.ly/AyTYC)和TensorFlow(https://oreil.ly/JOKgq)也提供了自己的Hub,如果Hugging Face Hub上沒有你所要的模型或數據集,那么你可以試試PyTorch和TensorFlow的Hub。

1.6.2 Hugging Face Tokenizers庫

我們在本章看到的每個pipeline示例背后都有一個詞元化(tokenization)步驟,該步驟將原始文本拆分為稱為詞元的更小部分。我們將在第2章詳細介紹這個過程,但現在只需要知道詞元可以是單詞、單詞的一部分或只是標點符號等字符就足夠了。Transformer模型是在這些詞元的數字表示上訓練的,因此正確執行這一步對于整個NLP項目非常重要!

Hugging Face Tokenizers庫(https://oreil.ly/Z79jF)提供了許多詞元化策略,并且因為其后端使用Rust[13],所以詞元化速度特別快。它還負責所有預處理和后處理步驟,例如規范化輸入并將模型輸出轉換為所需的格式。我們可以像使用Hugging Face Transformers庫加載預訓練模型一樣使用Hugging Face Tokenizers庫加載Tokenizer。

我們還需要數據集和度量指標來訓練和評估模型,我們先看一下數據集。

1.6.3 Hugging Face Datasets庫

加載、處理和存儲數據集可能是一個煩瑣的過程,尤其是當數據集變得太大而無法放入筆記本電腦內存的時候。此外,你通常需要實現各種腳本來下載數據并將其轉換為標準格式。

Hugging Face Datasets庫(https://oreil.ly/959YT)通過為可在Hub(https://oreil.ly/Rdhcu)上找到的數千個數據集提供標準界面來簡化這個過程。它還提供智能緩存(因此你不需要每次運行代碼時都重復預處理工作),并通過利用稱為內存映射的特殊機制來突破內存限制,該機制將文件的內容存儲到虛擬內存中,并使多個進程能夠更有效地修改文件。該庫還可以與Pandas和NumPy等流行框架進行互操作,因此你不必離開自己喜歡的數據整理工具。

但是,如果你無法可靠地度量性能,那么良好的數據集和強大的模型就毫無價值。不幸的是,經典的NLP度量指標帶有許多不同的實現,這些實現可能會略有不同并產生欺騙性結果。Hugging Face Datasets庫通過為許多指標提供腳本,從而有助于令實驗更具可重復性,結果更可信。

現在借助Hugging Face Transformers、Tokenizers和Datasets這些庫,我們擁有訓練自己的Transformer模型所需的一切!然而,正如我們將在第10章所看到的,在某些情況下,我們需要對訓練循環進行細粒度的控制。這就是生態系統的最后一個庫發揮作用的地方:Hugging Face Accelerate庫。

1.6.4 Hugging Face Accelerate庫

如果你曾經不得不用PyTorch編寫自己的訓練腳本,那么在嘗試將筆記本電腦上運行的代碼移植到組織集群上運行的代碼時,你可能會遇到一些麻煩。Hugging Face Accelerate庫(https://oreil.ly/iRfDe)為常規訓練操作增加了一個抽象層以負責訓練基礎設施所需的所有邏輯。這可以通過在必要時簡化基礎架構的更改來加速工作流。

至此,我們總結了Hugging Face開源生態系統的核心組件。但在結束本章之前,我們來看看在現實工作中部署Transformer模型時遇到的一些主要挑戰。

主站蜘蛛池模板: 安多县| 历史| 广元市| 新安县| 达日县| 屯留县| 辉南县| 公主岭市| 来宾市| 博野县| 克东县| 永康市| 恩施市| 宜都市| 上栗县| 永和县| 于田县| 临夏市| 且末县| 临海市| 黔西县| 含山县| 玉门市| 南康市| 西乌珠穆沁旗| 舟山市| 炉霍县| 河曲县| 奉节县| 五原县| 泸州市| 疏附县| 兴安县| 巨鹿县| 灵寿县| 且末县| 翁牛特旗| 封丘县| 澎湖县| 宁乡县| 日土县|