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
相关产品推荐
相关产品推荐

