今天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

问题

第一个问题官网是有说明的,但就是这个下载地址藏得很深不好找。

我也是找了一会才找到https://huggingface.co/CompVis/stable-diffusion-v-1-4-original,把这个sd-v1-4.ckpt文件下载下来(随便哪个都行),大概四个G。

下载模型文件放置到这个文件夹下,就是上面官方说明的那个位置,命名成model.ckpt。

运行下面的代码,不出意外会报错。

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

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

再运行一次又报错

我只是12g的3060,看来这不是一般人能玩得起的-_-
!!!!!!!!!!!!!!!!
现在有一个简单的办法了,感谢数学系之耻的建议,直接降精度就可以释放显存了。
!!!!!!!!!!!!!!!!
如下修改txt2img.py文件第244行

效果 -->

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

pip install -e .


优化的库代码放在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

运行后报这个错。

查了一下,好像是最近优化的作者也换了一个库
https://github.com/basujindal/stable-diffusion/issues/175
用下面的办法就能解决了。

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

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

2.mac使用

安装

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

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

登陆hugging face

https://huggingface.co
没有的话直接注册,注册好了以后点击token生成https://huggingface.co/settings/tokens,然后复制token

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

huggingface-cli login

运行指令

在文件夹下运行,顺便创建一个放置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


大约20几分钟吧,会生成这些文件

接着还是在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

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

我是M2的MacBook Air,我参考了官方的基准指南--compute-unit 选择了CPU_AND_NE,大概21秒一个推理还是蛮快的(python),swift 2秒左右一个step,快了很多。

就是从上图中我们可以看到似乎无后缀的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的效率更高吧。

3.iphone&ipad部署

打开Xcode,导入库和上面生成的ML文件

import SwiftUI
import StableDiffusion
import CoreMLstruct 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 = falsevar 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.0image = nilgenerating = trueTask.detached(priority: .high) {var images: [CGImage?]?do {print("generate")images = try pipeline?.generateImages(prompt: prompt, stepCount: step,seed: seed, disableSafety: disableSafety, progressHandler: { progress inprint("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 = .cpuAndNeuralEnginepipeline = 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还是蛮酷的。

Stable diffusion安装踩坑(winMaciOS)相关推荐

  1. AIGC - Stable Diffusion 学习踩坑实录总结

    学习路径 淘宝拼多多找教程就没必要了,我踩过坑,还跟店主纠缠过,付了钱,不过都退了,淘宝平台介入,啥都能解决,现在卖得都是搬运的 B 站里面的大佬视频,我目前正在不断关注 B 站大佬的各种课程,探索更 ...

  2. Android Studio安装踩坑

    title: Android Studio安装踩坑 date: 2018-09-07 19:31:32 updated: tags: [Android,Android Studio,坑] descri ...

  3. anaconda+cuda+cudnn+pytorch安装踩坑大全

    windows环境下anaconda+pycharm+cuda+cudnn+pytorch安装踩坑大全 anaconda安装 pycharm安装 cuda cudnn pytorch gym环境安装 ...

  4. windos下 elasticksearch7.13安装踩坑记

    windos下 elasticksearch7.13安装踩坑记 一,环境配置 环境要求 java jdk16下载安装 elasticksearch7.13下载安装 遇到的问题 (待更新) 一,环境配置 ...

  5. Win 10 + Ubuntu 18.04 双系统安装与深度学习环境配置安装踩坑实录(上篇)

    Win 10 + Ubuntu 18.04 双系统安装与深度学习环境配置安装踩坑实录(上篇) 折腾了两三天总算顺利在电脑上完成了装x的双系统安装,一路走来还比较顺利,主要在ubuntu的显卡设置上躺了 ...

  6. Windows环境下PyTorch_geometric安装踩坑

    Windows环境下PyTorch_geometric安装踩坑 pytorch geometric在windows环境下安装非常恶心,莫名其妙各种报错.本帖针对GCC的编译error提供解决方案. 一 ...

  7. 坑!mongodb安装踩坑坑坑坑!

    MongoDB安装踩坑坑坑坑! ​ 鉴于网上有很多手把手的教程,我就不ctrl cv了,主要说一下我参考了哪些教程以及踩的坑 ​ 进官网进了半天进不去,爬了个楼梯才上去 ​ 进去之后,迅雷没会员根本下 ...

  8. YOLO V5 CPU版本安装踩坑记录

    YOLO V5 CPU版本安装踩坑记录 单纯的记录下yolov5进行检测遇到了点问题的解决方法 安装过程: 准备: 1,下载YOLOv5 github项目:https://github.com/ult ...

  9. nnUNet安装踩坑记录

    nnUNet安装踩坑记录 论文地址:https://arxiv.org/abs/1809.10486 https://github.com/MIC-DKFZ/nnUNet 更新于2020/12/04: ...

最新文章

  1. 技术流 | 手把手教你用Python设计一个命令行界面
  2. python程序设计报告-20194115 实验二《Python程序设计》实验报告
  3. python使用教程视频-Python入门教程视频分享
  4. 【UVA624 01背包中的路径问题】
  5. 中国民办教育市场需求与运营策略建议报告2022版
  6. KBMMW 4.6 正式版发布
  7. SAP Fiori Launchpad的后台配置路径
  8. [c++] - 简单的冒泡
  9. 训练第一个机器学习模型
  10. 6个用于大数据分析的最好工具(转)
  11. blob类型对象转为file类型对象
  12. 【三石jQuery视频教程】02.创建 FontAwesome 复选框和单选框
  13. 计算机后端维护,机房智能交通后台系统运行维护内容.doc
  14. Spurious wakeup
  15. 数字逻辑:时序逻辑元件——锁存器
  16. 五子棋项目结束总结_五子棋项目总结
  17. 009 系统镜像ISO GHO WIM和ESD的区别
  18. 中专计算机专业execl教案,计算机专项目化教案(EXCEL教案
  19. 如何重新启动Windows的Explorer.exe(以及任务栏和“开始”菜单)
  20. tomcat端口号修改

热门文章

  1. dbused把我的CPU占满了!linux服务器挖矿病毒的解决历程
  2. JS 省市区三级联动
  3. 打开网页中提示: drwtsn32.exe-应用程序错误-解决方法
  4. 用于数学的 10 个优秀编程语言
  5. 学习Python,这本书是不二选择。
  6. Ubuntu18.04 安装opencv 3.2.0 ,opencv3.4.15
  7. 商汤AI象棋机器人到底谁在买?北大象棋大师已签收
  8. wordpress修改css样式的方法,在WordPress中添加自定义CSS代码的几种方法
  9. 8.16~8.27.BZoi集训总结
  10. 用python判断平闰年 ,深入理解 or 和 and