1、设置MINDIE_SD_VERSION_OVERRIDE=3.0.0,构建出的包为:mindiesd-3.0.0-cp311-cp311-manylinux_2_38_aarch64.whl
2、不设置环境变量,会默认识别环境中安装的torch版本进行命名,mindiesd-2.9.0-cp311-cp311-manylinux_2_38_aarch64.whl


mindiesd-3.0.0-cp311-cp311-manylinux_2_38_aarch64.whl
mindiesd-3.0.0-cp311-cp311-linux_aarch64.whl
这两个 wheel 的差别主要在最后的 platform tag:manylinux_2_38_aarch64、linux_aarch64
- linux_aarch64,普通本地 Linux 构建 tag,不能说明 manylinux 兼容性。不可用于PyPI上传
- manylinux_2_38_aarch64 ,声明符合 manylinux 规范,目标 aarch64,glibc 基线 2.38。可以用于PyPI上传


感谢提交功能建议!本 Issue 已标记为 rfc(属于 enhancement 范畴)。
评估状态:已记录,维护团队将在本周评估实现复杂度。
根据你 5/25 的补充反馈,whl 包构建规则涉及以下关键点:
MINDIE_SD_VERSION_OVERRIDE环境变量对 wheel 命名的影响。- manylinux vs linux 平台标签的构建差异和兼容性。
- 多 torch 版本 wheel 打包策略。
维护团队建议:
- 在 RFC 中补充 wheel 包的发布渠道策略(PyPI、私有仓库、GitCode Release)。
- 明确平台标签的兼容性矩阵(manylinux_2_38_aarch64 / linux_aarch64 / 其他)。
- 考虑是否需要提供 wheel 构建的 CI/CD 自动化模板。
若未解决,请补充:
- 目标使用场景(开发、测试、生产)
- 预期的 wheel 分发渠道
- 环境版本(Python / torch / CANN 版本)
关联分析:发现 PR #342 ([Feature][build]支持多 torch 版本 wheel 打包) 可能与本 Issue 相关。
该 PR 状态:merged,目标分支:dev。
建议维护者确认关联关系,并评估是否已覆盖本 RFC 中提到的多 torch 版本 wheel 构建需求。


安全问题已收到。本 Issue 建议标记为 security(ai-triaged),优先级提升。
初步评估:风险等级与影响面需维护者进一步确认。
请补充(如方便):
- 复现路径或 POC
- 影响版本范围
- 建议的修复方案
关联分析:发现 PR #369 ([Chore][docker]Rename omni image to mindiesd and switch tag to v3.0.0) 可能与本 Issue 相关。
该 PR 状态:open,目标分支:dev。
建议维护者确认关联关系。


Issue #157 (RFC/Feature):
感谢提交功能建议!本 Issue 已标记为 rfc(属于 enhancement 范畴)。
评估状态:已记录,维护团队将在本周评估实现复杂度。
初步分析:
您提出的 WHL 包构建规则改进涉及 MINDIE_SD_VERSION_OVERRIDE 环境变量设置、构建产物命名一致性(manylinux_2_38 vs manylinux_2_28)、以及 wheel 打包的跨平台兼容性。这对于多版本部署和 CI/CD 集成非常重要。
建议补充:
- 目标使用场景:是否需要支持自定义版本号覆盖(如
3.0.0)? - 初步实现思路:是否参考 PEP 517/518 标准,统一使用
pyproject.toml声明构建依赖? - 是否愿意贡献 PR:如果有初步实现方案,欢迎提交!
关联分析:
- 发现 PR #342 ([Feature][build]支持多 torch 版本 wheel 打包) 可能与本 Issue 相关。该 PR 状态:
merged,目标分支:dev。
建议维护者确认关联关系。


💡 功能建议已收到
感谢提交此功能建议!本 Issue 已标记为 enhancement。
评估状态:已记录,维护团队将在本周评估实现复杂度。
初步评估:
- 类型:Feature / Enhancement
- 建议标签:feature, ai-triaged
如有更多设计细节或实现思路,欢迎补充讨论。


关联分析:发现 PR #343 ([Feature][ops]Add quant Conv3d plugin op) 可能与本 Issue 相关。
该 PR 状态:open,目标分支:dev。
建议维护者确认关联关系。


