• Apple官方优化Stable Diffusion绘画教程


    Apple官方优化Stable Diffusion绘画教程

    苹果为M1芯片优化Stable Diffusion模型,其中Mac Studio (M1 Ultra, 64-core GPU)生成512*512的图像时间为9秒。想要1秒出图,可以在线体验3090显卡AI绘画。

    AI绘图在线体验

    二次元绘图

    在线体验地址:Stable Diffusion

    中文输入绘图

    在线体验地址:Stable Diffusion

    CoreML Stable Diffusion

    苹果官方发布Python 包,用于使用 diffusers 和 coremltools 将 Stable Diffusion 模型从 PyTorch 转换到 Core ML,以及一个 Swift 包来部署模型。请访问 Core ML Stable Diffusion 代码存储库以启动,并获取关于基准测试和部署的详细说明。

    项目地址

    使用 Core ML 在 Apple Silicon 上运行stable-diffusion

    该存储库包括:

    • python_coreml_stable_diffusion,一个 Python 包,用于将 PyTorch 模型转换为 Core ML 格式并在 Python 中使用 Hugging Facestable-diffusion图像生成

    • StableDiffusion,一个 Swift 包,开发人员可以将其作为依赖项添加到他们的 Xcode 项目中,以在他们的应用程序中部署图像生成功能。Swift 包依赖于由生成的 Core ML 模型文件python_coreml_stable_diffusion

    如果您在安装或运行时遇到问题,请参阅常见问题解答部分。

    将模型转换为 Core ML

    第一步:创建Python环境并安装依赖:

    conda create -n coreml_stable_diffusion python=3.8 -yconda activate coreml_stable_diffusioncd /path/to/cloned/ml-stable-diffusion/repositorypip install -e .

    第 2 步:登录或注册您的Hugging Face 帐户,生成用户访问令牌huggingface-cli login并使用此令牌通过在终端窗口中运行来设置 Hugging Face API 访问。

    第 3 步:导航至您想在Hugging Face Hub上使用的 Stable Diffusion 版本并接受其使用条款。默认模型版本为CompVis/stable-diffusion-v1-4。用户可以按照下一步中的描述更改模型版本。

    第 4 步:从终端执行以下命令以生成 Core ML 模型文件 ( .mlpackage)

    • ounter(line
    python -m python_coreml_stable_diffusion.torch2coreml --convert-unet --convert-text-encoder --convert-vae-decoder --convert-safety-checker -o 

    警告:此命令将从 Hugging Face 下载数 GB 的 PyTorch 检查点。

    在 M1 MacBook Pro 上,这通常需要 15-20 分钟。成功执行后,构成 Stable Diffusion 的 4 个神经网络模型将从 PyTorch 转换为 Core ML ( .mlpackage) 并保存到指定的. 一些额外的值得注意的论点:

    • --model-version: 模型版本默认为CompVis/stable-diffusion-v1-4开发人员可以指定Hugging Face Hub上可用的其他版本,例如stabilityai/stable-diffusion-2-base & runwayml/stable-diffusion-v1-5

    • --bundle-resources-for-swift-cli:编译所有 4 个模型并将它们与用于文本标记化的必要资源捆绑在一起,这些资源/Resources应作为输入提供给 Swift 包。对于基于扩散器的 Python 管道,此标志不是必需的。

    • --chunk-unet:将 Unet 模型分成两个大致相等的块(每个块的权重小于 1GB)以进行移动友好部署。这是在 iOS 和 iPadOS 上部署 ANE所必需的。这不是 macOS 所必需的。Swift CLI 能够使用 Unet 模型的分块版本和常规版本,但优先考虑前者。请注意,chunked unet 与 Python 管道不兼容,因为 Python 管道仅适用于 macOS。分块仅适用于使用 Swift 的设备上部署。

    • --attention-implementation:默认为在 Apple Neural Engine 上部署 Transformers 中SPLIT_EINSUM描述的实现。将切换到应该用于非 ANE 部署的替代方案。请参阅性能基准部分以获得进一步的指导。--attention-implementation ORIGINAL

    • --check-output-correctness:将原始 PyTorch 模型的输出与最终 Core ML 模型的输出进行比较。此标志会显着增加 RAM 消耗,因此建议仅用于调试目的。

    使用 Python 生成图像

    使用基于stable_diffusion的示例 Python 管道运行文本到图像生成:

    • ounter(line
    python -m python_coreml_stable_diffusion.pipeline --prompt "a photo of an astronaut riding a horse on mars" -i <output-mlpackages-directory> -o </path/to/output/image> --compute-unit ALL --seed 93

    有关所有可用参数,请参阅帮助菜单:python -m python_coreml_stable_diffusion.pipeline -h。一些值得注意的论点:

    • -i:应该指向上面"将模型转换为 Core ML "部分的-o第 4 步中的目录。

    • --model-version:如果您在将模型转换为 Core ML 时覆盖默认模型版本,则需要在此处指定相同的模型版本。

    • --compute-unit:请注意,此特定实现的最高性能计算单元可能因不同的硬件而异。CPU_AND_GPU或者CPU_AND_NE可能比ALL. 请参阅性能基准部分以获得进一步的指导。

    • --scheduler: 如果你想尝试不同的调度器,你可以在这里指定。有关可用选项,请参阅帮助菜单。您还可以指定自定义推理步骤数--num-inference-steps,默认为 50。

    使用 Swift 生成图像

    系统要求

    构建 Swift 项目需要:

    • macOS 13 或更新版本

    • 安装了命令行工具的 Xcode 14.1 或更高版本。请检查developer.apple.com以获取最新版本。

    • 核心 ML 模型和标记化资源。请参阅上面--bundle-resources-for-swift-cli将模型转换为 Core ML部分

    如果将此模型部署到:

    • 苹果手机
      • iOS 16.2 或更新版本

      • iPhone 12 或更新版本

    • iPad
      • iPadOS 16.2 或更新版本

      • M1 或更新版本

    • 苹果电脑
      • macOS 13.1 或更新版本

      • M1 或更新版本

    CLI 用法示例

    swift run StableDiffusionSample "a photo of an astronaut riding a horse on mars" --resource-path <output-mlpackages-directory>/Resources/ --seed 93 --output-path </path/to/output/image>

    输出将根据提示和随机种子命名:例如/a_photo_of_an_astronaut_riding_a_horse_on_mars.93.final.png

    请使用--helpflag 了解批处理生成等。

    库使用示例

    import StableDiffusion...let pipeline = try StableDiffusionPipeline(resourcesAt: resourceURL)let image = try pipeline.generateImages(prompt: prompt, seed: seed).first

    Swift包详情

    这个 Swift 包包含两个产品:

    • StableDiffusionLib

    • StableDiffusionSample命令行工具

    这两种产品都需要提供 Core ML 模型和标记化资源。通过目录路径指定资源时,该目录必须包含以下内容:

    • TextEncoder.mlmodelc(文本嵌入模型)

    • Unet.mlmodelcUnetChunk1.mlmodelcUnetChunk2.mlmodelc(去噪自动编码器模型)

    • VAEDecoder.mlmodelc(图像解码器模型)

    • vocab.json(分词器词汇文件)

    • merges.text(合并字节对编码文件)

    可选地,它还可以包括安全检查器模型,某些版本的 Stable Diffusion 包括:

    • SafetyChecker.mlmodelc

    请注意,首先检查 Unet 的分块版本。只有当它不存在时才会Unet.mlmodelc加载完整的。iOS 和 iPadOS 需要分块,而 macOS 则不需要。

  • 相关阅读:
    Sonar生成PDF错误Can‘t get Compute Engine task status.Retry..... HTTP error: 401
    阿里云服务器+Frp+Proxifier工具进行内网穿透
    Python自动化之跨平台GUI利器PyAutoGUI
    稳定的音频来了 — 使用人工智能创作音乐(for free)
    【C#排序算法】(二)插入排序
    Timed out waiting for process (xxx) to appear on错误
    【前端修炼场】 — 这些标签你学会了么?快速拿下 “hr”
    记一次 .NET 某智慧物流 WCS系统 CPU 爆高分析
    Java中的方法递归(套娃检索)
    Qt 窗口的尺寸
  • 原文地址:https://blog.csdn.net/duoshehuan6005/article/details/128207463