這是很多人自己做「私人 AI 助手 / 領域模型」的典型做法。整體分成:模型選擇 → 資料 → 訓練 → 推論部署。
一、硬體條件(RTX 4090)
RTX 4090
- VRAM:24GB
- FP16 算力:約 82 TFLOPS
- 適合:LoRA / QLoRA 微調

最推薦:7B 或 14B
二、推薦基礎模型
目前開源模型中最適合微調的:

如果是 中文任務:
✅ Qwen2-7B
三、專案資料夾架構
一個簡單但標準的架構:
llm_project/
│
├─ dataset/
│ ├─ train.jsonl
│ └─ eval.jsonl
│
├─ model/
│
├─ scripts/
│ ├─ train.py
│ └─ inference.py
│
├─ output/
│ └─ lora_adapter
│
└─ requirements.txt
四、Dataset 格式(JSONL)
每一行一筆資料。
dataset/train.jsonl
例子:
</>JSON
{"messages":[
{"role":"system","content":"你是一位專業助理"},
{"role":"user","content":"幫我查一下預算表"},
{"role":"assistant","tool_calls":[
{"name":"query_database","arguments":{"query":"budget_2026"}}
]}
]}
另一筆:
</>JSON
{"messages":[
{"role":"user","content":"安祿山是誰"},
{"role":"assistant","content":"安祿山是唐朝節度使,後發動安史之亂。"}
]}
五、安裝訓練環境
Python 套件:
</>Bash
pip install transformers
pip install datasets
pip install peft
pip install accelerate
pip install bitsandbytes
pip install trl
六、訓練程式(train.py)
簡化版:
</>Python
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import LoraConfig, get_peft_model
from datasets import load_dataset
model_name = "Qwen/Qwen2-7B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
load_in_4bit=True,
device_map="auto"
)
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj","v_proj"],
lora_dropout=0.05,
)
model = get_peft_model(model, lora_config)
dataset = load_dataset("json", data_files="dataset/train.jsonl")
print("Dataset loaded")
七、4090 訓練參數建議

八、啟動訓練
</>Bash
accelerate launch train.py
輸出:
output/
lora_adapter/
大小通常:
200MB – 800MB
九、推論(inference)
</>Python
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
base_model = "Qwen/Qwen2-7B"
model = AutoModelForCausalLM.from_pretrained(
base_model,
load_in_4bit=True,
device_map="auto"
)
model = PeftModel.from_pretrained(model,"output/lora_adapter")
tokenizer = AutoTokenizer.from_pretrained(base_model)
prompt = "安祿山是誰?"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
output = model.generate(**inputs,max_new_tokens=200)
print(tokenizer.decode(output[0]))
十、你可以訓練的 AI 類型
4090 很適合做:
1️⃣ 私人知識助手<</>JSON
例如:
- 公司資料
- 法律資料
- 醫學資料
2️⃣ Tool-using AI
讓 AI 學會:
- 查資料庫
- 查天氣
- 排行事曆
3️⃣ 武俠小說 AI(很適合你)
例如 dataset:
</>JSON
{"messages":[
{"role":"user","content":"介紹公孫嫣"},
{"role":"assistant","content":"華山派女弟子,修練寒元真訣。"}
]}
或
</>JSON
{"messages":[
{"role":"user","content":"寒元真訣是什麼"},
{"role":"assistant","content":"華山派寒系內功,以陰寒真氣運行十二經脈。"}
]}
十一、4090 能訓練多大 Dataset
大概:

十二、很多人不知道的「關鍵技巧」
真正提升模型效果的不是 GPU,而是:
dataset 品質
好的 dataset:
- instruction 清楚
- output 穩定
- JSON 結構一致
這比模型大小更重要。















