本地图片生成示意图

这次实践在 Mac mini 6 32G 上使用 Qwen-Image-2.1-Turbo 和 MLX 推理框架,完成了本地图片生成

生成一张 1024×1024 的 PNG 图片耗时约 36 秒,MLX 峰值内存占用为 5.33GB。模型文件保存在本机后,生成过程可以完全离线进行

本次生成的图片示例

目标

这套方案需要满足以下条件:

  • 模型保存在本地
  • 不依赖在线生图平台
  • 可以通过命令行生成图片
  • 可以固定随机种子
  • 在有限内存下稳定运行
  • 输出 PNG 文件,并保存生成参数

模型目录为:

1
/path/to/qwen-turbo-mlx

模型采用 Qwen-Image-2.1-Turbo 的 MLX 格式,目录中包含 Transformer、文本编码器和 VAE 等组件

模型和量化设置

Qwen-Image-2.1-Turbo 是 Qwen-Image 系列的加速版本,推荐使用 8 步采样。采样步数较少,可以减少本地生成时间

本次使用的模型中,Transformer 已经是 4-bit 量化版本。这样可以降低内存占用

量化级别需要保持一致。开始时加上 -q 8,运行时出现以下错误:

1
2
ValueError: Conflicting component quantization levels:
transformer uses 4-bit, but an earlier component uses 8-bit.

原因是 Transformer 已经使用 4-bit 量化,而 -q 8 又要求其他组件使用 8-bit。两者发生冲突

删除 -q 8 后,让 mflux 按模型自身的量化信息加载,问题得到解决

mflux 参数和命令

当前安装的 mflux 版本不支持 --model-path 参数。本地模型目录需要直接写在 --model 后面,并用 --base-model 指定基础架构

1
2
--model /path/to/qwen-turbo-mlx
--base-model qwen-image-2.1-turbo

完整命令如下:

1
2
3
4
5
6
7
8
9
10
uv run --with mflux==0.24.0 mflux-generate-qwen-2.1 \
--model /path/to/qwen-turbo-mlx \
--base-model qwen-image-2.1-turbo \
--prompt "A cinematic portrait of a young woman in traditional Chinese clothing, soft natural light, detailed face, realistic photography" \
--steps 8 \
--width 1024 \
--height 1024 \
--seed 42 \
--low-ram \
--output /path/to/generated-{seed}.png

主要参数如下:

  • --model:本地模型目录
  • --base-model:模型对应的基础架构
  • --prompt:图片提示词
  • --steps 8:采样 8 步
  • --width 1024、--height 1024:输出尺寸
  • --seed 42:固定随机种子
  • --low-ram:启用低内存模式
  • --output:输出路径,{seed} 会替换为种子值

运行结果

运行过程如下:

1
2
3
4
W1109 05:43:20.930000 77335 torch/distributed/elastic/multiprocessing/redirects.py:35]
NOTE: Redirects are currently not supported in MacOs.
100%|███████████████████████████████████████████████████████████████████|
8/8 [00:36<00:00, 4.55s/it]

输出结果如下:

1
2
3
4
5
6
7
Image saved successfully at:
/path/to/generated-42.png

Metadata embedded successfully at:
/path/to/generated-42.png

Peak MLX memory: 5.33 GB

Mac mini 6 有 32GB 统一内存。本次生成 1024×1024 图片时,MLX 峰值内存为 5.33GB。扣除系统、终端和其他服务占用后,仍有一定余量

macOS 警告

运行时会出现以下提示:

1
NOTE: Redirects are currently not supported in MacOs.

这是 PyTorch 在 macOS 上对进程输出重定向功能的提示,不表示生成失败

出现以下三个结果时,可以确认图片已经生成:

  • 进度达到 100%,并完成 8/8
  • 出现 Image saved successfully
  • 出现 Metadata embedded successfully

固定随机种子

命令使用了以下参数:

1
--seed 42

随机种子决定初始噪声。在模型、提示词、尺寸和采样步数相同的情况下,固定种子通常可以得到可复现或接近的结果

固定种子适合用于比较提示词、调整参数、记录作品,以及比较环境升级前后的差异

输出模板:

1
generated-{seed}.png

本次生成的文件名为:

1
generated-42.png

mflux 还会把生成参数写入 PNG 元数据。图片文件可以同时保存图像和生成记录

更换提示词

更换 --prompt 后面的内容,就可以生成其他主题的图片。例如:

1
2
3
4
5
6
7
8
9
10
uv run --with mflux==0.24.0 mflux-generate-qwen-2.1 \
--model /path/to/qwen-turbo-mlx \
--base-model qwen-image-2.1-turbo \
--prompt "A red panda drinking tea in a quiet Japanese garden at sunset, warm golden light, cinematic composition, highly detailed, realistic photography" \
--steps 8 \
--width 1024 \
--height 1024 \
--seed 123 \
--low-ram \
--output /path/to/red-panda-{seed}.png

输出文件为:

1
/path/to/red-panda-123.png

提示词可以写明主体、场景、光线、镜头、风格和细节。对于复杂构图和写实风格,英文提示词通常更稳定

本地运行的特点

模型和运行环境保存在本机后,图片生成不依赖在线平台

具体表现包括:

  • 不需要购买在线额度
  • 不受在线服务限流影响
  • 私人照片不必上传到平台
  • 不受网页界面限制
  • 不依赖某个网站是否正常运行
  • 可以批量生成和自动化处理
  • 可以长期保留模型和工作流

只要模型文件和运行环境仍然可用,就可以在终端中生成图片

在本次配置下,1024×1024 图片的生成速度约为 36 秒一张,峰值 MLX 内存约为 5.33GB。这个速度和资源占用可以满足头像、概念图、产品草图、场景设计、封面图和个人创作等用途

当前限制

这套方案目前是命令行工作流,没有直接接入 Open WebUI

如果需要网页操作,还需要搭建 HTTP 适配服务,或者使用 ComfyUI 专用格式的 Qwen 模型

提示词以英文为主时通常更稳定。图片尺寸越大,生成时间和内存占用越高。1024×1024 可以作为起点

需要更高分辨率时,可以先生成基础图,再使用放大模型进行后处理

运行配置和结果

1
2
3
4
5
6
7
8
9
10
设备:Mac mini 6 32G
模型:Qwen-Image-2.1-Turbo
推理框架:MLX
命令工具:mflux 0.24.0
采样步数:8 步
生成尺寸:1024×1024
生成时间:约 36 秒
峰值 MLX 内存:5.33GB
输出格式:PNG
结果文件:generated-42.png

这套配置可以在没有独立显卡的 Mac mini 上完成可用的本地图片生成。输入提示词后,图片会在几十秒内保存到本机硬盘