讓 AI 好好說話!從頭打造 LLM (大型語言模型) 實戰秘笈

Sebastian Raschka 著

  • 讓 AI 好好說話!從頭打造 LLM (大型語言模型) 實戰秘笈-preview-1
  • 讓 AI 好好說話!從頭打造 LLM (大型語言模型) 實戰秘笈-preview-2
  • 讓 AI 好好說話!從頭打造 LLM (大型語言模型) 實戰秘笈-preview-3
  • 讓 AI 好好說話!從頭打造 LLM (大型語言模型) 實戰秘笈-preview-4
  • 讓 AI 好好說話!從頭打造 LLM (大型語言模型) 實戰秘笈-preview-5
  • 讓 AI 好好說話!從頭打造 LLM (大型語言模型) 實戰秘笈-preview-6
  • 讓 AI 好好說話!從頭打造 LLM (大型語言模型) 實戰秘笈-preview-7
  • 讓 AI 好好說話!從頭打造 LLM (大型語言模型) 實戰秘笈-preview-8
  • 讓 AI 好好說話!從頭打造 LLM (大型語言模型) 實戰秘笈-preview-9
  • 讓 AI 好好說話!從頭打造 LLM (大型語言模型) 實戰秘笈-preview-10
  • 讓 AI 好好說話!從頭打造 LLM (大型語言模型) 實戰秘笈-preview-11
  • 讓 AI 好好說話!從頭打造 LLM (大型語言模型) 實戰秘笈-preview-12
  • 讓 AI 好好說話!從頭打造 LLM (大型語言模型) 實戰秘笈-preview-13
讓 AI 好好說話!從頭打造 LLM (大型語言模型) 實戰秘笈-preview-1

買這商品的人也買了...

相關主題

商品描述

內容介紹:

用自己的電腦也能從零開始建構 LLM 模型!

LLM 的參數真的非常多~ 動輒就數千億個參數,一般家用電腦是跑不動的;再加上 LLM 模型架構、注意力機制的運作都非常複雜,要深入理解也有不小的門檻。

★ 機器學習專家 Sebastian Raschka 特別規劃了一整套的教練式教學,透過較小型的資料集,讓您能在一般電腦上跟著步驟實作,並逐步理解大型語言模型的架構與技術!
- 本書涵蓋了建構 LLM 的完整過程,包括處理資料集、實作模型架構、注意力機制、使用無標籤的資料進行預訓練,以及針對特定任務的微調技術 (分類任務微調與指令微調)。
- 書中每一步驟都有清楚的文字、圖解和程式範例,帶著你從零開始撰寫一個基礎模型,並將其進化為文本分類工具,最終創建一個能夠理解並回應對話指令的聊天機器人。

經驗豐富的開發者與初學者,都可以學習到如何一步步建構一個 GPT,掌握創建 LLM 所需的基本概念與實作技巧!
- 如果是具備基礎機器學習知識、中階 Python 技能的讀者,作者提供了許多額外資源,包含完整程式碼範例 (GitHub 儲存庫)、參考文獻與延伸閱讀 (像是如何應用更大規模的模型參數)、優化訓練迴圈與進階的 LoRA 微調方法,讓您可以再進一步深入學習,持續往專家邁進!
- 對於初學者來說,作者在附錄中有提供 PyTorch 基礎知識與安裝解說,而小編則在內文中適當添加註解,幫助讀者能更好地理解內容。另外,旗標更準備了 Colab 線上資源,讓您理論、實作都能暢通無阻。就算是程式語言小白,初入門也能無痛學習、打好 LLM 的基礎~

一起提前起跑,搶佔 LLM 理論知識與 GPT 模型實作的先機,為自己投資一個無限的未來!

本書特色:

「親手實現LLM,就能破解AI落地應用的層層關卡!」——溫怡玲|人工智慧科技基金會 執行長

專業推薦
林筱玫|台灣人工智慧協會 執行長
馬偉雲|中央研究院 資訊科學研究所 副研究員
郭興安|永豐餘投控 資安長暨元信達資訊 總經理
黃逸華|美商WSP集團 臺灣區分公司 策略長
蕭安助|和碩聯合科技 人工智慧發展處 副總經理

