You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac端从Stable Diffusion 2-1升级至3-medium版本报错,求可行示例

升级Stable Diffusion 2.1到SD3-medium(Mac端)问题及可运行示例

问题背景

将Stable Diffusion从2.1版本升级至stable-diffusion-3-medium-diffusers版本,已完成diffusers库升级、Hugging Face gated仓库访问权限申请、HF_TOKEN环境变量配置,但运行测试代码时出现依赖报错,需要可在Mac端正常运行的SD3完整示例代码。

原SD2.1可运行代码

# source venv/bin/activate

from diffusers import DiffusionPipeline

pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1")
pipe = pipe.to("mps")

pipe.enable_attention_slicing()

print("Starting Process")

steps = 200
query = "Stormy Weather in Monte Carlo"

image = pipe(query, num_inference_steps=steps).images[0]

image.save("oneOffImage.jpg")

print("Successfully Created Image as oneOffImage.jpg")

升级后的SD3测试代码

# source venv/bin/activate

from diffusers import StableDiffusion3Pipeline
from dotenv import load_dotenv
import os

load_dotenv()

print("Starting Process")

pipe = StableDiffusion3Pipeline.from_pretrained("stabilityai/stable-diffusion-3-medium-diffusers")
pipe = pipe.to("mps")

# pipe.set_progress_bar_config(disable=True)
pipe.enable_attention_slicing()

print("Starting Process")

steps = 200
query = "Stormy Weather in Monte Carlo"

image = pipe(query, num_inference_steps=steps).images[0]

image.save("oneOffImage.jpg")

print("Successfully Created Image as oneOffImage.jpg")

报错信息

(venv) mikeland@mikes-mac-mini WeatherWindow % python3 oneOffGenStableDiffusion.py 
/Users/mikeland/WeatherWindow/venv/lib/python3.9/site-packages/diffusers/models/transformers/transformer_2d.py:34: FutureWarning: `Transformer2DModelOutput` is deprecated and will be removed in version 1.0.0. Importing `Transformer2DModelOutput` from `diffusers.models.transformer_2d` is deprecated and this will be removed in a future version. Please use `from diffusers.models.modeling_outputs import Transformer2DModelOutput`, instead.
  deprecate("Transformer2DModelOutput", "1.0.0", deprecation_message)
Starting Process
Loading pipeline components...:   0%|                                                                                  | 0/9 [00:00<?, ?it/s]
Traceback (most recent call last):
  File "/Users/mikeland/WeatherWindow/oneOffGenStableDiffusion.py", line 15, in <module>
    pipe = StableDiffusion3Pipeline.from_pretrained("stabilityai/stable-diffusion-3-medium-diffusers")
  File "/Users/mikeland/WeatherWindow/venv/lib/python3.9/site-packages/huggingface_hub/utils/_validators.py", line 114, in _inner_fn
    return fn(*args, **kwargs)
  File "/Users/mikeland/WeatherWindow/venv/lib/python3.9/site-packages/diffusers/pipelines/pipeline_utils.py", line 881, in from_pretrained
    loaded_sub_model = load_sub_model(
  File "/Users/mikeland/WeatherWindow/venv/lib/python3.9/site-packages/diffusers/pipelines/pipeline_loading_utils.py", line 703, in load_sub_model
    loaded_sub_model = load_method(os.path.join(cached_folder, name), **loading_kwargs)
  File "/Users/mikeland/WeatherWindow/venv/lib/python3.9/site-packages/transformers/modeling_utils.py", line 3122, in from_pretrained
    raise ImportError(
ImportError: Using `low_cpu_mem_usage=True` or a `device_map` requires Accelerate: `pip install accelerate`

解决步骤及Mac端可运行SD3示例代码

1. 安装缺失依赖

首先解决报错中的Accelerate依赖问题:

pip install accelerate torch torchvision

2. 适配Mac MPS的完整可运行代码

# source venv/bin/activate

from diffusers import StableDiffusion3Pipeline
from dotenv import load_dotenv
import os
import torch

load_dotenv()

# 从环境变量读取HF_TOKEN
hf_token = os.getenv("HF_TOKEN")

print("Loading SD3 pipeline...")

# 加载SD3-medium模型,适配Mac MPS
pipe = StableDiffusion3Pipeline.from_pretrained(
    "stabilityai/stable-diffusion-3-medium-diffusers",
    token=hf_token,
    torch_dtype=torch.float16,
    low_cpu_mem_usage=True
)
pipe = pipe.to("mps")

# 启用注意力切片,节省Mac内存
pipe.enable_attention_slicing()

print("Generating image...")

# SD3推理步数无需200,50步已足够生成高质量图像
steps = 50
query = "Stormy Weather in Monte Carlo"

# 生成图像,添加MPS兼容的内存优化
with torch.no_grad():
    image = pipe(
        query,
        num_inference_steps=steps,
        guidance_scale=7.5
    ).images[0]

image.save("sd3_monte_carlo_storm.jpg")

print("Image saved as sd3_monte_carlo_storm.jpg")

代码关键点说明

  • 明确传入HF_TOKEN确保访问 gated 模型仓库
  • 使用torch.float16减少内存占用,适配Mac MPS
  • 启用low_cpu_mem_usage=True配合Accelerate优化内存加载
  • 用torch.no_grad()避免不必要的内存消耗
  • 调整推理步数为50(SD3效率更高,无需200步)
  • 设置guidance_scale=7.5控制文本相关性(SD3推荐范围7-10)

内容的提问来源于stack exchange,提问作者lando2319

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 02:36:07