Files
nan 198fcbf55b
Some checks failed
Test / test (push) Has been cancelled
Initial public release
2026-09-19 21:31:36 +08:00

74 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# coreml-inference Specification
## Purpose
TBD - created by archiving change correct-coreml-device-support. Update Purpose after archive.
## Requirements
### Requirement: CoreML 使用唯一设备标识
系统 SHALL 在界面、任务参数、运行时设备清单和 ONNX Provider 选择中使用 `coreml` 表示 Apple CoreML Execution Provider,并 SHALL NOT 接受或生成 `mps` 设备标识。
#### Scenario: macOS 用户查看推理设备
- **WHEN** 用户在受支持的 macOS arm64 设备上查看推理设备枚举
- **THEN** 系统显示 `CoreML` 和 `CPU`,且不显示 `MPS`
#### Scenario: CoreML 任务参数
- **WHEN** 用户选择 CoreML 并创建 AI 任务
- **THEN** 系统提交的设备参数为 `coreml`
#### Scenario: 旧设备标识不再受支持
- **WHEN** Provider 选择入口接收到 `mps`
- **THEN** 系统拒绝该值,而不将其转换或转发为 CoreML
### Requirement: Apple Silicon 支持范围按平台确定
系统 SHALL 在 macOS 的 `arm64` 或 `aarch64` 架构上提供 CoreML,不得根据 Apple 芯片代际限制该设备。
#### Scenario: M1 至 M3 设备
- **WHEN** 系统运行于 M1、M2 或 M3 的 macOS arm64 环境
- **THEN** 可用设备包含 `coreml` 和 `cpu`
#### Scenario: M4 或更新设备
- **WHEN** 系统运行于 M4 或更新的 macOS arm64 环境
- **THEN** 可用设备包含 `coreml` 和 `cpu`
#### Scenario: Apple Silicon 默认设备
- **WHEN** macOS arm64 同时提供 CPU 与 CoreML
- **THEN** 设备枚举默认选择 CPU,且用户仍可手动选择 CoreML
#### Scenario: 非 Apple Silicon 平台
- **WHEN** 系统不运行于 macOS arm64 或 aarch64 环境
- **THEN** 系统不因 CoreML 规则新增 `coreml` 设备
### Requirement: CoreML Session 使用模型兼容配置
系统 SHALL 以 `CoreMLExecutionProvider` 创建 CoreML Session,并 SHALL NOT 强制设置 `ModelFormat=MLProgram`。普通模型 SHALL 使用默认 CoreML 配置;MoGe-2 SHALL 只允许 CoreML 接管静态输入 shape 分区;CoreML 不支持或未接管的执行 SHALL 由 CPU fallback 处理。
#### Scenario: 显式选择 CoreML
- **WHEN** 任务请求设备 `coreml` 且 ONNX Runtime 提供 CoreML Execution Provider
- **THEN** Session 以 CoreML 为首选 Provider、以 CPU 为后备 Provider,且创建参数不包含强制的 CoreML `MLProgram` 配置
#### Scenario: MoGe-2 限制 CoreML 动态分区
- **WHEN** 系统以 CoreML 创建 MoGe-2 Session
- **THEN** CoreML Provider options 包含 `RequireStaticInputShapes=1`,且不包含 `ModelFormat=MLProgram`
#### Scenario: 其他模型不继承 MoGe-2 限制
- **WHEN** 系统以 CoreML 创建 BEN2、DA3 或 Upscale Session
- **THEN** CoreML Provider 不包含 MoGe-2 的静态输入限制
#### Scenario: 自动选择 CoreML
- **WHEN** 任务请求自动设备且 CoreML 与 CPU Provider 都可用
- **THEN** CoreML 的优先级高于 CPU,并保留 CPU fallback
#### Scenario: CoreML 不可用
- **WHEN** 任务请求 CoreML 但 ONNX Runtime 只提供 CPU Provider
- **THEN** 系统使用 CPU Provider
### Requirement: MoGe-2 可在 CoreML 模式推理
系统 MUST 支持 MoGe-2 ONNX 模型在兼容 Apple Silicon CoreML 环境中创建 Session 并完成推理,不得因 AnyImage 强制选择 MLProgram 而在创建模型时失败。
#### Scenario: Apple Silicon 执行 MoGe-2
- **WHEN** M2 或 M4 用户选择 CoreML 并运行 MoGe-2 功能
- **THEN** 系统成功创建 CoreML Session 并完成至少一帧 MoGe-2 推理
#### Scenario: 其他 AI 模型继续使用 CoreML
- **WHEN** 用户选择 CoreML 并运行 BEN2 或 Upscale
- **THEN** 对应模型继续完成 Session 创建和推理