You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode应用CoreML模型报错求助:MpsGraph后端OS兼容性问题

错误排查与调试方案

错误核心原因

E5RT: Espresso exception: "Invalid state": MpsGraph backend validation on incompatible OS (11)
[Espresso::handle_ex_] exception=Espresso compiled without MPSGraph engine.

该错误本质是MPSGraph后端与当前运行系统版本不兼容:MPSGraph是CoreML依赖的Metal图形后端,仅支持iOS 14.0+/macOS 11.0+及以上版本,若运行环境系统版本低于要求,或模型配置强制启用了MPSGraph,就会触发该报错。


1. 确认运行环境系统版本

  • 模拟器:打开模拟器,通过「设置 → 通用 → 关于本机」查看系统版本,确保不低于iOS 14.0/macOS 11.0
  • 真机:在设备的「设置 → 通用 → 关于本机」核对系统版本

2. 修改CoreML配置,避开MPSGraph依赖

初始化模型时显式配置计算单元,强制兼容旧系统,同时完善错误捕获逻辑:

mutating func detect(ciImage: CIImage) {
    // 初始化兼容型配置
    let config = MLModelConfiguration()
    // 优先用CPU+GPU,旧系统会自动跳过MPSGraph;若仍报错,可改用.cpuOnly
    config.computeUnits = .cpuAndGPU
    
    guard let model = try? VNCoreMLModel(for: resnet101_model(configuration: config).model)
    else {
        print("模型初始化失败")
        return
    }
    
    let request = VNCoreMLRequest(model: model)
    let handler = VNImageRequestHandler(ciImage: ciImage, options: [:])
    
    // 替换静默失败的try?,显式捕获错误
    do {
        try handler.perform([request])
    } catch {
        print("预测执行失败:\(error)")
        return
    }
    
    guard let results = request.results as? [VNClassificationObservation] else {
        print("无有效预测结果")
        return
    }
    
    self.results = results.first?.identifier
}

3. 检查模型的编译与部署设置

  • 用Xcode打开你的.mlmodel文件,在「模型检查器」面板中:
    • 确认「部署目标」设置为你需要支持的最低系统版本(比如iOS 13.0)
    • 若模型是通过CoreML Tools转换生成的,重新转换时不要添加强制启用MPSGraph的编译参数

4. 验证模型本身的可用性

打开.mlmodel文件的「预览」标签,上传一张测试图片尝试预测:

  • 若预览中也报错,说明模型本身存在兼容性问题,需重新转换或调整模型结构
  • 若预览正常,问题则出在代码配置或运行环境上

内容的提问来源于stack exchange,提问作者Shivi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 05:12:44