已开启
[faiss] 支持单 Faiss 内嵌 NPU Flat 并完善过滤与安装 #96
肾炝喜鲤创建于 7月6日
[faiss] 支持单 Faiss 内嵌 NPU Flat 并完善过滤与安装 #96
已开启
合并受阻
7月6日 关联了issue:[Feature]: 新增 presmoke 预冒烟流水线
ascend-robot
7月6日 评论:
7月6日 评论:
compile


ascend-robot
7月6日 评论:
7月6日 评论:
xiangjie10
7月6日 评论:
7月6日 评论:
🔍 PR 规范审计未通过,以下项目需要修正:
- ⚠️ PR 代码变更未包含测试用例(变更文件路径中均不包含 test 或 ut),请确认已经备注原因!
请修正后重新提交,或联系仓库管理员。


7月6日 添加了label:ascend-cla/yes
此处折叠了168条消息 查看更多
1 天前 修改了pull request 的描述
1 天前 修改了pull request 的描述
1 天前 删除了label:ci-pipeline-running
1 天前 添加了label:ci-pipeline-passed
AtlasAccount
1 天前 评论:
1 天前 评论:
流水线 PR-pipeline_faiss#915 [ commitID:92522cea ] 已完成
>>>代码风格自动修复执行成功(无修复内容)
| 阶段 | 任务名 | 状态 | 详情 |
|---|---|---|---|
| 编译构建 | PR-build-SAST-check | ✅ COMPLETED | >>> |
| Build_arm | ✅ COMPLETED | >>> | |
| 恶意代码检查 | Antipoison | ✅ COMPLETED | >>> |
| 编码安全与规范检查 | pre-commit | ✅ COMPLETED | >>> |
| 开源片段检查 | SCA | ✅ COMPLETED | >>> |
| 开发者测试 | PreSmoke | ✅ COMPLETED | >>> |
| UT | ✅ COMPLETED | >>> | |
| 流水线 | PR-pipeline_faiss | ✅ COMPLETED | >>> |
- compile : 运行流水线
- retry : 重试流水线所有失败子任务
- retry <任务名> : 仅重试指定失败子任务
- stop : 停止流水线


变更摘要
关联 Ascend/IndexSDK#13。将 Faiss-NPU 的 FP32 主机输入 Flat 组件接入调用方已有的 Faiss,保留 selector/mask、算子安装支持及异步失败保护。
主链为 Milvus → Knowhere → 单一内嵌 Faiss → NpuIndexFlat → faiss_npu_math → CANN → NPU。无需 IndexSDK、mxIndex、OM 或第二套完整 Faiss,不允许静默 CPU 回退。
产品修复包括页级 workspace 所有权与逆序归还、add 完成确认、distance 流确认成功后再提交 TopK、完成未知时保留资源、原错误码传播及失败索引关闭。失败索引拒绝后续 add/search/reconstruct,reset 不清除失败状态,需要重建。AICPU TopK 保留等待期限、首错及合作停止逻辑。
FP32 指主机输入;FP32 设备存储仅支持 add/reconstruct/reset,search 明确返回能力限制。FP16 设备存储的既有检索支持不变。
冲突处理(2026-10-12)
当前 head:
92522ceac6a6bc54c6b13fffa4165d708724cdba,保持单提交,父提交为Ascend/faiss:main的4fa68470943626c7345248dec23fa95213db21f3。相对新父提交 32 文件、+4078/-1055。安装指南保留上游 whl 离线安装、升级卸载内容及本 PR 的本地预置依赖、单 Faiss 嵌入说明;新增文字中的算子目录对齐上游
faiss_npu_math,中英文 API 文档合入上游目录/INT8 算子命名更新。28 个产品文件和 TempMemory UT 与精简后 headfd550323字节一致,未恢复迁出的新增测试。本次产品/测试身份、单提交与 32 文件范围、无冲突及文档/差异检查通过。新 head 的流水线 #915 已启动,结果待终态核验;下述 #836 和硬件结果仍分别归属其原受测版本。
按评审意见精简(2026-10-09)
精简后 head:
fd550323f2d06a982874dc1a9a4caac2b3421164,保持单提交。相对父提交26274fc40763167f2d9c7d9745483c1ab429bf07,diff 从 74 文件、+25154/-1057 降至 32 文件、+4077/-1057,新增量减少 83.79%。新增 host、设备回归、故障注入与算子测试移出产品 PR,作为独立验证附件交付。附件含 42 文件测试 overlay、逐文件摘要/模式清单及恢复运行说明。请在可丢弃的源码副本恢复,不覆盖正式交付树。
原有 CMake 测试列表与 Flat UT 恢复;保留 TempMemory UT 对非抛出 release 契约的必要修正:检查错误码、拒绝释放后分配仍登记,以及正确 LIFO 顺序下重试成功。精简时,28 个产品文件及 3 份产品文档与此前完整版本
3fbbc6cc字节相同。验证与版本归属
fd550323f2d06a982874dc1a9a4caac2b3421164的流水线 #836 七项检查及总流水线均 COMPLETED(2026-10-09)。平台统计 32 文件、+4081/-1061;本地父基线统计 32 文件、+4077/-1057。#752 全部通过属于此前完整版本3fbbc6cc,本次结果独立核验。2392fe6在 910B3/CANN 9.1.0-beta.3 上完成增量算子构建、单 Faiss 审计、Core/Go 增量、quick、服务错误注入、两次十万行合并与重启,以及 full。C3/C4 各 1536 格、SKIP 0;C4 speedup 最小 1.597641(要求 ≥1.0),批次聚合召回最小 0.900000(要求 ≥0.900000)。这些历史结果保留原版本归属,本次未重复运行。eb56ed9的公开测试入口、3fbbc6cc的 #748 定向修正与历史附件分别保留各自受测版本。测试迁出不会把历史硬件结果升级为新 head 的真机结果。接口与兼容性
公开接口新增
deallocMemoryNoThrow()、完成欠账钩子及completionUnknownActive()、NpuMemoryReservation::lastError()、ACL runtime 状态/隔离计数与 FlatIndex 失败状态查询;具体声明见产品头文件。新增虚函数改变 vtable,调用方必须使用匹配头文件重新编译,不保证旧二进制兼容。完成欠账采用固定 32 槽、范围与流配对及计数,溢出后保守拒绝释放。完成未知的资源不会自动 reset/free;隔离保留与错误传播不等同真实硬件故障恢复。
依赖与复验入口
C1!969 → C2!970 → C3!971 → C4!974 → C5!976。IndexSDK !285 是历史独立增强,不是前置。
C5 的
review.sh quick/full使用 Milvus Go 生命周期与 C3/C4,保持原字节及可执行位,不依赖迁出的 Faiss 测试。按 C5 README 准备 native 环境后执行./review.sh quick --env review.env或./review.sh full --env review.env。2026-10-09 精简及本次变基只调整 Faiss PR,C5 README/env 的正式输入仍固定历史完整版本
eb56ed9c1ece2ba0eb80216fe8ef4c546c3fad60,由 fork 标签 indexsdk13-reviewed-r9-20260922 保留;历史附件与 DOCX/CSV 不改写。开发自检
历史交付附件(2026-09-23)
以下附件固定历史完整版本,独立测试资产见本轮精简一节。