長年 4.5 顆星好評並翻譯成多國語言的暢銷書《Python Machine Learning》作者 Sebastian Raschka 又一最新力作
本書於 Amazon 上獲 4.7 顆星好評,並榮登排行榜(人工智慧相關類別)第一名
作者在 Github 儲存庫上提供的本書學習資源,到目前為止已獲得 36,600 關注
作者於 YouTube 上介紹本書的影片,已超過 7 萬點閱人次
從零開始實作,讓您能逐步理解 LLM 的架構與關鍵技術
每一個實作過程都有清楚的圖解與程式範例,清楚講解建構 LLM 模型的基礎組件
在本書中,您可以學習到~
使用小型資料集,用自己的電腦就能實作出專屬自己的 GPT 模型
透過自定義的 TokenizerDataloader 等,了解 LLM 模型的基礎概念與技術
逐步引領注意力機制(自注意力、因果注意力、多頭注意力)的概念與實作
自行準備適合用來訓練的資料集,並嘗試預訓練模型
學習載入 OpenAI 公開的預訓練權重,降低預訓練成本
針對特定任務進行微調(分類微調、指示微調),以及評估模型效能

作者簡介

作者簡介:

Sebastian Raschka 博士,擁有超過十年的機器學習與人工智慧領域的工作經驗。目前任職 Lightning AI 的資深研究工程師,專注於實作與訓練大型語言模型。除了身為研究人員,Sebastian 對教育亦充滿熱情,以暢銷書籍《Python 機器學習 (Machine Learning with Python)》以及對開源社群的貢獻而聞名。且在進入產業界之前,曾任職於美國威斯康辛大學麥迪遜分校統計系,擔任助理教授一職,其專業領域為深度學習。如需了解更多關於 Sebastian 的資訊,歡迎造訪作者的個人網站:https://sebastianraschka.com。

目錄大綱

目錄:

1 理解大型語言模型
1.1 什麼是 LLM
1.2 LLM 的應用
1.3 建構與使用 LLM
1.4 Transformer
架構介紹
1.5 大型資料集的運用
1.6 深入探討 GPT 架構
1.7 建構大型語言模型 (LLM)
1.8
重點回饋

2 處理文本資料
2.1 詞嵌入 (Word Embedding,或稱詞向量)
2.2
文本斷詞 (Tokenize)
2.3
token 轉換為 token ID
2.4
添加特殊 token
2.5
字節對編碼 (Byte Pair Encoding, BPE)
2.6
使用滑動視窗法 (Sliding Window) 進行資料取樣
2.7 創建 token 嵌入 (Embedding)
2.8
位置資訊的編碼
2.9 重點回顧

3 實作注意力機制
3.1 長序列建模的問題
3.2 使用注意力機制捕捉資料依賴關係
3.3 利用自注意力機制,關注輸入序列中的不同位置
- 3.3.1 簡化的自注意力機制 (不使用可訓練權重)
- 3.3.2
計算所有輸入 token 的注意力權重
3.4 使用「可訓練權重」實作自注意力機制
- 3.4.1 逐步計算注意力權重
- 3.4.2 實作一個精簡的自注意力 Python 類別
3.5 使用因果注意力遮蔽未來的字詞
- 3.5.1 應用因果注意力遮罩
- 3.5.2 dropout 遮蔽額外的注意力權重
- 3.5.3 實作一個精簡的因果注意力類別
3.6 將單頭注意力擴展至多頭注意力
- 3.6.1 堆疊多個單頭注意力層
- 3.6.2 實作具有權重切分的多頭注意力
3.7 重點回顧

4 從零實作 GPT 模型以生成文本
4.1 撰寫 LLM 架構
- 4.1.1 指定模型配置
- 4.1.2 實作 GPT 佔位架構
- 4.1.3 斷詞處理
- 4.1.4 將批次資料輸入到模型
4.2 將輸出進行層歸一化
- 4.2.1 檢查指定維度的輸出平均值和方差
- 4.2.2 層歸一化處理
4.3 實作具有 GELU 激活函數的前饋神經網路
4.4 增加捷徑連接 (Shortcut Connection)
4.5
Transformer 模組中連結注意力與線性層
4.6 撰寫 GPT 模型
4.7 生成文本
4.8 重點回顧

