首页 > 其他分享 >Mac M1 上体验 AI 作图保姆教程

Mac M1 上体验 AI 作图保姆教程

时间:2023-09-26 14:46:25浏览次数:47  
标签:diffusion AI python -- Mac M1 stable out

本文介绍如何在Mac M1 Pro上通过苹果Core ML来安装和运行Stable Diffusion。

How to Install and Run Stable Diffusion on Your M1 Macbook Pro using Core ML.

苹果的开源工具包

苹果开源了一个工具包 Core ML Stable Diffusion ,使用Core ML(苹果的机器学习模型)来实现AI作图,通过这个工具包实现在苹果芯片设备上运行 Stable Diffusion。

这个工具包包括:

python_coreml_stable_diffusion, a Python package for converting PyTorch models to Core ML format and performing image generation with Hugging Face diffusers in Python

StableDiffusion, a Swift package that developers can add to their Xcode projects as a dependency to deploy image generation capabilities in their apps. The Swift package relies on the Core ML model files generated by python_coreml_stable_diffusion

安装和准备工作

安装运行环境软件:

  • Install Homebrew package manager
  • Install Rust
  • Install pyenv
  • Install Anaconda
  • Install Python3.8

创建 Python 运行期环境

创建运行期环境 coreml_stable_diffusion

conda create -n coreml_stable_diffusion python=3.8 -y

切换启用运行期环境 coreml_stable_diffusion

conda activate coreml_stable_diffusion

下载软件包,安装依赖 Python 包

下载 GitHub 源码包,Core ML Stable Diffusion ,解压到本地文件夹,或使用 git 命令 Clone 项目。

进入指定路径

mkdir ~/Desktop/

Clone 克隆项目代码

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

进入程序主路径

cd ml-stable-diffusion

安装依赖 Python 包

pip install -e .

命令行登录 HuggingFace

注册并取得 HuggingFace.co 的授权 API Token,我测试的 Readonly type,一切OK。

通过终端登录 HuggingFace

huggingface-cli login

输入申请的API Token

转换模型

创建文件夹 AI_MODELS

mkdir AI_MODELS

软件包使用的默认模型是 CompVis/Default Model is v1.4,下载并转化默认模型为苹果专用ML模型,存储在当前文件夹里的 AI_MODELS

python -m python_coreml_stable_diffusion.torch2coreml \
    --convert-unet  \
    --convert-text-encoder  \
    --convert-safety-checker  \
    -o ./AI_MODELS

其他模型可以在网站上查找,并复制模型的版本标识,如 CompVis/stable-diffusion-v1-5

python -m python_coreml_stable_diffusion.torch2coreml  \
    --convert-unet  \
    --convert-text-encoder  \
    --convert-safety-checker  \
    -o ./AI_MODELS \
    --model-version CompVis/stable-diffusion-v1-5

下载和转换时间较长,我的机器需要2、3个小时。

测试生成

创建文件夹 AI_IMAGES

mkdir AI_IMAGES

测试一下,见证奇迹的时刻

python -m python_coreml_stable_diffusion.pipeline \
          -i ./AI_MODELS \
          -o ./AI_IMAGES \
          --compute-unit CPU_AND_GPU \
          --seed 888 \
          --prompt "a man riding a horse on Mar."

生成时间较长,我的机器需要20分钟。如果有问题,可以使用参数 --compute-unit CPU_ONLY ,时间更长。

python -m python_coreml_stable_diffusion.pipeline \
          -i ./AI_MODELS \
          -o ./AI_IMAGES \
          --compute-unit CPU_ONLY \
          --seed 888 \
          --prompt "a man riding a horse on Mar."
          --negative-prompt "nsfw"

管理咒语(Prompt)

为了方便管理生成的图像和Prompt,我重写了生成的脚本,替换 pipeline.py 中的 get_image_path 过程,按日期存储相关的图像和脚本及Prompt

def get_image_path(args, **override_kwargs):
    """ mkdir output folder and encode metadata in the filename
    """
    x = datetime.datetime.now()

    out_folder = f"{override_kwargs.get('model_version', None) or args.model_version.replace('/', '__')}"
    out_folder = x.strftime("%Y") + x.strftime("%m") + x.strftime("%d") + "/" + out_folder
    out_folder = os.path.join(args.o, out_folder)
    os.makedirs(out_folder, exist_ok=True)

    out_fname = x.strftime("%Y") + x.strftime("%m") + x.strftime("%d") + "_" +  x.strftime("%H") +  x.strftime("%M") +  x.strftime("%S") +"_Seed_"
    out_fname += f"{override_kwargs.get('seed', None) or args.seed}"
    if args.scheduler is not None:
        out_fname += f"_customScheduler_{override_kwargs.get('scheduler', None) or args.scheduler}"
        out_fname += f"_numInferenceSteps{override_kwargs.get('num_inference_steps', None) or args.num_inference_steps}"


    out_path_png = os.path.join(out_folder, out_fname + ".png")
    out_path_text = os.path.join(out_folder, out_fname + ".txt")
    logger.info(f"Saving python script to {out_path_text}")
    py_script = f"python -m python_coreml_stable_diffusion.pipeline \\\n\
    -i ./ai_model \\\n\
    -o ./ai_image \\\n\
    --compute-unit {args.compute_unit} \\\n\
    --seed {args.seed} \\\n\
    --prompt \"{args.prompt}\" \\\n\
    --negative-prompt \"{args.negative_prompt}\" \\\n\
    --model-version {args.model_version}"
    file = open(out_path_text, 'w')
    file.write("python command:\n\n")
    file.write(py_script)
    file.write("\n\n")
    file.write("prompt:\n\n")
    file.write(args.prompt)
    file.write("\n\n")
    file.write("negative-prompt:\n\n")
    file.write(args.negative_prompt)
    file.write("\n\n")
    file.close()

    return out_path_png  

