[FDConfig] 默认开启 FD_ENABLE_E2W_TENSOR_CONVERT 和 FD_ENGINE_TASK_QUEUE_WITH_SHM#7746
[FDConfig] 默认开启 FD_ENABLE_E2W_TENSOR_CONVERT 和 FD_ENGINE_TASK_QUEUE_WITH_SHM#7746sunlei1024 wants to merge 12 commits into
Conversation
|
Thanks for your contribution! |
CI报告基于以下代码生成(30分钟更新一次): 1 任务总览CI 尚未全部完成:1 个 Required 任务失败(需处理),1 个运行中,2 个等待中。
2 任务状态汇总2.1 Required任务 : 6/10 通过
2.2 可选任务 — 23/26 通过
3 失败详情(仅 required)Approval — 代码规范(置信度: 高)Approval
根因详情: 关键日志: 修复建议:
修复建议摘要: 请相应 RD(jiangjiajun/zhouchong 等)在 GitHub 上 Approve 此 PR 关联变更: PR 新增 链接: 查看日志 |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## develop #7746 +/- ##
==========================================
Coverage ? 72.28%
==========================================
Files ? 396
Lines ? 55858
Branches ? 8729
==========================================
Hits ? 40377
Misses ? 12719
Partials ? 2762
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
PaddlePaddle-bot
left a comment
There was a problem hiding this comment.
🤖 Paddle-CI-Agent | pr_review |
2026-05-11 20:59:30
📋 Review 摘要
PR 概述:默认开启 FD_ENABLE_E2W_TENSOR_CONVERT 和 FD_ENGINE_TASK_QUEUE_WITH_SHM 两个环境变量,提升引擎张量传递与任务队列效率,并新增 SHM 模式下的 broken queue 检测、Unix socket 可用性检测及相关测试重构。
变更范围:fastdeploy/envs.py、fastdeploy/engine/common_engine.py、fastdeploy/inter_communicator/engine_worker_queue.py、fastdeploy/utils.py、tests/
影响面 Tag:[FDConfig] [Engine] [CI]
📝 PR 规范检查
PR 标题使用了官方 Tag [FDConfig],格式合规。PR 描述包含全部必填 section(Motivation、Modifications、Usage or Command、Accuracy Tests、Checklist),结构合规,无需修改。
问题
| 级别 | 文件 | 概述 |
|---|---|---|
| 🟡 建议 | tests/ci_use/Qwen2-7B-Instruct_offline/test_Qwen2-7B-Instruct_offline.py:87 |
time.sleep(2) 替换了基于端口检测的初始化等待逻辑,存在测试可靠性隐患 |
| ❓ 疑问 | fastdeploy/inter_communicator/engine_worker_queue.py:859 |
is_broken() 中 except Exception: return False 对非连接类异常静默返回"未损坏" |
| ❓ 疑问 | tests/ci_use/EB_Lite_with_adapter/test_eblite_serving.py:93 |
rm -rf /dev/shm/* 在共享 CI 环境中可能误删其他进程的 SHM 文件 |
| ❓ 疑问 | tests/xpu_ci/conftest.py:106 |
同上,rm -rf /dev/shm/* 在共享环境存在误删风险 |
总体评价
本 PR 将两个性能优化开关默认开启,整体思路清晰,配套修改了端口检测逻辑和测试基础设施。主要关注点是测试可靠性(硬编码 2s sleep)和 CI 清理逻辑(rm -rf /dev/shm/* 过于激进),建议作者确认后再合入。
| ) | ||
| time.sleep(1) | ||
|
|
||
| time.sleep(2) |
There was a problem hiding this comment.
🟡 建议 time.sleep(2) 替换了原来基于端口轮询(最长等待 60s)的初始化检测,存在可靠性隐患。
原逻辑轮询 FD_ENGINE_QUEUE_PORT 是否已监听判断引擎就绪,启用 SHM 后 TCP 端口检测不再适用,但硬编码 2 秒在负载较高或模型较大时可能导致偶发测试失败。
建议改为轮询 SHM socket 文件或设合理上限重试(如 30s),以保持与原逻辑等价的健壮性。
| except (ConnectionRefusedError, ConnectionResetError, BrokenPipeError, EOFError, OSError): | ||
| llm_logger.error("Failed to connect to engine worker queue") | ||
| return True | ||
| except Exception: |
There was a problem hiding this comment.
❓ 疑问 except Exception: return False 对所有非连接类异常(如 AttributeError)静默返回 False("队列正常"),可能掩盖潜在问题。
若 self.manager 在某些时序下为 None,self.manager.connect() 会抛 AttributeError,调用方会误判队列健康而跳过重试。建议至少补充 warning 日志:
except Exception as e:
llm_logger.warning(f"Unexpected error in is_broken check: {e}")
return False| """ | ||
| # 清理/dev/shm中的临时文件 | ||
| try: | ||
| subprocess.run("rm -rf /dev/shm/*", shell=True) |
There was a problem hiding this comment.
❓ 疑问 rm -rf /dev/shm/* 会删除 /dev/shm 下的所有文件,在并发 CI 场景下可能误删其他 job 使用的 SHM 段。
建议改为只清理本框架生成的 socket 文件:
rm -f /dev/shm/fd_task_queue_*.sock|
|
||
| try: | ||
| # 清理/dev/shm下的所有文件 | ||
| subprocess.run("rm -rf /dev/shm/*", shell=True, check=True) |
There was a problem hiding this comment.
❓ 疑问 同 test_eblite_serving.py:rm -rf /dev/shm/* 在共享 CI 节点存在误删其他进程 SHM 文件的风险。
建议改为:
rm -f /dev/shm/fd_task_queue_*.sock
Motivation
默认开启
FD_ENABLE_E2W_TENSOR_CONVERT和FD_ENGINE_TASK_QUEUE_WITH_SHM,以提升 Engine-to-Worker 的张量传递效率,以及引擎任务队列基于共享内存(SHM)的通信性能。
该优化在大模型推理场景下可以减少序列化/反序列化开销,提高吞吐和延迟表现。
Modifications
fastdeploy/envs.pyFD_ENABLE_E2W_TENSOR_CONVERT默认值由0改为1FD_ENGINE_TASK_QUEUE_WITH_SHM默认值由0改为1行为变更说明:
FD_ENABLE_E2W_TENSOR_CONVERT=0FD_ENGINE_TASK_QUEUE_WITH_SHM=0/dev/shm空间充足(建议 ≥ 1GB,视模型规模而定)Usage or Command
默认无需额外配置,升级后自动生效。
如需关闭相关功能,可通过环境变量控制:
Docker 使用示例(配置共享内存):
Accuracy Tests
本次修改仅涉及环境变量默认值调整,不涉及模型计算逻辑变更。
验证结果:
Checklist