Mac端SwiftUI集成CoreML Stable Diffusion模型加载失败求助
解决CoreML Stable Diffusion模型加载失败问题
1. 验证模型的Bundle资源配置
- 打开Xcode项目的Build Phases,展开Copy Bundle Resources,确认
TextEncoder.mlmodelc、UNet.mlmodelc、Decoder.mlmodelc都在列表中 - 若缺失,点击
+按钮,从本地克隆的模型目录中选中对应.mlmodelc文件夹添加,添加时选择Create folder references,保证完整的模型目录结构被打包进App资源
2. 替换强制加载为手动编译逻辑
原代码中try!直接加载模型会忽略编译状态,改用以下代码先检查并编译模型:
func loadCoreMLModel(named modelName: String) throws -> MLModel { guard let modelURL = Bundle.main.url(forResource: modelName, withExtension: "mlmodelc") else { throw NSError(domain: "ModelNotFound", code: -1, userInfo: [NSLocalizedDescriptionKey: "模型文件不存在"]) } // 检查模型是否已编译,未编译则手动编译 if !MLModel.modelIsCompiled(at: modelURL) { let compiledURL = try MLModel.compileModel(at: modelURL) return try MLModel(contentsOf: compiledURL) } return try MLModel(contentsOf: modelURL) } // 在generateImage函数中调用 do { let textEncoder = try loadCoreMLModel(named: "TextEncoder") // 后续生成逻辑 } catch { print("模型加载失败:\(error.localizedDescription)") }
3. 清理缓存并重建项目
- 执行
Shift+Command+K清理Build Folder - 删除项目对应的DerivedData目录:前往
~/Library/Developer/Xcode/DerivedData/,删除ArtSenseiPro-abnumyedexjximglshwxziyuddrp文件夹 - 重新构建并运行项目
4. 确保模型文件完整
HuggingFace上的CoreML模型使用Git LFS存储,直接克隆可能只获取占位符:
- 安装Git LFS:
brew install git-lfs(未安装时执行) - 进入克隆的模型目录,执行
git lfs pull拉取完整模型文件 - 检查
TextEncoder.mlmodelc目录内是否有实际的二进制模型文件,而非空目录或占位符
5. 适配Apple Silicon架构
- 在项目Build Settings中,将Architectures设置为
Standard Architectures (Apple Silicon, Intel) - $(ARCHS_STANDARD) - 关闭Build Active Architecture Only(Debug模式可临时开启,Release模式必须关闭)
内容的提问来源于stack exchange,提问作者Anon.eth
相关产品推荐
相关产品推荐