Bug 问题已收到,本 Issue 已标记为 bug(ai-triaged)。
根因分析:
根据标题描述,该问题涉及 [RFC]: MindIE SD的whl包构建规则。初步推测可能与代码逻辑或环境配置有关。
排查方向:
- 请确认是否使用了最新版本的代码和依赖。
- 请提供完整的错误日志和堆栈信息。
- 请说明复现步骤和运行环境(硬件、CANN版本、Python版本等)。
优化建议:
在获取更多信息后,维护团队将进行深入分析。如有相关修复,我们将及时更新。
关联分析:发现 PR #352 (Fix attn_cache shared across all decorated functions) 可能与本 Issue 相关。
该 PR 状态:open,目标分支:master。
建议维护者确认关联关系。
关联分析:发现 PR #351 (Fix thread-safety issue in MoE context using contextvars) 可能与本 Issue 相关。
该 PR 状态:open,目标分支:master。
建议维护者确认关联关系。


感谢您对 WHL 包构建规则的详细补充!本 Issue 已标记为 rfc(属于 enhancement 范畴)。
评估状态:维护团队已收到您的补充反馈,正在评估实现复杂度。
针对您补充内容的反馈:
-
manylinux vs linux 平台标签:
您指出的差异非常关键。manylinux_2_38_aarch64符合 manylinux 规范,可用于 PyPI 上传;而linux_aarch64仅为普通本地构建标签,不适用于 PyPI。建议在 RFC 中明确构建产物是否以 PyPI 发布为首要目标,并据此统一平台标签生成逻辑。 -
MINDIE_SD_VERSION_OVERRIDE 环境变量行为:
您验证的设置行为(覆盖版本号 vs 默认跟随 torch 版本)已记录。建议后续在文档中明确:- 该环境变量的覆盖优先级和生效范围
- 与
setup.py/pyproject.toml中版本声明的交互关系 - 是否需要在 CI 构建流水线中统一注入该变量
-
后续建议:
- 补充 wheel 构建的 CI/CD 自动化模板(GitHub Actions / GitCode CI)
- 明确
manylinux_2_38基线的兼容性策略(是否向下兼容manylinux_2_28) - 考虑提供 wheel 构建的本地验证脚本,便于开发者自检产物合规性
关联分析:发现 PR !398 ([Chore][deps]Reorganize requirements into layers and loosen version constraints) 可能与本 Issue 相关。
该 PR 状态:open,目标分支:dev。
建议维护者确认关联关系,并评估依赖分层重构对 wheel 构建环境的影响。
关联分析:发现 PR !384 ([Bugfix] fix A5 build error) 可能与本 Issue 相关。
该 PR 状态:open,目标分支:dev。
建议维护者确认关联关系,该 PR 涉及构建修复,可能与跨平台 wheel 构建的兼容性有关。


感谢提交功能建议!本 Issue 已标记为 enhancement(ai-triaged)。
评估状态:已记录,维护团队将在本周评估实现复杂度。
该 RFC 涉及 MindIE-SD 的重要改进方向,建议维护团队安排技术评审并给出排期计划。
关联分析:发现 PR #380 ([Bugfix][eplb]Align EPLB fault logs with fault mode library) 可能与本 Issue 相关。
该 PR 状态:merged,目标分支:dev。
建议维护者确认关联关系。
本评论由 AI 自动处理,标记 ai-triaged。


感谢提交功能建议!本 Issue 已标记为 rfc(ai-triaged)。
评估状态:已记录,维护团队将在本周评估实现复杂度。
初步评估:
whl 包构建规则涉及多平台兼容性、版本号一致性、依赖解析等多个维度。RFC 中的提案需要综合评估:
- 对现有 CI/CD 流程的影响
- 对下游用户安装体验的影响
- 与现有版本管理策略的兼容性
建议补充:
- 期望的构建规则详细说明
- 参考的其他项目构建方案
- 具体的痛点场景和复现步骤
关联分析:暂未发现与当前 Issue 直接相关的 PR。
建议维护者确认关联关系。


