BLUEPRINT
架構設計
整體架構
┌─────────────────────────────────────────────────────────────────┐
│ Ego Pod(自我意識膠囊) │
│ │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌────────┐ │
│ │ 資料採集器 │───→│ 語料建構器 │───→│ 訓練引擎 │───→│ 版本管理│ │
│ │ Collector │ │ Compiler │ │ Trainer │ │ Vault │ │
│ └───────────┘ └───────────┘ └───────────┘ └────────┘ │
│ ↑ ↓ │
│ ┌─────────┐ ┌──────────┐ │
│ │資料來源設定│ │ Ego 產出 │ │
│ │ Sources │ │ Editions │ │
│ └─────────┘ └──────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 設定中心(Config) │ │
│ │ 基座選型 · Edition 定義 · 訓練參數 · 資料來源對應 · 排程策略 │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
模組說明
1. 資料採集器(Collector)
從設定指定的資料來源讀取宿主資料。
支援的資料來源類型:
- 本機目錄(檔案系統路徑)
- URL(HTTP/HTTPS 端點)
- 雲端儲存(S3、OSS、Google Drive 等,透過外掛擴充)
- 自訂適配器(使用者可撰寫採集外掛)
採集的資料類別(對應 iFay 架構):
| 資料類別 | 對應 iFay 模組 | 現實範例 |
|---|---|---|
| 感知資料 | Sense | 你每天的運動軌跡、手機使用時長分佈、常去的餐廳位置、睡眠時間規律 |
| 行為資料 | Action | 你在手機上的操作習慣(總是先看 LINE 再看信箱)、常用的快捷指令、自動化腳本 |
| 認知資料 | Thought | 你的讀書筆記、工作日誌、學習心得、對某個技術方案的評價和思考過程 |
| 技能資料 | Skill | 你會的程式語言和熟練度、擅長的食譜、掌握的樂器和曲目清單 |
| 憑證資料 | Credentials | 你的身份標識、授權範圍(如:可以代你發信但不能代你轉帳)、權限邊界 |
例如:一個自由譯者的 Collector 設定可能是這樣的——Sense 指向她的翻譯記憶庫(本機目錄),Action 指向她在 CAT 工具中的操作日誌(URL),Thought 指向她的術語筆記(雲端硬碟),Skill 指向她的語言對和專業領域清單(本機檔案)。
Collector 不關心資料的內部格式(那是姊妹專案定義的),只關心「去哪裡取」和「取到的是哪類資料」。
2. 語料建構器(Compiler)
將採集到的原始資料轉化為可用於 LoRA 訓練的語料。
核心職責:
- 資料清洗與脫敏 — 特別是 Credentials 相關資料。例如:你的 API 金鑰
sk-abc123...會被替換為[REDACTED],確保訓練資料中不包含任何敏感資訊 - 格式標準化 — 統一為訓練框架可接受的格式。例如:你的一段讀書筆記 "這本書講的是分散式系統的 CAP 定理..." 會被轉化為
{"instruction": "解釋 CAP 定理", "output": "CAP 定理是分散式系統的..."} - 語料分類 — 按 LoRA 層級分組。例如:「我喜歡喝美式咖啡」歸入偏好層,「2024年去了日本旅行」歸入記憶層,「Python 的 GIL 機制是...」歸入知識層
- 品質過濾 — 去除雜訊資料、重複資料。例如:重複的聊天紀錄只保留一份,過短的片段(如「嗯」、「好的」)被過濾掉
- 資料增強 — 必要時透過範本或改寫擴充語料。例如:原始資料「推薦一首歌」會被增強為「請用不同的方式表達:推薦一首歌」、「換一種說法:推薦一首歌」
輸出格式:
- 標準的指令微調資料集(instruction/input/output 三元組)
- 對話格式資料集(multi-turn conversation)
- 按 LoRA 層級分組的子資料集
3. 訓練引擎(Trainer)
基於選定基座和建構好的語料,訓練 LoRA 適配器。
多後端自動適配:
Trainer 會自動偵測你的硬體環境,選擇最佳的訓練後端:
| 優先級 | 後端 | 適用環境 | 速度 |
|---|---|---|---|
| 1 | Unsloth | NVIDIA GPU (CUDA) | 最快(2x 加速) |
| 2 | HuggingFace PEFT | NVIDIA GPU (CUDA) | 標準速度 |
| 3 | Apple MLX | Mac (Apple Silicon) | 原生加速 |
| 4 | HuggingFace PEFT | 僅 CPU | 較慢但通用 |
| 5 | Stub | 無 ML 相依 | 模擬模式(開發/測試用) |
你不需要關心用的是哪個後端——Ego Pod 會自動選擇。如果你有一張 RTX 4090,它會用 Unsloth 加速;如果你用的是 MacBook Pro M3,它會用 MLX;如果你只是想先試試流程,它會用 Stub 模式模擬訓練。
訓練流程:
- 載入基座模型(4-bit 量化)
- 按 LoRA 層級依次訓練適配器
- 驗證訓練效果(自動評估對齊度)
- 為每個 edition 產生對應的基座+LoRA 組合
多 Edition 訓練策略:
- 每個 edition 使用不同規模的基座
- 同一份語料,針對不同基座分別訓練 LoRA
- 可平行訓練多個 edition
例如:你有一台帶 GPU 的桌機,執行
ego train後,Ego Pod 會同時為你的手錶(lite)、手機(normal)和電腦(plus)訓練三個版本的 LoRA。整個過程大約 10-30 分鐘,取決於資料量。
4. 版本管理(Vault)
管理 Ego 模型的版本和產出。
職責:
- 儲存每次訓練產出的 LoRA 適配器
- 管理多個 edition 的模型檔案
- 支援版本回溯(保留歷史版本)
- 覆蓋舊版本(預設行為)
- 匯出為可分發的 Ego 套件
例如:你上週訓練了一個 Ego(v0.1.0),這週又加了新資料重新訓練(v0.2.0)。結果發現新版本的回答風格變了,不像你了。這時你可以一鍵回溯到 v0.1.0,就像手機系統降級一樣。
Ego 套件結構:
ego-output/
├── manifest.json # Ego 中繼資料(版本、基座資訊、edition 清單)
├── lite/
│ ├── config.json # edition 設定(基座型號、量化方式、硬體需求)
│ └── adapters/
│ └── ego-lora.safetensors # LoRA 適配器權重
├── normal/
│ ├── config.json
│ └── adapters/
│ └── ego-lora.safetensors
├── plus/
│ ├── config.json
│ └── adapters/
│ └── ego-lora.safetensors
├── super/
│ ├── config.json
│ └── adapters/
│ └── ego-lora.safetensors
└── [custom-name]/ # 使用者自訂 edition
├── config.json
└── adapters/
└── ego-lora.safetensors
5. 設定中心(Config)
統一管理 Ego Pod 的所有設定。
設定項:
# ego-config.yaml 範例
# 資料來源對應 — 告訴 Ego Pod 去哪裡找你的資料
sources:
sense:
type: "local"
path: "/data/ifay/sense/" # 你的感知資料目錄
action:
type: "url"
endpoint: "https://api.example.com/action-logs" # 行為日誌 API
thought:
type: "local"
path: "/data/ifay/thought/" # 你的筆記和知識庫
skill:
type: "s3"
bucket: "ifay-skills" # 雲端技能資料
prefix: "user-001/"
credentials:
type: "local"
path: "/data/ifay/credentials/" # 憑證資料(會自動脫敏)
# 訓練參數 — 通常不需要修改,預設值適合大多數場景
training:
method: "qlora"
quantization: "4bit"
lora_rank: 16
lora_alpha: 32
learning_rate: 2e-4
epochs: 3
batch_size: 4
# Edition 定義 — 你想產出哪些版本
editions:
lite:
base: "qwen3.5-0.8B"
description: "智慧手錶、錄音筆、無人機、IoT"
normal:
base: "qwen3.5-2B"
description: "手機、平板電腦"
plus:
base: "qwen3.5-4B"
description: "高效能 PC、本機伺服器"
super:
base: "qwen3.5-27B"
description: "雲端服務、GPU 叢集"
# 你可以在這裡新增自訂 edition,例如:
# clinic:
# base: "qwen3.5-4B"
# description: "門診專用版"
# 排程策略 — 什麼時候自動重新訓練
schedule:
auto_update: true
interval: "weekly" # 每週自動修煉一次
trigger: "data_change" # 或 manual(手動觸發)/ cron(排程任務)
