算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
run-ab-test-models【设计与创意】Design and execute A/B tests for ML models in production using traffic splitting, statistical significance testing, and canary/shadow deployment strategies. Measure performance differences and make data-driven decisions about model rollout. Use when validating a new model version before full rollout, comparing candidate models trained with different …
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
詳見 Extended Examples 取得完整配置文件與範本。
以流量分割與統計分析比較模型版本之受控實驗。
定義測試參數、成功標準與統計要求。
# ab_test/experiment_config.py
from dataclasses import dataclass
from typing import List, Dict
import numpy as np
from scipy.stats import norm
@dataclass
# ... (see EXAMPLES.md for complete implementation)
預期: 實驗配置含統計健全之樣本量計算,通常每變體 5-10k 樣本以達 5-10% MDE。
失敗時: 若所需樣本量過大,提高流量分配、延長測試時長或接受更大 MDE;驗證基線指標估計準確;考慮序貫測試以連續監控。
設置路由邏輯以隨機分派請求至各模型。
# ab_test/traffic_router.py
import hashlib
import random
from typing import Dict, Optional
from dataclasses import dataclass
import logging
logger = logging.getLogger(__name__)
# ... (see EXAMPLES.md for complete implementation)
預期: 用戶到變體之分派一致,流量分割比例符合配置,所有分派皆已記錄供分析。
失敗時: 驗證雜湊函數產生均勻分佈(以 10k 用戶 ID 測試)、確認 user_id 跨請求穩定(非 session_id)、確保日誌捕捉所有預測事件、於前 1000 請求驗證流量分割。
挑戰者模型平行執行而不影響用戶(影子模式)。
# ab_test/shadow_deployment.py
import asyncio
from typing import Dict, Any
import logging
from concurrent.futures import ThreadPoolExecutor
import time
logger = logging.getLogger(__name__)
# ... (see EXAMPLES.md for complete implementation)
預期: 冠軍預測以正常延遲提供,挑戰者預測非同步記錄而不阻塞,預測差異已捕捉以供分析。
失敗時: 將挑戰者超時設小於冠軍 SLA 以避免阻塞;優雅處理挑戰者錯誤而不影響冠軍;監控記憶體用量(兩模型載入);考慮取樣(僅記錄 10% 影子預測)。
收集實驗資料並執行統計檢驗。
# ab_test/analysis.py
import pandas as pd
import numpy as np
from scipy import stats
from typing import Dict, Tuple
import logging
logger = logging.getLogger(__name__)
# ... (see EXAMPLES.md for complete implementation)
預期: 統計檢驗結果含 p 值、信賴區間與明確決策(推出/保留/不確定),通常於 7-14 日後或達樣本量時。
失敗時: 驗證真值標籤可用(可能需延遲分析);檢查樣本比例不匹配(SRM)以識別分派錯誤;確保達足夠樣本量;於早期資料中尋找新奇/首因效應;若固定時程測試過慢,考慮序貫測試。
持續檢查挑戰者未違反安全閾值。
# ab_test/guardrails.py
import pandas as pd
import logging
from typing import Dict, List
logger = logging.getLogger(__name__)
# ... (see EXAMPLES.md for complete implementation)
預期: 護欄違規於 5-15 分鐘內偵測,關鍵閾值(延遲、錯誤)越界時自動停止實驗,警報送至團隊。
失敗時: 驗證護欄閾值合理(非過緊);確保監控迴圈持續執行;檢查 stop_experiment() 函數確實更新路由;測試警報傳遞通道。
依實驗結果,決定是否推出挑戰者。
# ab_test/rollout_decision.py
import logging
from typing import Dict
from dataclasses import dataclass
logger = logging.getLogger(__name__)
# ... (see EXAMPLES.md for complete implementation)
預期: 明確決策(全量/漸進推出、保留冠軍或延長測試),附理由與行動項。
失敗時: 若決策不明,執行子群分析(依用戶區段、時段、設備類型);檢查交互效應;審視業務情境(如 2% 提升是否值得工程成本?);與利害相關方諮詢。
deploy-ml-model-serving - 模型部署基礎設施與版本控制monitor-model-drift - 推出後之持續效能監控