Files
qwen36_01/worklogs/2026-07-15-platform-basic-fix.md

60 lines
3.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 2026-07-15 平台基础测试失败修复记录
## 现象
提交 29 已成功构建镜像,但 benchmark-agent 任务运行约 38 分钟后失败。用户补充的完整页面日志仍不是完整 docker 文件尾部,而是平台 UI 中截取的 docker 日志片段;片段里没有逐条功能测试失败项,但出现大量 `[PROF]` 逐层 profiling 输出。
调度日志中的实际启动命令缺少 `--enforce-eager`,而本地当前 `computility-run.yaml` 已包含该参数,说明当次平台提交没有使用到本地最新配置,或提交时该修复尚未推送到官方仓库。
## 判断
当前失败首先不是性能问题,而是基础准入阶段的稳定性/兼容性问题:
1. 平台实际启动未带 `--enforce-eager`245K 上下文下可能走 CUDA Graph 路径BI-V100 上容易 OOM、卡住或初始化不稳定。
2. docker 日志中出现大量 `[PROF]`,说明当次镜像包含默认开启的代码级 profiling严重拖慢请求并放大日志。
3. 官方基础测试会覆盖更宽的 OpenAI 兼容面,当前裸 vLLM 风格接口对 `tool_choice="required"`、多模态 content blocks、`n=2` 等请求存在 4xx 或调度死锁风险。
## 本次修改
1. `computility-run.yaml`
- 保留并确认 `--enforce-eager`
- 显式加入 `PROF_TRACE=0``PROF_MOE_SUMMARY=0`,防止平台镜像误开 profiling。
- 显式加入 `MOE_DECODE_NATIVE=0`,关闭尚未稳定收益的 decode native 实验路径。
2. `qwen3_6_scripts/protocol.py`
-`tool_choice="required"` 归一化为首个工具的强制 named tool choice。
- 允许 assistant 消息 `content=null` 且带 `tool_calls`,避免历史工具调用消息 4xx。
- 将 OpenAI multimodal content blocks 中的图片/视频剥离为文本占位,避免文本模型加载多模态数据失败;保留文本片段。
3. `qwen3_6_scripts/serving_chat.py`
-`n > max_num_seqs` 时不再返回 400而是降级为 `n=max_num_seqs`,避免官方 `n=2` 采样测试失败或调度死锁。
4. `qwen3_6_scripts/chat_template_multi_system.jinja`
- 历史 assistant tool_calls 的 `arguments` 同时兼容 dict 和 JSON string避免多轮工具调用模板渲染失败。
## 本地验证
使用 AST 解析检查了核心 Python 文件:
- `qwen3_6_scripts/protocol.py`
- `qwen3_6_scripts/serving_chat.py`
- `qwen3_6_scripts/qwen3_5.py`
结果均为 `AST OK`
`python -m py_compile` 在 Windows 本地因 `qwen3_6_scripts/__pycache__` 目录权限拒绝失败,非语法错误。
## 下一步
1. 提交并推送该版本到官方仓库,确保平台实际启动命令中出现 `--enforce-eager``PROF_TRACE=0`
2. 在远端用基础冒烟脚本验证:
- non-stream chat
- stream + usage
- tool call / required tool choice
- reasoning on/off/default
- base64 image content
- prefix cache usage
- `n=2` 状态码
- JSON object/schema
3. 重新提交平台评测,若仍失败,需要导出完整 docker 日志尾部定位具体功能项。