feat(orchestrator): 视觉 fallback 降级 + 文本融合角色化

- run_visual_analysis 仅 vision 角色参与, fallback 顺序降级(Gemini→NVIDIA NIM)首个成功即采用
- run_text_fusion 固定用 role=text 的 Ollama(qwen2.5:7b) 融合, 支持 num_predict
- config 改为多模型池(gemini/nvidia vision + ollama text)
This commit is contained in:
ericwyuan
2026-08-20 09:11:44 +08:00
parent 99d75a4bda
commit a46da5db81
2 changed files with 105 additions and 45 deletions

View File

@@ -1,4 +1,4 @@
# FAM-Edge 配置文件 (Oracle 端) - 实际部署配置
# FAM-Edge 配置文件 (Oracle 端) - 多模型池配置
# Tailscale: Oracle=100.74.137.126, NAS=100.70.234.39
# NAS 端回调地址
@@ -13,6 +13,11 @@ server:
port: 5000
max_concurrent_tasks: 1
# 编排调度模式: fallback(顺序降级, 默认) | ensemble(并行交叉验证)
orchestrator:
mode: "fallback"
overall_timeout: 600
# 关键帧筛选参数(自适应:帧数随视频时长动态计算)
video:
candidate_per_minute: 2 # 每分钟粗抽候选帧数
@@ -27,8 +32,6 @@ video:
max_long_edge: 1024
# 超时(秒)
# vlm_visual 实测: 1024px 帧视觉编码 ~36s/帧 + 生成 ~12s/60token (Oracle ARM CPU)
# 30min 视频 12 帧 × ~50s ≈ 600s超时需覆盖最坏情况
timeout:
download: 60
vlm_visual: 600
@@ -36,26 +39,39 @@ timeout:
callback: 30
overall: 1800
# 模型清单
# 模型池配置
# 视觉分析: Gemini(主) -> NVIDIA NIM(备) 顺序降级; 全失败 -> 任务 FAILED 走重试
# 文本融合/对话: 本地 Ollama qwen2.5:7b 专职 (不参与视觉)
models:
- provider: "ollama"
enabled: true
model_name: "llava-phi3"
base_url: "http://localhost:11434"
timeout: 600
# num_predict 必须小: ARM CPU ~5 tok/s500 会单帧跑数分钟触发超时
num_predict: 60
circuit_breaker:
enabled: false
threshold: 5
cooldown: 900
- provider: "gemini"
enabled: false
model_name: "gemini-1.5-flash"
api_key: ""
timeout: 8
role: "vision"
enabled: true
model_name: "gemini-flash-latest" # v1beta 下 gemini-1.5-flash 会 404
api_key: "${GEMINI_API_KEY}"
timeout: 15
circuit_breaker:
enabled: true
threshold: 5
cooldown: 900
threshold: 3
cooldown: 600
- provider: "nvidia"
role: "vision"
enabled: true
model_name: "meta/llama-3.2-11b-vision-instruct"
base_url: "https://integrate.api.nvidia.com/v1"
api_key: "${NVIDIA_API_KEY}"
timeout: 20
circuit_breaker:
enabled: true
threshold: 3
cooldown: 600
- provider: "ollama"
role: "text"
enabled: true
model_name: "qwen2.5:7b"
base_url: "http://localhost:11434"
timeout: 300
num_predict: 1024
circuit_breaker:
enabled: false