# 課程簡介
* 教學如何從零開始建立大型語言模型
* 無需微積分或線性代數背景,僅需基本 Python 經驗
* 課程靈感來自 Andrej Karpathy 的 GPT 從零開始教學
* 目標是以小步驟理解數學與機器學習概念
# 課程設置與需求

* 使用 Jupyter Notebook 進行開發
* 建立虛擬環境,避免影響全域 Python 套件
* GPU 加速需使用 CUDA
* 所需套件:matplotlib、numpy、pylzma、ipykernel、jupyter


* Windows 可能需安裝 Visual Studio Build Tools 以支援 pylzma
# Torch 與 CUDA 安裝

* 不使用單純 pip install torch
* 需依 PyTorch 官方文件選擇正確版本與 CUDA 配套
* 建議版本:Python 3.9–3.11 搭配 CUDA 11.7 或 11.8
# Jupyter Notebook 與虛擬環境整合



* 透過 `ipykernel` 將虛擬環境加入 Jupyter Kernel
* 設定 kernel display name,例如 Cuda GPT

* 在 Notebook 中選擇對應的 kernel 以使用虛擬環境
# 建立資料集
* 使用 Project Gutenberg 提供的免費文本
* 範例選用《The Wizard of Oz》純文字檔
* 去除開頭與結尾的授權與額外內容,保留純文本內容
* 檔案大小約 233KB,適合作為小型語料進行模型實驗
---
# 開啟與讀取文本

* 使用 `open("wizard_of_oz.txt", "r", encoding="utf8")`
* 透過 `f.read()` 將內容存成字串
* 可印出文字長度與前幾百個字元檢查內容
# 建立字元表與 Tokenizer


* 建立 `chars = sorted(set(text))` 得到所有字元集合
* 使用字典將字元映射到整數,再建立反向映射
* `encode` 將字串轉為整數序列
* `decode` 將整數序列轉回字串
# Tokenizer 種類概念
* 字元級 (character-level):小詞彙表,但序列長
* 單詞級 (word-level):詞彙表巨大,但序列短
* 子詞級 (subword-level):介於兩者之間,常用於效率與泛化
# 使用 PyTorch 與 Tensor

* 匯入 torch,核心資料結構為 tensor
* 將全文轉為整數序列後存入 `torch.tensor`
* 使用 `dtype=torch.long` 處理長整數型別
* Tensor 可進行矩陣運算、維度變換、點積等操作
# 訓練與驗證集切分
* 資料分為訓練集 80% 與驗證集 20%
* 防止模型只背誦全文,確保能泛化生成新文本
* 訓練集學習,驗證集檢查模型生成品質
# Bigrams 語言模型概念
* 「bi」表示只考慮前一個字元來預測下一個字元
* 例:H → e → l → l → o
* 每個轉換附帶機率,用來建模序列的條件分布
# Block Size 與目標生成
* Block size = 一段隨機取出的子序列長度
* 預測序列為 X,目標序列為 Y,Y 是 X 向右偏移一位
* 用於訓練模型學習「給定前文,預測下一字」
# Python 實作

* 定義 `block_size=8`
* X = `data[i:i+block_size]`
* Y = `data[i+1:i+block_size+1]`
* 輸出對應的預測序列與目標序列
* 驗證能正確形成「輸入與偏移目標」對照
---
# CPU 與 GPU 的差異
* CPU 適合進行複雜計算,但運算是逐步(sequential)進行
* GPU 適合進行簡單計算,但能透過大量核心並行處理
* 語言模型訓練需要大量簡單運算,因此 GPU 能顯著提升效率
# Batch 與 Block
* Block size:每個序列的長度
* Batch size:同時處理的序列數量
* 批次處理是加速訓練的關鍵方式
# GPU 檢測與設定
* 使用 `torch.cuda.is_available()` 檢查 GPU 是否可用
* 根據結果將裝置設為 CUDA 或 CPU
* 超參數設定:block size、batch size
# Tensor 建立與操作


* `torch.randint`:建立隨機整數 tensor
* `torch.tensor`:自訂數據建立 tensor
* `torch.zeros` / `torch.ones`:建立全 0 或全 1 tensor
* `torch.empty`:建立未初始化 tensor
* `torch.arange`:建立等差數列 tensor
* `torch.linspace`:建立線性間隔 tensor
* `torch.logspace`:建立對數間隔 tensor
* `torch.eye`:建立單位矩陣
# GPU 與 CPU 運算效能比較

* 小型矩陣運算:CPU 較快,因計算量不大
* 大型矩陣運算:GPU 較快,因能並行處理大量簡單運算
* 在語言模型訓練中,GPU 對於 forward pass 與 backpropagation 特別重要
# 效能測試方法

* 使用 `time` 模組量測運算耗時
* 比較 NumPy(CPU)與 PyTorch(GPU)矩陣運算的時間差
* GPU 在高維矩陣運算時展現出明顯優勢
---
# CPU 時間與 Wall 時間

* CPU 時間:程式實際在 CPU 上執行的時間
* Wall 時間:包含等待在內的總耗時(真實等待時間)
* CPU 時間不含等待,Wall 時間包含等待
# torch.multinomial

* 從機率分布中抽樣
* 機率需加總為 1
* 範例:0.1 與 0.9 代表抽樣 0 與 1 的機率
* 多次執行可能出現不同結果,但整體符合分布
# torch.cat (concatenate)

* 將多個張量合併成一個
* 範例:`[1,2,3,4]` 與 `[5]` 合併為 `[1,2,3,4,5]`
* 在生成文字時,用來將已生成序列與新預測結果拼接
# torch.tril 與 torch.triu

* `tril`:生成下三角矩陣(左上到右下對角線以下保留)
* `triu`:生成上三角矩陣
* 用於遮蔽未來的資訊,避免模型「偷看答案」
# Mask 與 exp 函數
* 採用遮罩將無效區域設為負無限大
* exponentiate(指數運算)後,0 → 1,負無限大 → 0
* 保證模型只依靠歷史資料進行預測
# Transpose (轉置)
* 調換張量的維度順序
* 範例:形狀 `(2,3,4)` 經 `transpose(0,2)` → `(4,3,2)`
* 常用於調整資料形狀以符合運算需求
# torch.stack
* 將多個張量沿新維度疊加
* 1D 疊加成 2D,2D 疊加成 3D,以此類推
* 用於建立 batch,將多個樣本堆疊成訓練輸入
# nn.Linear
* 線性變換層,屬於 `nn.Module`
* 具有可學習的權重與偏置
* 輸入輸出維度需對齊,否則運算無法成立
* 用於將輸入張量轉換為新空間,為神經網路的基本組件
# Softmax 函數
* 將實數向量轉換為機率分布
* 每個元素先取 exp,再除以總和
* 例:輸入 `[1,2,3]` → 輸出為總和為 1 的 `[x,y,z]`
* 常用於分類任務,表示各類的機率分布
----
# Softmax 函數
* 使用 `torch.nn.functional.softmax` 實作
* 將輸入數值轉換為機率分布,所有輸出加總為 1
* 常用於分類問題最後一層
# Embeddings(嵌入向量)

* `nn.Embedding` 將離散輸入(字元或詞彙)映射到稠密向量
* 需要設定 vocabulary size(詞彙表大小)與 embedding dimension(向量維度)
* 向量中的元素沒有固定語義,由模型學習決定
* 在字元層級時,每個字元會被映射到一個向量,儲存其語境相關資訊
* 向量為可學習參數,會隨訓練更新
# Dot Product(點積)


* 公式:將兩個向量對應元素相乘後加總
* 範例:
* A = [1, 2, 3]
* B = [4, 5, 6]
* 結果 = 1×4 + 2×5 + 3×6 = 32
* 點積是矩陣乘法的基礎
# 矩陣相乘原理
* 條件:前一矩陣的列數 × 行數 與後一矩陣的行數 × 列數,內部數字需相等
* 範例:3×2 矩陣 × 2×3 矩陣 → 結果為 3×3 矩陣
* 計算方式:逐行逐列進行點積
# 矩陣相乘範例

* A = [[1, 2], [3, 4], [5, 6]]
* B = [[7, 8, 9], [10, 11, 12]]
* 結果 C = [[27, 30, 33], [47, 68, 75], [95, 106, 117]]
# PyTorch 實作矩陣乘法

* 使用 `@` 符號進行矩陣乘法:`C = A @ B`
* 使用 `torch.matmul(A, B)` 也能得到相同結果
* 兩種方式輸出相同,`@` 是簡寫
----
# 資料型別問題與矩陣相乘
* PyTorch 中整數與浮點數不能直接相乘
* 常見 dtype:`int64` (long) 與 `float32`
* 嘗試相乘會出現錯誤:Expected scalar type long but found float
* 解法:將整數轉為浮點數(`.float()`),避免類型衝突
* 訓練時建議使用浮點數,因為權重需要高精度
# Bigrams 語言模型回顧
* 使用 CUDA 加速訓練
* 超參數:block size(序列長度)、batch size(並行數量)
* 輸入編碼文本,建立詞彙表、encoder/decoder
* 分割訓練集與驗證集,確保泛化能力
* `get_batch` 函數:隨機取片段作為輸入 X,目標 Y = X 向右偏移一位
# 訓練與驗證類比
* 訓練集 = 學習課程內容
* 驗證集 = 最終考試,包含未看過的題目
* 目的是避免模型僅靠記憶生成,確保能捕捉模式並泛化
# nn.Module 與可學習參數
* 子類化 `nn.Module` 用於建立模型
* `nn.Linear`、`nn.Embedding` 等皆屬於可學習參數層
* 模型中的權重透過反向傳播與梯度下降更新
# 損失函數與梯度下降
* 初始隨機權重下,預測成功率低(例:1/80)
* 使用負對數似然(NLL)衡量損失
* 目標:最小化損失,提高預測準確率
* 梯度下降:根據損失的導數調整參數,使模型逐步逼近最佳值
# 優化器與學習率
* Adam:結合動量與自適應學習率的優化器
* 學習率過大 → 震盪,過小 → 收斂太慢
* AdamW:在 Adam 基礎上加入權重衰減(weight decay)
* 權重衰減可避免某些參數值過大,幫助模型泛化
# Embedding Table
* 使用 `nn.Embedding` 建立查詢表
* 將離散字元轉換為連續向量表示
* 大小為 `vocab_size × vocab_size`
* 每行表示「給定當前字元,下一字元的分布」
* 經過正規化後,可看作條件機率分布
# Forward Pass 與自訂邏輯
* 自行撰寫 `forward` 方法能清楚掌握模型內部轉換
* 方便除錯、追蹤每層輸出
* 可針對特殊任務進行客製化
* 強化對模型架構與運算流程的理解
# Logits
* 模型輸出的原始分數,尚未經過 softmax
* 表示每個字元(或類別)的未歸一化可能性
* 之後透過 softmax 轉換為機率分布,用於抽樣或分類
----
# Logits 與機率分布
* Logits 是未經 softmax 的浮點數
* 經 softmax 後會轉換為機率分布,所有輸出加總為 1
* 例子:輸入 [2, 4, 6] → 經正規化為 [0.167, 0.333, 0.5]
* 概率分布可用於判斷最可能的下一個 token
# Logits 的形狀處理
* Logits 初始形狀為 B × T × C
* 交叉熵損失函數期望輸入為 (B×T) × C
* 使用 view 將 B × T 攤平成一維,再搭配 C
# View 與 Shape
* `.shape` 回傳 tensor 維度
* `.view` 可重新塑形,將多維攤平或重新組合
* 常用於調整 logits 與 targets 的形狀以符合損失函數需求
# Generate 函數
* 輸入 context 與 max new tokens
* forward pass 得到 logits
* 取最後一個時間步的 logits
* 使用 softmax 得到機率分布
* 從分布中採樣新 token
* 使用 torch.cat 將新 token 拼接到 context
* 輸出完整生成序列
# 負索引
* `-1` 代表最後一個元素
* `-2` 代表倒數第二個
* 用於選取 logits 的最後一個時間步
# 資料型別 torch.long
* 等同於 int64 佔用 64 位元
* 整數類型不含小數點
* 與浮點數差異在於能否表示小數
# Optimizer 與學習率
* 使用 AdamW 優化器
* 學習率過高可能震盪
* 學習率過低會收斂過慢
* 學習率需實驗找最佳值
# 訓練迴圈流程
* 取得 batch 輸入與目標
* 前向傳播得到 logits 與 loss
* optimizer.zero_grad(set_to_none=True) 清除梯度
* loss.backward() 反向傳播
* optimizer.step() 更新權重
# zero_grad(set_to_none=True)
* 預設梯度會累加需清零
* 設為 None 比設為 0 更省記憶體
* 特殊情況如 RNN 會用梯度累積
# 訓練結果觀察
* 初期 loss 約 3.15
* loss 隨訓練逐步下降
* 生成文字逐漸有基本結構
* 即使是簡單 bigram 模型仍能觀察學習改善
---
# 常見優化器與損失函數
* **MSE (Mean Squared Error)**:迴歸常用,計算預測值與真實值平方差的平均
* **Gradient Descent**:透過梯度下降最小化損失,調整權重與偏置
* **Momentum**:在梯度下降中加入「慣性」,平滑訓練過程,避免震盪
* **RMSProp**:使用梯度平方的移動平均,自適應學習率,避免震盪
* **Adam**:結合 Momentum 與 RMSProp,自適應學習率,常用預設優化器
* **AdamW**:在 Adam 基礎上加入 Weight Decay,改善泛化能力
# 訓練過程中的損失回報
* 訓練中需觀察 loss 收斂狀態
* 不需每步都輸出,可設超參數 `eval_iters` 控制間隔
* 使用取餘數 `%` 判斷是否到達回報點
* 例:每 250 步輸出一次 loss
# torch.no_grad
* 禁止梯度計算,節省計算資源與記憶體
* 適用於驗證與報告 loss 的情境
* 僅 forward,不進行 backward 或參數更新
# model.train 與 model.eval
* **train 模式**:開啟 Dropout、BatchNorm 等,進行訓練
* **eval 模式**:停用 Dropout,BatchNorm 使用固定統計,適合驗證/測試
* Dropout 概念:隨機丟棄部分神經元,避免過擬合
# 訓練與驗證損失顯示
* 訓練損失 (train loss):模型在訓練集上的表現
* 驗證損失 (val loss):模型在未見過資料上的表現
* 損失數值格式化,例如限制小數三位,方便觀察
# Normalization 更正
* **Softmax 是一種正規化**,但不是唯一形式
* 還有其他多種正規化方法(如 batch normalization, layer normalization 等)
* Softmax:將 logits 指數化後除以總和,輸出機率分布
---
# 常見的正規化方法
* Min-Max Normalization:將資料縮放到固定範圍,通常是 [0,1]
* Z-Score Normalization:依據平均值與標準差標準化,使資料符合常態分布
* Decimal Scaling:透過小數點移動調整數值範圍
* Mean Normalization:以平均值為基準進行縮放,使平均值為 0
* Unit Vector Normalization:將向量縮放為長度 1,常用於文本或向量化資料
* Robust Scaling:使用中位數與四分位差縮放,對異常值更具抗性
* Power Transformations:透過函數(如 Box-Cox、Yeo-Johnson)使資料更接近常態分布
* Softmax:將 logits 轉換為機率分布,常用於模型輸出層而非輸入正規化
# Activation Functions 的必要性
* 單純堆疊線性層無法增加模型表達力,等效於單一線性轉換
* 激活函數提供非線性,使深層網路能學習更複雜的模式
# ReLU(Rectified Linear Unit)