状态(Status): Draft
作者(Authors): @guowenna1
创建日期(Created): YYYY-MM-DD
更新日期(Updated): YYYY-MM-DD
**相关 Issue/PR:https://gitcode.com/Ascend/MindIE-SD/pull/308
1. 概述
本 RFC 设计 MindIE-SD Python wheel 包发布到 PyPI 的版本命名、平台标记、运行依赖约束和构建发布流程。目标是使
mindiesdwheel 在 PyPI 上能够明确表达其适配的 Python、平台、PyTorch 和 torch-npu 版本,降低用户安装错误版本后出现 ABI 不兼容或运行时失败的风险。本方案采用与
torch-npu类似的版本命名风格:mindiesd的发行版本号默认与当前构建环境中的torch版本保持一致。例如在 torch 2.9.0 环境中构建时,生成mindiesd-2.9.0-cp311-cp311-manylinux_2_38_aarch64.whl;未来在 torch 2.10.0 环境中构建时,生成mindiesd-2.10.0-...whl。1.2 动机
MindIE-SD wheel 包包含 CANN 自定义算子、PyTorch plugin 动态库以及 Python 包代码,属于和 Python ABI、操作系统平台、torch/torch-npu 运行时强相关的二进制分发包。此前构建出的 wheel 文件名为
mindiesd-3.0.0-cp311-cp311-linux_aarch64.whl,存在以下问题:linux_aarch64不是 PyPI 可接受的 manylinux 平台 tag,上传 PyPI 时会返回400 Bad Request。install_requires中未精确约束torch和torch-npu,用户可能在不兼容的 torch 环境中安装并运行。参考
torch-npu的发布方式,torch_npu-2.10.0-cp313-cp313-manylinux_2_28_x86_64.whl通过发行版本号2.10.0表达其对应的 PyTorch 版本线。MindIE-SD 也采用该风格,可以让用户在文件名中直接识别 torch 适配线。1.3 目标
本 RFC 的目标如下:
mindiesd-2.9.0-...whl。torch、torch-npu和 Python minor 版本。非目标如下:
2. 用例分析
主要使用场景包括:
pip install mindiesd==2.9.0安装 MindIE-SD。python3 setup.py bdist_wheel,生成可上传 PyPI 的 manylinux wheel。mindiesd的新版本 wheel,版本号自动变为2.10.0。关键约束如下:
manylinux_2_38_aarch64。cp311-cp311。3. 方案设计
3.1 总体方案
整体方案在
setup.py中完成构建期动态决策:python_requires,例如>=3.11,<3.12。torch.__version__,去掉+local后缀后作为mindiesd发行版本号。torch_npu.__version__,写入install_requires。bdist_wheel阶段将 wheel 标记为非 pure wheel。manylinux_2_38_aarch64。twine check校验生成的 wheel metadata。当前构建产物示例:
其含义如下:
3.2 技术选型
考虑过以下方案:
mindiesd-3.0.0-...whlmindiesd-3.0.0.post29-...whltorch-npu风格不一致;用户识别成本更高mindiesd-2.9.0-...whltorch-npu风格一致;文件名直观体现 torch 线mindiesd-torch29mindiesd3.3 功能与性能设计
3.3.1 版本生成
默认版本生成规则:
MINDIE_SD_VERSION_OVERRIDE,优先使用该值。torch.__version__。split("+", 1)[0],去除本地版本后缀。MINDIE_SD_VERSION_OVERRIDE,保证pyproject.toml中动态版本读取version.__version__时保持一致。示例:
mindiesd-2.9.0-...whlmindiesd-2.10.0-...whlmindiesd-2.10.0-...whl3.3.2 依赖生成
构建时生成精确运行依赖:
当前 torch 2.9 构建环境中的结果为:
该设计确保
pip解析依赖时不会将 MindIE-SD 安装到不匹配的 torch/torch-npu 环境中。3.3.3 Python 版本约束
构建时根据当前 Python minor 生成约束:
例如 Python 3.11 构建产物写入:
这样可以避免 Python 3.10 或 3.12 用户安装到仅针对 CPython 3.11 ABI 编译的 wheel。
3.3.4 平台 tag 生成
bdist_wheel阶段将 wheel 标记为二进制 wheel,并自动生成 PyPI 可接受的平台 tag:manylinux_${glibc_major}_${glibc_minor}_aarch64manylinux_${glibc_major}_${glibc_minor}_x86_64MINDIE_SD_PLAT_NAME显式覆盖。当前构建环境生成:
3.3.5 发布流程
当前 torch 2.9 + Python 3.11 发布流程:
cd /home/g00576449/mindie26.1.0/task/pypi_task/MindIE-SD rm -rf dist build/lib mindiesd.egg-info python3 setup.py bdist_wheel python3 -m twine check dist/*.whl python3 -m twine upload dist/mindiesd-2.9.0-cp311-cp311-manylinux_2_38_aarch64.whl上传前需要解包检查:
unzip -p dist/mindiesd-2.9.0-cp311-cp311-manylinux_2_38_aarch64.whl "*/METADATA" \ | grep -E "^(Name|Version|Requires-Python|Requires-Dist):" unzip -p dist/mindiesd-2.9.0-cp311-cp311-manylinux_2_38_aarch64.whl "*/WHEEL" \ | grep "^Tag:"期望结果:
3.4 安全隐私与DFX设计
兼容性
mindiesd下通过版本号区分 torch 适配线。可维护性
setup.py内集中生成。可测试性
setup.py --version快速验证版本生成。setup.py egg_info验证 metadata。twine check验证 PyPI metadata 基本合法性。METADATA和WHEEL。可靠性
linux_aarch64,避免 PyPI 上传失败。安全隐私
twine标准认证流程输入或配置,不写入源码仓。3.5 编程与调用设计
本需求不新增 MindIE-SD 运行时 API,仅影响构建和发布行为。
3.5.1 编程模型基本设计
开发环境:
python3 setup.py bdist_wheel。开发约束:
可验收设计:
python3 setup.py --version输出与当前 torch 版本一致。python3 -m twine check dist/*.whl返回PASSED。Requires-Python和Requires-Dist。3.5.2 接口定义与设计
本方案不新增用户 API,但新增或保留以下构建期环境变量:
MINDIE_SD_VERSION_OVERRIDEMINDIE_SD_TORCH_VERSIONtorch.__version__MINDIE_SD_TORCH_NPU_VERSIONtorch_npu.__version__MINDIE_SD_PYTHON_REQUIRESRequires-PythonMINDIE_SD_PLAT_NAME使用示例:
3.5.3 编程手册设计
需要在开发者构建文档中补充以下内容:
mindiesd发行版本号的对应关系。twine check和 METADATA 解包检查命令。4. 测试设计
测试分为构建期测试、metadata 测试和发布前校验。
构建期测试:
预期输出:
metadata 测试:
rm -rf mindiesd.egg-info python3 setup.py egg_info grep -E "^(Name|Version|Requires-Python|Requires-Dist):" mindiesd.egg-info/PKG-INFO cat mindiesd.egg-info/requires.txt预期包含:
wheel 测试:
预期生成:
解包测试:
unzip -p dist/mindiesd-2.9.0-cp311-cp311-manylinux_2_38_aarch64.whl "*/METADATA" \ | grep -E "^(Name|Version|Requires-Python|Requires-Dist):" unzip -p dist/mindiesd-2.9.0-cp311-cp311-manylinux_2_38_aarch64.whl "*/WHEEL" \ | grep "^Tag:"验收标准:
twine check通过。mindiesd-2.9.0-cp311-cp311-manylinux_2_38_aarch64.whl。Version为2.9.0。Requires-Dist精确约束torch==2.9.0和torch-npu==2.9.0.post1。Tag为cp311-cp311-manylinux_2_38_aarch64。5. 缺点和风险
5.1 产品版本表达能力下降
发行版本号用于表达 torch 适配线后,MindIE-SD 自身产品版本无法直接通过 wheel 文件名表达。
应对措施:
5.2 多版本矩阵维护成本
若未来支持 torch 2.9、2.10、多个 Python minor 和多个平台,需要维护构建矩阵。
应对措施:
5.3 依赖精确钉死导致安装灵活性降低
torch==2.9.0和torch-npu==2.9.0.post1可以降低 ABI 风险,但用户无法在 patch 版本不同的环境中直接复用该 wheel。应对措施:
torch>=2.9,<2.10,但需单独验证。6. 现有技术
6.1 torch-npu
torch-npu采用发行版本号与 PyTorch 版本线对齐的方式,例如:其中
2.10.0是torch_npu自身发行版本号,同时表达其适配 torch 2.10 版本线。MindIE-SD 本方案借鉴该命名策略。6.2 Python wheel 规范
wheel 文件名遵循如下格式:
因此 wheel 文件名本身没有专门的 torch version tag。若需要在文件名中体现 torch 版本,推荐通过发行版本号或包名策略表达。本方案选择发行版本号对齐 torch。
6.3 manylinux 平台 tag
PyPI 不接受泛化的
linux_aarch64tag 作为公开分发 wheel 的平台 tag。本方案生成manylinux_2_38_aarch64,满足 PyPI 对 Linux 二进制 wheel 的平台 tag 要求。7. 未解决问题
以下问题需在 RFC 评审或后续版本中继续确认:
3.0.0是否立即 yank,以及 yank reason 文案。附录
cp311。欢迎加入社区,感谢您对社区的贡献 🎉!