已合并
Add CANN Dockerfiles for A2 and A3 #167
haozhang创建于 17 天前
Add CANN Dockerfiles for A2 and A3 #167
已合并
haozhang创建于 17 天前
haozhang
haozhang
17 天前

问题/功能描述

关联 Issue:#36

Faiss NPU 当前缺少面向不同昇腾芯片和操作系统的 Dockerfile,需要补充基于 CANN 镜像的容器化构建方案,覆盖 A2、A3以及 Ubuntu 22.04、openEuler 24.03。

修改方案描述

  • 新增 A2、A3对应的 Dockerfile,支持 Ubuntu 22.04 和 openEuler 24.03,共 4 种组合。
  • 使用 CANN 9.1.0 镜像作为基础镜像。
  • 增加 Ubuntu/openEuler 共用的依赖安装脚本。
  • 增加自定义算子编译、Faiss NPU 编译、wheel 打包及安装脚本。
  • 增加对应的 Dockerfile 专用 .dockerignore
  • 增加镜像构建、容器启动和 Flat 精度用例验证说明。
  • 增加 19 项静态回归测试,覆盖镜像矩阵、芯片编译目标、构建脚本、设备挂载和构建上下文。

已完成以下静态验证:

  • 两个 Bash 脚本语法检查通过。
  • Ascend 实机上的镜像构建、容器启动以及 test_flat_accuracy.py 验证待后续执行。

开发自检

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 haozhang 的贡献)
haozhanghaozhang
17 天前 关联了issue:[Task]: 提供不同版本的 Dockerfile
AtlasAccount
AtlasAccount成员
17 天前 评论:

compile

likedislike
atomgit-bot
atomgit-bot
17 天前 评论:

变更摘要

本 PR 为 Faiss NPU 补充了基于 CANN 9.1.0 镜像的容器化构建方案,新增 6 个 Dockerfile 覆盖 A2(ascend910b)、A3(ascend910_93)、A5(ascend910_95)三种昇腾芯片与 Ubuntu 22.04、openEuler 24.03 两种操作系统的组合,配套新增 .dockerignore、Ubuntu/openEuler 共用的依赖安装脚本 install_dependencies.sh、完成自定义算子编译与 Faiss NPU 编译打包安装的 build_and_install.sh,并新增覆盖镜像矩阵、构建脚本契约、设备挂载与构建上下文等内容的静态回归测试 test_dockerfiles.py。所有新增文件均为纯新增(705 行),未删除任何代码。

主要改动

  • 新增 6 个 CANN 基础镜像 Dockerfile 及配套 .dockerignore: 每个 Dockerfile 以 ${CANN_REGISTRY}/cann:${CANN_VERSION}-{910b|a3|950}-{ubuntu22.04|openeuler24.03}-py${PYTHON_VERSION} 为基础镜像,设置 ASCEND_CUSTOM_OPP_PATH=${ASCEND_HOME_PATH}/opp/vendors/custom_math 及对应 LD_LIBRARY_PATH,并通过 FAISS_NPU_COMPUTE_UNIT 注入芯片编译目标(ascend910b/ascend910_93/ascend910_95);.dockerignore 统一排除 sift1M/build//faiss/npu/ops/build//faiss/npu/ops/build_out//.git/ 等冗余文件。
  • 新增共享依赖安装脚本 install_dependencies.sh: 通过 /etc/os-release 识别系统,Ubuntu 走 apt-get(安装 build-essentiallibopenblas-devpython3-devswig 等),openEuler 走 dnf/yum(安装 gccopenblas-develpython3-develswig 等),并统一通过 pip 安装 cmake==3.26.4numpy==1.26.4packagingsetuptoolswheel
  • 新增构建安装脚本 build_and_install.sh: 校验 compute unit 参数与 FAISS_PYTHON_VERSION,source 官方 CANN 环境脚本 /usr/local/Ascend/ascend-toolkit/set_env.sh 并校验 ASCEND_HOME_PATH,随后执行 ops_build.sh --compute-unit=... 编译自定义算子、以 -DFAISS_ENABLE_NPU=ON/-DFAISS_ENABLE_GPU=OFF 配置 cmake 编译 Faiss、bdist_wheel 打包唯一 wheel 并以 --force-reinstall --no-deps 安装,最后将生成的 cann-ops-math-custom_linux-aarch64.run 安装到 ${ASCEND_HOME_PATH}/opp
  • 新增静态回归测试 test_dockerfiles.py: 覆盖共享脚本契约(系统识别、编译目标校验、NPU 开启/GPU 关闭、wheel 打包与算子安装)、6 个 Dockerfile 的镜像矩阵与基础镜像/编译单元一致性、CANN 路径继承与自定义算子路径派生、.dockerignore 自包含性、README 中 A5 设备目录挂载(/dev/ummu/dev/uburma)与 A2/A3 的 --device /dev/devmm_svm 说明,以及仓库构建输入文件的存在性。
likedislike
不准确?
atomgit-bot
atomgit-bot
17 天前 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
此处折叠了202条消息 查看更多
chasefhb
chasefhb成员
3 天前 评论:

/lgtm

likedislike
ascend-robotascend-robot成员
3 天前 添加了label:approved
ascend-robotascend-robot成员
3 天前 关闭了关联的issue
ascend-robotascend-robot成员
3 天前 合入了pull request,合并节点 SHA:49409a958269086e546b765d5f7ab910eb2e277b
ascend-robot
ascend-robot成员
3 天前 评论:

Pull Request 已合并或已关闭。

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike