- Transformer自然語言處理實戰:使用Hugging Face Transformers庫構建NLP應用
- (澳)路易斯·湯斯頓等
- 3473字
- 2024-05-23 17:22:18
前言
自2017年推出以來,Transformer已成為學術界和工業界處理各種自然語言處理(NLP)任務的事實標準。你不知道的是,你很可能已經與Transformer有過了互動:Google目前運用BERT模型來增強搜索引擎,幫助其更好地理解用戶的搜索內容。與此同時,OpenAI推出的GPT系列模型因其能生成類人表達的文本和圖像,從而反復登上主流媒體的頭版頭條。Transformer甚至正在為GitHub的Copilot(一種自動編寫代碼的AI程序)等應用提供支持,如圖P-1所示,它可以將評論轉換為源代碼,自動構建神經網絡!

圖P-1:來自GitHub Copilot的一個例子——給定一個任務的簡要描述,隨即生成了整個類的細節建議(class之后的所有內容均為自動生成的)
是什么讓Transformer幾乎一夜之間改變了整個AI領域?就像許多偉大的科學突破一樣,它是在許多先進的研究成果之上取得的突破,比如注意力模型、遷移學習和可伸縮神經網絡。
盡管它異常強大,但任何新方法想要在業界獲得廣泛的認可與使用,都需要借助某種工具來降低門檻。Hugging Face推出的Transformers庫(https://oreil.ly/Z79jF)響應了這一號召,使從業者能夠輕松地使用、訓練和分享Transformer模型。這加速促成了Transformer應用的百花齊放,目前該庫正在被5000多個組織使用。本書內容將提供訓練和優化Transformer模型的案例,并將其應用到實際當中。
這本書適合誰
本書適合AI領域的數據科學家和機器學習工程師,以及對Transformer略有耳聞但缺乏學習渠道,想將Transformer付諸實踐的群體閱讀。本書不會介紹機器學習相關基礎知識,讀者需要熟悉Python編程,并且了解常見的深度學習框架,例如PyTorch(https://pytorch.org)和TensorFlow(https://www.tensorflow.org),以及有使用GPU訓練模型的實際經驗。本書會重點講解Transformers庫的PyTorch API,第2章還會介紹如何使用TensorFlow來運行案例。
了解以下相關資源將有助于你閱讀本書:
●Hands-On Machine Learning with Scikit-Learn and TensorFlow[1](O'Reilly),作者Aurélien Géron
●Deep Learning for Coders with fastai and PyTorch(O'Reilly),作者Jeremy Howard和Sylvain Gugger
●Natural Language Processing with PyTorch(O'Reilly),作者Delip Rao和Brian McMahan
●The Hugging Face課程(https://oreil.ly/n3MaR),由Hugging Face的開源團隊提供
你將學到什么
本書的目標是讓更多開發者能夠構建自己的NLP應用程序。為此,書中介紹了大量實際的案例,并在必要時穿插理論來講解。本書風格偏向實戰,建議讀者按照書中步驟運行代碼示例進行實驗。
本書涵蓋Transformer在NLP領域的主要應用,幾乎每章(有少數例外)都會介紹一個實際任務,并結合真實的用例和數據集。此外,每章還會介紹一些前沿的概念。以下是每章任務與主題的簡單概述:
●第1章將介紹Transformer模型和Hugging Face生態系統。
●第2章將重點介紹情感分析任務(一種常見的文本分類問題)以及Trainer API。
●第3章將深入探討Transformer架構,以為接下來的章節做準備。
●第4章將講述在多語言中識別文本中的實體(一種詞元分類問題)的任務。
●第5章將講述Transformer模型生成文本的能力,并介紹解碼策略和度量指標。
●第6章將深入挖掘文本摘要這個復雜的序列到序列的任務,并介紹用于此任務的度量指標。
●第7章將聚焦于構建基于評論的問答系統,并介紹如何基于Haystack進行信息檢索。
●第8章將聚焦于模型性能。我們將研究意圖識別(一種序列分類問題)的任務,并探索知識蒸餾、量化和剪枝等技術。
●第9章將探討在缺乏大量標注數據的情況下提高模型性能的方法。我們將構建一個針對GitHub Issue的標注器,并探索零樣本分類技術和數據增強技術。
●第10章將展示如何從頭開始構建和訓練用于自動填充Python源代碼的模型。我們將研究流式數據集和大規模訓練任務,并構建自己的詞元分析器。
●第11章將探討Transformer面臨的挑戰以及將這個模型應用于其他領域的一些新研究。
Hugging Face Transformers庫為使用和訓練Transformer模型提供了多個抽象。本書將從易于使用的pipeline開始,pipeline僅用短短幾行代碼就可以將文本示例傳到模型中,并進行結果的預測。隨后,我們將介紹詞元分析器、模型類和Trainer API,掌握這些之后就可以為用例訓練模型。緊接著,我們將介紹如何使用Hugging Face Accelerate庫替換Trainer,以完全控制訓練循環,并帶領讀者從頭開始訓練大規模Transformer模型!盡管每章內容都相對獨立,但隨著任務難度逐漸增加,后續章節的難度也會增加。因此,我們建議先從第1章和第2章開始,然后再選擇最感興趣的章節進行閱讀與實踐。
除了Hugging Face Transformers庫和Hugging Face Accelerate庫,書中還將廣泛使用Hugging Face Datasets庫,它可以與其他庫無縫集成。Datasets庫提供了與Pandas相似的數據處理功能,但是Datasets在設計上旨在處理大型數據集和機器學習任務。
有了這些工具,你就擁有了應對幾乎任何NLP挑戰所需的一切!
軟件和硬件要求
由于本書側重實戰,我們強烈建議讀者在閱讀每章時運行代碼示例。因此需要一臺配備NVIDIA GPU的PC來訓練模型,此外,以下幾個免費的在線工具也可供學習時使用:
●Google Colaboratory(https://oreil.ly/jyXgA)
●Kaggle Notebooks(https://oreil.ly/RnMP3)
●Paperspace Gradient Notebooks(https://oreil.ly/mZEKy)
想要成功運行用例,讀者需要按照書中介紹的GitHub倉庫中提供的安裝指南進行操作,本書所有代碼與指南托管在https://github.com/nlp-with-transformers/notebooks。
本書大部分章節使用NVIDIA Tesla P100 GPU完成,其顯存為16GB。一些免費平臺提供顯存較小的GPU,因此在訓練模型時要根據實際情況縮減訓練規模。
排版約定
本書中使用以下排版約定:
斜體(Italic)
表示新的術語、URL、電子郵件地址、文件名和文件擴展名。
等寬字體(Constant width)
用于程序清單,以及段落中的程序元素,例如變量名、函數名、數據庫、數據類型、環境變量、語句以及關鍵字。
等寬粗體(Constant width bold)
表示應由用戶直接輸入的命令或其他文本。
等寬斜體(Constant width italic)
表示應由用戶提供的值或由上下文確定的值替換的文本。
該圖示表示提示或建議。
該圖示表示一般性說明。
該圖示表示警告或注意。
示例代碼
可以從https://github.com/nlp-with-transformers/notebooks下載補充材料(示例代碼、練習、勘誤等)。
這里的代碼是為了幫助你更好地理解本書的內容。通常,可以在程序或文檔中使用本書中的代碼,而不需要聯系O'Reilly獲得許可,除非需要大段地復制代碼。例如,使用本書中所提供的幾個代碼片段來編寫一個程序不需要得到我們的許可,但銷售或發布O'Reilly的示例代碼則需要獲得許可。引用本書的示例代碼來回答問題也不需要許可,將本書中的很大一部分示例代碼放到自己的產品文檔中則需要獲得許可。
非常歡迎讀者使用本書中的代碼,希望(但不強制)注明出處。注明出處時包含書名、作者、出版社和ISBN,例如:
Natural Language Processing with Transformers,作者Lewis Tunstall、Leandro von Werra和Thomas Wolf,由O'Reilly出版,書號978-1-098-13679-6。
如果讀者覺得對示例代碼的使用超出了上面所給出的許可范圍,歡迎通過permission@oreilly.com聯系我們。
O'Reilly在線學習平臺(O'Reilly Online Learning)
40多年來,O'Reilly Media致力于提供技術和商業培訓、知識和卓越見解,來幫助眾多公司取得成功。
我們擁有獨一無二的專家和革新者組成的龐大網絡,他們通過圖書、文章、會議和我們的在線學習平臺分享他們的知識和經驗。O'Reilly的在線學習平臺允許你按需訪問現場培訓課程、深入的學習路徑、交互式編程環境,以及O'Reilly和200多家其他出版商提供的大量文本和視頻資源。有關的更多信息,請訪問http://oreilly.com。
如何聯系我們
對于本書,如果有任何意見或疑問,請按照以下地址聯系本書出版商。
美國:
O'Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中國:
北京市西城區西直門南大街2號成銘大廈C座807室(100035)
奧萊利技術咨詢(北京)有限公司
要詢問技術問題或對本書提出建議,請發送電子郵件至errata@oreilly.com.cn。
本書配套網站https://oreil.ly/nlp-with-transformers上列出了勘誤表、示例以及其他信息。
關于書籍和課程的新聞和信息,請訪問我們的網站http://oreilly.com。
我們在Facebook上的地址:http://facebook.com/oreilly
我們在Twitter上的地址:http://twitter.com/oreillymedia
我們在YouTube上的地址:http://www.youtube.com/oreillymedia
致謝
寫一本關于機器學習中發展最快的領域之一的書,離不開很多人的幫助。首先要感謝出色的O'Reilly團隊,特別是Melissa Potter、Rebecca Novack和Katherine Tozer,感謝他們的支持和建議。當然,這本書也受益于許多審校人員的幫助,他們花費了大量的時間來提供寶貴的反饋。特別感謝Luca Perozzi、Hamel Husain、Shabie Iqbal、Umberto Lupo、Malte Pietsch、Timo M?ller和Aurélien Géron的詳細審校。感謝deepset(https://www.deepset.ai)的Branden Chan幫助擴展Haystack庫,以支持第7章的用例。本書中優美的插圖歸功于令人驚嘆的Christa Lanz(https://christalanz.ch),是她讓這本書更具特色。另外,本書還有幸得到整個Hugging Face技術團隊的支持。非常感謝Quentin Lhoest回答了無數關于Datasets的問題、Lysandre Debut對Hugging Face Hub相關事項的幫助,以及Sylvain Gugger在Accelerate方面的幫助,還有Joe Davison對于在第9章零樣本學習方面的啟發。還要感謝Sidd Karamcheti和整個Mistral團隊(https://oreil.ly/aOYLt)為GPT-2調整穩定性,使第10章成為可能。本書完全使用Jupyter notebook編寫,感謝Jeremy Howard和Sylvain Gugger創建了像fastdoc(https://oreil.ly/yVCfT)這樣的出色工具,使這一切成為可能。
Lewis:感謝Sofia一直以來對我的支持和鼓勵——否則,這本書就不會存在。經歷了漫長的寫作階段,我們終于可以再次享受周末的快樂時光!
Leandro:感謝Janine,在這一年中的許多深夜和繁忙的周末,她的耐心和支持給了我很大的鼓勵。
Thomas:首先我要感謝Lewis和Leandro提出寫這本書的想法,并大力推動以如此美麗和易于理解的方式編寫本書并出版。我還要感謝Hugging Face團隊的所有成員,感謝他們相信AI的使命是一項社區工作,感謝整個NLP/AI社區與我們一起建立和使用我們在本書中描述的程序和研究結果。
相對于我們完成的工作,整個NLP/AI社區所走過的旅程才是真正重要的,今天有幸與成千上萬的社區成員和像你一樣的讀者一起走這條道路,我們從心底里感謝你們所有人。
[1]本書已由機械工業出版社翻譯出版,書名為《機器學習實戰:基于Scikit-Learn、Keras和TensorFlow(原書第2版)》(書號為978-7-111-66597-7)。
- Excel圖表與表格實戰技巧精粹
- Expert Cube Development with Microsoft SQL Server 2008 Analysis Services
- UG NX 8.0基礎與實例教程
- Pro/E Wildfire 5.0中文版入門、精通與實戰
- Zenoss Core Network and System Monitoring
- PowerPoint 2019從入門到精通(移動學習版)
- Unity 3D\2D手機游戲開發:從學習到產品(第4版)
- PowerPoint 2013從新手到高手(超值版)
- PostgreSQL 9.0 High Performance
- LaTeX入門與實戰應用
- Photoshop CS6淘寶美工完全實例教程(培訓教材版)
- Adobe創意大學Premiere Pro CS5 影視剪輯師標準實訓教材
- 攝影師的后期課:RAW格式技法篇
- Troux Enterprise Architecture Solutions
- TYPO3 4.3 Multimedia Cookbook