[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 9 commits intoPaddlePaddle:developfrom
Conversation
|
Thanks for your contribution! |
CI报告基于以下代码生成(30分钟更新一次): 1 任务总览当前有 1 个 Required 任务失败(Approval 审批未通过),3 个 Required 任务运行中,请等待所有 Required 任务完成后再合并。
2 任务状态汇总2.1 Required任务 : 6/10 通过
2.2 可选任务 — 24/26 通过
3 失败详情(仅 required)Approval — 基础设施(置信度: 高)Approval
根因详情: 关键日志: 修复建议:
修复建议摘要: 请 Reviewer 审批此 PR 链接: 查看日志 |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #7746 +/- ##
==========================================
Coverage ? 72.41%
==========================================
Files ? 396
Lines ? 55708
Branches ? 8706
==========================================
Hits ? 40341
Misses ? 12606
Partials ? 2761
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-09 23:20:19
📋 Review 摘要
PR 概述:将 FD_ENABLE_E2W_TENSOR_CONVERT 与 FD_ENGINE_TASK_QUEUE_WITH_SHM 两个环境变量的默认值从 0 改为 1,并为 EngineWorkerQueue 新增队列健康检测方法,同时重构测试工具函数
变更范围:fastdeploy/envs.py、fastdeploy/engine/common_engine.py、fastdeploy/inter_communicator/engine_worker_queue.py、测试文件
影响面 Tag:[FDConfig] [Engine]
📝 PR 规范检查
PR 标题使用了官方 Tag [FDConfig],格式合规;## Motivation、## Modifications、## Usage or Command、## Accuracy Tests、## Checklist 五个必填段落均已填写,结构符合模板要求。✓
问题
| 级别 | 文件 | 概述 |
|---|---|---|
| 🟡 建议 | tests/ci_use/EB_Lite_with_adapter/test_eblite_serving.py:93 |
rm -rf /dev/shm/* 清除全局 /dev/shm,在 CI 共享环境中可能误删其他进程的 socket 文件 |
| ❓ 疑问 | fastdeploy/inter_communicator/engine_worker_queue.py:859 |
is_broken() 的 except Exception: return False 分支无任何日志,未知异常会被静默吞掉 |
| ❓ 疑问 | fastdeploy/envs.py:178 |
FD_ENGINE_TASK_QUEUE_WITH_SHM=1 默认开启后,若 /dev/shm 空间不足(Docker 默认仅 64 MB),启动时无容量预检或明确报错 |
总体评价
本次变更逻辑清晰,性能优化意图明确,代码质量良好。有两处细节建议关注:测试中的全局 /dev/shm 清理范围过大,以及 is_broken() 的静默异常处理;此外建议在文档或启动日志中补充 SHM 容量要求提示。
| """ | ||
| # 清理/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 共享环境下可能误删其他进程的 unix socket 文件。
建议改为只清理本测试相关的 socket 文件:
import glob
for sock in glob.glob("/dev/shm/fd_task_queue_*.sock"):
try:
os.remove(sock)
except OSError:
pass或直接复用本 PR 引入的 cleanup_unix_socket 函数,按 PORTS_TO_CLEAN 逐一清理对应 socket。
| 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 分支无任何日志输出,遇到预期外异常(如 AuthenticationError、MemoryError)时会静默返回 False(表示队列正常),可能掩盖真实故障。
建议补充日志:
except Exception as e:
llm_logger.warning("Unexpected exception in is_broken check: %s", e)
return False| "FD_ENABLE_E2W_TENSOR_CONVERT": lambda: int(os.getenv("FD_ENABLE_E2W_TENSOR_CONVERT", "0")), | ||
| "FD_ENGINE_TASK_QUEUE_WITH_SHM": lambda: int(os.getenv("FD_ENGINE_TASK_QUEUE_WITH_SHM", "0")), | ||
| "FD_ENABLE_E2W_TENSOR_CONVERT": lambda: int(os.getenv("FD_ENABLE_E2W_TENSOR_CONVERT", "1")), | ||
| "FD_ENGINE_TASK_QUEUE_WITH_SHM": lambda: int(os.getenv("FD_ENGINE_TASK_QUEUE_WITH_SHM", "1")), |
There was a problem hiding this comment.
❓ 疑问 FD_ENGINE_TASK_QUEUE_WITH_SHM 默认值改为 1 后,Docker 容器默认 /dev/shm 仅有 64 MB,大模型场景下可能导致 socket 通信失败且错误信息不直观。
建议在 EngineWorkerQueue.__init__ 初始化时加入容量预检(或至少输出 warning):
import shutil
shm_free = shutil.disk_usage("/dev/shm").free
if shm_free < 1 * 1024 ** 3: # 1 GB
logger.warning("/dev/shm free space %d MB < 1 GB, consider --shm-size=1g", shm_free // 1024**2)
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