执行摘要
修复 ROCm CI 中 hf-xet 在共享 NFS 上的安全问题
在共享 NFS 上运行 ROCm CI 时,高并发的 hf-xet vectored writes 可能导致数据损坏,如 Buildkite build #11196 所示。需要让 xet 的永久缓存保留在共享 NFS 上,但将临时状态移到本地存储,并禁用高性能 vectored 重建模式。
低风险、高收益的 CI 稳定性修复,建议快速合并。
无显著的 review 讨论;tjtanaa 直接批准了变更。
在共享 NFS 上运行 ROCm CI 时,高并发的 hf-xet vectored writes 可能导致数据损坏,如 Buildkite build #11196 所示。需要让 xet 的永久缓存保留在共享 NFS 上,但将临时状态移到本地存储,并禁用高性能 vectored 重建模式。
低风险、高收益的 CI 稳定性修复,建议快速合并。
无显著的 review 讨论;tjtanaa 直接批准了变更。
initialize_native_environment()函数中,新增变量hf_fstype,使用findmnt命令查询${HF_HOME}挂载点的文件系统类型。nfs或nfs4,则设置HF_XET_CACHE为本地路径(native_root/cache/hf-xet),并禁用HF_XET_HIGH_PERFORMANCE和HF_XET_RECONSTRUCTION_USE_VECTORED_WRITE。mkdir -p确保本地缓存目录存在,失败时返回非零退出码。| 文件 | 模块 | 状态 | 重要度 |
|---|---|---|---|
.buildkite/scripts/hardware_ci/run-amd-test.sh |
CI 脚本 | modified | 4.05 |
.buildkite/scripts/hardware_ci/run-amd-test.sh
infrastructure
唯一变更文件,包含 NFS 检测逻辑和环境变量设置。
# 在 initialize_native_environment() 函数中
local hf_fstype=""
# 使用 findmnt 检测 HF_HOME 挂载的文件系统类型
if command -v findmnt >/dev/null 2>&1; then
hf_fstype=$(findmnt -n -T "${HF_HOME}" -o FSTYPE 2>/dev/null || true)
fi
# 如果是 NFS 类型,则调整 xet 配置
if [[ "${hf_fstype}" == nfs || "${hf_fstype}" == nfs4 ]]; then
# Keep hf-xet state local and avoid vectored writes on shared NFS.
export HF_XET_CACHE="${native_root}/cache/hf-xet"
export HF_XET_HIGH_PERFORMANCE=0
export HF_XET_RECONSTRUCTION_USE_VECTORED_WRITE=0
mkdir -p "${HF_XET_CACHE}" || return 1
echo "Configured hf-xet for shared ${hf_fstype} cache at ${HF_HOME}"
fi
当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。
低风险:仅当findmnt可用且HF_HOME在 NFS 上时才会触发变更;对非 NFS 环境无影响。潜在风险是findmnt命令在部分镜像中不可用,但已通过command -v检查。
仅影响 ROCm CI 运行环境,特别是使用共享 NFS 存储HF_HOME的机器。预计会消除因 vectored writes 导致的 CI 不稳定,而不会影响缓存命中率。
当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。
参与讨论