AI(LLM)架設核心思考與規畫心態說明2:Q:以目前開源的AI來說,該如何使用與訓練?
Q2:以目前開源的AI來說,該如何使用與訓練?
Ans:
這個問題正好切入目前 AI 發展最活躍的核心領域。使用與訓練開源 AI 模型是將 AI 力量掌握在自己手中的關鍵。
可將其分為兩大部分:「如何使用」和「如何訓練(微調)」,並提供具體的步驟、工具和程式碼範例。
Part 1:如何「使用」現成的開源 AI 模型
這一步的目標是:在你自己的電腦或伺服器上,成功地讓一個已經訓練好的開源模型跑起來,並與它互動。這就像下載一個功能強大的軟體,然後在本地端執行。
核心概念
你不是從零訓練,而是直接下載由 Meta、Google、Mistral 等公司發布的「模型權重檔 (Model Weights)」,然後用一個框架 (Framework) 去載入並執行它。
你需要什麼?
一個模型 (The Model):
去哪裡找?
是目前全世界最大的 AI 模型、資料集和工具的集散地。你想得到的開源模型幾乎都在上面。Hugging Face 推薦模型:
Meta Llama 3: 目前綜合表現最強的開源模型系列之一。
Google Gemma: Google 推出的輕量級高效能模型,非常適合研究和開發。
Mistral AI Models (e.g., Mistral 7B, Mixtral 8x7B): 以小尺寸、高效能著稱,非常受開發者社群歡迎。
注意模型大小: 模型名稱後面的數字(如
8B代表80億參數)代表其規模。越大通常越聰明,但也需要越好的硬體。
一個框架 (The Framework):
Hugging Face
transformers: 這是黃金標準。它是一個 Python 函式庫,可以讓你用幾行程式碼就輕鬆下載、載入和使用數萬個不同的模型。
硬體 (The Hardware):
入門建議: 一張擁有至少 12GB VRAM 的 NVIDIA 顯示卡(例如 RTX 3060 12GB 版本)可以跑一些小型的模型(如 7B/8B 的量化版本)。
沒有好顯卡怎麼辦? 使用 Google Colab!它提供免費的 GPU 使用額度,是學習和實驗的最佳起點。
實作步驟與程式碼範例
這裡以 Google 的 gemma-2b-it (指導微調過的 20 億參數模型) 為例,它對硬體要求較低。
步驟 1:設定環境 在你的電腦或 Google Colab 中,安裝必要的 Python 函式庫。
pip install transformers torch accelerate bitsandbytes
torch: 核心的深度學習框架。accelerate: 幫助 PyTorch 在不同硬體上高效運行的工具。bitsandbytes: 用於模型量化,能用更少的 VRAM 載入更大的模型。
步驟 2:撰寫 Python 程式碼來執行模型
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
# --- 1. 選擇模型 ---
# 從 Hugging Face Hub 指定要下載的模型 ID
model_id = "google/gemma-2b-it"
# --- 2. 載入分詞器和模型 ---
# 分詞器 (Tokenizer) 負責將你的文字轉換成模型看得懂的數字 ID
tokenizer = AutoTokenizer.from_pretrained(model_id)
# 載入模型本身
# device_map="auto" 會自動偵測你是否有 GPU 可用
# torch_dtype=torch.bfloat16 使用半精度浮點數以節省記憶體
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="auto",
torch_dtype=torch.bfloat16
)
# --- 3. 準備輸入 (Prompt) ---
# 指導微調過後的模型,通常需要遵循特定的對話格式
chat = [
{ "role": "user", "content": "你好,請用繁體中文介紹一下什麼是 Hugging Face?" },
]
prompt = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
# --- 4. 進行推論 (Inference) ---
# 將 prompt 轉換成模型輸入的格式
inputs = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt").to(model.device)
# 產生文字,max_new_tokens 控制回答的最大長度
outputs = model.generate(input_ids=inputs, max_new_tokens=512)
# --- 5. 解碼並輸出結果 ---
# 將模型輸出的數字 ID 轉換回人類看得懂的文字
result_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
# 移除掉輸入的部分,只顯示模型的回答
response_start = result_text.find("<start_of_turn>model")
print(result_text[response_start + len("<start_of_turn>model\n") :])
就這樣!你已經成功在本地端使用了最先進的開源 AI 模型。
Part 2:如何「訓練(微調)」開源 AI 模型
這一步的目標是:讓通用的開源模型,變成你專屬領域的專家。
核心概念
微調 (Fine-tuning) 不是從零訓練。而是拿一個已經具備強大語言能力的「基礎模型」,用你自己的、小規模但高品質的「專業資料集」去繼續訓練它。這就像讓一位大學畢業生去學習你公司的內部文件,使他成為能處理你公司業務的專家。
你需要什麼?
Part 1 的所有東西: 一個基礎模型、框架和硬體。
一個高品質的資料集 (Dataset):
這是微調的靈魂! 資料集的品質直接決定了微調後模型的好壞。
格式: 最常見的是「指令遵循 (Instruction-following)」格式,通常是 JSONL 檔案,每一行包含一個範例,例如:
JSON{"instruction": "請將以下文字翻譯成英文。", "input": "台灣的半導體產業世界聞名。", "output": "Taiwan's semiconductor industry is world-renowned."} {"instruction": "總結這篇文章的重點。", "input": "...", "output": "..."}來源: 你可以自己人工標注,或從公司內部文件中整理出來。
一個訓練腳本/工具:
Hugging Face
TrainerAPI: 一個高度整合的工具,可以讓你用很少的程式碼來處理複雜的訓練流程。PEFT (Parameter-Efficient Fine-Tuning): 一種先進的微調技術函式庫,特別是 LoRA (Low-Rank Adaptation) 技術,它能讓你只訓練模型的一小部分參數,大幅降低對 VRAM 的需求,讓消費級顯卡也能進行微調。
微調步驟概覽
準備資料集: 這是最耗時的一步。收集、清洗並整理成上述的 JSONL 格式。
選擇基礎模型: 選擇一個適合你任務的基礎模型(例如
meta-llama/Llama-3-8B-Instruct)。設定訓練腳本:
載入你的資料集。
載入基礎模型和分詞器。
使用 PEFT/LoRA 設定模型: 這是關鍵步驟,告訴訓練器我們只訓練一小部分(適配器 Adapter)。
設定
Trainer的訓練參數(學習率、訓練週期數等)。
開始訓練: 執行腳本。根據你的資料量和硬體,可能需要數小時到數天。
儲存與測試: 訓練完成後,只會生成一個很小的 LoRA 適配器檔案(通常只有幾十 MB)。你可以將這個「外掛」合併回原來的基礎模型,也可以在推論時動態載入它。
評估效果: 比較微調後的模型在你的專業問題上,是否比原來的基礎模型回答得更好。
由於微調的程式碼較長,通常會使用現成的開源專案腳本(如 axolotl, Llama-Factory)來執行,但其核心原理就是圍繞 資料集 + 基礎模型 + LoRA + Trainer 這四個要素。
總結與建議
先從「使用」開始: 在你嘗試微調之前,請務必先熟悉如何使用
transformers函式庫在本地端或 Colab 上成功運行一個開源模型。Hugging Face 是你的好朋友: 花時間去熟悉它的網站,上面有海量的模型、資料集和教學文章。
資料集決定成敗: 微調的魔力完全來自於你提供的資料,Garbage In, Garbage Out。
善用 LoRA: Parameter-Efficient Fine-Tuning (PEFT) 和 LoRA 技術是讓個人開發者也能玩轉模型微調的關鍵,一定要去了解它。
留言
張貼留言