---
# System prepended metadata

title: '[Youtube] [LLM] freeCodeCamp.org - Create a Large Language Model from Scratch with Python'
tags: [LLM, Youtube]

---

# 課程簡介

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

# 課程設置與需求
![messageImage_1759246872489](https://hackmd.io/_uploads/rJrEcdt3gg.jpg)

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

![image](https://hackmd.io/_uploads/BkG5c_F2xe.png)
![messageImage_1759247008475](https://hackmd.io/_uploads/BkehcuYngg.jpg)

* Windows 可能需安裝 Visual Studio Build Tools 以支援 pylzma

# Torch 與 CUDA 安裝
![image](https://hackmd.io/_uploads/SyfyodKnle.png)

* 不使用單純 pip install torch
* 需依 PyTorch 官方文件選擇正確版本與 CUDA 配套
* 建議版本：Python 3.9–3.11 搭配 CUDA 11.7 或 11.8

# Jupyter Notebook 與虛擬環境整合
![messageImage_1759247113032](https://hackmd.io/_uploads/rJ_Mjdthge.jpg)
![image](https://hackmd.io/_uploads/B1st2dK2gx.png)
![image](https://hackmd.io/_uploads/rJDT3OY2gg.png)

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

![image](https://hackmd.io/_uploads/H10y6uF2ge.png)

* 在 Notebook 中選擇對應的 kernel 以使用虛擬環境

# 建立資料集

* 使用 Project Gutenberg 提供的免費文本
* 範例選用《The Wizard of Oz》純文字檔
* 去除開頭與結尾的授權與額外內容，保留純文本內容
* 檔案大小約 233KB，適合作為小型語料進行模型實驗

---
# 開啟與讀取文本
![image](https://hackmd.io/_uploads/Sy2D6uF2xx.png)

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

# 建立字元表與 Tokenizer
![image](https://hackmd.io/_uploads/rJWjp_K2gg.png)
![image](https://hackmd.io/_uploads/HJS1CdY2ee.png)

* 建立 `chars = sorted(set(text))` 得到所有字元集合
* 使用字典將字元映射到整數，再建立反向映射
* `encode` 將字串轉為整數序列
* `decode` 將整數序列轉回字串

# Tokenizer 種類概念

* 字元級 (character-level)：小詞彙表，但序列長
* 單詞級 (word-level)：詞彙表巨大，但序列短
* 子詞級 (subword-level)：介於兩者之間，常用於效率與泛化

# 使用 PyTorch 與 Tensor
![image](https://hackmd.io/_uploads/SJxB0OKhgg.png)

* 匯入 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 實作
![image](https://hackmd.io/_uploads/SkH-JYK3xx.png)

* 定義 `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 建立與操作
![image](https://hackmd.io/_uploads/SyrrkKF2eg.png)
![image](https://hackmd.io/_uploads/BJ8nlYKnee.png)

* `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 運算效能比較
![image](https://hackmd.io/_uploads/BySybYKnll.png)

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

# 效能測試方法
![image](https://hackmd.io/_uploads/ryE-ZFK3el.png)

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


---
# CPU 時間與 Wall 時間
![image](https://hackmd.io/_uploads/Hy83XYF3ex.png)

* CPU 時間：程式實際在 CPU 上執行的時間
* Wall 時間：包含等待在內的總耗時（真實等待時間）
* CPU 時間不含等待，Wall 時間包含等待

# torch.multinomial
![image](https://hackmd.io/_uploads/rynA7YFnge.png)

* 從機率分布中抽樣
* 機率需加總為 1
* 範例：0.1 與 0.9 代表抽樣 0 與 1 的機率
* 多次執行可能出現不同結果，但整體符合分布

# torch.cat (concatenate)
![image](https://hackmd.io/_uploads/HkTZ4KKhlx.png)

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

# torch.tril 與 torch.triu
![image](https://hackmd.io/_uploads/Hk6RNKKhle.png)

* `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（嵌入向量）
![image](https://hackmd.io/_uploads/HyBLaYt3el.png)

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

# Dot Product（點積）
![image](https://hackmd.io/_uploads/HJCdTtK2ee.png)
![image](https://hackmd.io/_uploads/S1w5atF2gl.png)

* 公式：將兩個向量對應元素相乘後加總
* 範例：

  * A = [1, 2, 3]
  * B = [4, 5, 6]
  * 結果 = 1×4 + 2×5 + 3×6 = 32
* 點積是矩陣乘法的基礎

# 矩陣相乘原理

* 條件：前一矩陣的列數 × 行數 與後一矩陣的行數 × 列數，內部數字需相等
* 範例：3×2 矩陣 × 2×3 矩陣 → 結果為 3×3 矩陣
* 計算方式：逐行逐列進行點積

# 矩陣相乘範例
![image](https://hackmd.io/_uploads/SkPRaYt3gx.png)

* 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 實作矩陣乘法
![image](https://hackmd.io/_uploads/H1Ng0tFnlg.png)

* 使用 `@` 符號進行矩陣乘法：`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）
![image](https://hackmd.io/_uploads/r1-GUqt3le.png)
![image](https://hackmd.io/_uploads/ByvMI5Yheg.png)

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

# Sigmoid
![image](https://hackmd.io/_uploads/ryN4L5Fhge.png)

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

# Tanh（雙曲正切函數）
![image](https://hackmd.io/_uploads/r1dLLct3el.png)

* 輸出範圍在 -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）
* 位置編碼提供序列次序資訊，與嵌入向量相加
* 位置與內容同時影響注意力分配

# 編碼器與解碼器堆疊
![image](https://hackmd.io/_uploads/HJmMw9Fneg.png)

* 多層 encoder 後接多層 decoder，僅最後一層 encoder 輸出提供給所有 decoder 層
* 每層包含：多頭注意力 → Add & Norm → 前饋網路 → Add & Norm
* 解碼器額外包含一個「遮罩」的自注意力以避免看見未來

# 殘差連接與正規化

* 殘差連接保留早期資訊，減少深層網路遺忘與梯度消失
* Post-LN（Add 再 Norm）與 Pre-LN（Norm 再 Add）皆可，文中採用 Post-LN 並指其在小模型訓練較穩

# 多頭注意力（Multi-Head Attention）
![image](https://hackmd.io/_uploads/rJ6_PcFneg.png)

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

# 自注意力與 K/Q/V
![image](https://hackmd.io/_uploads/SkEYPct3ee.png)

* Query：我在找什麼
* Key：我包含什麼
* Value：具體要傳遞的內容表徵
* 以線性層從輸入生成 K/Q/V，驅動自注意力匹配

# Scaled Dot-Product Attention 流程
![image](https://hackmd.io/_uploads/B1uCPqF2ex.png)

* 使用 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