* 輸入小於等於 0 → 輸出 0
* 輸入大於 0 → 輸出與輸入相同
* 提供稀疏性與非線性,計算效率高
# Sigmoid

* 函數形式:1 / (1 + exp(-x))
* 輸出範圍在 0 到 1 之間
* 常用於需要機率解釋的場景,如二元分類
* 缺點:容易梯度消失
# Tanh(雙曲正切函數)

* 輸出範圍在 -1 到 1
* 與 Sigmoid 類似,但中心化於 0
* 適合需要正負輸出的場景
* 缺點:仍存在梯度消失問題
# Sigmoid 與 Tanh 差異
* Sigmoid 輸出 0 到 1,適合機率分布
* Tanh 輸出 -1 到 1,更適合需要正負對稱的資料
* Tanh 在實踐中常比 Sigmoid 更常見
# Softmax 與 Sigmoid 的關聯
* Sigmoid 可視為二分類版本的 Softmax
* Softmax 用於多分類,將多個 logits 正規化為機率分布
* Sigmoid 輸出單一機率,Softmax 輸出整個類別分布
---
# Transformer 架構概觀
* 以自注意力為核心,透過多頭注意力、前饋網路與殘差連接堆疊而成
* 初期輸出隨機,透過訓練逐步學到能產生有意義文本的參數
* 目標是對序列中各 token 的重要性與相互關係進行建模
# 嵌入與位置編碼
* 將離散 token 轉為連續向量(embedding)
* 位置編碼提供序列次序資訊,與嵌入向量相加
* 位置與內容同時影響注意力分配
# 編碼器與解碼器堆疊

* 多層 encoder 後接多層 decoder,僅最後一層 encoder 輸出提供給所有 decoder 層
* 每層包含:多頭注意力 → Add & Norm → 前饋網路 → Add & Norm
* 解碼器額外包含一個「遮罩」的自注意力以避免看見未來
# 殘差連接與正規化
* 殘差連接保留早期資訊,減少深層網路遺忘與梯度消失
* Post-LN(Add 再 Norm)與 Pre-LN(Norm 再 Add)皆可,文中採用 Post-LN 並指其在小模型訓練較穩
# 多頭注意力(Multi-Head Attention)

* 多個頭並行學習不同語意視角,再拼接與線性投影
* GPU 友善的並行計算,提升表達能力與效率
* 每個頭擁有獨立可學參數,捕捉互補關係
# 自注意力與 K/Q/V

* Query:我在找什麼
* Key:我包含什麼
* Value:具體要傳遞的內容表徵
* 以線性層從輸入生成 K/Q/V,驅動自注意力匹配
# Scaled Dot-Product Attention 流程

