Stable diffusion安装踩坑(win&Mac&iOS)

这篇具有很好参考价值的文章主要介绍了Stable diffusion安装踩坑(win&Mac&iOS)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天Apple官方支持了这个库,所以特意下载下来试试看,效果还不错,M芯片在深度学习领域第一次给人惊喜了。
https://machinelearning.apple.com/research/stable-diffusion-coreml-apple-silicon

1.win使用

安装

分享一下一个有意思的库的安装经历。
最近才发现有大神将这种生成模型给开源了,之前一直关注DELL这种的大型模型,被ai这种天马行空的想象力给惊艳到。但他们大都只是api接口,现在贫民百姓也可以自己拥有。<笑脸>

下载库

去github网址下载 - > https://github.com/CompVis/stable-diffusion

git clone https://github.com/CompVis/stable-diffusion.git

配置环境和文件

简单的操作,在下载后的文件夹下直接输下面两个

conda env create -f environment.yaml
conda activate ldm

就配置好了。
或者就像我一样傻傻的报错一个安装一个。
我本身的环境是pytorch torchvision

pip install transformers==4.19.2 diffusers invisible-watermark
pip install -e .
pip install OmegaConf einops taming-transformers pytorch-lighnting clip kornia

问题

第一个问题官网是有说明的,但就是这个下载地址藏得很深不好找。
k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习
我也是找了一会才找到https://huggingface.co/CompVis/stable-diffusion-v-1-4-original,把这个sd-v1-4.ckpt文件下载下来(随便哪个都行),大概四个G。
k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习

下载模型文件放置到这个文件夹下,就是上面官方说明的那个位置,命名成model.ckpt。
k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习
运行下面的代码,不出意外会报错。

python scripts/txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms

k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习

问题好像是原作者修改了这个库,将你的quantize.py(报错的信息里包含文件所在的绝对路径)文件替换成这个网址的文件
https://github.com/CompVis/taming-transformers/blob/master/taming/modules/vqvae/quantize.py
k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习

再运行一次又报错
k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习
我只是12g的3060,看来这不是一般人能玩得起的-_-
!!!!!!!!!!!!!!!!
现在有一个简单的办法了,感谢数学系之耻的建议,直接降精度就可以释放显存了。
!!!!!!!!!!!!!!!!
如下修改txt2img.py文件第244行
k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习
效果 -->
k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习

或者接下去看比较复杂的方法!
不知道需要多大的内存才可以,网上找到方法是用优化的库。网上还有一种办法说注释掉什么安全检查的我试了没有变化。
https://github.com/basujindal/stable-diffusion
下载完后在新的库上也是需要安装一些环境,在新的文件夹下运行下面的安装代码

pip install -e .

k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习
优化的库代码放在optimizedSD文件夹下,也保留了之前的源代码,不要搞错了。
重新安装一下这个优化库的环境,将ckpt放到对应的位置。

python optimizedSD/optimized_txt2img.py --prompt "Cyberpunk style image of a Tesla car reflection in rain" --H 512 --W 512 --seed 27 --n_iter 2 --n_samples 5 --ddim_steps 50

运行后报这个错。
k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习

查了一下,好像是最近优化的作者也换了一个库
https://github.com/basujindal/stable-diffusion/issues/175
用下面的办法就能解决了。
k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习

pip install git+https://github.com/crowsonkb/k-diffusion.git

然后打开编辑optimizedSD/ddpm.py文件,将from samplers…改成上面图片的三个from k_diffusion…
然后贫穷的显卡的电脑也就可以跑了,不说了要努力搬砖买24g的显卡了。
实测效果 -->
k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习
k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习

2.mac使用

安装

https://github.com/apple/ml-stable-diffusion

git clone https://github.com/apple/ml-stable-diffusion
pip install -e . #来到下载好的文件夹下面运行

k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习

登陆hugging face

https://huggingface.co
没有的话直接注册,注册好了以后点击token生成https://huggingface.co/settings/tokens,然后复制token
k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习

接下去命令行输入指令,按提示输入

huggingface-cli login

k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习

运行指令

在文件夹下运行,顺便创建一个放置ml模型的文件夹,替换下面的-o

python -m python_coreml_stable_diffusion.torch2coreml --convert-unet --convert-text-encoder --convert-vae-decoder --convert-safety-checker -o ./output_ml

官方还给了一个api

--model-version runwayml/stable-diffusion-v1-5 #可以指定其他版本的diffusion模型,默认是 CompVis/stable-diffusion-v1-4
--bundle-resources-for-swift-cli  #将ml文件整理成一个swift包,python生成不需要使用
--chunk-unet #ios和ipados部署需要,后面两个之后有机会我想去尝试一下在真机上的部署
--attention-implementation #在Apple芯片上的npu上实现

如果想部署手机和平板可以参考下面这个

python -m python_coreml_stable_diffusion.torch2coreml --convert-unet --convert-text-encoder --convert-vae-decoder --convert-safety-checker -o ./sd2_ml --chunk-unet --model-version stabilityai/stable-diffusion-2-1-base --bundle-resources-for-swift-cli

