讓AI好好說話!從頭打造LLM的實戰秘笈 (1版)
類似書籍推薦給您
【簡介】
用自己的電腦也能從零開始建構 LLM 模型!
LLM 的參數真的非常多~ 動輒就數千億個參數,一般家用電腦是跑不動的;再加上 LLM 模型架構、注意力機制的運作都非常複雜,要深入理解也有不小的門檻。
★ 機器學習專家 Sebastian Raschka 特別規劃了一整套的教練式教學,透過較小型的資料集,讓您能在一般電腦上跟著步驟實作,並逐步理解大型語言模型的架構與技術!
- 本書涵蓋了建構 LLM 的完整過程,包括處理資料集、實作模型架構、注意力機制、使用無標籤的資料進行預訓練,以及針對特定任務的微調技術 (分類任務微調與指令微調)。
- 書中每一步驟都有清楚的文字、圖解和程式範例,帶著你從零開始撰寫一個基礎模型,並將其進化為文本分類工具,最終創建一個能夠理解並回應對話指令的聊天機器人。
★ 經驗豐富的開發者與初學者,都可以學習到如何一步步建構一個 GPT,掌握創建 LLM 所需的基本概念與實作技巧!
- 如果是具備基礎機器學習知識、中階 Python 技能的讀者,作者提供了許多額外資源,包含完整程式碼範例 (GitHub 儲存庫)、參考文獻與延伸閱讀 (像是如何應用更大規模的模型參數)、優化訓練迴圈與進階的 LoRA 微調方法,讓您可以再進一步深入學習,持續往專家邁進!
- 對於初學者來說,作者在附錄中有提供 PyTorch 基礎知識與安裝解說,而小編則在內文中適當添加註解,幫助讀者能更好地理解內容。另外,旗標更準備了 Colab 線上資源,讓您理論、實作都能暢通無阻。就算是程式語言小白,初入門也能無痛學習、打好 LLM 的基礎~
一起提前起跑,搶佔 LLM 理論知識與 GPT 模型實作的先機,為自己投資一個無限的未來!
【目錄】
▌第 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 使用 <|endoftext|> 作為填充 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 進行參數高效微調
立即查看
跟 NVIDIA 學深度學習!從基本神經網路到 CNN‧RNN‧LSTM‧seq2seq‧Transformer‧GPT‧BERT...,紮穩機器視覺與大型語言模型 (LLM) 的建模基礎 (1版)
類似書籍推薦給您
內容介紹
▍AI 界扛霸子 NVIDIA 的深度學習 (Deep Learning) 指定教材!
▍GPT、Transformer、seq2seq、self-attention 機制...大型語言模型 (LLM) 背後的先進技術「硬派」揭密!
近年來,在 NVIDIA (輝達) GPU、CUDA 技術的推波助瀾下,深度學習 (Deep Learning) 領域有著爆炸性的成長,例如最為人知的 ChatGPT 正是運用深度學習技術開發出來的當紅應用。
【★學深度學習,跟 AI 重要推手 - NVIDIA 學最到位!】
除了硬體上的助益外,為了幫助眾多初學者快速上手深度學習,任職於 NVIDIA 的本書作者 Magnus Ekman 凝聚了他多年來在 NVIDIA 所積累的 AI 知識撰寫了本書。除了介紹深度學習基礎知識外,也包括此領域的最新重要進展。本書同時也是 NVIDIA 的教育和培訓部門 -【深度學習機構 (Deep Learning Institute, DLI)】 指定的培訓教材 (https://www.nvidia.com/zh-tw/training/books/)。
要學深度學習,跟深度學習的重要推手 NVIDIA 學就對了!眾多紮實的內容保證讓你受益滿滿!
【★機器視覺、生成式 AI 語言模型 100% 從零開始打造!】
在深度學習的教學上,本書將從神經網路的底層知識 (梯度下降、反向傳播...) 介紹起,帶你打好深度學習的底子。接著會介紹用 Colab 雲端開發環境 + tf.Keras 建構、調校多層神經網路,以及經典的 CNN (卷積神經網路) 圖形辨識模型建構...等機器視覺主題。最後則邁入自然語言處理 (NLP) 領域,在介紹完基本的 RNN / LSTM 知識後,以先進的 Transformer、GPT...語言模型架構做結。
尤其自從 ChatGPT 爆紅之後,自然語言處理 (NLP) 一直是深度學習的熱門研究話題,而這部分正是本書最精彩之處!
RNN / LSTM 神經網路雖然問世已有一段時間,現今一些先進的 NLP 模型或許不會用它們來建構,但由它們衍生出來的 hidden state (隱藏狀態) 概念可說是重中之重,我們會帶你好好熟悉,以便能跟後續章節順利銜接上。
之後則會利用各種神經網路技術帶你實作【多國語言翻譯模型】、【Auto-Complete 文字自動完成模型】...等範例。從處理原始文字訓練資料 → 切割資料集 → 建構模型 → 模型調校、優化,從頭到尾示範一遍,帶你紮穩大型語言模型 (LLM) 的建模基礎。
令小編最印象深刻的是,本書所設計的 NLP 章節內容可說是「環環相扣」,從 RNN / LSTM 章節初次觸及 NLP 模型開始,次一章的模型架構幾乎都是為了解決前一章模型的特定問題而生的。這種層層舖墊的獨到方式能讓你深刻理解 RNN / LSTM / seq2seq / encoder-decoder / attention / self-attention 機制...等技術的發展脈絡,對於看懂 Transformer、GPT 等最先進的神經網路技術有莫大的幫助,這絕對是其他書看不到的精彩內容!
本書特色
□【徹底看懂 ChatGPT 背後核心技術 - GPT 的模型架構】
GPT、Transformer、encoder-decoder、seq2seq、self-attention 機制、attention 機制、query-key-value 機制、Multi-head、位置編碼 (positional encoding)、預訓練 (pre-train)、微調 (fine-tune)...各種建模技術輕鬆搞懂!
□【生成式 AI 語言模型 100% 從零開始打造!】
‧用 Colab + tf.Keras 實作多國語言翻譯模型、Auto-Complete 文字自動完成模型
‧從處理原始文字訓練資料 → 切割資料集 → 建構模型 → 模型調校、優化,從頭到尾示範一遍,帶你紮穩大型語言模型 (LLM) 的建模基礎
□【深度學習基礎知識學好學滿】
‧紮穩根基!不被損失函數 / 梯度下降 / 反向傳播 / 正規化 / 常規化…一拖拉庫技術名詞搞的暈頭轉向!
‧深度神經網路基礎 / CNN / RNN / LSTM...概念詳解。
‧多模態學習 (multimodal learning)、多任務學習 (multitask learning)、自動化模型架構搜尋...熱門主題介紹。
□詳細解說, 流暢翻譯
本書由【施威銘研究室】監修, 書中針對原書進行大量補充, 並適當添加註解, 幫助讀者更加理解內容!
書籍目錄
Ch01 從感知器看神經網路的底層知識
1-1 最早的人工神經元 - Rosenblatt 感知器
1-2 增加感知器模型的能力
1-3 用線性代數實現神經網路模型
Ch02 梯度下降法與反向傳播
2-1 導數的基礎概念
2-2 以梯度下降法 (gradient descent) 對模型訓練問題求解
2-3 反向傳播 (back propagation)
Ch03 多層神經網路的建立與調校
3-1 動手實作:建立辨識手寫數字的多層神經網路
3-2 改善神經網路的訓練成效
3-3 實驗:調整神經網路與學習參數
Ch04 用卷積神經網路 (CNN) 進行圖片辨識
4-1 卷積神經網路 (CNN)
4-2 實作:以卷積神經網路做圖片分類
4-3 更深層的 CNN 與預訓練模型
Ch05 用循環神經網路 (RNN、LSTM...) 處理序列資料
5-1 RNN 的基本概念
5-2 RNN 範例:預測書店銷售額
5-3 LSTM (長短期記憶神經網路)
5-4 LSTM 範例:文字的 Auto-Complete 機制
Ch06 自然語言處理的重要前置工作:建立詞向量空間
6-1 詞向量空間的基本知識
6-2 做法(一):在神經網路建模過程中「順便」生成詞向量空間
6-3 做法(二):以 word2vec、GloVe 專用演算法生成詞向量空間
Ch07 用機器翻譯模型熟悉 seq2seq 架構
7-1 機器翻譯模型的基本知識
7-2 機器翻譯的範例實作
7-2-1 tf.Keras 函數式 API 簡介
7-2-2 建構模型前的工作
7-2-3 建構模型
7-2-4 訓練及測試模型
7-2-5 實驗結果
Ch08 認識 attention 與 self-attention 機制
8-1 熟悉 attention 機制
8-2 認識 self-attention 機制
8-2-1 self-attention 的基本概念
8-2-2 self-attention 機制的算法
8-2-3 multi-head (多頭) 的 self-attention 機制
Ch09 Transformer、GPT 及其他衍生模型架構
9-1 Transformer 架構
9-1-1 編碼器端的架構
9-1-2 解碼器端的架構
9-1-3 Transformer 內的其他設計
9-1-4 小編補充:觀摩 keras 官網上的 Transformer 範例
9-2 Transformer 架構的衍生模型:GPT、BERT
9-2-1 認識 GPT 模型
9-2-2 認識 BERT 模型
9-2-3 其他從 Transformer 衍生出的模型
附錄 A 延伸學習 (一):多模態、多任務...等模型建構相關主題
附錄 B 延伸學習 (二):自動化模型架構搜尋
附錄 C 延伸學習 (三):後續學習方向建議
附錄 D 使用 Google 的 Colab 雲端開發環境
立即查看