Lesson 13 · 約 30 分鐘
走出筆電:HF + Cloud GPU 實戰
註冊 HF · 拿 token · 開 Colab GPU · 跑第一個 LoRA 微調
13 ・ 走出筆電:Hugging Face + Cloud GPU 實戰
04 講說過「個人 GPU 沒大顯存就到 Colab / Kaggle 跑」,但怎麼開沒人帶你。 這一講把「註冊 HF → 拿 token → Colab 開 GPU → 跑你的第一個微調」串成一條 30 分鐘走得完的路。完成後你能在任何雲端筆電上載開源模型 + LoRA 微調。
0. 為什麼要走出筆電
兩件事讓你「走出筆電」:
- Hugging Face 帳號 + token — 99% 開源模型都從這拿
- Cloud GPU — Colab / Kaggle 免費 tier 就能跑 LoRA 微調
1. Hugging Face 帳號 setup(5 分鐘)
1.1 註冊
到 huggingface.co/join 用 email 註冊。用真名 + 真照片,以後上傳模型 / 寫部落格,這個帳號就是你的 AI 履歷。
1.2 拿 access token
hf.co/settings/tokens → New token:
- Name:
lumi-local(只是辨識用) - Type:
Read(載模型用)。要上傳模型再開Write - 按 Create,複製貼到密碼管理員(只會顯示一次)
1.3 從本機登入
在已啟用 venv 的終端機:
pip install huggingface_hub
huggingface-cli login把剛才複製的 token 貼進去 → Enter。成功的話:
Token is valid (permission: read).
Login successful
之後本機 / Colab from transformers import AutoModel 自動就用這個 token 拉模型,不用每次都 export env var。
2. 載你的第一個模型
from transformers import AutoTokenizer, AutoModelForCausalLM
# 小型範例 — TinyLlama 1.1B,筆電也能跑
model_name = "TinyLlama/TinyLlama-1.1B-Chat-v1.0"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
prompt = "Explain attention in transformers in one sentence:"
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=60)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))第一次跑會 download 約 2 GB(快取在 ~/.cache/huggingface/)。之後就直接從 cache 載。
2.1 名詞速查
| 你會看到的字 | 中文 / 解釋 |
|---|---|
| Hub | huggingface.co 本身,模型 / dataset 都託管在這 |
| Model card | 模型頁面右側,有授權 / training data / 用法範例 |
| Snapshot | 一個版本的模型權重快照(revision="main" 是 latest) |
| Pipeline | 一行打包前處理 + 推理:pipeline("text-generation", model=name) |
| transformers | 載模型 / 推理的核心套件 |
| datasets | 對應的資料集 API:load_dataset("squad") |
| PEFT | Parameter-Efficient Fine-Tuning — LoRA / QLoRA 住這裡 |
| TRL | Transformers Reinforcement Learning — SFT / DPO / RLHF 訓練器 |
3. Cloud GPU 三條路:挑你的入口
3.1 Google Colab(最簡單)⭐
- 免費:T4 GPU(16 GB VRAM),每天約 4-12 小時(用量越多排程越後)
- Colab Pro($10/月):V100/A100 排程更前面、長 timeout
- 適合:第一次玩雲端 GPU、跑 LoRA 微調 7B 模型、跑論文 demo
3.2 Kaggle Notebooks(額度最大)⭐
- 免費:每週 30 小時 P100 / T4 × 2(共享 GPU)
- 適合:中等長度訓練、需要穩定 30 小時連續跑、或想參加比賽
3.3 RunPod / Lambda / Vast.ai(付費,真的 SSH)
- 按小時付,RTX 4090 約 $0.3-0.5/hr,A100 約 $1-2/hr
- 適合:真的要跑 24+ 小時連續訓練、需要 SSH 進去用 VS Code Remote
4. Colab 30 秒 GPU walkthrough
4.1 開 notebook 並切到 GPU runtime
- colab.research.google.com → 左上 File → New notebook
- 上方選單 Runtime → Change runtime type
- Hardware accelerator 選 T4 GPU → Save
4.2 驗證 GPU 就位
第一格貼:
!nvidia-smi按 Shift+Enter 跑。看到 Tesla T4 + 15360MiB 顯存 = GPU 就位。
4.3 載模型試跑
!pip install -q transformers accelerate
from transformers import pipeline
gen = pipeline("text-generation", model="TinyLlama/TinyLlama-1.1B-Chat-v1.0", device=0)
print(gen("Explain transformer attention in 30 words:", max_new_tokens=50)[0]['generated_text'])device=0 就是 GPU 0,Colab T4 是這台。
4.4 接 Google Drive 持久化
from google.colab import drive
drive.mount('/content/drive')
# 之後 checkpoint 存到 /content/drive/MyDrive/ai-experiments/...5. 你的第一個 LoRA 微調(20 分鐘走完)
5.1 程式碼骨架(在 Colab 跑)
!pip install -q transformers datasets peft trl accelerate bitsandbytes
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import LoraConfig, get_peft_model
from datasets import load_dataset
from trl import SFTTrainer, SFTConfig
# 1. 4-bit 量化載入(省顯存)
model_name = "TinyLlama/TinyLlama-1.1B-Chat-v1.0"
bnb = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_compute_dtype="float16")
model = AutoModelForCausalLM.from_pretrained(model_name, quantization_config=bnb, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained(model_name)
tokenizer.pad_token = tokenizer.eos_token
# 2. 加 LoRA adapter
lora = LoraConfig(r=8, lora_alpha=16, target_modules=["q_proj", "v_proj"], task_type="CAUSAL_LM")
model = get_peft_model(model, lora)
model.print_trainable_parameters() # 只訓練 ~0.1% 參數!
# 3. 載個資料(範例用)
ds = load_dataset("databricks/databricks-dolly-15k", split="train[:500]")
def format_fn(ex):
return {"text": f"### Instruction: {ex['instruction']}\n### Response: {ex['response']}"}
ds = ds.map(format_fn)
# 4. 跑訓練
cfg = SFTConfig(output_dir="./out", per_device_train_batch_size=2, num_train_epochs=1, learning_rate=2e-4, logging_steps=10)
trainer = SFTTrainer(model=model, args=cfg, train_dataset=ds, dataset_text_field="text")
trainer.train()跑大約 5-10 分鐘(500 筆資料,T4),你會看到 loss 從 ~2.5 降到 ~1.5。
5.2 跑後測試 adapter
model.eval()
prompt = "### Instruction: Write a haiku about debugging code.\n### Response:"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
out = model.generate(**inputs, max_new_tokens=80)
print(tokenizer.decode(out[0], skip_special_tokens=True))6. 何時該升級 / 離開 Colab
| 訊號 | 下一步 |
|---|---|
| 訓練超過 4 小時被踢 ≥ 3 次 | Kaggle(30hr/週)or Colab Pro |
| 需要 24/7 跑(資料越多越好的微調) | RunPod / Lambda |
| 想 SSH 進去用 VS Code Remote | RunPod(支援 SSH)or 自架 |
| 每月雲端帳單 > $100,而且每天用 | 考慮裝機 — 但先做雲端帳單分析,確認用量穩定 |
7. 自我檢測
接下來
- 跑完這份,你就站在「會用業界工具」 的門檻上了
- 下一步深入:lesson 10 · 重現論文(把這套 workflow 套到一篇真的 arXiv 論文上)
- 卡住的時候:lesson 14 · Debugging Playbook
- 想記錄你做了什麼:lesson 12 · 學習筆記範本 → 開個 GitHub repo 把 LoRA 微調過程寫下來,這就是你的第一篇作品集