我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MAC搭建M1环境的stable-diffusion

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MAC搭建M1环境的stable-diffusion

文章目录


苹果公司的程序员为 M1,M2 之类的ARM64芯片专门创建了一个 stable-diffusion 的仓库:

Run Stable Diffusion on Apple Silicon with Core ML

链接为: https://github.com/apple/ml-stable-diffusion

可以充分利用 M1 内置的人工智能芯片(神经网络芯片), 需要转换 PyTorch 模型为 Apple Core ML 模型。

本文基于这个仓库进行操作。

环境准备

1. 硬件环境

  • M1芯片的Apple MacBook Pro
  • 16G内存; 8G也可以, 但是需要一些额外的配置。

2. 系统环境

3. 基础软件环境

  • git: 下载仓库源码; 理论上需要更新到最新版
  • conda: 主要用来创建Python环境
  • Python: 需要3.8 版本, 高了低了都不行, 使用 conda 来安装即可。

conda下载页面为: https://docs.conda.io/en/latest/miniconda.html

主要参考资料

网上找了很多资料, 折腾了很多次, 发现这篇比较好:

如果碰到问题, 请打开这个页面查看。

操作步骤

1. 下载git

参考官方网站: https://git-scm.com/downloads

下载或者安装好即可。

2. 下载conda

参考官方网站: https://docs.conda.io/en/latest/miniconda.html

下载 miniconda 并安装即可。

miniconda是一个简化版, 只内置了python。 其他什么 C++, Java什么的环境都暂时去除了。

3. 创建python环境

参考: https://zhuanlan.zhihu.com/p/590869015

对应的命令为:

# 创建和准备Python环境conda create -n coreml_stable_diffusion python=3.8 -y# 查看conda的环境列表conda env list# 激活特定环境conda activate coreml_stable_diffusion## 查看Python版本, 注意是大Vpython -V

这些环境的作用域范围是操作系统用户级别的。 主要是shell中使用。

4. 下载仓库

使用的命令为:

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

github支持下载zip包, 但身处天国的话得需要一些技巧才能下载成功。

如果速度过慢, 可能你需要一些下载技巧, 比如购买网络服务。

5. 安装依赖

# 进入仓库目录cd ml-stable-diffusion# 激活特定环境conda activate coreml_stable_diffusion# 安装python依赖; pip 是和 python 环境一起自动安装的;pip install -r requirements.txt

如果速度过慢, 可能你需要一些下载技巧, 比如购买网络服务。

如果因为网速原因安装失败, 可以再次重复执行安装。

6. 转换模型

为了利用 M1 内置的人工智能芯片(神经网络芯片), 需要转换 PyTorch 模型为 Apple Core ML 模型。

转换模型对应的命令为:

# 进入仓库目录cd ml-stable-diffusion# 激活特定环境conda activate coreml_stable_diffusion# 模型转换; 需要下载几个GB的文件# (默认值是脚本里面内置的1.4版本)python -m python_coreml_stable_diffusion.torch2coreml --convert-unet --convert-text-encoder --convert-vae-decoder --convert-safety-checker -o ./models

如果内存不够的话, 尝试先关掉一些其他程序。

我这里在执行过程中报了一个错:

RuntimeError: PyTorch convert function for op 'scaled_dot_product_attention' not implemented.

解决办法, 参考: https://blog.csdn.net/cainiao1412/article/details/131204867

pip show torch # 查看torch版本pip uninstall torch # 卸载torch版本pip install torch==1.13.1 # 安装指定版本

报错的话, 切换 torch 版本, 然后再次执行模型转换的命令。

7. 验证和测试

使用的命令为:

python -m python_coreml_stable_diffusion.pipeline --prompt "magic book on the table" -i ./models -o ./output --compute-unit ALL --seed 93

因为需要初始化环境, 加载模型和处理, 所以过程比较慢, 我这里需要好几分钟。

8. 构造Web界面

好处是不需要每次执行提示词 prompt 都去初始化一次环境。

安装gradio, 参考: https://www.gradio.app/quickstart/

对应的安装命令为:

pip install gradio

然后参考 https://zhuanlan.zhihu.com/p/590869015 专栏中提到的脚本:

web.py 文件准备完成后, 启动命令为:

# 进入仓库目录cd ml-stable-diffusion# 激活特定环境conda activate coreml_stable_diffusion# 启动WebUIpython -m python_coreml_stable_diffusion.web -i ./models --compute-unit ALL

启动需要加载环境, 会消耗一些时间。

启动完成后, 会看到命令行给出访问网址, 例如: http://0.0.0.0:7860/

9. 测试WebUI

打开访问网址, 例如: http://0.0.0.0:7860/

找一个支持的模板, 改造一下, 例如:

rabbit, anthro, very cute kid's film character, disney pixar zootopia character concept artwork, 3d concept, detailed fur, high detail iconic character for upcoming film, trending on artstation, character design, 3d artistic render, highly detailed, octane, blender, cartoon, shadows, lighting

