| 維度 | 優化前 | 目標 |
|---|---|---|
| 評測題量 | 5 萬題 | 15 萬題 |
| 單題平均耗時 | 1.8 s | 0.4 s |
| 端到端時長 | 72 h | 96 h → 24 h |
| 失敗率 | 12 % | < 2 % |
痛點 1:單節點 GPU 利用率低,IO 等待占 60 %。
痛點 2:評測腳本無版本控制,結果難復現。
痛點 3:人工標注錯誤率 8 %,導致指標漂移。

| 組件 | 版本 | 作用 |
|---|---|---|
| DeepSeek Agent API | v3.1 | 統一調用 LLM |
| Ray Data | 2.9 | 分布式批處理 |
| Weights & Biases | 0.16 | 實驗追蹤 |
| DeltaLake | 3.0 | ACID 數據湖 |
| Grafana Cloud | 最新 | 實時看板 |
| 日期 | 里程碑 | 關鍵 PR | 風險 |
|---|---|---|---|
| Day 0 | 需求澄清 & 基線測試 | #42 | GPU 配額不足 |
| Day 1 | IO 并行 + 緩存 | #47 | 緩存穿透 |
| Day 2 | 批處理 + 自動重試 | #53 | 冪等性 |
| Day 3 | 監控 + 可觀測性 | #59 | 指標誤報警 |
| Day 4 | 端到端壓測 + 文檔化 | #61 | 文檔滯后 |
from deepseek import AgentClient
client = AgentClient(
api_key=os.getenv("DS_API_KEY"),
base_url="https://platform.deepseek.com/agent/v3",
max_retries=3,
timeout=30,
)
@ray.remote(num_gpus=1)
def evaluate_batch(batch):
results = []
for row in batch.iter_rows():
prompt = build_prompt(row["question"])
resp = client.chat.completions.create(
model="deepseek-v3.1",
messages=[{"role": "user", "content": prompt}],
max_tokens=512,
temperature=0.0,
)
results.append({
"id": row["id"],
"answer": resp.choices[0].message.content,
"latency": resp.usage.latency_ms,
})
return pd.DataFrame(results)
ds = ray.data.read_parquet("s3://bucket/questions/*.parquet")
ds = ds.repartition(512)
out = ds.map_batches(evaluate_batch, batch_size=1024)
out.write_parquet("s3://bucket/results/")
| 方案 | 平均 QPS | GPU 利用率 | 失敗率 |
|---|---|---|---|
| 單線程 | 42 | 29 % | 12 % |
| Ray Data | 1 140 | 87 % | 1.8 % |
| +緩存 | 3 200 | 92 % | 0.9 % |
hash(question) | 名稱 | PromQL 示例 | 告警閾值 |
|---|---|---|
| 任務失敗率 | rate(failed_tasks_total[5m]) |
> 3 % |
| P99 延遲 | histogram_quantile(0.99, latency_bucket) |
> 800 ms |
| GPU 利用率 | nvidia_gpu_utilization |
< 70 % |
| 題干 | 期望輸出 |
|---|---|
| 若 a+b=3 且 a2+b2=7,求 ab | 1 |
通過 Jaeger 鏈路追蹤發現:
瓶頸在于 KV-Cache 預熱,開啟 prefix_cache=True 后縮短到 4 ms。
| 坑 | 現象 | 根因 | 解決 |
|---|---|---|---|
| 429 限流 | 任務隊列堆積 | 令牌桶 100 QPS | 動態退避 |
| JSON 解析異常 | 結果為空 | 大模型輸出含代碼塊 | 正則清洗 |
| S3 403 | 偶發寫失敗 | IAM 角色漂移 | OIDC 綁定 |
在四天的極限迭代中,我們圍繞 DeepSeek Agent API 重塑了評測流水線:用 Ray Data 拆任務、用 DeltaLake 保證一致性、用 Prometheus + Grafana 實時看板兜底。最終把端到端時長從 72 小時壓到 20 小時以內,并首次把 GPU 利用率推到 92 %。更重要的是,所有代碼、配置、監控腳本已開源,可復制、可擴展、可維護。