func load()

in Diffusion/Common/Pipeline/PipelineLoader.swift [164:197]


    func load(url: URL) async throws -> StableDiffusionPipelineProtocol {
        let beginDate = Date()
        let configuration = MLModelConfiguration()
        configuration.computeUnits = computeUnits
        let pipeline: StableDiffusionPipelineProtocol
        if model.isXL {
            if #available(macOS 14.0, iOS 17.0, *) {
                pipeline = try StableDiffusionXLPipeline(resourcesAt: url,
                                                         configuration: configuration,
                                                         reduceMemory: model.reduceMemory)
            } else {
                throw "Stable Diffusion XL requires macOS 14"
            }

        } else if model.isSD3 {
            if #available(macOS 14.0, iOS 17.0, *) {
                pipeline = try StableDiffusion3Pipeline(resourcesAt: url,
                                                        configuration: configuration,
                                                        reduceMemory: model.reduceMemory)
            } else {
                throw "Stable Diffusion 3 requires macOS 14"
            }
        } else {
            pipeline = try StableDiffusionPipeline(resourcesAt: url,
                                                       controlNet: [],
                                                       configuration: configuration,
                                                       disableSafety: false,
                                                       reduceMemory: model.reduceMemory)
        }
        try pipeline.loadResources()
        print("Pipeline loaded in \(Date().timeIntervalSince(beginDate))")
        state = .loaded
        return pipeline
    }