k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习
大约20几分钟吧,会生成这些文件
k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习

接着还是在ml-stable-diffusion的文件夹下运行,对了再创建一个放图片的文件夹。

python -m python_coreml_stable_diffusion.pipeline --prompt "a photo of an astronaut riding a horse on mars" -i ./output_ml -o ./output_image --compute-unit ALL --seed 93

swift用下面这个

swift run StableDiffusionSample "A photo of a little girl walking on the beach with the Jenny Turtle" --resource-path ./sd2_ml/Resources/ --seed 93 --output-path ./output_image

k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习

--model-version #如果前面修改了这个也要修改
--num-inference-steps #默认推理50次,用这个可以自定义次数

我是M2的MacBook Air,我参考了官方的基准指南--compute-unit 选择了CPU_AND_NE,大概21秒一个推理还是蛮快的(python),swift 2秒左右一个step,快了很多。
k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习

k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习

就是从上图中我们可以看到似乎无后缀的M芯片由于GPU数量较少吧我猜--compute-unit 都推荐选CPU_AND_NE,pro系列芯片选ALL,以上选CPU_AND_GPU
--attention-implementation 直接看GPU核心数,小于等于16个使用SPLLIT_EINSUM,就是默认的其实啥也不用加。大于16个使用ORIGINAL。我猜因为M芯片是16核NPU的,GPU核心数比NPU小那肯定用NPU,GPU核心数大大超过NPU,那还是GPU的效率更高吧。
k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习

3.iphone&ipad部署

打开Xcode,导入库和上面生成的ML文件
k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习

import SwiftUI
import StableDiffusion
import CoreML

struct ContentView: View {
    @State var prompt: String = "a photo of an astronaut riding a horse on mars"
    @State var step = 10
    @State var seed = 100
    @State var image: CGImage?
    @State var progress = 0.0
    @State var generating = false
    @State var booting = true
    
    @State var pipeline: StableDiffusionPipeline?
    
