TensorRT-LLM 備戰學習路線
總時程: 12 週|每週約 15 小時(平日 1.5h × 5 + 週末 4h × 2)
GPU 費用: Week 1–4、10–12 用 Google Colab Free($0);Week 5–9 用 RunPod RTX 3090(約 $15)
第一階段:PyTorch + HuggingFace(Week 1–4)¶
Week 1:Tensor、Autograd、完整訓練迴圈¶
目標: 能從空白 Notebook 獨立寫出一個可訓練的神經網路
- Day 1|Mon|1.5 hr — 環境建立 + Tensor 基礎
- 開啟 Google Colab,切換 Runtime 為 T4 GPU
- 建立各種 Tensor:zeros / ones / rand / tensor,印出 shape 與 dtype
- 練習 Tensor 四則運算、矩陣乘法(@ 與 torch.matmul)
- 確認
tensor.to('cuda')後 device 顯示cuda:0 - 程式碼重點:
x = torch.rand(3,4); y = torch.rand(4,5); z = x @ y
- Day 2|Tue|1.5 hr — Autograd:梯度怎麼算
- 用
requires_grad=True建 Tensor,做計算後呼叫.backward() - 手動驗算:
y = x²在x=3的梯度應為 6,程式驗證 - 理解
torch.no_grad()使用時機(推理時關閉計算圖) - 程式碼重點:
x = torch.tensor(3.0, requires_grad=True); y = x**2; y.backward(); print(x.grad)
- 用
- Day 3|Wed|1.5 hr — Dataset 與 DataLoader
- 用
torchvision.datasets.MNIST下載資料 - 建立 DataLoader(batch_size=64、shuffle=True),印出第一個 batch 的 shape
- 用
matplotlib畫出 9 張訓練圖片,確認資料格式 - 程式碼重點:
X, y = next(iter(loader)); print(X.shape)# [64,1,28,28]
- 用
- Day 4|Thu|1.5 hr — 建第一個神經網路
- 繼承
nn.Module寫 3 層 MLP(784 → 128 → 64 → 10) - 做一次 forward pass,確認 output shape 為 (64, 10)
- 印出
model.parameters()計算總參數量 - 程式碼重點:
nn.Sequential+nn.Linear+nn.ReLU+nn.Flatten
- 繼承
- Day 5|Fri|1.5 hr — 訓練迴圈:Loss + Optimizer
- 定義
CrossEntropyLoss和Adam optimizer(lr=1e-3) - 寫完整訓練迴圈:forward → loss → zero_grad → backward → step
- 跑 1 個 epoch,每 100 batch 印 loss,確認數值在下降
- 核心順序:
zero_grad()必須在backward()之前
- 定義
- Day 6|Sat|4 hr — 完整專案:MNIST 分類器
- 重構程式碼:model / train_loop / eval_loop 各自獨立 function
- 加上 eval loop,在 test set 計算 accuracy(目標 > 97%)
- 用 matplotlib 畫 loss curve,確認無 overfitting
- 儲存模型:
torch.save(model.state_dict(), 'mnist_mlp.pt') - 推到 GitHub,README 記錄 test accuracy 數值
- Day 7|Sun|4 hr — 複習 + 論文初探
- 上午:不看筆記,從空白 Notebook 默寫完整訓練迴圈(默寫測試)
- 上午:把 MLP 的 Linear 層換成
nn.Conv2d,看 accuracy 有無提升 - 下午:讀 Llama 2 論文前兩頁(abstract + introduction)
- 下午:建立「不懂詞彙清單」(RLHF、KV cache、GQA 等),Week 5 再深挖
Week 1 產出: GitHub repo,MNIST MLP,test acc > 97%
Week 2:HuggingFace Transformers¶
目標: 能用 HuggingFace pipeline 跑預訓練模型做 inference,感受大模型與自訓小模型的差距
- Day 1|Mon|1.5 hr — HuggingFace 生態介紹
- 閱讀 HuggingFace NLP Course Chapter 1(免費,線上)
- 安裝 transformers 套件,了解 Hub 的 model card 怎麼看
- 跑第一個 pipeline:
pipeline('sentiment-analysis')對幾句話分類
- Day 2|Tue|1.5 hr — Tokenizer 深入
- 理解 tokenizer 的三個輸出:
input_ids/attention_mask/token_type_ids - 手動呼叫 tokenizer,印出每個 token 對應的文字
- 比較不同模型的 tokenizer 分詞方式差異(BERT vs GPT2)
- 理解 tokenizer 的三個輸出:
- Day 3|Wed|1.5 hr — Model + forward pass
- 用
AutoModel載入 BERT,做一次 forward pass - 理解
last_hidden_state的 shape:(batch, seq_len, hidden_size) - 用 mean pooling 把 token embeddings 壓成句子向量
- 用
- Day 4|Thu|1.5 hr — AutoModelForSequenceClassification
- 載入預訓練的文字分類模型做 inference
- 比較 zero-shot classification 與 fine-tuned 模型的輸出差異
- 理解 logits → softmax → label 的轉換流程
- Day 5|Fri|1.5 hr — 推理效能初探
- 對同一模型分別用 CPU 和 GPU 跑 inference,比較時間
- 理解 batch inference 與單筆 inference 的吞吐量差異
- 初步認識
model.half()(FP16)對速度的影響
- Day 6|Sat|4 hr — 專案:文字分類 pipeline
- 選一個 HuggingFace 上的分類任務(情感分析或主題分類)
- 寫完整 inference pipeline:讀 CSV → tokenize → 批次推理 → 輸出結果
- 計算 throughput(samples/sec),記錄 baseline
- 推到 GitHub
- Day 7|Sun|4 hr — 複習 + 預習推理概念
- 默寫:不看文件寫出完整的 HuggingFace inference pipeline
- 閱讀:什麼是 autoregressive generation(next token prediction)
- 筆記:Week 1 不懂的詞現在懂多少了?更新詞彙清單
Week 2 產出: 文字分類 inference pipeline,記錄 CPU vs GPU 推理速度
Week 3:Fine-tuning 入門¶
目標: 能對預訓練模型做 full fine-tuning 和 LoRA,理解參數更新的差異
- Day 1|Mon|1.5 hr — Fine-tuning 基本概念
- 理解 pre-training vs fine-tuning vs inference 三個階段的差異
- 閱讀 HuggingFace NLP Course Chapter 3(Fine-tuning)
- 準備 dataset:用 datasets 套件載入 IMDB 電影評論資料集
- Day 2|Tue|1.5 hr — Trainer API
- 用
TrainingArguments設定超參數(epochs、batch size、lr) - 用
Trainer對 BERT 做 fine-tuning(跑 1–2 epoch 即可) - 理解
evaluation_strategy和logging_steps的設定
- 用
- Day 3|Wed|1.5 hr — 手寫訓練迴圈(不用 Trainer)
- 不使用 Trainer API,自己用 Week 1 學的 PyTorch loop fine-tune
- 比較兩種方式的程式碼量與彈性
- 理解什麼情況下需要自己寫 loop(客製化 loss、gradient accumulation)
- Day 4|Thu|1.5 hr — LoRA 概念
- 閱讀 LoRA 論文 abstract 和 figure 1(理解低秩分解的直覺)
- 安裝
peft套件,用LoraConfig設定 rank 和target_modules - 比較 full fine-tuning 與 LoRA 的可訓練參數量差異
- Day 5|Fri|1.5 hr — LoRA 實作
- 對同一個模型分別做 full fine-tuning 和 LoRA fine-tuning
- 比較:訓練時間、GPU memory 用量、最終 accuracy
- 理解 adapter 的儲存方式(只存 delta weights)
- Day 6|Sat|4 hr — 專案:LoRA fine-tuning pipeline
- 完整實作:載入模型 → LoRA 設定 → 訓練 → 評估 → 儲存 adapter
- 記錄:base model accuracy vs fine-tuned accuracy
- 寫一段 README 解釋為什麼用 LoRA 而不是 full fine-tuning
- 推到 GitHub
- Day 7|Sun|4 hr — 複習 + 閱讀
- 默寫:LoRA fine-tuning 的完整流程
- 閱讀:Mistral 7B 論文的 architecture 部分(sliding window attention、GQA)
- 更新詞彙清單,標記已理解的詞
Week 3 產出: LoRA fine-tuning pipeline,有 full vs LoRA 的比較數據
Week 4:整合 + GitHub 作品集完善¶
目標: 把前三週整合成一個完整的 GitHub repo,準備銜接 Week 5 的推理框架
- Day 1|Mon|1.5 hr — 整理 repo 結構
- 建立統一的 repo 結構:
/data、/models、/notebooks、/src - 每個 notebook 加上清楚的說明和執行結果截圖
- 確認每個 notebook 可以在 Colab 一鍵執行
- 建立統一的 repo 結構:
- Day 2|Tue|1.5 hr — 推理效能 benchmark
- 對 Week 2 的 inference pipeline 做系統性 benchmark
- 測試變數:batch size(1 / 8 / 32 / 64)、精度(FP32 / FP16)
- 用表格整理結果:throughput(samples/sec)vs latency(ms/sample)
- Day 3|Wed|1.5 hr — README 撰寫
- 每個專案寫完整的 README:目的、方法、結果、怎麼執行
- 加入 benchmark 表格和 loss curve 圖片
- 寫「What I learned」段落(面試時有用)
- Day 4|Thu|1.5 hr — 推理概念預習
- 閱讀:什麼是 KV cache,為什麼 autoregressive generation 需要它
- 閱讀:什麼是 continuous batching,vLLM 怎麼用它提升吞吐量
- 記錄理解程度,為 Week 5 做準備
- Day 5|Fri|1.5 hr — 複習自我評估
- 自我測試:能否解釋 autograd、DataLoader、forward pass、LoRA 給非技術背景的人聽
- 更新履歷草稿:加入 PyTorch、HuggingFace、LoRA fine-tuning
- Day 6|Sat|4 hr — 技術 blog 第一篇
- 主題:「從 PyTorch 基礎到 LoRA Fine-tuning:四週學習紀錄」
- 內容:每週學了什麼、踩到的坑、benchmark 數據
- 發布到 Medium 或個人 blog,連結放到 GitHub repo
- Day 7|Sun|4 hr — 備戰 Week 5
- 在 Colab 安裝 vLLM(熟悉環境)
- 閱讀 vLLM 官方文件的 Quickstart
- 申請 RunPod 帳號,熟悉介面和計費方式
Week 4 產出: 完整 GitHub repo + 第一篇技術 blog
第二階段大綱:LLM 推理框架(Week 5–9)¶
Week 5:推理原理¶
- KV cache 機制與實作原理
- Batching 策略:static batching vs continuous batching
- Quantization 方法:GPTQ、AWQ、INT8 的差異與適用場景
- PagedAttention 的直覺理解(vLLM 核心技術)
- 閱讀:Efficient Large Language Model Inference 相關論文
Week 6–7:vLLM 實戰部署¶
- 在 RunPod RTX 3090 安裝 vLLM 環境
- 部署 Llama-3.1-8B,跑通第一個 inference request
- 系統性 benchmark:tokens/sec、latency、GPU 使用率
- 測試不同 quantization 設定對速度與品質的影響
- 理解 vLLM 的 OpenAI-compatible API server
Week 8:llama.cpp 實戰¶
- 安裝 llama.cpp,下載 GGUF 格式模型
- 比較 llama.cpp vs vLLM:適用場景、延遲、CPU 可用性
- 理解 GGUF 格式與量化等級(Q4_K_M、Q8_0 等)
Week 9:整合專案 + 技術 blog¶
- 把交通違規系統接上 LLM 做 violation classification
- 完整 benchmark 報告:vLLM vs llama.cpp 在不同 batch size 的表現
- 技術 blog 第二篇:「用 vLLM 部署 LLM 推理服務:benchmark 與心得」
第二階段產出: LLM 推理服務專案 + benchmark 數據 + 第二篇 blog
第三階段大綱:CUDA 入門(Week 10–12)¶
Week 10–11:CUDA 核心概念¶
- GPU 架構:SM、warp、thread / block / grid 的層級關係
- Memory hierarchy:global / shared / register / local memory
- 用
numba.cuda寫第一個向量加法 kernel - 理解 coalesced memory access 與 bank conflict
- GEMM(矩陣乘法)的 tiling 優化直覺
Week 12:寫一個可展示的 kernel¶
- 用 CUDA C 或
numba.cuda實作 tiled matrix multiplication - 比較 naive 實作與 tiled 版本的速度差異
- 能解釋 kernel 的平行化邏輯給面試官聽
- 推到 GitHub,這是履歷上「具備 CUDA 基礎」的證明
第三階段產出: CUDA kernel 實作 + 效能比較
三個月後的履歷新增項目¶
Skills 新增:¶
- PyTorch, HuggingFace Transformers, LoRA fine-tuning, vLLM, llama.cpp, CUDA 基礎, LLM inference optimization
Projects 新增:¶
- MNIST MLP Classifier — PyTorch from scratch,test acc 97%+
- LLM Inference Benchmark — vLLM vs llama.cpp,含 throughput/latency 數據
- Traffic Violation AI — 交通違規系統整合 LLM violation classification
- LoRA Fine-tuning Pipeline — full fine-tuning vs LoRA 比較
Blog 文章:¶
- 從 PyTorch 基礎到 LoRA Fine-tuning:四週學習紀錄
- 用 vLLM 部署 LLM 推理服務:benchmark 與心得
Comments
Loading comments…
Leave a Comment