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

前言

大語言模型(large language model,LLM)1 已經對世界產生了深遠的影響。通過使機器更好地理解和生成人類語言,LLM 在人工智能(artificial intelligence,AI)領域開創了新的可能性,并影響了眾多行業。

1在本書中,大語言模型也簡稱大模型。大部分情況下我們使用其英文縮寫 LLM 來代指。——編者注

本書以圖文并茂的方式,全面介紹了 LLM 領域,涵蓋了理論基礎和實踐應用兩個方面。從深度學習之前的詞表示方法,到撰寫本書時最先進的Transformer 架構,我們將探索 LLM的歷史與演進,深入研究 LLM的內部運作機制,探討其架構、訓練方法和微調技術。我們還將考察 LLM 在文本分類、聚類、主題建模、聊天機器人、搜索引擎等領域的各種應用。

本書獨特地結合了直觀理解、實際應用和圖解風格,我們希望那些想探索 LLM 這一激動人心的領域的讀者能夠通過本書打下堅實的基礎。無論你是初學者還是專家,我們都誠摯地邀請你與我們一起踏上這段探索 LLM的旅程。

本書的主要目標是幫助讀者直觀地理解 LLM。語言人工智能(Language AI)領域發展迅猛,試圖緊跟最新技術讓人很有“壓力”。因此,我們將重點放在 LLM的基礎知識上,致力于提供一個輕松、有趣的學習過程。

為了實現這種以直觀理解為先的理念,我們大量運用視覺語言。插圖將幫助讀者對 LLM 學習過程中的主要概念和流程建立直觀認識。通過這種圖解式的敘事方法,我們希望帶你踏上通往這個令人振奮且可能改變世界的領域的旅程。

在本書中,我們明確區分表示模型和生成模型。表示模型不生成文本,通常用于特定任務,如分類;而生成模型則可以生成文本,如 GPT 模型。盡管提到 LLM 時人們首先想到的通常是生成模型,但表示模型仍然具有重要用途。此外,我們對“大語言模型”中“大”這個字的使用較為寬松,常常簡單地稱之為“語言模型”,因為對規模的描述往往比較隨意,并不總能反映模型的實際能力。

本書假定讀者具有 Python 編程經驗,并熟悉機器學習的基礎知識。我們將重點放在建立直觀理解上,而不是推導數學公式。因此,圖解配合實踐示例將貫穿本書的學習過程。本書不要求讀者預先了解 PyTorch 或 TensorFlow 等流行的深度學習框架,也不需要生成式建模的相關知識。

如果你不熟悉 Python,推薦從 LearnPython 網站開始,這個網站上有許多關于 Python 基礎知識的教程。為了進一步簡化學習過程,本書的所有代碼都可在 Google Colab 上直接運行,你無須在本地安裝任何軟件。

本書大致分為三部分。圖 P-1 展示了全書結構。請注意,每章都可以獨立閱讀,因此你可以略過已經熟悉的章節。

在第一部分中,我們探索大、小語言模型的內部運作機制。首先概述該領域和常用技術(見第 1 章),然后討論這些模型的兩個核心組件(見第 2 章):詞元(token)和嵌入(embedding)。本部分最后是對 Jay的大名鼎鼎的文章“The Illustrated Transformer”的更新和擴展,深入探討了這些模型的架構(見第 3 章)。本部分還將介紹許多貫穿全書的術語及其定義。

在第二部分中,我們通過常見用例探索如何使用 LLM。我們將使用預訓練模型并展示它們的功能,無須進行微調。

你將學習如何使用語言模型進行監督分類(見第 4 章)、文本聚類和主題建模(見第 5 章),利用嵌入模型進行文本生成(見第 6 章和第 7 章)、語義搜索(見第 8 章),以及將文本生成能力擴展到視覺領域(見第 9 章)。

學習這些獨立的語言模型功能將使你具備用 LLM 解決問題的技能,并能夠構建越來越高級的系統和流程。

在第三部分中,我們通過訓練和微調各種語言模型來探索高級概念。我們將探討如何構建和微調嵌入模型(見第 10 章),回顧如何針對分類任務微調 BERT(見第 11 章),并以幾種生成模型的微調方法結束本書(見第 12 章)。

圖 P-1:本書章節結構

運行生成模型通常是計算密集型任務,需要配備高性能 GPU的計算機。由于并非每位讀者都具備這樣的硬件條件,本書中的所有示例都可在在線平臺 Google Colab 上運行。在撰寫本書時,該平臺允許你免費使用 NVIDIA GPU(T4)來運行代碼。這款 GPU 有 16 GB 顯存(GPU的內存),這是我們對本書示例的最低顯存要求。

 需要注意的是,并非所有章節都需要最少 16 GB 顯存,因為某些示例(如訓練和微調)比其他示例(如提示工程)更消耗計算資源。在本書代碼倉庫中,你可以找到每章的最低 GPU 要求。