也可以在我克隆的项目里直接下载。

github.com/CheneyLin

我建了一个 Notion 模板来存储生成的图像和Prompt,方便使用。

AI-Image-Prompt-List

参考网址

标签:diffusion,AI,python,--,Mac,M1,stable,out
From: https://www.cnblogs.com/gpwzw/p/17730044.html

相关文章

  • MacOS 使用 Asan 编译 C++报警告malloc: nano zone abandoned due to inability to re
    问题clang(llvm)编译c++程序,带内存问题检查工具选项-fsanitize=address-fsanitize=undefined之后出现:malloc:nanozoneabandonedduetoinabilitytoreservevmspace.解决vi~/.zshrc#加入:exportMallocNanoZone=0source~/.zshrc参考:ios-malloc:nanozonea......
  • mac M2 python 逆向解析二维码
    首先使用大家推荐的zbarmacm2python3.8安装无法解析动态库安装arch-arm64brewinstallzbarpython使用frompyzbar.pyzbarimportdecodefromPILimportImageif__name__=='__main__':file='qrcode_prod/492C230613047659_XCXM015492.png'......
  • mac启动台里的图标删不掉怎么办?
      打开终端,输入以下代码sqlite3$(find/private/var/folders\(-namecom.apple.dock.launchpad-a-user$USER\)2>/dev/null)/db/db"DELETEFROMappsWHEREtitle='xxx';"&&killallDock软件名替换title后面的xxx,回车参考链接:https://www.......
  • centos安装memached及php memached扩展
    php有两个memcache客户端:phpmemcache和phpmemcached。phpmemcache独立用php实现,是老客户端,功能少,属性也可设置的少;http://pecl.php.net/package/memcachephpmemcached是基于原生的c的libmemcached的扩展,更加完善,建议替换为phpmemcached。htt......
  • raid0,raid1,raid5及hdd和ssd区别
    raid是磁盘阵列raid0高性能低稳定性中等成本raid1高稳定性普通性能中等成本raid5高性能中等稳定性中等成本raid0+1是先做两个raid0,然后再做raid1,因此raid0+1允许坏多个盘,但只能在坏在同一个raid0中,不允许两个raid0都有坏盘。raid1+0是先做raid1,然后再做raid0,因......
  • OpenStack(Train版)-部署neutron(二)
    7.2.3、部署自助服务网络Self-servicenetworks7.2.3.1、部署Neutron控制节点(controller)7.2.3.1.1、创库授权createdatabaseneutron;grantallprivilegesonneutron.*to'neutron'@'localhost'identifiedby'neutron123';grantallprivilegesonneut......
  • 2023最新PS(photoshop)Win+Mac免费下载安装包及教程内置AI绘画-网盘下载
    2023最新PS(photoshop)Win+Mac免费下载安装包及教程内置AI绘画-网盘下载2023最新PS(photoshop)免费下载安装教程来咯~「PhotoShop」全套,win+mac:https://pan.quark.cn/s/9d8d8ef5c400#/list/share所有版本都有1,复制链接浏览器打开,选择一个合适的版本并下载安装包。通常情况下,建......
  • AI写代码 - Github Copilot
    GitHubCopilot是一款由GitHub和OpenAI合作开发的AI编码工具,它旨在为开发人员提供协助,加速代码编写过程,同时提高代码质量。GitHubCopilot使用GPT-3技术,能够理解上下文,并根据开发者的输入生成代码建议、注释和文档。介绍GitHubCopilot是一项革命性的开发工具,它利用......
  • pycharm无法打开终端:open Local Terminal_Failed to start [powershell.exe]
    今天在运行pycharm的时候出现了这个问题openLocalTerminal_Failedtostart[powershell.exe]直接上解决办法1.进入设置2.选择tools下的terminal然后修改shellpath 如果没有的话需要找到本机的powershell的路径然后对其进行修改就能正常运行了  ......
  • Generative AI 新世界 | 扩散模型原理的代码实践之采样篇
    在上一期的文章中,探讨了在 AmazonSageMakerStudio上使用QLoRA等量化技术微调Falcon40B大语言模型。而从本期开始,我们将一起尝试在更深的知识维度,继续探究生成式AI这一火热的新知识领域。亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开......