5 使用無標籤的資料集進行預訓練
5.1 評估文本生成品質
- 5.1.1 使用 GPT 來生成文本
- 5.1.2 計算文本生成損失
- 5.1.3 計算訓練和驗證損失
5.2 訓練 LLM
- 5.2.1
預訓練 LLM 的主要函式
- 5.2.2 啟動預訓練
5.3 運用文本生成策略 (解碼策略) 來控制隨機性
- 5.3.1 溫度縮放 (Temperature Scaling)
- 5.3.2 Top-k
取樣
- 5.3.3 修改文本生成函式
5.4 PyTorch 中載入和儲存模型權重
5.5 OpenAI 載入預訓練權重
5.6 重點回顧

6 分類任務微調
6.1 常見的 2 種微調類型
6.2 準備資料集
- 6.2.1 下載資料集
- 6.2.2 平衡資料集
- 6.2.3 轉換為整數類別標籤
- 6.2.4 分割資料集
6.3 建立資料載入器
- 6.3.1 使用 作為填充 token
- 6.3.2
進行斷詞與填充處理
- 6.3.3 實例化資料載入器
6.4 使用預訓練權重初始化模型
6.5 將輸出層更換為分類輸出層
- 6.5.1 檢查模型架構
- 6.5.2 凍結模型
- 6.5.3 替換輸出層,並指定特定層為可訓練狀態
- 6.5.4 只需微調最後一列 token
6.6
計算分類損失與準確率
- 6.6.1 將最後一個 token 轉換為類別標籤的預測值
- 6.6.2 計算各個資料集的分類準確度
- 6.6.3 使用交叉熵損失判斷模型的準確度
6.7 使用監督資料 (Supervised Data) 來微調模型
- 6.7.1 微調模型的訓練函式
- 6.7.2 啟動訓練
- 6.7.3 透過繪製損失函數,判斷模型學習效果
- 6.7.4 計算模型分類任務的準確度
6.8 使用 LLM 做為垃圾訊息分類器
6.9 重點回顧
 

7 指令微調
7.1 指令微調概述
7.2 準備監督式指令微調的資料集
- 7.2.1 下載資料集
- 7.2.2 將資料集套用提示詞格式
- 7.2.3 分割資料集
7.3 將資料分成多個訓練批次
- 7.3.1 斷詞處理
- 7.3.2 允許不同批次擁有不同序列長度的 collate 函式
- 7.3.3 創建能讓模型學習預測的目標 token ID
- 7.3.4
將填充 token 指定為一個特殊值
7.4 為指令資料集建立資料載入器
- 7.4.1 提升模型訓練效率的 device 設置
- 7.4.2 設置資料載入器
7.5 載入預訓練的 LLM
- 7.5.1
載入現有的 GPT 模型
- 7.5.2 評估預訓練好的模型性能
7.6 使用指令資料集來微調 LLM
- 7.6.1
計算損失
- 7.6.2 訓練模型,將損失最小化
- 7.6.3 檢視訓練與驗證損失曲線
7.7 取得模型生成的回應
- 7.7.1 人工檢查 (肉眼判斷) 模型回應的品質
- 7.7.2 指令微調有多種模型評估方法
- 7.7.3 使用 AlpacaEval 方法前的準備步驟
7.8 評估微調後的 LLM
- 7.8.1
下載 Llama3 模型並啟動 Ollama
- 7.8.2
測試並確保 Ollama 正確運行
- 7.8.3 對微調模型的回應進行評分
7.9 總結
- 7.9.1 未來方向
- 7.9.2 持續學習、掌握脈動
- 7.9.3 結語
7.10 重點回顧

【附錄電子書】
附錄 A PyTorch 簡介
A.1 什麼是 PyTorch
A.2 張量簡介
A.3 以運算圖 (Computation Graph) 來理解模型
A.4 自動微分功能簡介
A.5 實作多層神經網路
A.6 建立高效的資料載入器
A.7 典型的訓練迴圈
A.8 儲存與載入模型
A.9 使用 GPU 優化訓練效能
A.10 重點回顧

附錄 B 參考文獻與延伸閱讀

附錄 C 練習題解答

附錄 D 優化訓練迴圈的方法
D.1 預熱學習率 (Learning Rate Warmup)
D.2
餘弦衰減 (Cosine Decay)
D.3
梯度分割 (Gradient Clipping)
D.4
修改後的訓練函式

附錄 E 使用 LoRA 進行參數高效微調 (Parameter-Efficient Fine-tuning)
E.1 LoRA 簡介
E.2 準備資料集
E.3 初始化模型
E.4 使用 LoRA 進行參數高效微調