所有代碼、相關要求和附加教程都可以在本書 GitHub 倉庫(https://github.com/HandsOnLLM/Hands-On-Large-Language-Models)中找到。如果你想在本地運行示例,我們建議使用配備至少 16 GB 顯存的NVIDIA GPU。如需本地安裝,例如使用 conda,你可以按照以下步驟創建環境:

conda create -n thellmbook python=3.10
conda activate thellmbook

要安裝所有必要的依賴項,首先 fork 或克隆代碼倉庫,然后在新創建的Python 3.10 環境中運行以下命令:

pip install -r requirements.txt

在示例中,我們同時使用開源模型和專有模型來展示它們各自的優勢和劣勢。對于專有模型,使用 OpenAI 和 Cohere的服務前,你需要創建一個免費賬戶。

OpenAI

在網站上點擊“Sign Up”(注冊)創建免費賬戶。該賬戶允許你創建 API 密鑰,用于訪問 GPT-3.5。然后,進入“API keys”(API 密鑰)創建密鑰。

Cohere

在網站上注冊免費賬戶。然后,進入“API keys”創建密鑰。

請注意,這兩個賬戶都有使用速率限制,這些免費 API 密鑰每分鐘只允許有限次數的調用。在所有示例中,我們都考慮到了這一點,并在必要時提供了本地替代方案。

對于開源模型,除了第 2 章中的Llama 2 模型外,你無須創建賬戶。要使用該模型,你需要一個 Hugging Face 賬戶。

Hugging Face

在 Hugging Face 網站上點擊“Sign Up”創建免費賬戶。然后,在“Settings”(設置)中進入“Access Tokens”(訪問令牌)創建令牌,用于下載某些 LLM。

本書使用以下排版約定:

黑體

表示新術語或重點強調的內容。

等寬字體(constant width)

表示程序片段,以及正文中出現的變量、函數、數據庫、數據類型、環境變量、語句和關鍵字等。

等寬粗體(constant width bold

表示用戶應該逐字鍵入的命令或其他文本。

等寬斜體(constant width italic

表示應該用用戶提供的值或上下文決定的值替換的文本。

 該圖標表示提示或建議。

 該圖標表示一般注釋。

補充材料(代碼示例、練習等)可以從本書 GitHub 倉庫下載。

如果你有技術問題或使用代碼示例時遇到問題,請發送電子郵件至support@oreilly.com。

本書旨在幫助你完成工作。一般來說,如果書中提供了示例代碼,你可以在程序和文檔中使用。除非你要復制大量代碼,否則無須聯系我們獲得許可。例如,編寫的程序使用了本書的幾個代碼片段,就不需要許可。銷售或分發 O'Reilly 圖書中的示例需要獲得許可。通過引用本書的內容或引用示例代碼來回答問題不需要獲得許可。將本書中大量示例代碼整合到產品文檔中需要獲得許可。

引用書中的示例代碼通常不要求注明出處,但如果你能夠注明,我們表示感謝。出處信息通常包括書名、作者、出版商和 ISBN。例如,英文版可以這樣注明:Hands-On Large Language Models by Jay Alammar and Maarten Grootendorst (O'Reilly). Copyright ? 2024 Jay Alammar and Maarten Pieter Grootendorst, 978-1-098-15096-9;中文版可以這樣注明:《圖解大模型:生成式 AI 原理與實戰》(李博杰譯,人民郵電出版社),原始版本 Hands-On Large Language Models by Jay Alammar and Maarten Grootendorst (O'Reilly)。如果你認為自己對代碼示例的使用超出了合理使用范圍或上述許可范圍,請隨時通過permissions@oreilly.com與我們聯系。

40 多年來,O'Reilly Media 致力于提供技術和商業培訓、知識和卓越見解,來幫助眾多公司取得成功。

我們擁有獨特的由專家和創新者組成的龐大網絡,他們通過圖書、文章和我們的在線學習平臺分享他們的知識和經驗。O'Reilly 在線學習平臺讓你能夠按需訪問現場培訓課程、深入的學習路徑、交互式編程環境,以及 O'Reilly 和 200 多家其他出版商提供的大量文本資源和視頻資源。更多信息,請訪問https://www.oreilly.com。

請把對本書的評價和問題發給出版社。

美國:

O'Reilly Media, Inc.

1005 Gravenstein Highway North

Sebastopol, CA 95472

中國:

北京市西城區西直門南大街 2 號成銘大廈 C 座 807 室(100035)

奧萊利技術咨詢(北京)有限公司

對于本書的評論和技術性問題,請發送電子郵件到 errata@oreilly.com.cn。

要了解更多 O'Reilly 圖書和培訓課程等信息,請訪問以下網站:https://www.oreilly.com

我們在 LinkedIn的地址如下:https://linkedin.com/company/oreilly-media

我們的YouTube 視頻地址如下:https://youtube.com/oreillymedia

撰寫本書對我們來說是一種不可思議的體驗、一次精誠的合作,也是一段難忘的旅程。

LLM 是當今最具活力的技術領域之一。在寫作本書期間,我們目睹了這個領域的驚人進展。然而,盡管變化迅猛,但其基本原理始終如一,這也為寫作增添了不少趣味。我們非常感激能有機會在這個關鍵時刻深入探索這一領域。

與 O'Reilly 團隊的合作令人難忘!特別感謝 Michele Cronin 從本書創作之初就以滿腔熱忱投入其中,給予我們寶貴的反饋和堅定的支持。你是我們見過的最棒的編輯——你太出色了!感謝 Nicole Butterfield 策劃這本書并幫助我們在整個寫作過程中遵循結構化方法。感謝 Karen Montgomery 設計了精彩的封面,我們很喜歡封面上的袋鼠!非常感謝 Kate Dullea,在陪我們反復檢查數百幅插圖的過程中,始終極富耐心。Clare Laylock 及時發布的預覽版讓我們得以見證工作的進展,這極大地激勵了我們,謝謝你。感謝 Ashley Stussy 和 Charles Roumeliotis 在出版最后階段的工作,同時也感謝 O'Reilly 團隊的其他所有貢獻者。

感謝出色的技術審閱團隊——Harm Buisman、Emir Mu?oz、Luba Elliott、Guarav Chawla、Rafael V. Pierre、Tarun Narayanan、Nikhil Buduma 和 Patrick Harrison 為我們提供了寶貴的反饋。

向我的家人表達最深切的感激,感謝你們給予我堅定不移的支持和源源不斷的啟發。特別感謝我的父母 Abdullah 和 Mishael,以及我的兩位姑姑 Hussah 和 Aljoharah。

感謝那些在理解和闡釋書中復雜概念方面給予我幫助的朋友、同事和合作伙伴,也感謝 Cohere 團隊營造了支持學習和分享的環境。感謝 Adrien Morisot、Aidan Gomez、Andy Toulis、Anfal Alatawi、Arash Ahmadian、Bharat Venkitesh、Edward Grefenstette、Ivan Zhang、Joao Araújo、Luis Serrano、Matthias Gallé、Meor Amer、Nick Frosst、Patrick Lewis、Phil Blunsom、Sara Hooker 和 Suhas Pai。

如果沒有我的合著者 Maarten 非凡的才華和不懈的努力,我無法想象這個項目能達到如今的高度。你在反復推敲技術細節(從第 n 導入依賴的固定版本到最新的LLM 量化技術)的同時,還能創造出世界上最好的視覺敘事,這真是令人嘆為觀止!

最后,要向沙特阿拉伯首都利雅得那些絕妙的咖啡館致敬——那真是集中注意力寫作的好去處,我常常從黎明待到午夜,需要提神醒腦的時候就喝喝咖啡。正是在這些咖啡館里,我閱讀了大部分與 LLM 相關的論文并形成了自己的見解(特別是 Elixir Bunn 咖啡館,向你致意)。

首先,衷心感謝我的合著者 Jay。你的見解不僅使這本書成為可能,而且讓寫作過程變得無比充實。這段旅程絕對精彩,與你合作是一種純粹的快樂。

真誠地感謝 IKNL 優秀的同事們在這段旅程中持續給予的支持。特別要提一下 Harm——每周一早上跟你討論這本書的咖啡時光對我來說一直是莫大的鼓勵。

感謝我的家人和朋友們堅定不移的支持,特別是我的父母。爸爸,盡管面對重重困難,但在我最需要的時候,你總能出現在我身邊,謝謝你。媽媽,我們作為懷抱寫作夢想的朋友之間的對話異常精彩,這對我的激勵超出了你的想象。感謝兩位無盡的支持和鼓勵。

最后,語言已經難以表達我對愛妻 Ilse的感激之情。你那無限的熱情和耐心令人敬佩,特別是當我長時間滔滔不絕地談論最新的LLM 進展時——你是我最大的支持。對不起,我可愛的女兒 Sarah,才兩歲的你已經耳聞了遠超常人一生所能聽到的LLM 相關知識!我保證我們會用數不盡的游戲時光和冒險來彌補這一切。

主站蜘蛛池模板: 和平区| 石柱| 广州市| 邓州市| 新干县| 清镇市| 晋州市| 红原县| 隆子县| 玉山县| 承德县| 无锡市| 龙游县| 沂水县| 格尔木市| 攀枝花市| 成都市| 嘉善县| 闽清县| 合阳县| 哈尔滨市| 湖南省| 容城县| 安龙县| 嘉义市| 曲阜市| 达州市| 财经| 皮山县| 河池市| 金沙县| 巴楚县| 农安县| 昆山市| 霍邱县| 阳信县| 谷城县| 合川市| 栾川县| 建德市| 通辽市|