Sonoma系统CoreML模型生成速度较Ventura大幅变慢,求解决方法
解决方案
性能下降优化
强制指定计算单元:Sonoma默认可能限制了CoreML的资源调度策略,在模型参数中添加
computationUnits配置,强制调用所有可用硬件资源:let params_boosted = MLBoostedTreeRegressor.ModelParameters( maxIterations: 10000, computationUnits: .all )该配置会让模型充分利用M1的Neural Engine、GPU和CPU,避免系统保守调度导致的性能损失。
优化训练数据加载:如果训练数据是磁盘惰性加载模式,Sonoma的文件系统优化可能拖慢数据读取速度,改为全内存加载:
// 禁用内存映射,将数据完全加载到内存中 let inMemoryTrainingData = try MLDataTable(contentsOf: trainingDataURL, memoryMap: false)Game Mode无负面影响:Game Mode的作用是提升前台应用的资源优先级,不会导致性能下降。反而可以开启后测试,看是否能拉高你的应用调度优先级。
恢复Verbose训练日志
Sonoma调整了CoreML的默认日志级别,可通过Xcode Scheme设置恢复详细输出:
- 打开
Product > Scheme > Edit Scheme - 切换到
Run > Arguments > Environment Variables - 添加环境变量
COREML_DEBUG,值设为3(最高日志级别) - 重新运行代码,终端会显示每轮迭代的耗时、偏差等信息
也可以在代码中手动输出关键训练日志:
import os.log let trainingLog = OSLog(subsystem: "your.app.bundle.id", category: "CoreMLTraining") os_log(.info, log: trainingLog, "Training started with %d iterations", 10000)
额外排查动作
- 升级Xcode到15及以上版本:旧版Xcode在Sonoma上存在兼容性问题,适配新版本可解决部分底层调度bug
- 小迭代测试:将
maxIterations改为1000,测试耗时比例是否依旧异常,排除大迭代次数下的调度差异 - 清理CoreML缓存:删除
~/Library/Caches/com.apple.CoreML目录,清除旧系统残留的缓存文件
内容的提问来源于stack exchange,提问作者frankthechicken
相关产品推荐
相关产品推荐