输入词汇之后, 点击生成, 等待即可。

在这里插入图片描述

可以看到, 这个配置, 使用WebUI界面只需要7秒左右即可出图, 文件大小在500KB左右。

这个 WebUI 还是有一些问题, 有时候会生成一张黑图, 碰到的话刷新页面重试即可。

网上有很多提示词模板, 著名的有: https://github.com/Dalabad/stable-diffusion-prompt-templates

当然, 模板的好处就是, 可以把 rabbit 换成 tiger 之类词汇的试试.

10. 关闭环境

webUI 开启的时候, python 会占用很多内存, 不需要时, 从控制台 CTRL+C 关闭即可, 或者粗暴一点直接杀进程。

11. 集成App

Windows系统下有很多一键安装脚本, 搜索关键字即可: windows stable diffusion 一键安装

找了一下, MAC系统中也有类似的, 支持 Intel 以及M1/M2芯片。

踩坑日记

1. brew 更新不成功

原因是切换了国内的源。 但是, 国内的源比较坑, 经常不兼容或者报错。

重置 brew 源, 参考: 更换和重置Mac Homebrew的默认源

本质上 brew 就是依赖了几个 git 仓库, 所以有问题的话可以直接通过git处理一下对应的那几个目录。

2. 转换模型报错

报错信息为:

RuntimeError: PyTorch convert function for op 'scaled_dot_product_attention' not implemented.

解决办法, 参考: https://blog.csdn.net/cainiao1412/article/details/131204867

pip show torch # 查看torch版本pip uninstall torch # 卸载torch版本pip install torch==1.13.1 # 安装指定版本

OK, 1.3.1 版本可以成功处理。

3. 网络问题

强的厉害, 经常网络超时, 这时候就需要技巧了。

相关链接

作者: 铁锚
日期: 2023年06月20日

来源地址:https://blog.csdn.net/renfufei/article/details/131308782

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MAC搭建M1环境的stable-diffusion

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

AI生成图片Stable Diffusion环境搭建与运行方法

Stable Diffusion是一种基于扩散过程的生成模型,由Ge et al.在2021年提出,该模型利用了随机变量的稳定分布,通过递归地应用扩散过程来生成高质量的图像,这篇文章主要介绍了AI图片生成Stable Diffusion环境搭建与运行,需要的朋友可以参考下
2023-05-19

mac电脑m1搭建java开发环境参考手册

1 背景介绍 开发人员经常会换电脑,或者换新电脑,意味着重新搭建开发环境,很麻烦。但新电脑到手里面了,不换又不好,此篇专门用来记录mac电脑m1搭建java开发环境的步骤。希望对读者有所帮助,一条龙服务。 后期有时间,会出关于win10环境
2023-08-18

在mac上搭建python环境

首先尊重原创:http://blog.justbilt.com/2014/07/02/setup_python_on_mac/这两天重新搞了下python的环境,发现好多地方还是容易忘记,因此有了这篇文章,以后方便查看。mac系统其实自带了
2023-01-31

TensorFlow在MAC环境下的安装及环境搭建

给大家分享一下TensorFlow在MAC系统中的安装步骤以及环境搭建的操作流程。 TensorFlow 底层的图模型结构清晰,容易改造;支持分布式训练;可视化效果好。如果做长期项目,接触较大数据集的话,TensorFlow很适用,而且谷歌
2022-06-04

Mac OS搭建Python开发环境

简书 Wwwwei转载请注明原创出处,谢谢!  最近在看一些关于机器学习的内容,其中大量代码需要Python的运行环境,所以搭建了Python开发环境,这里记录下,方便大家学习。Mac OS下安装Python主要方式有两种:一. homeb
2023-01-31

flask web开发环境搭建(Mac

写在最前面11月末和这个12月都在折腾flask,想的是能够用web框架去从后端写一个网站出来,当中学习积累的时间有点多,我又不怎么喜欢学到哪儿写到哪儿,所以就慢慢写好了。应该会分成几个系列写。这篇主要讲的是flask 开发环境的搭建,算是
2023-01-31

在Mac OS上搭建Python的开发环境

一. 安装python mac系统其实自带了一个python的执行执行环境,用来运行python还行,但是开发可能就不够了,因此我们需要重新安装python。这里有两种方案安装: 1.homebrewbrew install python这
2022-06-04

详解mac上怎么搭建GitHub环境

随着技术的普及和开源的时代来临,更多的人开始关注GitHub。作为全球最大的开源社区和版本控制管理平台,GitHub 是程序员必备的工具,它方便了代码的存储和管理,也方便了代码的交流和共享。本文将介绍如何在 Mac 电脑上搭建 GitHub
2023-10-22

MAC怎么使用php7搭建LNMP环境

这篇文章给大家分享的是有关MAC怎么使用php7搭建LNMP环境的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。mysql">1、安装MySQL:查看MySQL可用版本信息:brew info mysql我这边看到
2023-06-15

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录