* 使用 Q·Kᵀ 計分,分母以 √dₖ 做縮放防止值爆炸
* 對得分做 softmax 取得權重,與 V 相乘得到加權輸出
* 得分高的關係被放大,低關係被抑制
# 掩蔽注意力(Masked / Causal)
* 解碼器自注意力對未來位置加遮罩,禁止「偷看答案」
* 只允許使用當前與過去的上下文進行預測
# 線性變換的角色
* 在注意力頭輸出後以線性層進行彙整/降維或升維
* 在生成 K/Q/V 時以線性層做特徵投影,便於學習不同子空間
# 為何用 Softmax
* 將未歸一化分數轉為機率分布
* 強化高關聯配對的影響力,提升對關鍵關係的「信心」
# GPT(Decoder-only)與經典 Transformer 差異
* 移除整個編碼器與解碼器中的跨注意力,僅保留「遮罩自注意力 → 前饋 → Add & Norm」的解碼堆疊
* 輸出經線性層與 softmax 取得機率後進行抽樣生成
* 本質上是只用解碼端的自迴歸生成模型
----
# Self-Attention 概念示例
* 使用句子 *my dog has fleas* 說明注意力如何在詞與詞之間建立關聯
* 部分詞語關聯度高,例如「dog」與「fleas」→ 高注意力分數
* 部分關聯度低,例如「my」與「fleas」→ 低注意力分數
* 注意力矩陣對稱,模型會學習如何分配這些權重
# Transformer 架構總覽
* 輸入包含 Token Embeddings 與 Positional Encodings
* 由多層 Decoder Blocks 組成(GPT 為 Decoder-only 架構)
* 每個 Decoder Block 包含:多頭自注意力、殘差連接、前饋網路(Linear → ReLU → Linear)、再殘差連接
* Multi-head Attention:每個 Head 都有 Query、Key、Value 三個線性轉換
* Attention 計算:Query × Key → Scaled Dot Product → Masking → Softmax → 與 Value 相乘
* 最終輸出經線性層與 Softmax 生成機率分布
# SSH 與開發環境設定
* 使用 SSH 從 MacBook 連線至 Windows 桌機,進行遠端開發
* Windows 上安裝並啟動 CUDA 虛擬環境
* 使用 VS Code Remote Explorer 搭配 OpenSSH Server 進行遠端編輯
* 啟動 Jupyter Notebook,作為主要實驗與開發環境
# GPT 架構實作計畫
* 建立 `GPTLanguageModel` 類別,替代原本的 Bigram Model
* 導入必要的模組:Tokenizer、DataLoader、Train/Val Split、Loss Function 等
* 從高層(模型架構)逐步實作到底層(Attention 計算)
* 新增 Positional Embeddings:使用 `nn.Embedding` 來學習位置資訊,而非固定公式
* Token Embedding:將每個字元轉換為高維向量(例如長度 384),存儲語義特徵
# Decoder Layers 與 Block 結構
* 超參數 `n_layer` 控制 Decoder Block 的層數,例如設為 4
* 使用 `nn.Sequential` 建立多層 Block 串接
* 後續將實作 Block 類別,包含 Attention、Feedforward 與 Residual 結構
* Block 與 Layer 在此脈絡可視為同義詞,代表一個完整的 Transformer 組件
----
# LayerNorm 與輸出層
* `self.layer_norm_final` 放在網路最後,用於加速收斂、提升穩定性
* 輸出層為線性投影,將 Decoder 的輸出轉換到詞彙表大小,以便 softmax 計算機率分布
* Learned embeddings 比固定正弦/餘弦編碼更符合 GPT 的實務做法
# Forward Pass 流程
* Token Embedding:將輸入索引轉換為向量
* Positional Embedding:生成位置索引並轉換為向量
* 使用 broadcasting 將兩者相加得到最終輸入表示
* 輸入通過多層 Decoder Block
* 輸出經 LayerNorm 與線性層後轉為 softmax 可處理的機率分布
# Broadcasting 規則
* PyTorch 支援張量不同形狀的運算,自動延展維度
* Positional 與 Token Embedding 可相加,生成形狀為 `B × T × C` 的張量
* 熟悉 broadcasting 有助於避免 shape 錯誤
# 權重初始化與標準差
* 標準差衡量資料分散程度,過大代表不穩定,過小代表學不到東西
* 權重初始化需保持適中標準差,避免梯度爆炸或無法學習
* 專業實務中會使用初始化策略(如設定標準差 0.02)來穩定訓練
# Block 類別設計
* 每個 Block 對應 Transformer 的一個 Decoder Block
* `__init__` 初始化所需模組,`forward` 定義前向傳播
* 新增參數 `head_size`,表示每個注意力頭捕捉的特徵數
* `head_size = n_embed ÷ n_head`,例如 384 維度 ÷ 4 頭 = 每頭 96 維
* Block 包含多頭自注意力(multi-head attention)、殘差連接與前饋層,後續將逐步實作
---
# Block 架構流程
* Block 由自注意力層、殘差連接與 LayerNorm、前饋網路組成
* 執行順序為:自注意力 → Add & Norm → 前饋層 → Add & Norm
* LayerNorm 用於平滑特徵,幫助模型更穩定收斂
# Feed Forward 網路
* 採用 `nn.Sequential`:Linear → ReLU → Linear
* 第一層將 `n_embed` 映射至 `4 × n_embed`,再映射回 `n_embed`
* ReLU 將小於等於 0 的數值轉為 0,其餘保持不變
* Dropout 機制防止過擬合,常設為 0.2
# Multi-Head Attention
* 多頭注意力由多個 Head 並行計算組成
* 每個 Head 提取部分特徵(head_size = n_embed ÷ n_head)
* 最後將各 Head 輸出沿最後一維拼接,再投影回 `n_embed`
* Dropout 應用於投影後,增加正則化效果
# Head 與 Scaled Dot-Product Attention
* 每個 Head 定義三組線性轉換:Query、Key、Value
* 將輸入從 `n_embed` 投影到 `head_size`
* Attention 計算流程:Query × Keyᵀ → Scaling → Masking → Softmax → 加權 Value
* Masking 確保模型不會「偷看」未來的 Token
# Transpose 與矩陣乘法
* Transpose 將 Key 的最後兩個維度對調,確保能與 Query 進行矩陣乘法
* 計算後得到注意力權重矩陣,描述序列中各 Token 的關聯性
# Scaling 的作用
* Dot product 值可能過大,導致梯度消失或偏向單一 Token
* 使用 `1 / sqrt(head_size)` 將值縮放,避免數值過大
* 確保各 Head 的輸出權重分布平衡,提高模型對不同 Token 的關注能力
---
# Masked Fill 與 Softmax
* masked fill 將未來的 token 設為負無窮大,阻止模型「偷看」未來
* softmax 對最後一維做指數化與正規化,強化較大的注意力分數
* 結果是突顯關鍵 token,使模型更有信心分配注意力
# Dropout 與加權聚合
* softmax 輸出經過 Dropout,防止過擬合
* 最後與 value 向量相乘,形成加權輸出
# ModuleList 與 Sequential
* ModuleList 儲存多個模組,彼此獨立,不會像 Sequential 一層接一層執行
* 多頭注意力的頭雖獨立,但可在 GPU 上並行運算
* 平行性來自運算結構與 GPU 能力,而非 ModuleList 本身
# GPT 模型流程
* 輸入經 token embedding 與 position embedding
* 初始化權重,堆疊多個 decoder block
* 每個 block 包含:自注意力、LayerNorm、前饋網路、LayerNorm,採用 post-norm 結構
* 前饋網路結構為 Linear → ReLU → Linear → Dropout
* 多頭注意力將各頭輸出拼接再線性轉換
# 注意力運算步驟
* 每個頭生成 key、query、value
* 透過線性層產生並註冊參數
* 使用縮放點積計算注意力分數,遮罩未來位置
* 經 softmax 突顯重要 token,再乘上 value 完成加權聚合
# 超參數
* n_layer:decoder block 的數量
* n_heads:注意力頭數量
* n_embed:總嵌入維度,等於所有頭輸出拼接後的維度
* block size:序列長度
* batch size:每批訓練樣本數
* max iters:訓練迭代次數
* learning rate:學習率
* eval interval:評估間隔
* dropout:隨機丟棄比例
# 資料準備與訓練
* 使用 OpenWebText corpus 作為訓練語料
* 建立詞彙表與字典,計算 vocab size
* 設定批次與序列長度,依資源調整 block size 與 batch size
* 搭建訓練 loop,定期列印訓練與驗證 loss
* 模型訓練中,loss 會隨迭代逐步下降
---
# OpenWebText 與資料來源
* OpenWebText 是依照 Reddit 高分貼文的連結建立的開源語料庫
* 原始 WebText 不公開,OpenWebText 是研究者整理的替代版本
* 其他常見語料來源包括 Common Crawl(PB 級)、BooksCorpus 等
# 超參數與模型調整
* 批次大小與區塊大小影響有限,更關鍵的是學習率設定
* 常用學習率組合:3e-3、3e-4、1e-3、1e-4
* 增加 head 數與層數可提升模型捕捉複雜關係的能力
* 不同設定對 loss 下降有顯著影響,例:調整後 loss 從 ~3.1 降至 ~2.2
# 損失值與準確率關係
* 使用交叉熵損失(cross-entropy loss)
* 損失值約 1.01 對應約 35% 預測正確率
* 損失值 0.89 對應約 40% 正確率
# 大規模語料處理挑戰
* 小語料(如《綠野仙蹤》)可一次讀入 RAM
* OpenWebText 體積過大(數十 GB),無法一次讀入
* 必須逐步解壓 `.xz` 壓縮檔並處理
# 資料前處理流程
* 使用 Python 模組:`os`(檔案操作)、`lzma`(處理 .xz 壓縮)、`tqdm`(進度條)
* 定義函數收集資料夾內的 `.xz` 檔案清單
* 建立 vocab 集合,存儲語料中遇到的所有字元(唯一性保障)
* 每處理一個檔案:解壓 → 內容寫入輸出檔 → 新字元加入 vocab
# 輸出檔案與切分策略
* 支援單一輸出檔或多個輸出檔(output0, output1, …)
* 檔名需使用正確分隔符,建議用 `/` 或 `\\`
* 最終會輸出一份 vocab 檔保存字元集合
# 訓練與驗證集切分
* 建議直接建立兩份檔案:train(90%)、val(10%)
* 節省訓練過程中即時切分的計算成本
* 驗證檔大小接近理論值(訓練集大小 ÷ 9 ≈ 驗證集大小)
* 例:訓練集 38.9 GB,驗證集 4.27 GB,比例正確
---
# 建立資料批次
* vocab.txt 準備完成,需要修改 get_batch 函數
* 採用記憶體映射(memory mapping)處理大型文字檔,避免一次載入全部內容
* split 決定讀取 train 或 val 檔案,以二進位模式開啟並用 mmap 建立映射
# 讀取與切分資料
* 隨機選擇起始位置,範圍為 0 到 (檔案大小 - block_size × batch_size)
* 使用 seek 移動到起始位置,再讀取 block_size × batch_size 的資料長度
* 將讀取到的資料以 UTF-8 解碼,忽略錯誤並移除不必要的字元
* 最後將資料轉為整數化 token(torch.long)以便模型處理
# 訓練與驗證模式
* train 模式會啟用 Dropout,使部分神經元失效避免過擬合
* eval 模式關閉 Dropout,所有神經元都啟用,表現通常優於訓練時
# 實驗結果
* 訓練過程中 loss 從 10.5 快速下降到 2.38
* 驗證 loss 低於訓練 loss,顯示模型開始收斂並形成完整的特徵學習
# 模型儲存
* 使用 pickle 將模型序列化為 .pkl 檔案,包含架構與學習到的參數
* 透過 `pickle.dump(model, f)` 將模型存檔,副檔名通常為 .pkl
* 存檔後可重新載入模型,避免每次重新訓練
# 調整超參數
* 為加速實驗,將 n_head 減少為 1、n_layer 減少為 1
* 將 batch_size 從 64 減半為 32
* 訓練完成後產生 model.pkl 檔案(約 106MB),包含完整模型狀態
---
# 模型保存與載入
* 使用 `pickle` 儲存與載入模型參數
* 載入後可繼續訓練或推理
* 方便長時間訓練(可分段進行,避免中斷損失)
* 訓練後可部署於應用,例如聊天機器人
# GPU 記憶體管理
* Dedicated GPU memory:顯示卡上的 VRAM,速度最快
* Shared GPU memory:當 VRAM 不足時使用系統 RAM,效率較差
* 建議盡量保持運算在 dedicated GPU memory 中
* 影響 GPU 記憶體消耗的超參數:batch size、block size、embedding size、head 數量
* n layer 主要影響計算時間,不如 batch 與 block 對記憶體壓力大
# 超參數調校與 AutoTuning
* 每張 GPU 可承受的最佳超參數組合不同
* 可手動測試 batch size、block size 等,找到最適合的組合
* AutoTuning:自動嘗試多組超參數,篩選出不報錯且效能最佳的組合
* 常用於實務中,加速找到適合硬體的配置
# 命令列參數(Arguments)
* 使用 `argparse` 模組,允許從命令列動態輸入參數
* 範例:`python train.py --batch_size 32`
* 可避免每次修改程式碼才能調整超參數
* 支援多個參數,例如 batch size、學習率、block size
# 拆分訓練與推理程式
* `training.py`:包含模型架構、資料處理、訓練流程與保存功能
* `chat.py`:只負責載入已訓練模型,進行互動式推理
* chatbot 流程:輸入 prompt → 編碼成 tensor → 模型生成 → 解碼成文字 → 輸出結果
---
# 參數載入與架構一致性
* 重新載入模型時需確保超參數與網路架構與訓練時完全一致
* 未提供可載入的檔案時須處理為空狀態避免載入錯誤
* 以註解或條件分支控制「是否載入舊模型」的流程
# nn.Module 使用要點
* 含可學參數的所有類別與子類別皆需繼承 `nn.Module`
* 讓 PyTorch 能追蹤參數、正確進行前向傳遞與反向傳遞
* 缺少 `nn.Module` 會導致訓練與序列化流程出錯
# 生成長度與 block size
* `max_new_tokens + prompt_len` 不得超過 `block_size`
* 超過時以裁切機制保留最後 `block_size` 個 token 當作條件序列
* 解決因序列過長導致的維度不相容錯誤
# 預訓練 vs 微調
* 預訓練:輸入與目標等長,目標為輸入右移一位的自回歸學習
* 微調:輸入與輸出可不同長度,以任務型的 Prompt/Completion 配對訓練
* 在序列末尾加入 `</eos>`(終止 token),生成時遇到即停止
# 效能量測
* 以 `time.time()` 記錄區塊起訖時間,評估載入、儲存、估算 loss 等步驟耗時
* 透過超參數實驗觀察效能—收斂速度與運算時間的取捨
# 模型儲存
* 以 `pickle` 將模型序列化為 `.pkl`,包含結構與權重(單 GPU 環境適用)
* 訓練結束後存檔,日後可直接載入續訓或推論
* 檔案大小與網路深度、寬度及參數精度相關
# 量化(Quantization)
* 以 FP16 或 4-bit 等精度壓縮降低 VRAM 佔用
* 4-bit 以查表近似連續權重值,提升可訓規模
* 參考 QLoRA:在量化權重量上進行高效微調
# 梯度累積(Gradient Accumulation)
* 多步累積梯度後再更新參數,等效於更大 batch size
* 在 VRAM 受限時取得更穩定的梯度估計與泛化效果
# 模型與資料生態(Hugging Face)
* 提供多模態、CV、NLP、RL 等模型可直接下載使用
* 資料集如 OpenOrca(指令/對話)、OpenWebText、CommonCrawl、Wikipedia 等
* 可用於預訓練(大規模通用語料)與微調(高品質任務資料)
# 訓練觀察
* `model.train()` 啟用 Dropout;`model.eval()` 關閉 Dropout
* 驗證 loss 可能低於訓練 loss,表示模型在完整激活下表現更佳
* 透過定期列印步驟監控收斂趨勢與穩定性
---
# Terminology
* 語言模型(Language Model, LM):一種用於預測文字序列中下個詞的統計或深度學習模型
* 大型語言模型(Large Language Model, LLM):基於 Transformer 的深度神經網路,能處理大規模文本資料並生成語意相關內容
* 貝格模型(Bigram Model):只根據當前詞與前一個詞的條件機率來建構的語言模型
* 三元模型(Trigram Model):利用當前詞與前兩個詞的條件機率進行預測的語言模型
* 巨集語料庫(Corpus):訓練語言模型所需的大量文本資料集
* 資料前處理(Data Preprocessing):清理、標準化及切分原始文本資料的過程
* 標記化(Tokenization):將文字序列轉換為單詞或子詞單元的過程
* 詞彙表(Vocabulary):模型能識別與處理的所有詞或子詞集合
* 字典大小(Vocabulary Size):語言模型中可使用的獨特標記數量
* 嵌入層(Embedding Layer):將離散的詞元映射為連續的數值向量空間
* 向量表示(Vector Representation):用數值向量描述詞語或句子的方式
* 梯度下降(Gradient Descent):神經網路常用的最佳化演算法
* 損失函數(Loss Function):衡量模型預測與實際結果差異的函數
* 交叉熵損失(Cross-Entropy Loss):常用於分類與語言建模的損失函數
* 訓練資料(Training Data):用於讓模型學習模式的資料集
* 驗證資料(Validation Data):用於調整模型超參數與避免過擬合的資料集
* 測試資料(Test Data):用於最終評估模型性能的資料集
* 過擬合(Overfitting):模型在訓練資料上表現很好但泛化能力差的現象
* 欠擬合(Underfitting):模型過於簡單,無法學到資料模式的情況
* 批次大小(Batch Size):一次前向與反向傳播所處理的樣本數
* 學習率(Learning Rate):控制每次更新權重時步伐大小的超參數
* 優化器(Optimizer):調整模型權重以最小化損失函數的演算法
* 隨機梯度下降(Stochastic Gradient Descent, SGD):每次使用小批次資料進行更新的最佳化方法
* Adam 優化器(Adam Optimizer):一種結合動量與自適應學習率的優化方法
* PyTorch 框架(PyTorch Framework):常用的深度學習開源框架
* CUDA 加速(CUDA Acceleration):利用 NVIDIA GPU 提升訓練速度的技術
* 虛擬環境(Virtual Environment):隔離專案依賴的 Python 執行環境
* Anaconda 發行版(Anaconda Distribution):整合科學運算與機器學習的 Python 發行版
* Jupyter 筆記本(Jupyter Notebook):互動式程式撰寫與數據分析工具
* 內核(Kernel):負責執行 Jupyter Notebook 中 Python 程式的核心環境
* ipykernel 套件(ipykernel Package):使 Jupyter Notebook 與虛擬環境整合的模組
* Numpy 套件(Numpy Library):用於高效數值運算的 Python 函式庫
* Matplotlib 套件(Matplotlib Library):Python 中的可視化繪圖工具
* LZMA 壓縮(LZMA Compression):基於 Lempel–Ziv–Markov 演算法的壓縮方式
* Visual Studio Build Tools:Windows 上建置某些 Python 擴展套件所需的工具
* PyTorch Index URL:指定安裝含 GPU 支援版本 Torch 的來源
* Project Gutenberg:免費提供公版書籍文本的資料來源網站
* 文本清理(Text Cleaning):去除書籍中的標頭、版權聲明與雜訊內容的過程
* 分布式訓練(Distributed Training):將訓練任務分散到多個 GPU 或伺服器的技術
* 隨機初始化(Random Initialization):隨機設定模型初始權重的方法
* 熵(Entropy):描述不確定性的數學概念,與機率分布有關
* 機率分布(Probability Distribution):表示事件發生機率的函數或數列
* 條件機率(Conditional Probability):在已知事件 A 發生的條件下,事件 B 的機率
* 自迴歸模型(Autoregressive Model):透過歷史詞元逐步預測下一個詞的模型
* Transformer 架構(Transformer Architecture):基於注意力機制的深度學習模型架構
* 注意力機制(Attention Mechanism):動態分配輸入序列中各詞的重要性權重的技術
* 位置編碼(Positional Encoding):在 Transformer 模型中為序列資料提供順序資訊的方法
* 模型微調(Fine-tuning):在預訓練模型基礎上針對特定任務進行再訓練的過程
* 推論(Inference):使用已訓練模型對新資料進行預測的過程
* 語料庫(Corpus):語言模型訓練所使用的大型文本集合
* 字元級分詞器(Character-level Tokenizer):將文本切分為單個字元並轉換為整數索引的工具
* 詞級分詞器(Word-level Tokenizer):將文本按單詞切分並映射為索引的工具
* 子詞級分詞器(Subword Tokenizer):介於字元與單詞之間的分詞方式,常見於 BPE 或 SentencePiece
* 詞彙表(Vocabulary):語言模型中所有可用字元或詞的集合
* 編碼器(Encoder):將字元或詞轉換為整數索引的函數
* 解碼器(Decoder):將整數索引轉換回字元或詞的函數
* 雙字模型(Bigram Model):僅考慮當前字元與前一字元關係的語言模型
* 預測目標(Target):模型需要學習預測的正確標籤
* 輸入序列(Input Sequence):送入模型的文字編碼序列
* 偏移量(Offset):將輸入與目標對齊時的位移量
* 區塊大小(Block Size):訓練時選取的文字片段長度
* 訓練集(Training Set):用於模型參數學習的資料集
* 驗證集(Validation Set):用於評估模型泛化能力的資料集
* 過擬合(Overfitting):模型在訓練集表現良好但泛化能力不足的現象
* 泛化(Generalization):模型對未見資料的預測能力
* 獨熱編碼(One-hot Encoding):將索引轉換為稀疏向量表示的方法
* 張量(Tensor):多維數據陣列,是 PyTorch 等框架的核心資料結構
* 長整數型別(torch.long):PyTorch 中用於索引和離散標籤的數據型別
* 點積(Dot Product):線性代數運算,用於計算向量間相似度
* 矩陣乘法(Matrix Multiplication):多維陣列間的乘法運算
* 梯度下降(Gradient Descent):優化模型參數的常用方法
* 損失函數(Loss Function):衡量模型預測與目標差異的函數
* 機率分佈(Probability Distribution):對不同事件可能性的數學表示
* 條件機率(Conditional Probability):基於前一元素預測下一元素的機率
* 語言模型(Language Model):基於機率分佈建模文字序列的模型
* 神經網路(Neural Network):由多層線性與非線性運算組成的函數近似器
* 前饋網路(Feedforward Network):訊號僅沿單一方向傳播的神經網路
* 循環神經網路(Recurrent Neural Network):可處理序列資料的網路架構
* 注意力機制(Attention Mechanism):根據輸入序列中不同部分的重要性加權的機制
* Transformer:基於注意力機制的深度學習架構
* 嵌入向量(Embedding Vector):將離散字元或詞映射到連續空間的表示
* 批次(Batch):一次性送入模型的資料集合
* 迭代(Iteration):一次參數更新的過程
* 週期(Epoch):完整訓練資料被模型處理一次
* 機率語言建模(Probabilistic Language Modeling):基於機率分佈建構文字生成的技術
* 交叉熵損失(Cross-Entropy Loss):衡量機率分佈間差異的損失函數
* 樣本空間(Sample Space):所有可能輸出結果的集合
* 機率質量函數(Probability Mass Function):離散隨機變數的機率分佈函數
* 熱啟動(Warm Start):使用已有模型參數作為訓練起點
* 隨機初始化(Random Initialization):隨機設置模型初始參數的方法
* 向量化(Vectorization):將操作轉換為矩陣運算以加速計算
* 正則化(Regularization):避免過擬合的技術,如 L2 範數
* Dropout:隨機丟棄部分神經元以增強泛化能力的正則化方法
* 梯度爆炸(Gradient Explosion):梯度值過大導致訓練不穩定的問題
* 梯度消失(Gradient Vanishing):梯度值過小導致學習停滯的問題
* 優化器(Optimizer):更新模型參數的演算法,如 Adam 或 SGD
* 學習率(Learning Rate):控制參數更新幅度的超參數
* 自回歸模型(Autoregressive Model):逐步根據先前輸出生成下一步的模型
* 機率圖模型(Probabilistic Graphical Model):用圖結構表示隨機變數間依賴關係的模型
* 牆鐘時間(Wall Time):實際經過的時間,包括執行與等待
* CPU 時間(CPU Time):程式在 CPU 上實際執行指令所花的時間
* 奈秒(Nanosecond):十億分之一秒的時間單位
* 機率分佈(Probability Distribution):描述各事件發生機率的數學函數
* 取樣(Sampling):依據機率分佈隨機挑選樣本的過程
* 張量(Tensor):多維數據陣列,是 PyTorch 的基本資料結構
* 拼接(Concatenate):將多個張量在指定維度上合併
* 下三角矩陣(Lower Triangular Matrix):僅保留對角線及以下元素的矩陣
* 上三角矩陣(Upper Triangular Matrix):僅保留對角線及以上元素的矩陣
* 遮罩填充(Masked Fill):根據條件將指定元素替換為特定值
* 指數函數(Exponential Function):數學函數 (e^x),常用於機率與激活函數
* 負無窮大(Negative Infinity):數學中代表無限小的數,用於遮罩計算
* 維度轉置(Transpose):交換張量的維度順序
* 堆疊(Stack):沿著新維度堆疊多個張量
* 批次(Batch):一次輸入模型的一組資料樣本
* 線性層(Linear Layer):含權重與偏差的仿射轉換層
* 權重(Weight):神經網路中可學習的參數,用來調整輸入影響
* 偏差(Bias):加在輸入上的可學習常數,提升模型表現
* 模組(Module):PyTorch 中可包含子層或運算的抽象單元
* 容器(Container):可儲存並組合多個層的結構
* 順序容器(Sequential Container):按順序執行多個層的結構
* 隱藏層(Hidden Layer):輸入與輸出之間的中間層
* 輸入神經元(Input Neuron):接受外部輸入資料的節點
* 輸出神經元(Output Neuron):輸出最終結果的節點
* 激活函數(Activation Function):引入非線性,使模型能表達複雜關係
* Softmax 函數(Softmax Function):將數值轉換為總和為 1 的機率分佈
* 正規化(Normalization):將數值縮放到統一範圍的過程
* 損失函數(Loss Function):衡量模型預測與真實值差距的函數
* 反向傳播(Backpropagation):根據梯度更新模型參數的演算法
* 梯度(Gradient):損失函數對參數的偏導數
* 優化器(Optimizer):用於更新權重與偏差的演算法
* 學習率(Learning Rate):控制參數更新幅度的超參數
* 遮罩(Masking):防止模型存取不應該使用的資訊
* 自回歸模型(Autoregressive Model):基於過去輸出預測未來輸出的模型
* 序列建模(Sequence Modeling):針對時間或順序數據進行建模的技術
* 查詢(Query):在注意力機制中用於比對鍵的向量
* 鍵(Key):在注意力機制中與查詢比對的向量
* 值(Value):在注意力機制中與鍵相關聯的輸出向量
* 注意力機制(Attention Mechanism):根據權重聚焦於重要資訊的運算
* 遮罩注意力(Masked Attention):限制模型僅能關注過去資訊的注意力
* 指數移動平均(Exponential Moving Average):加權平均的一種方式,常用於平滑化
* 正則化(Regularization):防止模型過擬合的技術
* 過擬合(Overfitting):模型過度貼合訓練資料而泛化能力不足
* 權重初始化(Weight Initialization):設定模型初始參數的方法
* 梯度消失(Vanishing Gradient):梯度過小導致學習困難的問題
* 梯度爆炸(Exploding Gradient):梯度過大導致不穩定的問題
* 批次正規化(Batch Normalization):在批次內正規化輸入以加速訓練
* 參數共享(Parameter Sharing):在多處使用同一組權重以減少參數
* 向量化(Vectorization):將運算轉換為矩陣運算以提升效率
* 張量廣播(Tensor Broadcasting):在運算時自動擴展張量形狀以匹配
* 百分比時間(Percentage Time):量測程式區塊執行耗時的工具
* CPU 時間(CPU Time):實際在 CPU 上執行運算所耗費的時間,不含等待
* 牆鐘時間(Wall Time):實際等待程式完成所耗費的時間,包含等待與執行
* 機率分佈(Probability Distribution):描述不同結果出現機率的數學函數
* 多項分佈抽樣(torch.multinomial):根據機率分佈抽樣索引的 PyTorch 函數
* 拼接(Concatenate):將多個張量沿指定維度合併為一個
* torch.cat:用於拼接張量的 PyTorch 函數
* 下三角矩陣(Lower Triangular Matrix):主對角線以下的元素非零,其他為零的矩陣
* torch.tril:生成或保留張量的下三角部分的 PyTorch 函數
* 上三角矩陣(Upper Triangular Matrix):主對角線以上的元素非零,其他為零的矩陣
* torch.triu:生成或保留張量的上三角部分的 PyTorch 函數
* 遮罩填充(Masked Fill):依條件將張量元素替換為指定值的操作
* 負無窮大(Negative Infinity):數值極限,用於遮罩計算時令結果趨近於零
* 指數函數(Exponential Function):以常數 (e \approx 2.71) 為底的冪次運算
* torch.exp:計算張量中每個元素的指數值的 PyTorch 函數
* 轉置(Transpose):交換張量指定維度以改變形狀的操作
* torch.transpose:進行張量維度轉置的 PyTorch 函數
* torch.stack:將多個張量堆疊成新的維度的 PyTorch 函數
* 批次堆疊(Batch Stacking):將多個序列樣本堆疊以形成批次輸入
* 批次(Batch):一次送入模型的資料集合
* nn.Linear:PyTorch 中的線性層,進行加權和偏置的線性變換
* 權重參數(Weight Parameter):線性層中可學習的乘法係數
* 偏置參數(Bias Parameter):線性層中可學習的加法常數
* 可學習參數(Learnable Parameters):模型透過訓練更新的數值
* nn.Module:PyTorch 神經網路層與模型的基底類別
* 順序容器(nn.Sequential):按順序堆疊多層網路的容器
* 線性變換(Linear Transformation):輸入向量與權重矩陣相乘並加上偏置的運算
* 隱藏層(Hidden Layer):介於輸入層與輸出層之間的神經網路層
* 神經元(Neuron):網路中的基本單元,執行加權輸入與非線性變換
* 輸入維度(Input Dimension):模型接收的特徵數量
* 輸出維度(Output Dimension):模型輸出的特徵數量
* 形狀一致性(Shape Consistency):矩陣或張量相乘時需滿足的維度規則
* 維度(Dimension):張量的軸數,例如二維矩陣或三維立方體
* Softmax 函數(Softmax Function):將實數向量轉換為機率分佈的函數
* 指數正規化(Exponential Normalization):Softmax 的核心過程,先取指數再除以總和
* 機率向量(Probability Vector):Softmax 輸出的各類別機率集合
* 分母正規化項(Normalization Term):Softmax 中所有指數值的總和
* 浮點數(Floating Point Number):可表示小數的數據型別
* 激活函數(Activation Function):引入非線性能力的數學函數
* 指數增長(Exponential Growth):數值隨指數函數迅速增大的現象
* 單位 Softmax(Standard Softmax):最常用的 Softmax 定義形式
* 遮罩機制(Masking Mechanism):避免模型使用未來資訊的技術
* 歷史依賴(Historical Dependency):模型僅依據已出現的序列進行預測
* 上下文窗口(Context Window):模型可見的序列範圍
* 機率抽樣(Probability Sampling):根據分佈隨機選取元素的方法
* 預測序列(Predicted Sequence):模型逐步生成的輸出字元或詞序列
* 參數學習(Parameter Learning):透過誤差反向傳播更新權重與偏置的過程
* 向量歸一化(Vector Normalization):將向量縮放至總和為 1 或範數為 1 的過程
* 線性層堆疊(Stacked Linear Layers):多層線性層按序組合以提升模型能力
* 功能介面(Functional API):PyTorch 中不帶狀態的函數操作集合
* Softmax 函數(Softmax Function):將向量轉換為總和為 1 的機率分佈
* 維度參數(Dimension Argument):指定在哪個軸上進行操作的參數
* 嵌入層(Embedding Layer):將離散索引映射為稠密向量表示的層
* 詞彙表大小(Vocabulary Size):資料集中獨特詞或字元的數量
* 嵌入維度(Embedding Dimension):嵌入向量的長度,表示儲存特徵的維度數
* 稠密向量(Dense Vector):每個維度皆有數值的向量表示
* 向量表示(Vector Representation):將文字或符號轉換為數值形式的表達
* 可學習參數(Learnable Parameters):透過訓練更新的權重與偏差
* 多層感知機(Multilayer Perceptron, MLP):由多層線性層與激活函數組成的神經網路
* 權重矩陣(Weight Matrix):神經網路中進行線性轉換的矩陣
* 偏差向量(Bias Vector):在線性轉換後加上的向量偏移量
* 矩陣乘法(Matrix Multiplication):兩個矩陣相乘得到新矩陣的運算
* 點積(Dot Product):兩個向量對應元素相乘後加總的結果
* 行(Row):矩陣的水平元素集合
* 列(Column):矩陣的垂直元素集合
* 矩陣形狀(Matrix Shape):矩陣的行數與列數
* 兼容性條件(Compatibility Condition):矩陣相乘需滿足的維度條件
* 矩陣維度(Matrix Dimension):矩陣的行數與列數標記
* 單精度浮點數(Float32):PyTorch 中常用的數值資料型態
* GPU 加速(GPU Acceleration):利用圖形處理器平行運算提升效能
* 張量初始化(Tensor Initialization):建立張量並指定初始值的過程
* at 運算子(@ Operator):Python 中矩陣乘法的簡寫符號
* 矩陣相乘函數(torch.matmul):PyTorch 提供的矩陣乘法函數
* 計算圖(Computation Graph):描述運算步驟與依賴關係的資料結構
* 線性代數(Linear Algebra):涉及矩陣與向量運算的數學領域
* 特徵空間(Feature Space):向量化資料所處的高維空間
* 稀疏表示(Sparse Representation):僅儲存非零值的資料結構
* 稠密表示(Dense Representation):完整儲存所有元素的資料結構
* 參數更新(Parameter Update):透過優化器調整權重與偏差的過程
* 高維向量(High-dimensional Vector):包含多個特徵的數值表示
* 索引查找(Index Lookup):利用索引快速存取嵌入向量
* 向量空間模型(Vector Space Model):用向量表示符號的數學模型
* 語意表示(Semantic Representation):用向量捕捉文字語意資訊
* 隱藏表示(Hidden Representation):中間層學到的特徵向量
* 超參數(Hyperparameter):需手動設定的模型控制參數
* 自然語言處理(Natural Language Processing, NLP):讓機器理解與生成語言的技術
* 字元級建模(Character-level Modeling):以字元作為基本單位的序列建模方法
* 單詞級建模(Word-level Modeling):以單詞作為基本單位的序列建模方法
* 子詞級建模(Subword-level Modeling):以詞片段作為基本單位的序列建模方法
* 參數矩陣(Parameter Matrix):模型內部存放可學習參數的矩陣
* 線性變換(Linear Transformation):輸入與權重相乘並加上偏差的過程
* 神經網路層(Neural Network Layer):神經網路的基本組成單元
* 矩陣相容性(Matrix Compatibility):矩陣相乘需滿足的維度一致條件
* 計算效率(Computational Efficiency):演算法執行所需時間與資源的衡量
* 並行運算(Parallel Computing):同時執行多個計算任務的方法
* 記憶體佔用(Memory Footprint):運算或模型使用的記憶體大小
* 自動微分(Automatic Differentiation):自動計算梯度的技術
* 矩陣運算(Matrix Operations):涉及矩陣加法、乘法等操作的集合
* 浮點數(Floating Point Number):帶有小數部分的數值型別,用於高精度運算
* 整數(Integer):不帶小數的數值型別
* 資料型別(Data Type):數據在程式中的表示形式,例如 int64 或 float32
* torch.randint:生成整數隨機張量的 PyTorch 函數
* torch.rand:生成浮點隨機張量的 PyTorch 函數
* dtype:張量的資料型別屬性,例如 torch.int64、torch.float32
* 型別轉換(Type Casting):將一種資料型別轉換為另一種,例如 int 轉 float
* .float():將張量轉換為浮點數型別的方法
* .long():將張量轉換為整數(int64)型別的方法
* 權重矩陣(Weight Matrix):神經網路中可學習的權重參數矩陣
* CUDA:NVIDIA 的平行運算平台,用於 GPU 加速深度學習
* to(device):將張量移動到指定的裝置(CPU 或 GPU)的方法
* 超參數(Hyperparameter):需人工設定的參數,如 batch size 或 block size
* get_batch 函數(Get Batch Function):生成一組輸入與目標樣本的函數
* 偏移索引(Offset Index):目標序列相對於輸入序列的位移量
* nn.Module:PyTorch 所有神經網路層的基底類別
* 子類化(Subclassing):繼承父類別並實現自定義功能的方式
* forward 函數(Forward Function):定義模型前向傳播邏輯的方法
* 學習參數(Learnable Parameters):能透過訓練更新的模型內部數值
* 損失函數(Loss Function):衡量模型預測與實際標籤差異的函數
* 負對數似然(Negative Log Likelihood):常見的分類任務損失函數
* 梯度下降(Gradient Descent):透過梯度更新參數以最小化損失的優化方法
* 導數(Derivative):描述函數變化率的數學運算
* 局部最小值(Local Minimum):損失函數在某區域內的最低點
* 全域最小值(Global Minimum):損失函數的絕對最低點
* torch.optim:PyTorch 優化器模組
* Adam 優化器(Adam Optimizer):結合動量與自適應學習率的優化方法
* AdamW 優化器(AdamW Optimizer):Adam 的改良版本,加入權重衰減
* 權重衰減(Weight Decay):限制權重值過大以提升泛化能力的正則化技術
* 學習率(Learning Rate):控制參數更新步幅大小的超參數
* 動量(Momentum):在梯度更新中加入歷史方向以加速收斂的技巧
* 內積更新(Parameter Update):根據梯度與學習率修改參數的過程
* 嵌入表(Embedding Table):將索引映射為連續向量表示的查找表
* nn.Embedding:PyTorch 的嵌入層,用於將索引轉換為向量
* 正規化(Normalization):將數值調整到相對比例一致的過程
* 機率矩陣(Probability Matrix):每個輸入對應的下一個可能輸出機率集合
* 開始符號(Start Token):表示序列起點的特殊符號
* 結束符號(End Token):表示序列終點的特殊符號
* 機率分布行(Row Probability Distribution):表示某輸入下各輸出的條件機率
* 向量查找(Vector Lookup):利用索引檢索嵌入向量的過程
* 類別數(Number of Classes):模型可輸出的不同標籤數量
* 批次生成(Batch Generation):將多個樣本組合成一次性輸入模型的過程
* GPU 平行運算(GPU Parallel Computing):利用 GPU 加速批次資料運算
* 正向傳播(Forward Propagation):輸入經過網路層計算輸出結果的過程
* 反向傳播(Backward Propagation):透過誤差計算梯度並更新參數的過程
* 最佳化器(Optimizer):控制參數更新方式的演算法
* logits(對數機率):模型在 softmax 前的原始輸出值,用於計算損失與機率
* 邏輯值(Logits):模型輸出的未經 Softmax 的浮點數向量
* 正規化(Normalization):將數值按比例縮放,使其總和為 1 或落在特定範圍
* 概率分佈(Probability Distribution):描述事件發生機率的函數
* 時間維度(Time Dimension):序列數據中代表步長或時間步的維度
* 批次維度(Batch Dimension):一次處理的樣本數量對應的維度
* 通道維度(Channel Dimension):通常代表詞彙表大小或特徵數量的維度
* 張量重塑(Tensor Reshape):改變張量的形狀但不改變其數值的操作
* View 函數(torch.view):PyTorch 中用於快速重塑張量形狀的函數
* 形狀屬性(Tensor Shape):張量各維度的大小
* 交叉熵損失(Cross-Entropy Loss):用於分類任務的損失函數
* 前向傳播(Forward Pass):將輸入數據經過模型得到輸出的過程
* 反向傳播(Backward Pass):計算損失對參數的梯度並更新的過程
* 目標張量(Target Tensor):代表真實標籤或期望輸出的張量
* 負索引(Negative Indexing):從序列末尾開始反向索引的方式
* 抽樣(Sampling):根據分佈隨機選擇元素的操作
* 拼接(Concatenate):將多個張量沿指定維度合併
* 生成函數(Generate Function):語言模型中逐步產生新 token 的函數
* GPU 遷移(Model.to(device)):將模型移至 GPU 或 CPU 執行的操作
* 最佳化器(Optimizer):根據梯度更新參數的演算法
* AdamW 優化器(AdamW Optimizer):帶有權重衰減的 Adam 優化演算法
* 權重衰減(Weight Decay):避免過擬合的一種正則化方法
* 學習率(Learning Rate):控制參數更新幅度的超參數
* 最大迭代次數(Max Iterations):訓練過程的迭代步數上限
* 訓練批次(Training Batch):在一次迭代中輸入模型的一組樣本
* 零梯度(Zero Grad):清除前一步的梯度,避免累積
* 梯度累積(Gradient Accumulation):跨多步累加梯度以模擬大批次
* 損失反向傳播(loss.backward):計算損失對模型參數的梯度
* 優化步驟(optimizer.step):更新模型參數的操作
* 長整數型(torch.long):PyTorch 中的 int64 整數型資料
* 浮點數型(Float Type):支持小數點的數值型態
* 梯度下降(Gradient Descent):利用梯度最小化損失函數的方法
* 分佈取樣(Distribution Sampling):依機率分佈生成樣本
* 梯度清空模式(set_to_none):將梯度設為 None 以節省記憶體
* 遞迴神經網路(Recurrent Neural Network, RNN):能處理序列上下文的神經網路
* 語言模型(Language Model):預測序列中下一個 token 的模型
* 上下文(Context):當前生成或預測時依據的歷史資訊
* 獨熱編碼(One-Hot Encoding):將類別轉換為稀疏向量的方式
* 損失值(Loss Value):量化模型預測與真實答案差異的數值
* 訓練迴圈(Training Loop):反覆進行前向傳播、反向傳播與更新的流程
* 隨機初始化(Random Initialization):隨機生成初始參數值的方法
* 機率取樣(Probabilistic Sampling):依 Softmax 輸出的機率隨機選擇輸出
* 機率最大化(Argmax Prediction):選擇機率最高的輸出作為預測
* 梯度爆炸(Exploding Gradients):梯度值過大導致不穩定的問題
* 梯度消失(Vanishing Gradients):梯度過小導致學習停滯的問題
* 訓練集(Training Set):用於訓練模型的數據子集
* 驗證集(Validation Set):用於調整超參數的數據子集
* 測試集(Test Set):用於評估模型泛化能力的數據子集
* 隨機梯度下降(Stochastic Gradient Descent, SGD):逐批更新的梯度下降方法
* 小批量(Mini-Batch):訓練時使用的數據分塊
* 模型收斂(Model Convergence):訓練過程中損失逐漸穩定下降的現象
* 過擬合(Overfitting):模型過度學習訓練數據而泛化不足
* 平均平方誤差(Mean Squared Error, MSE):迴歸問題常用的損失函數,計算預測值與實際值的平方差平均
* 迴歸(Regression):預測連續輸出的機器學習任務
* 最佳擬合線(Best Fit Line):迴歸中用於逼近數據趨勢的直線或曲線
* 損失函數(Loss Function):衡量模型預測與真實值之間差距的函數
* 梯度下降(Gradient Descent):透過沿梯度方向調整參數以最小化損失的優化方法
* 權重(Weight):神經網路中調整輸入訊號影響力的可學習參數
* 偏置(Bias):神經網路中調整輸出平移的可學習參數
* 動量(Momentum):在梯度下降中加入前幾次更新的影響以加速收斂
* 動量係數(Momentum Coefficient):控制歷史梯度與當前梯度的比例,常設為 0.9
* 振盪(Oscillation):參數在收斂過程中來回擺動的現象
* RMSProp:根據梯度平方的移動平均自適應調整學習率的優化器
* 移動平均(Moving Average):逐步更新平均值以平滑變動的技術
* Adam 優化器(Adam Optimizer):結合動量與 RMSProp 的自適應學習率優化方法
* AdamW 優化器(AdamW Optimizer):Adam 的改良版本,加入權重衰減以增強泛化
* 權重衰減(Weight Decay):正則化方法,限制權重過大以避免過擬合
* 泛化能力(Generalization):模型在未見資料上的表現能力
* 學習率(Learning Rate):控制參數更新幅度的超參數
* 超參數(Hyperparameter):由人工設定的模型控制參數,例如 batch size、learning rate
* 迭代次數(Iteration):模型參數更新的一次循環
* 收斂(Convergence):模型訓練過程中逐步趨近最佳解的現象
* 模組運算子(Modulo Operator):計算整數除法的餘數,用於控制迴圈週期事件
* 評估間隔(Evaluation Interval):固定次數迭代後進行評估的策略
* @torch.no_grad:停用梯度計算以降低記憶體和運算開銷的裝飾器
* model.train():將模型設置為訓練模式,啟用 Dropout 和 BatchNorm
* model.eval():將模型設置為驗證模式,停用 Dropout 並固定 BatchNorm
* Dropout:隨機丟棄部分神經元的正則化技術,避免過擬合
* 批次正規化(Batch Normalization):對每個批次數據進行標準化以加速訓練
* 過擬合(Overfitting):模型過度擬合訓練數據而在測試數據上表現不佳
* 驗證集(Validation Set):用於評估模型泛化能力的資料集
* 訓練集(Training Set):用於更新模型參數的資料集
* 預測準確率(Prediction Accuracy):模型正確預測比例的指標
* item():將張量中的單一值轉換為 Python 數值的函數
* mean():計算張量中所有元素平均值的函數
* 日誌報告(Logging):在訓練過程中輸出模型狀態或損失的過程
* 格式化輸出(Formatted Output):控制數字顯示精度與格式的技術
* F 字串(F-String):Python 中用於內嵌變數的字串格式化方法
* 損失收斂曲線(Loss Convergence Curve):繪製損失隨訓練步驟下降的圖表
* 評估函數(Evaluation Function):計算並回報模型表現的函數
* 梯度計算圖(Computation Graph):PyTorch 用於追蹤張量運算以反向傳播的結構
* 反向傳播(Backpropagation):根據損失函數計算梯度並更新參數的過程
* 正則化(Regularization):避免模型過度擬合的技術集合
* 最佳化器(Optimizer):控制參數更新策略的演算法
* 繪圖工具(Visualization Tool):如 Desmos,用於數學函數視覺化
* 評估損失(Evaluation Loss):在驗證資料上計算的損失值
* 訓練損失(Training Loss):在訓練資料上計算的損失值
* 數值穩定性(Numerical Stability):避免計算中溢位或精度喪失的性質
* 小數精度(Decimal Precision):輸出數字的小數位數控制
* 正規化技術(Normalization Techniques):不同形式的數據縮放或標準化方法
* Softmax 正規化(Softmax Normalization):將向量轉換為機率分佈的一種方法
* 最小最大正規化(Min-Max Normalization):將數據縮放到 [0,1] 範圍內
* Z 分數標準化(Z-score Normalization):使用平均值與標準差將數據轉換為標準常態分佈
* 小數標度正規化(Decimal Scaling Normalization):透過移動小數點縮放數值
* 平均值正規化(Mean Normalization):數據減去平均值後再除以範圍
* 單位向量正規化(Unit Vector Normalization, L2 Normalization):將向量長度縮放為 1
* 強健縮放(Robust Scaling):使用中位數與四分位數範圍縮放數據
* 功率轉換(Power Transformation):透過 Box-Cox 或 Yeo-Johnson 方法使數據更接近常態分佈
* Softmax 正規化(Softmax Normalization):將 logits 轉換為機率分佈
* 標準化(Standardization):將數據轉換為零均值與單位標準差
* 白化處理(Whitening):將數據線性轉換為零均值、單位方差且變量間不相關
* 批次正規化(Batch Normalization):對每個小批量數據正規化以穩定訓練
* 層正規化(Layer Normalization):對每個樣本的特徵維度進行正規化
* 權重正規化(Weight Normalization):重新參數化權重向量以改善收斂
* 群體正規化(Group Normalization):將特徵分組後再進行正規化
* 實例正規化(Instance Normalization):對每個樣本單獨進行正規化,常用於影像風格轉換
* 卷積正規化(Convolutional Normalization):針對卷積層特徵圖的正規化技巧
* 線性層正規化(Linear Layer Normalization):針對全連接層的正規化方法
* 激活函數(Activation Function):引入非線性轉換的數學函數
* 修正線性單元(ReLU, Rectified Linear Unit):將小於零的值設為零,大於零的值保持不變
* 漏斗 ReLU(Leaky ReLU):在負數區域保留小斜率避免梯度消失
* 參數化 ReLU(PReLU):允許負數區域斜率可學習的激活函數
* 指數線性單元(ELU, Exponential Linear Unit):在負數區域平滑過渡的激活函數
* Sigmoid 函數(Sigmoid Function):輸出範圍為 [0,1] 的 S 形曲線
* 雙曲正切函數(Tanh Function):輸出範圍為 [-1,1] 的 S 形曲線
* Softplus 函數(Softplus Function):ReLU 的平滑近似形式
* Swish 函數(Swish Function):自門控的平滑激活函數,性能優於 ReLU
* GELU 函數(Gaussian Error Linear Unit):結合高斯分佈特性的激活函數
* Maxout 函數(Maxout Function):選取多個線性函數的最大值作為輸出
* 恒等函數(Identity Function):輸出等於輸入的線性函數
* 非線性轉換(Nonlinear Transformation):將線性組合轉換為非線性表達
* S 形曲線(S-shaped Curve):Sigmoid 與 Tanh 的函數形狀特徵
* 梯度消失(Vanishing Gradient):梯度逐漸變小導致無法更新參數
* 梯度爆炸(Exploding Gradient):梯度過大導致訓練不穩定
* 正則化(Regularization):降低過擬合風險的技術集合
* L1 正則化(L1 Regularization):增加稀疏性,讓部分權重變為零
* L2 正則化(L2 Regularization):懲罰權重平方,防止權重過大
* Dropout 技術(Dropout):隨機丟棄部分神經元以避免過擬合
* 隨機失活(Random Deactivation):Dropout 的另一種說法
* 激活梯度(Activation Gradient):激活函數輸出對輸入的導數
* 非飽和區域(Non-Saturated Region):激活函數輸出梯度不趨近零的區域
* 飽和區域(Saturated Region):激活函數輸出梯度趨近零的區域
* 阻塞梯度(Dead Neuron):ReLU 輸入長期小於零導致神經元不再更新
* 機率歸一化(Probability Normalization):將分數轉換為機率分佈的過程
* 指數平滑(Exponential Smoothing):利用指數加權平均平滑數據
* 特徵縮放(Feature Scaling):調整特徵範圍以改善訓練效果
* 特徵中心化(Feature Centering):將特徵平移使其平均值為零
* 資料標準化(Data Standardization):將資料轉換為統一分佈
* 機率壓縮(Probability Calibration):調整模型輸出機率更貼近真實分佈
* 熱點編碼正規化(One-Hot Normalization):將離散類別轉換為等長稀疏向量
* 層間正規化(Inter-layer Normalization):在不同層間應用的正規化技巧
* 梯度裁剪(Gradient Clipping):限制梯度範圍以避免爆炸
* 變壓器架構(Transformer Architecture):以注意力機制為核心的序列建模架構
* 自注意力(Self-Attention):序列內元素彼此計分以聚焦關聯資訊的機制
* 多頭注意力(Multi-Head Attention):並行多組注意力頭以學習不同語義視角
* 查詢(Query):用來「詢問」其他位置資訊的向量表示
* 鍵(Key):被查詢匹配的向量表示,決定關聯性
* 值(Value):隨注意力權重加權後輸出的資訊向量
* 縮放點積注意力(Scaled Dot-Product Attention):以點積計分並除以 (\sqrt{d_k}) 後經 Softmax 的注意力
* 縮放因子(Scaling Factor):用 (1/\sqrt{d_k}) 抑制大維度點積帶來的數值爆炸
* 注意力分數(Attention Score):Query 與 Key 點積後的相似度度量
* 注意力機率(Attention Probabilities):對分數做 Softmax 後的權重分佈
* 位置編碼(Positional Encoding):為序列位置注入可學習/固定的位置信息
* 正弦位置編碼(Sinusoidal Positional Encoding):以正弦/餘弦函數生成的固定位置特徵
* 可學習位置嵌入(Learnable Positional Embedding):由參數學得的位置信息向量
* 編碼器層(Encoder Layer):自注意力與前饋網路堆疊的特徵抽取單元
* 解碼器層(Decoder Layer):含遮罩自注意力與交叉注意力的生成單元
* 交叉注意力(Cross-Attention):解碼器用編碼器輸出作 Key/Value 的注意力
* 因果遮罩(Causal Mask):禁止關注未來位點以維持自回歸性
* 下三角遮罩(Lower-Triangular Mask):以下三角矩陣實作的因果遮罩
* 注意力遮罩(Attention Mask):在計分或 Softmax 前屏蔽不合法位置
* 殘差連接(Residual Connection):將輸入加回輸出以緩解梯度消失
* 加和與正規化(Add & Norm):殘差相加後施以層正規化的模式
* 前正規化(Pre-Norm):先層正規化再進入子層運算的架構變體
* 後正規化(Post-Norm):子層運算後再做層正規化的原始設計
* 層正規化(Layer Normalization):對特徵維度做標準化以穩定訓練
* 位置前饋網路(Position-wise Feed-Forward Network):逐位置的兩層線性+非線性變換
* 非線性激活(Nonlinear Activation):為模型引入非線性表達能力的函數
* GELU(GELU):以高斯誤差函數近似的平滑激活函數
* ReLU(ReLU):將負值截斷為零的簡單激活函數
* 投影矩陣(Projection Matrix):將向量映射至新空間的線性權重
* 線性投影(Linear Projection):以線性層生成 Q/K/V 或合併輸出的操作
* 頭數(Number of Heads):多頭注意力中並行注意力頭的個數
* 模型維度(Model Dimension, d_model):Transformer 內部特徵表示的基準維度
* 查詢/鍵維度(Key/Query Dimension, d_k):Q/K 向量長度,影響縮放係數
* 值維度(Value Dimension, d_v):V 向量長度,決定輸出通道
* 參數共享(Weight Tying):輸入與輸出嵌入權重共用以減少參數
* 詞嵌入(Token Embedding):將離散標記映射為連續向量表示
* 輸出嵌入(Output Embedding):輸出側與詞彙表對應的向量表示
* 自回歸建模(Autoregressive Modeling):依序條件於過去輸出下一標記
* 生成溫度(Temperature):在 Softmax 前縮放 logits 以調節隨機性
* Top-k 取樣(Top-k Sampling):僅在最高機率的 k 個標記中隨機抽樣
* 核心取樣(Top-p/Nucleus Sampling):在累積機率達 p 的子集中抽樣
* 教師強制(Teacher Forcing):訓練時以真實標記作為下一步條件
* 序列長度(Sequence Length):輸入或生成序列的實際步數
* 上下文長度(Context Length):模型可同時關注的最大步數
* 位置偏置(Positional Bias):以偏置函數替代顯式位置編碼的做法
* 相對位置編碼(Relative Positional Encoding):用相對距離建模位置關係
* 可訓練參數量(Parameter Count):模型中所有可學習權重與偏置的總數
* 深度(Depth):編碼器/解碼器層堆疊的層數
* GPT 解碼器(GPT Decoder):只含解碼器堆疊的自回歸 Transformer
* 最終線性層(Final Linear Layer):將隱狀態映射到詞彙表 logits 的輸出層
* 注意力機制(Attention Mechanism):透過加權方式建模序列中元素間的相關性
* 自注意力(Self-Attention):輸入序列中的每個元素與自身及其他元素計算關聯性
* 查詢向量(Query Vector, Q):用於發送查詢訊號尋找關聯的向量表示
* 鍵向量(Key Vector, K):用於比對查詢的向量表示
* 值向量(Value Vector, V):與鍵對應,存儲實際資訊的向量表示
* 點積注意力(Dot-Product Attention):透過 Q 與 K 的內積計算關聯分數
* 縮放點積注意力(Scaled Dot-Product Attention):對點積結果除以 √d 防止梯度爆炸
* 掩碼機制(Masking):遮蔽未來資訊避免模型「偷看」答案
* 注意力權重(Attention Weights):經 softmax 正規化後的相關性分數
* 注意力圖(Attention Map):顯示序列中元素間注意力強度的矩陣
* 多頭注意力(Multi-Head Attention):並行多組注意力機制以捕捉不同語義特徵
* 頭(Head):單一注意力計算單元
* 並行注意力(Parallel Attention):同時計算多個注意力頭的輸出
* 拼接操作(Concatenation):將多個頭的結果組合成一個大向量
* 投影層(Projection Layer):將拼接後的輸出映射回固定維度
* 編碼器(Encoder):將輸入序列轉換為高維表示的模組
* 解碼器(Decoder):利用編碼結果與自注意力生成輸出的模組
* 編碼器-解碼器注意力(Encoder-Decoder Attention):解碼器查詢編碼器輸出
* 解碼器塊(Decoder Block):解碼器中的基本結構單元,包含注意力與前饋層
* 殘差連接(Residual Connection):輸入與輸出相加以避免梯度消失
* 層正規化(Layer Normalization):對每層輸出正規化加速收斂
* 前饋網路(Feed-Forward Network):線性-非線性-線性結構處理特徵
* 線性層(Linear Layer):全連接層進行線性變換
* 非線性函數(Nonlinear Function):如 ReLU 引入非線性表達能力
* ReLU 激活函數(Rectified Linear Unit):輸入小於 0 設為 0,大於 0 保持不變
* 殘差學習(Residual Learning):透過捷徑連接減少深層網路訓練困難
* 遮罩注意力(Masked Attention):限制注意力僅關注已生成的部分
* 順序資訊(Positional Information):標記序列中每個元素的位置
* 位置編碼(Positional Encoding):用正弦/餘弦函數加入位置信息
* 可學習位置嵌入(Learnable Positional Embedding):以嵌入矩陣學習位置信息
* 嵌入表(Embedding Table):將離散符號映射為稠密向量
* 詞嵌入(Token Embedding):為輸入詞元建立向量表示
* 語義向量(Semantic Vector):嵌入中表示語義屬性的向量
* 區塊大小(Block Size):一次能處理的最大序列長度
* 超參數(Hyperparameter):需事先設定的模型控制參數
* 層數(Number of Layers, N):Transformer 堆疊的層數
* 隱藏維度(Hidden Dimension):前饋層與注意力的內部向量長度
* 注意力頭數(Number of Heads, h):並行計算的注意力子空間數量
* 向量維度(Vector Dimension, d):單個嵌入或注意力空間的長度
* 掩碼矩陣(Mask Matrix):用於遮蔽未來或無效位置的矩陣
* Softmax 函數(Softmax Function):將分數轉換為機率分佈
* 機率分佈(Probability Distribution):輸出為 0-1 且總和為 1 的向量
* 梯度消失問題(Vanishing Gradient Problem):深層網路梯度逐漸變小導致學習停滯
* 梯度爆炸問題(Exploding Gradient Problem):梯度過大導致數值不穩定
* GPU 加速(GPU Acceleration):利用圖形處理器並行加速矩陣運算
* 參數學習(Parameter Learning):透過梯度下降更新可訓練權重
* 反向傳播(Backpropagation):根據損失函數計算梯度並更新參數
* 損失函數(Loss Function):衡量預測與真實標籤差異的函數
* 交叉熵損失(Cross-Entropy Loss):用於分類任務的常見損失函數
* 預訓練語言模型(Pretrained Language Model):在大規模語料上訓練後再微調的模型
* 層正規化(Layer Normalization):對單一樣本的特徵維度進行正規化,幫助模型收斂
* 語言建模頭(Language Modeling Head):最後的線性層將隱藏表示投影到詞彙表大小空間
* 投影層(Projection Layer):將嵌入維度映射為詞彙表維度以便 softmax 計算機率
* 詞彙大小(Vocabulary Size):模型可預測的詞元總數
* 機率分佈(Probability Distribution):softmax 後得到的每個詞元的預測機率
* 固定位置編碼(Sinusoidal Positional Encoding):利用正弦與餘弦函數引入位置資訊
* 可學習位置嵌入(Learnable Positional Embedding):透過嵌入矩陣學習位置資訊
* GPT 變體(GPT Variant):使用可學習位置嵌入的 Transformer 解碼器模型
* 廣播規則(Broadcasting Rules):定義不同形狀張量之間運算的規則
* 張量(Tensor):PyTorch 的多維陣列結構
* 序列長度(Sequence Length, Block Size):一次能處理的最大詞元數
* 索引張量(Index Tensor):代表詞元位置的整數序列
* 嵌入向量(Embedding Vector):高維向量,存儲詞元或位置的語義特徵
* 順序資訊(Sequential Information):表示輸入序列中詞元的排列次序
* 初始權重(Weight Initialization):設置模型參數初始值的方法
* 標準差(Standard Deviation):描述數據分散程度的統計量
* 均值(Mean):數據的平均值
* 方差(Variance):數據與平均值差平方的平均值
* 西格瑪(Sigma):統計學中表示標準差的符號
* 常態分佈(Normal Distribution):統計上呈鐘形曲線的分佈
* 權重初始化策略(Weight Initialization Strategy):設計參數初始分佈以幫助訓練穩定
* Xavier 初始化(Xavier Initialization):考慮輸入輸出節點數量的初始化方法
* He 初始化(He Initialization):針對 ReLU 激活設計的初始化方法
* 權重分佈(Weight Distribution):模型初始權重的數值分佈情況
* 梯度穩定性(Gradient Stability):避免梯度消失或爆炸的能力
* 發散訓練(Divergent Training):因初始化或學習率不當導致模型不收斂
* 均勻初始化(Uniform Initialization):使用均勻分佈生成初始參數
* 高斯初始化(Gaussian Initialization):使用高斯分佈生成初始參數
* 神經元激活(Neuron Activation):神經元經過線性與非線性變換後的輸出
* 特徵多樣性(Feature Diversity):不同神經元捕捉到的不同模式或特徵
* 過度多樣性(Excessive Diversity):初始權重差異過大導致訓練不穩定
* 欠缺多樣性(Lack of Diversity):初始權重過於接近導致神經元學到相同特徵
* 平衡標準差(Balanced Standard Deviation):合理的初始化分散程度以促進有效學習
* 模組子類化(Module Subclassing):自定義 PyTorch 模型結構的方法
* 前向傳播(Forward Pass):資料從輸入到輸出的計算過程
* 反向傳播(Backward Pass):透過鏈式法則計算梯度並更新權重
* 損失收斂(Loss Convergence):訓練中損失逐漸下降的趨勢
* 穩定訓練(Stable Training):避免劇烈震盪或數值不穩的訓練過程
* 解碼器塊(Decoder Block):包含注意力、前饋層與正規化的結構單元
* 多頭注意力(Multi-Head Attention):多個注意力頭並行計算的模組
* 注意力頭數(Number of Heads):多頭注意力中並行子空間的數量
* 頭大小(Head Size):每個注意力頭處理的特徵數量
* 嵌入維度(Embedding Dimension):詞元或位置嵌入向量的長度
* 特徵捕捉(Feature Capture):每個注意力頭學習不同子特徵的能力
* 並行運算(Parallel Computation):多個注意力頭同時計算的特性
* 殘差結構(Residual Structure):透過捷徑連接保留原始輸入訊號
* 前饋子層(Feed-Forward Sub-layer):兩層線性變換與非線性激活組成的模組
* Transformer 解碼器(Transformer Decoder):僅由解碼器組成的 GPT 架構
* 語言模型(Language Model):預測序列中下一個詞元的模型
* 前饋網路(Feed Forward Network):由線性層與非線性激活組成的子模組
* 線性層(Linear Layer):對輸入張量做權重矩陣乘法與偏置加法
* 擴展維度(Expansion Dimension):中間層將嵌入維度擴展為 4 倍以增強表達能力
* ReLU 激活函數(Rectified Linear Unit):將小於零的輸入值轉為零,其餘保持不變
* 非線性轉換(Nonlinear Transformation):增加模型的表達能力超越線性映射
* Dropout 機制(Dropout Mechanism):隨機將部分神經元輸出設為零以防止過擬合
* 過擬合(Overfitting):模型記住訓練資料而泛化能力下降的現象
* 殘差連接(Residual Connection):將輸入與輸出相加以保持梯度流動
* 後正規化架構(Post-Norm Architecture):在子層運算後套用 LayerNorm
* 加和正規化(Add & Norm):將輸入與子層輸出相加後做層正規化
* 多頭注意力(Multi-Head Attention):多個自注意力頭並行計算並拼接結果
* 模組列表(ModuleList):PyTorch 容器,用於儲存子模組清單並逐一執行
* 投影層(Projection Layer):將拼接後的多頭輸出映射回嵌入維度
* 特徵維度(Feature Dimension):張量最後一維,表示每個位置的特徵數量
* 拼接操作(Concatenation):將多個頭的輸出在特徵維度上拼接
* 平行運算(Parallel Computation):多個注意力頭同時執行計算
* 可學習參數(Learnable Parameters):神經網路中透過訓練調整的權重與偏置
* 線性投影(Linear Projection):將輸入轉換到不同的特徵子空間
* 頭大小(Head Size):每個注意力頭所處理的特徵數量
* 注意力頭(Attention Head):獨立計算注意力的子模組
* 點積注意力(Dot-Product Attention):透過查詢與鍵的內積計算相關性分數
* 縮放點積注意力(Scaled Dot-Product Attention):對內積結果除以 √d 防止梯度爆炸
* 查詢向量(Query Vector, Q):表徵當前詞元需求的向量
* 鍵向量(Key Vector, K):表徵序列中其他詞元資訊的向量
* 值向量(Value Vector, V):實際傳遞資訊的向量
* 線性轉換(Linear Transformation):將嵌入維度轉換為頭大小的映射
* 無前視遮罩(No-Lookahead Mask):避免解碼器在生成過程中偷看未來詞元
* 註冊緩衝區(Register Buffer):將常量(如遮罩矩陣)存入模型狀態以避免重複計算
* 遮罩矩陣(Mask Matrix):遮蔽未來位置的二維矩陣
* 注意力權重(Attention Weights):softmax 後的查詢與鍵的關聯性分數
* Softmax 函數(Softmax Function):將分數轉換為機率分佈
* 轉置操作(Transpose Operation):交換矩陣的最後兩個維度以對齊計算
* 矩陣乘法(Matrix Multiplication):將查詢與鍵進行點積得到注意力分數
* 特徵縮放(Feature Scaling):對注意力分數除以 √d 保持數值穩定
* 聲音類比(Voice Analogy):將縮放比喻為控制每個頭「音量」的大小
* 注意力分數(Attention Score):查詢與鍵匹配後的相關性數值
* 值加權(Value Weighting):將值向量乘以注意力權重得到輸出
* 注意力輸出(Attention Output):每個頭最終產生的加權資訊表示
* 訓練效率(Training Efficiency):透過緩衝區與遮罩優化計算加快訓練
* 梯度爆炸(Exploding Gradient):數值過大導致訓練不穩定的問題
* 維度匹配(Dimension Matching):確保矩陣乘法內部維度一致
* 序列批次(Batch of Sequences):同時輸入的多個序列組成的批次
* 通道維度(Channel Dimension):表示每個位置特徵的最後一維
* 並行子問題(Parallel Subproblems):多頭注意力將序列建模任務分解為多個子空間
* 特徵子空間(Feature Subspace):每個頭專注於不同語義模式的空間
* 參數共享(Parameter Sharing):不同序列步驟共用相同的模型參數
* 可學習偏置(Learnable Bias):線性投影中的可加性調整項
* 最終拼接(Final Concatenation):將所有頭輸出整合為完整表示
* 遮罩填充(Masked Fill):將指定位置替換為負無限大以阻止注意力
* 負無限大(Negative Infinity):在數值計算中用以屏蔽無效位置的值
* 自回歸遮罩(Autoregressive Mask):避免模型在生成時偷看未來標記的遮罩
* 階梯式遮罩(Staircase Mask):逐步暴露更多時間步長的遮罩模式
* Softmax 函數(Softmax Function):將分數轉換為機率分佈並強調大值
* 指數化(Exponentiation):對輸入數值取指數以放大差異
* 正規化(Normalization):將輸入值縮放為機率總和為一的分佈
* 注意力權重(Attention Weights):Softmax 後的注意力分佈係數
* 權重聚合(Weighted Aggregation):將值向量以注意力權重加權平均
* Dropout(Dropout):隨機丟棄部分神經元以防止過擬合
* 模組清單(ModuleList):儲存多個子模組的容器,不自動順序執行
* 序列容器(Sequential):按順序執行的模組容器
* 平行計算(Parallel Computation):同時計算多個注意力頭的操作
* GPU 加速(GPU Acceleration):利用圖形處理器實現大規模並行運算
* 頭大小(Head Size):每個注意力頭的特徵維度
* 嵌入維度(Embedding Dimension, n_embed):模型整體的隱藏特徵長度
* 注意力頭數(Number of Heads, n_heads):多頭注意力中的頭數
* 解碼層數(Number of Layers, n_layer):解碼器堆疊的深度
* 前饋網路(Feed Forward Network):由線性與非線性層組成的子模組
* 殘差連接(Residual Connection):將輸入直接加回輸出以避免信息遺失
* 層正規化(Layer Normalization):對隱藏狀態做標準化以穩定訓練
* ReLU 函數(ReLU Function):將負值截斷為零的激活函數
* 多頭注意力(Multi-Head Attention):並行多組注意力頭並拼接輸出
* 鍵向量(Key Vector):表示輸入內容的向量
* 查詢向量(Query Vector):表示當前需求的向量
* 值向量(Value Vector):攜帶實際信息的向量
* 縮放點積注意力(Scaled Dot-Product Attention):對 QK^T 做縮放後 softmax 的機制
* 遮罩自注意力(Masked Self-Attention):帶因果遮罩的自注意力
* 權重初始化(Weight Initialization):為模型參數賦初始值的方法
* 嵌入層(Embedding Layer):將離散 token 轉換為連續向量的層
* 位置嵌入(Positional Embedding):表示 token 序列位置的向量
* 批次大小(Batch Size):一次前向/反向傳遞處理的樣本數
* 區塊大小(Block Size):一次訓練可見的最大序列長度
* 最大迭代數(Max Iters):訓練過程中的最大迭代次數
* 學習率(Learning Rate):控制梯度更新幅度的超參數
* 驗證間隔(Eval Interval):每隔多少步驟評估模型效能
* 損失函數(Loss Function):衡量預測與目標差距的函數
* 訓練損失(Training Loss):訓練過程中的誤差指標
* 驗證損失(Validation Loss):在驗證集上的誤差指標
* 超參數(Hyperparameters):需人工設定的模型控制參數
* 權重衰減(Weight Decay):透過正則化抑制權重過大
* 正則化(Regularization):防止過擬合的方法總稱
* 模型狀態字典(Model State Dict):儲存模型參數與緩衝區的結構
* 線性層(Linear Layer):輸入與輸出線性映射的基本層
* 拼接操作(Concatenation):將多個張量沿指定維度拼接
* 維度展開(Unpacking Shape):從張量形狀提取批次與時間長度
* 張量形狀(Tensor Shape):張量的維度排列
* 指標變數(Index Variable):用於取樣或索引數據的變數
* 開放網路文本語料(OpenWebText Corpus):開源的大規模網路文本數據集
* 詞彙表(Vocabulary):模型可識別的全部符號集合
* 詞彙大小(Vocab Size):詞彙表的總符號數量
* 開放網路文本(OpenWebText):開源版本的 WebText,由 Reddit 高分連結內容組成的語料庫
* WebText 語料(WebText Corpus):原始 GPT 模型訓練的非公開文本數據集
* Common Crawl:大規模(PB 級)開放網路爬取文本語料庫
* 書籍語料(Books Corpus):由公開書籍整理出的文本數據集
* 語料庫(Corpus):用於訓練語言模型的大規模文本集合
* 批次大小(Batch Size):一次訓練迭代中處理的樣本數量
* 區塊大小(Block Size):模型能處理的最大序列長度
* 學習率(Learning Rate):控制權重更新步幅的超參數
* 頭數(Number of Heads):多頭注意力的頭數,用於捕捉不同語義特徵
* 層數(Number of Layers):Transformer 模型中堆疊的層數
* 超參數調整(Hyperparameter Tuning):透過修改參數優化模型表現的過程
* 損失值(Loss Value):衡量模型預測與真實標籤差異的數值
* 訓練損失(Training Loss):模型在訓練集上的誤差
* 驗證損失(Validation Loss):模型在驗證集上的誤差
* 交叉熵損失(Cross-Entropy Loss):語言建模常用的分類損失函數
* 預測準確率(Prediction Accuracy):模型正確預測下一個詞元的比例
* 指數學習率(Exponential Learning Rate):學習率以科學記號形式表示,如 3e-4
* 訓練收斂(Training Convergence):損失值隨著訓練逐步下降的趨勢
* 過擬合(Overfitting):模型對訓練資料學習過度,泛化能力下降
* 驗證集(Validation Set):從數據中分割出的 10% 用於檢驗模型表現
* 訓練集(Training Set):數據集中用於訓練模型的 90% 部分
* The Wizard of Oz 語料:小型測試文本,適合單機內存完整載入
* 大規模語料(Large-Scale Corpus):如 45GB 級別,需分批讀取處理
* 資料前處理(Data Preprocessing):清洗與格式化數據以利模型訓練
* 壓縮檔(Compressed File):如 .xz 格式需解壓後才能使用
* LZMA 壓縮(LZMA Compression):一種高壓縮比的檔案壓縮算法
* 解壓模組(lzma Module):Python 標準庫中處理 .xz 文件的模組
* 檔案路徑(File Path):定位資料所在位置的字串
* 正斜線(Forward Slash):Unix 與 Python 程式中檔案路徑的標準分隔符
* 反斜線(Backslash):Windows 系統中的路徑分隔符
* TQDM 進度條(TQDM Progress Bar):在終端中顯示任務進度的工具
* 檔案迭代器(File Iterator):逐一讀取檔案的迴圈結構
* 檔名清單(File Name List):儲存目錄下所有檔案名稱的集合
* 輸出檔案(Output File):儲存合併或分割後數據的目標文件
* 字彙表(Vocabulary File):儲存語料中所有唯一字符或詞元的集合
* 集合結構(Set Data Structure):Python 中用於存放唯一元素的資料型別
* 分割檔案數(Split Files):控制最終生成多少個輸出檔案的參數
* 字符去重(Character Deduplication):確保字彙表只包含唯一字符
* 訓練檔案(Train File):合併後存放 90% 語料的輸出檔案
* 驗證檔案(Validation File):合併後存放 10% 語料的輸出檔案
* 檔案大小驗證(File Size Validation):檢查訓練與驗證檔案大小比例是否正確
* 檔案處理效率(File Processing Efficiency):迴圈與分批策略影響的處理速度
* 記憶體限制(Memory Limitation):單機無法一次載入數十 GB 語料的情況
* 分批讀取(Batch Loading):逐檔案或逐塊載入語料的方法
* 資料清洗(Data Cleaning):移除雜訊與無用符號的過程
* 輸出格式(Output Format):最終儲存語料的格式設計(txt/json 等)
* Vocab 建立(Vocabulary Construction):收集語料所有唯一詞元形成字彙表
* RAM 載入限制(RAM Loading Limit):內存不足時需分批處理語料
* 訓練迭代(Training Iteration):模型逐步更新權重的過程
* 損失與機率關係(Loss-Probability Relationship):交叉熵值與預測機率的數學關聯
* 記憶體映射(Memory Mapping, mmap):直接將檔案映射至記憶體以便高效隨機存取
* 二進位模式(Binary Mode):以二進位格式讀寫檔案以避免文字編碼干擾
* 隨機取樣(Random Sampling):隨機選擇檔案位置以獲取訓練資料片段
* 起始位置(Start Position):從檔案中選擇讀取區塊的起始點
* 偏移量(Offset):在檔案中移動讀取指標的距離
* 讀取區塊(Read Block):一次從檔案中讀出的資料片段
* 區塊大小(Block Size):每個讀取片段的長度限制
* 批次大小(Batch Size):每次處理的樣本數量
* UTF-8 編碼(UTF-8 Encoding):將二進位內容解碼為可讀文字
* 編碼錯誤忽略(Error Ignore):遇到損壞字元時直接略過
* 標記化(Tokenization):將文字轉換為整數序列
* 長整數張量(Torch.LongTensor):整數型別的 PyTorch 張量
* 訓練分割(Train Split):用於模型學習的資料子集
* 驗證分割(Validation Split):用於模型評估的資料子集
* 資料流水線(Data Pipeline):資料讀取與處理的完整流程
* 模型訓練循環(Training Loop):前向傳遞、反向傳遞與參數更新的迴圈
* 評估模式(Eval Mode):停用 Dropout 與 BatchNorm 的模型狀態
* 訓練模式(Train Mode):啟用 Dropout 與 BatchNorm 的模型狀態
* 損失函數(Loss Function):衡量預測與目標差距的數學函數
* 收斂(Convergence):訓練過程中損失逐漸下降並穩定的現象
* 序列化(Serialization):將物件轉換為可儲存或傳輸的格式
* Pickle 模組(Pickle Module):Python 內建物件序列化工具
* 模型儲存(Model Save):將訓練好的參數保存至檔案
* 模型載入(Model Load):從檔案讀取已保存的模型參數
* PKL 檔案(.pkl File):Pickle 序列化後的模型檔案格式
* 模型狀態字典(Model State Dict):儲存 PyTorch 模型的權重與緩衝值
* 檔案寫入(Write Binary):以二進位方式將序列化結果存至磁碟
* 序列化檔案大小(Serialized File Size):保存後檔案的磁碟佔用容量
* 反序列化(Deserialization):從序列化檔案還原物件的過程
* 單 GPU 訓練(Single GPU Training):僅使用一張 GPU 運行模型
* 多 GPU 訓練(Multi-GPU Training):使用多張 GPU 進行分散式訓練
* 訓練檢查點(Training Checkpoint):保存訓練中途的模型快照
* 持續訓練(Resume Training):從已保存模型繼續訓練
* 隨機模組(Random Module):Python 提供隨機數生成的標準模組
* 參數更新(Parameter Update):根據梯度調整模型權重
* GPU 裝置(CUDA Device):使用 CUDA 加速的圖形處理器裝置
* 裝置列印(Print Device):輸出模型當前使用的裝置資訊
* 批次索引(Batch Index):指定當前資料批次的索引範圍
* 權重初始化(Weight Initialization):設定模型初始參數值的方法
* 損失曲線(Loss Curve):隨訓練迭代變化的損失圖像
* 過擬合(Overfitting):模型過度擬合訓練數據而表現下降
* 參數序列化(Parameter Serialization):將模型權重轉換為可儲存格式
* 參數反序列化(Parameter Deserialization):將序列化檔案還原為權重
* 檔案操作(File Handling):開啟、讀取、寫入與關閉檔案的過程
* 隨機初始化(Random Initialization):以隨機方式初始化模型權重
* 訓練迭代(Training Iteration):單次參數更新的過程
* 驗證誤差(Validation Error):模型在驗證集上的損失值
* 儲存檔路徑(Save Path):模型儲存的檔案位置
* 模型大小(Model Size):指模型參數數量或儲存空間大小
* 訓練資源(Training Resources):進行訓練所需的硬體與軟體資源
* 開放網路文本語料(OpenWebText Corpus):模仿 OpenAI WebText 的開源語料庫
* 模型架構相容性(Architecture Compatibility):載入權重時模型層級與維度需與訓練時一致
* 超參數一致性(Hyperparameter Consistency):重訓或載入時需維持如層數、頭數、嵌入維度等設定一致
* 序列化格式(Serialization Format):將模型/參數轉為可儲存的位元串格式(如 pkl)
* 反序列化(Deserialization):自序列化檔還原模型或參數至記憶體
* 檢查點保存(Checkpoint Saving):在訓練過程定期儲存模型狀態以便恢復
* 檢查點恢復(Checkpoint Resume):由檢查點載入狀態以繼續訓練或推論
* 模型版本控制(Model Versioning):對模型與權重維護版本標記與相依性
* nn.Module 子類化(nn.Module Subclassing):自訂網路需繼承 nn.Module 以註冊可學參數
* 參數登錄(Parameter Registration):將權重/緩衝區納入模組管理與保存機制
* 狀態字典映射(State Dict Mapping):以字典形式讀寫模型權重與緩衝值
* 最大新標記(Max New Tokens):單次生成允許新增的最大 token 數
* 上下文裁剪(Context Cropping):只保留最近的上下文長度以符合區塊/上下文限制
* 滑動窗口(Sliding Window):以移動窗口維持固定長度的可見序列
* 生成停止條件(Stopping Criterion):依規則(如 EOS 或長度)停止解碼
* 開始/結束標記(BOS/EOS Tokens):序列起訖的特殊符號以界定範圍
* 特殊標記表(Special Tokens Vocabulary):包含 BOS/EOS/UNK 等控制用符號集合
* 可變長度序列(Variable-Length Sequence):輸入/輸出序列長度不固定的設定
* 提示—完成配對(Prompt–Completion Pairs):微調時以指令與回覆成對的資料格式
* 指令微調(Instruction Tuning):以人類指令—回覆資料對 LLM 進行監督式微調
* 微基準測試(Microbenchmarking):以小型自含測試量測單一操作效能
* 執行時間剖析(Runtime Profiling):量測程式區塊的時間與資源使用
* time.time 計時(time.time Timing):以時間戳差計算區塊耗時的簡單方法
* 牆鐘量測(Wall-Clock Measurement):以實際經過時間評估效能
* 可重現性(Reproducibility):透過固定種子與設定使結果可重現
* 隨機種子固定(Seed Fixing):鎖定隨機來源以減少結果漂移
* 記憶體映射讀取(Memory-Mapped I/O):以 mmap 將檔案映射至記憶體做高效隨機讀取
* 檔案指標定位(File Seek):移動檔案讀取游標以定位起始位置
* 區塊化讀取(Blockwise Reading):一次讀取固定長度片段以供批次取樣
* 編碼容錯(Encoding Error Handling):解碼失敗時採忽略/替代策略以續讀
* UTF-8 解碼(UTF-8 Decoding):將二進位內容轉為 UTF-8 文字
* 資料串流化(Data Streaming):以連續流方式逐批供給訓練資料
* 資料切片(Data Chunking):將大型語料切為可管理的小片段
* 模型生成函式(Generate Function):自回歸步進產生新 token 的例程
* 因果遮罩矩陣(Causal Mask Matrix):以下三角遮罩阻止注意力偷看未來
* 維度對齊(Dimensionality Alignment):確保張量在矩陣運算時形狀相容
* 形狀裁切(Shape Truncation):對過長序列裁切以符合模型限制
* GPU 裝置映射(Device Mapping):將張量/模組放置至對應 CUDA 裝置
* VRAM 佔用(VRAM Footprint):模型與批次在顯存中的空間消耗
* 量化感知訓練(Quantization-Aware Training):在訓練中模擬低位元以減少精度落差
* QLoRA(QLoRA):以低秩適配在 4 位元權重上進行高效微調的方法
* 4 位元權重量化(4-bit Weight Quantization):以 4-bit 表示權重以節省記憶體
* 半精度浮點(FP16 Half Precision):以 16 位元浮點進行計算/儲存以降資源
* 梯度累積(Gradient Accumulation):跨多步累加梯度以等效放大批次
* 有效批次大小(Effective Batch Size):考慮累積後的等效總批次規模
* Hugging Face 模型倉庫(Hugging Face Model Hub):集中式模型分享與下載平台
* 模型卡(Model Card):描述模型用途、資料、限制與評測的文件
* 資料集卡(Dataset Card):記錄資料來源、清理流程與授權的說明
* 開源語料(Open-Source Corpora):公開可用的大規模預訓練資料集
* 自回歸解碼(Autoregressive Decoding):逐步以先前輸出條件化生成下一 token
* 貪婪/取樣解碼(Greedy/Sampling Decoding):以最大機率或隨機策略選取下一 token