[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 11 commits intoPaddlePaddle:developfrom
Conversation
|
Thanks for your contribution! |
CI报告基于以下代码生成(30分钟更新一次): 1 任务总览存在 1 个 required 失败任务(
2 任务状态汇总2.1 Required任务 : 3/10 通过
2.2 可选任务 — 23/26 通过
3 失败详情(仅 required)Approval — 代码规范(审批检查)(置信度: 高)Approval
根因详情: 关键日志: 修复建议:
修复建议摘要: 请指定RD审批envs.py改动和日志行为变更 关联变更: |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## develop #7746 +/- ##
==========================================
Coverage ? 72.36%
==========================================
Files ? 396
Lines ? 55733
Branches ? 8714
==========================================
Hits ? 40333
Misses ? 12647
Partials ? 2753
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 14:05:01
📋 Review 摘要
PR 概述:默认开启 FD_ENABLE_E2W_TENSOR_CONVERT 和 FD_ENGINE_TASK_QUEUE_WITH_SHM,同步新增 SHM 队列断连探测与端口可用性检查,并重构测试工具函数。
变更范围:fastdeploy/envs.py、fastdeploy/engine/common_engine.py、fastdeploy/inter_communicator/engine_worker_queue.py、fastdeploy/utils.py、tests/
影响面 Tag:[FDConfig] [Engine] [CI]
📝 PR 规范检查
标题包含官方 Tag [FDConfig] ✓,描述模板 5 个 section(Motivation / Modifications / Usage or Command / Accuracy Tests / Checklist)均完整 ✓,规范合规,无需修改建议。
问题
| 级别 | 文件 | 概述 |
|---|---|---|
| 🟡 建议 | fastdeploy/inter_communicator/engine_worker_queue.py:857 |
except Exception: return False 静默吞掉异常,无日志 |
| 🟡 建议 | tests/ci_use/EB_Lite_with_adapter/test_eblite_serving.py:93 |
rm -rf /dev/shm/* 过于激进,可能误删 CI 并发任务的共享内存 |
| ❓ 疑问 | fastdeploy/inter_communicator/engine_worker_queue.py:851 |
用 BaseManager.connect() 探测连接状态的可靠性存疑 |
总体评价
整体方向正确,默认启用 SHM 队列在正常环境下可有效提升性能,配套的断连探测和端口检查逻辑也完善了错误恢复路径。主要需关注测试清理逻辑的安全性及 is_broken() 的实现健壮性。
| self.manager.connect() | ||
| return False | ||
| except (ConnectionRefusedError, ConnectionResetError, BrokenPipeError, EOFError, OSError): | ||
| llm_logger.error("Failed to connect to engine worker queue") |
There was a problem hiding this comment.
🟡 建议 except Exception: return False 静默吞掉所有非预期异常,无任何日志(命中 §C:except Exception: 无 logger.error → 错误静默)。
当 self.manager.connect() 因非网络原因抛出异常时,此处会掩盖真实错误,使 is_broken() 误报为「队列正常」。
建议改为:except Exception as e: llm_logger.warning("is_broken: unexpected error: %s", 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 并发场景下可能误删其他测试任务或系统服务正在使用的共享内存段,引起不相关测试失败。
建议只清理本项目的 socket 文件,与 clean_ports 的实现保持一致:
glob.glob("/dev/shm/fd_task_queue_*.sock") 逐一删除,而非全量清理。
| """ | ||
| if self.manager is not None and self.is_server: | ||
| self.manager.shutdown() | ||
|
|
There was a problem hiding this comment.
❓ 疑问 BaseManager.connect() 的语义是「初始化/重建连接」,而非「探测连接是否存活」。若管理器端口仍在监听但内部状态已损坏,connect() 可能成功握手但后续业务请求仍会失败,导致 is_broken() 误判为正常。
另外请确认:当 FD_ENGINE_TASK_QUEUE_WITH_SHM=0(TCP 模式)时,self.manager.connect() 是否也能正确反映队列状态?建议作者补充说明两种模式下的行为一致性。
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