    private let disableSafety = false

    
    var body: some View {
        VStack {
            if booting {
                Text("Initializing...")
            } else {
                if let image {
                    Image(uiImage: UIImage(cgImage: image))
                        .resizable()
                        .scaledToFit()
                }
                if generating {
                    ProgressView(value: progress)
                }
                if !generating {
                    TextField("Prompt", text: $prompt)
                    Stepper(value: $step, in: 1...100) {
                        Text("steps: \(step)")
                    }
                    Stepper(value: $seed, in: 0...10000) {
                        Text("Seed: \(seed)")
                    }
                    Button("Generate") {
                        progress = 0.0
                        image = nil
                        generating = true
                        Task.detached(priority: .high) {
                            var images: [CGImage?]?
                            do {
                                print("generate")
                                images = try pipeline?.generateImages(prompt: prompt, stepCount: step,seed: seed, disableSafety: disableSafety, progressHandler: { progress in
                                    print("test")
                                    self.progress = Double(progress.step) / Double(step)
                                    if let image = progress.currentImages.first {
                                        self.image = image
                                    }
                                    return true
                                })
                            } catch let error {
                                print(error.localizedDescription)
                            }
                            print("finish")
                            if let image = images?.first {
                                self.image = image
                            }
                            generating = false
                        }
                    }
                }
            }
        }
        .padding()
        .onAppear{
            Task.detached(priority: .high) {
                do {
                    print(os_proc_available_memory())
                    guard let path = Bundle.main.path(forResource: "CoreMLModels", ofType: nil, inDirectory: nil) else {
                        fatalError("Fatal error: failed to find the CoreML models.")
                    }
                    let resourceURL = URL(fileURLWithPath: path)
                    let config = MLModelConfiguration()
                    config.computeUnits = .cpuAndNeuralEngine
                    pipeline = try StableDiffusionPipeline(resourcesAt: resourceURL, configuration: config,reduceMemory: true)
                    try pipeline?.loadResources()
                    print("initialized pipeline")
                } catch let error {
                    print("error initializing pipeline")
                    print(error.localizedDescription)
                }
                booting = false
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

在iPad和Mac上建议config.computeUnits = .cpuAndNeuralEngine。如果要继续在iPhone上部署的话改为这个config.computeUnits = .cpuAndGPU,然后来到Signing界面,点击Capability,选择Increased Memory Limit。这样就可以在iPhone真机上运行了。这个项目在iPhone真机上需要3GB多一点的内存,我是iPhone 14pro,程序默认可用内存也是3GB多一点刚好杀死。所以通过Increased Memory Limit将可用内存提升至4GB左右才可以运行。另外,即使提升了内存使用神经引擎还是会抱内存错误,只有用GPU才可以,iPad air5没有这种报错两个都可。GPU的运行速度是比神经引擎慢一点的,但是一台手机可以本地运行diffusion还是蛮酷的。
k-diffusion,神经网络,stable diffusion,生成网络,python,pytorch,深度学习文章来源地址https://www.toymoban.com/news/detail-781239.html

到了这里,关于Stable diffusion安装踩坑(win&Mac&iOS)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stable diffusion安装踩坑之clip安装、git报错

    本节主要记录一下在windows安装stable diffusion时,clip脚本安装不上,本地安装时如何链接到当前库的问题 首先,在脚本安装clip不成功时,脚本会输出一个commend指令,复制到浏览器就可以很快把clip包下载下来。 下载好的包,文件夹名字改成clip(很重要),放在D:stable-diffusio

    2024年02月03日
    浏览(33)
  • 安装stable-diffusion-webui踩坑经历

    软件下载在b站up秋葉aaaki up很贴心有一个整合包可以直接运行。 在github下载的原始版本sd-webui ,下载过程遇到clip包安装失败,参考了这两个文章可以解决 打开stable diffusion webui时,提示缺少clip或clip安装不上的解决方案(windows下的操作) 本地部署stable-diffusion-webui出现Couldn\\\'

    2024年02月11日
    浏览(30)
  • Stable Diffusion AI绘画学习指南【本地环境搭建win+mac】

    一、硬件配配置要求 系统:windows 10  / Mac os 硬盘:C 盘预留 15GB 以上,其他盘 50GB 以上,Stable Ddiffusion的很多大模型都是以 GB 起步。 显卡:4GB 以上,建议 8GB, 效率高,能玩大尺寸的图 CPU:i5 CPU 以上 内存:16GB 以上 二、windows 环境搭建 python下载:https://www.python.org/downloads/  

    2024年02月14日
    浏览(38)
  • 【踩坑笔记】从零开始部署安装Stable Diffusion 2 WebUI

    一台带GPU的电脑,系统Ubuntu20.2 Xshell和Xftp,用于连接云主机,传输文件 我用的是阿里云ECS,型号ecs.gn6i-c4g1.xlarge(4 vCPU 15 GiB 1 * NVIDIA T4)。推荐挂一个NAS盘方便保存文件。 (可选)安装显卡驱动 安装Python虚拟环境 如果git报错443,可以多试几次,或者在/etc/hosts文件最后加一行

    2024年02月02日
    浏览(46)
  • win 安装 Stable Diffusion

    注:本人使用的是 RTX2060 - 6G版 特别提醒 : 安装一定要 CUDA 和 PyTorch 版本能配套用,不然会有生成保存问题(我是这样的),装完用 python -m xformers.info 这个看对应的版本 建议:有些命令安装在venv 虚拟机中做,这样东西都在venv对应目录  在最后有些资源,我在对应官网下

    2024年04月14日
    浏览(25)
  • stable diffusion 本地化部署安装踩坑指南---纯小白首次安装编辑

    stable diffusion 本地化部署安装踩坑指南 提示:这里简述项目相关背景: AI画图最近流行,小白也要尝试本地部署,压榨N卡性能。 版本为github上的:AUTOMATIC1111/stable-diffusion-webui 官方安装说明如下: Automatic Installation on Windows 1,Install Python 3.10.6, checking “Add Python to PATH”. 2,I

    2024年02月02日
    浏览(37)
  • stable-diffusion-webui手动安装详细步骤(以及报错解决、踩坑)

    主要介绍 stable-diffusion-webui 的 主题开发、插件开发 等内容,感兴趣的朋友可以订阅下! 大话Stable-Diffusion-Webui-客制化主题(一) 大话Stable-Diffusion-Webui-客制化主题(二) 大话Stable-Diffusion-Webui-客制化主题(三) 不定时更新中... stable-diffusion-webui手动安装详细步骤(AMD显卡)

    2023年04月09日
    浏览(36)
  • Mac安装Stable Diffusion

    第一步:安装anaconda https://www.anaconda.com/download 第二步:下载代码 第三步:pip设置镜像源 国内常用的镜像源如下所示 清华: https://pypi.tuna.tsinghua.edu.cn/simple 阿里云: http://mirrors.aliyun.com/pypi/simple/ 中国科技大学: https://pypi.mirrors.ustc.edu.cn/simple/ 豆瓣: http://pypi.douban.com/simple/

    2024年02月13日
    浏览(27)
  • Stable Diffusion WebuI mac安装

    概念: 安装homebrew 命令: 官网:http://brew.sh 安装命令 基本命令: brew search python 查看python版本 brew install python@3.10 此处必须是3.10版本要不后续出问题 官网:https://git-scm.com/ 安装命令 此处最好梯子环境下安装,预估半个小时 出现红线所画部分,运行成功 浏览器输入:127 0.0.

    2024年02月13日
    浏览(24)
  • 本地安装 Stable Diffusion 教程 Mac 版本

    前面两篇讲了如何用免费的网络资源搭建 Stable Diffusion,有朋友问,有没有在本地搭建的教程。 以 MacBook Pro 为例,下面是安装步骤。 前置要求: Homebrew,Python 3.0。 如未安装Homebrew,请按照https://brew.sh上的说明进行安装。‍ 安装完成后,打开一个新的终端窗口并运行 安装完

    2024年02月11日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包