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

为何代码训练Create ML图像分类模型比可视化界面慢?

Create ML代码训练速度远慢于可视化界面的问题

用Create ML可视化界面训练图像分类模型仅需数十秒,但为实现功能迭代自动化改用代码训练时,相同数据与参数下,代码生成的可执行文件训练耗时超20分钟,运行时持续出现CIKernel相关警告,推测与图像处理有关。查阅苹果官方文档及Stack Overflow相关问题后仍无法解决速度问题,也不清楚代码训练与可视化界面训练的差异。

训练代码

class CreateMLManager : NSObject {
    open var dataPath: String?
    open var outPath: String?
    
    public func training() -> Int {
        guard let dataPath = dataPath else {
            return 1
        }
        guard let outPath = outPath else {
            return 1
        }
        do {
            let aumentation : MLImageClassifier.ImageAugmentationOptions = [.crop, .rotation, .blur, .exposure, .noise, .flip];
            let parameters = MLImageClassifier.ModelParameters(validation: .split(strategy: .automatic),maxIterations: 11,augmentation: aumentation,algorithm: .transferLearning(featureExtractor: .scenePrint(revision: 1), classifier: .logisticRegressor))
            
            let out_path = outPath + "/test.mlmodel"
            let model = try MLImageClassifier(trainingData: .labeledDirectories(at: URL(fileURLWithPath: dataPath)), parameters:parameters)
            try model.write(to: URL(fileURLWithPath: out_path))
            return 0
        } catch {
            return 1
        }
    }
}

运行日志

Current working dir: /Users/wbw/Library/Developer/Xcode/DerivedData/mlmodelTransition-cdfkslvlaufvnagpypknnofdmgkv/Build/Products/Debug
2023-01-10 18:02:09.670712+0800 mlmodelTransition[1435:1935624] 训练数据:/Users/wbw/Desktop/Rashomon/work/company_library/ArWeb/web/ml_platform/temp/xjy
2023-01-10 18:02:09.671074+0800 mlmodelTransition[1435:1935624] 存储路径:/Users/wbw/Desktop/Rashomon/work/company_library/ArWeb/web/ml_platform/resource/training_model/xjy
4 augmented images by 'crop' to be generated.
4 augmented images by 'rotation' to be generated.
4 augmented images by 'blur' to be generated.
1 augmented images by 'exposure' to be generated.
1 augmented images by 'noise' to be generated.
1 augmented images by 'flip' to be generated.
Extracting augmented image features from training data.
Analyzing and extracting image features.
+----------------------+------------------+--------------+------------------+
Raw Images Processed | Augmented Images | Elapsed Time | Percent Complete |
+----------------------+------------------+--------------+------------------+
2023-01-10 18:02:11.132922+0800 mlmodelTransition[1435:1936088] Metal API Validation Enabled
Failed to render 89401 pixels because a CIKernel's ROI function did not allow tiling.
2023-01-10 18:02:11.212669+0800 mlmodelTransition[1435:1936088] [api] -[CIContext(CIRenderDestination) _startTaskToRender:toDestination:forPrepareRender:forClear:error:] Failed to render part of the image because memory requirement of -1 too big
Failed to render 89401 pixels because a CIKernel's ROI function did not allow tiling.
2023-01-10 18:02:11.233004+0800 mlmodelTransition[1435:1936088] [api] -[CIContext(CIRenderDestination) _startTaskToRender:toDestination:forPrepareRender:forClear:error:] Failed to render part of the image because memory requirement of -1 too big
Failed to render 89401 pixels because a CIKernel's ROI function did not allow tiling.
2023-01-10 18:02:11.252051+0800 mlmodelTransition[1435:1936088] [api] -[CIContext(CIRenderDestination) _startTaskToRender:toDestination:forPrepareRender:forClear:error:] Failed to render part of the image because memory requirement of -1 too big
Failed to render 89401 pixels because a CIKernel's ROI function did not allow tiling.
2023-01-10 18:02:11.276394+0800 mlmodelTransition[1435:1936088] [api] -[CIContext(CIRenderDestination) _startTaskToRender:toDestination:forPrepareRender:forClear:error:] Failed to render part of the image because memory requirement of -1 too big
Failed to render 89401 pixels because a CIKernel's ROI function did not allow tiling.
2023-01-10 18:02:11.297000+0800 mlmodelTransition[1435:1936088] [api] -[CIContext(CIRenderDestination) _startTaskToRender:toDestination:forPrepareRender:forClear:error:] Failed to render part of the image because memory requirement of -1 too big
Failed to render 89401 pixels because a CIKernel's ROI function did not allow tiling.
2023-01-10 18:02:11.318678+0800 mlmodelTransition[1435:1936088] [api] -[CIContext(CIRenderDestination) _startTaskToRender:toDestination:forPrepareRender:forClear:error:] Failed to render part of the image because memory requirement of -1 too big
Failed to render 89401 pixels because a CIKernel's ROI function did not allow tiling.
2023-01-10 18:02:11.340412+0800 mlmodelTransition[1435:1936088] [api] -[CIContext(CIRenderDestination) _startTaskToRender:toDestination:forPrepareRender:forClear:error:] Failed to render part of the image because memory requirement of -1 too big
Failed to render 89401 pixels because a CIKernel's ROI function did not allow tiling.
2023-01-10 18:02:11.360359+0800 mlmodelTransition[1435:1936088] [api] -[CIContext(CIRenderDestination) _startTaskToRender:toDestination:forPrepareRender:forClear:error:] Failed to render part of the image because memory requirement of -1 too big
Failed to render 89401 pixels because a CIKernel's ROI function did not allow tiling.
2023-01-10 18:02:11.379907+0800 mlmodelTransition[1435:1936088] [api] -[CIContext(CIRenderDestination) _startTaskToRender:toDestination:forPrepareRender:forClear:error:] Failed to render part of the image because memory requirement of -1 too big
Failed to render 63687 pixels because a CIKernel's ROI function did not allow tiling.
2023-01-10 18:02:11.397403+0800 mlmodelTransition[1435:1936088] [api] -[CIContext(CIRenderDestination) _startTaskToRender:toDestination:forPrepareRender:forClear:error:] Failed to render part of the image because memory requirement of -1 too big
Failed to render 81029 pixels because a CIKernel's ROI function did not allow tiling.
2023-01-10 18:02:11.416585+0800 mlmodelTransition[1435:1936088] [api] -[CIContext(CIRenderDestination) _startTaskToRender:toDestination:forPrepareRender:forClear:error:] Failed to render part of the image because memory requirement of -1 too big
Failed to render 89401 pixels because a CIKernel's ROI function did not allow tiling.

相关截图说明

  • Create ML可视化界面参数设置截图
  • Create ML可视化界面训练过程截图

内容的提问来源于stack exchange,提问作者汪博文

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:30:57