SuperAPI AI 工具集

core-ai

智能体与模型

查看项目

更新于 10-15 21:36

技能介绍

Core AI 用于在应用内本地运行 AI 模型,推理过程私密、可离线使用,且无按次推理成本。工作起点是 .aimodel 文件,可由已有模型转换或本身即为该格式,其中包含一个或多个具名推理函数。将其打包进应用,加载为 AIModel,再以 NDArray 张量运行这些函数;图像类输入使用像素缓冲区值。

适用设备为 Apple Intelligence 设备:A17 Pro 及以上的 iPhone/iPad、M1 及以上的 Mac、Apple Vision Pro(M2+)。构建时需要 Xcode 的 Metal Toolchain(默认未安装),否则包含 .aimodel 文件的构建会因缺少 Metal 编译器而失败。Core AI 在张量层面运行自有模型文件;Apple 的高层端侧 LLM API(对话会话、工具调用、引导式生成)属于 Foundation Models 框架,不在本技能范围内。

主要流程:在 Xcode 模型查看器中检查模型,查看 General(参数量、磁盘占用、计算与存储精度、算子分布、可编辑元数据)与 Functions(各推理函数的输入输出名称、类型、形状,维度中的 ? 表示动态)。将 .aimodel 加入 Xcode target(出现在 Compile Sources 构建阶段)。使用 AIModel(contentsOf:) 异步加载,框架会针对当前设备特化并选择性能最佳的计算单元,大模型首次加载可能较慢,可考虑提前编译。用 model.loadFunction(named:) 加载函数,名称不存在时返回 nil(其他加载失败会抛出);多函数模型可用 functionNames 查看。依据 function.descriptor 匹配输入形状与标量类型,再通过可变视图写入数据。最后用 function.run(inputs:) 运行,输出按名称返回,用 outputs.remove(_:) 取出并通过视图读取。同一推理函数可安全地被并发任务调用。

张量方面:NDArray 为 n 维张量,用 NDArray(shape:scalarType:) 构建,默认只读,写入用 mutableView(as:) 的 contiguousElements,读取用 view(),Swift 在编译期区分读写访问。scalarType 为元素类型,如 .float32;shape 为与模型期望一致的 [Int]。转换时标记为图像的输入输出使用像素缓冲区值而非 NDArray。ValueDescriptor 区分 .ndArray 与图像情形,运行时检查 descriptor.inputDescriptor(of:)/outputDescriptor(of:) 可让应用适应函数签名变化而无需改代码。

提前编译(AOT):端侧特化可能延迟首次加载,可用 coreai-build CLI 把模型编译移到构建机,将 MyModel.aimodel 转为每架构一个 MyModel.<arch>.aimodelc 资源,运行时按当前架构选择并以相同 AIModel API 加载。示例命令:xcrun coreai-build compile MyModel.aimodel --platform iOS --output compiled/;可用 --preferred-compute gpuAndNeuralEngine 等选项覆盖计算单元,或用 xcrun coreai-build compile --help 查看。安装 Metal Toolchain:xcodebuild -downloadComponent MetalToolchain。运行时用 AIModel.deviceArchitectureName 匹配架构资源名。注意:AOT 每个架构生成一个 .aimodelc;编译资源仍需要少量端侧特化,提前编译只是去掉大部分编译开销;AOT 仅面向 Apple Intelligence 设备。检查清单包括:Metal Toolchain 已安装、.aimodel 已加入 target、处理首次加载较慢、函数加载做 nil 检查、输入形状与类型校验、写入用可变视图读取用只读视图、按名称取出输出、大模型使用按架构编译的 .aimodelc。具体 API 细节建议以 Apple 官方文档为准。