ERNIE-Image × mflux:在 Apple Silicon Mac 上原生 MLX 运行 8B 文生图模型
发布时间:2026-07-09
发布平台:ernie-image.app
一、背景:Apple Silicon 上的 ERNIE-Image 新选择
ERNIE-Image 发布三个月以来,社区已经探索了多种本地部署方式——从 SGLang 推理服务器到 GGUF 量化,从 AMD ROCm 到 Google Colab 免费部署。对于 Apple Silicon Mac 用户来说,之前的主要方案是通过 Diffusers + PyTorch MPS 后端运行,但这种方式有一个明显的痛点:MPS 后端性能不理想,且需要通过 PyTorch 做一层额外的抽象。
2026 年 7 月,mflux 项目正式加入了 ERNIE-Image 支持,为 Mac 用户提供了一条全新的路线:无需 Diffusers、无需 PyTorch,直接在 MLX 框架上原生运行 ERNIE-Image 和 ERNIE-Image-Turbo。
mflux 是什么?它是一个"逐行 MLX 移植"项目,将 HuggingFace Diffusers 和 Transformers 中的生成式图像模型直接移植到 Apple 的 MLX 框架上。这种做法的好处在于——去掉中间层,让模型直接在 Metal Performance Shaders 上运行,性能更好、占用更小。
目前 mflux 支持 ERNIE-Image(Base)和 ERNIE-Image-Turbo 两个版本,完整覆盖了 text-to-image、image-to-image、LoRA 微调、量化推理等全部常用功能。
二、mflux 是什么?为什么选择它
mflux 的核心理念很简洁:所有模型都用 MLX 从零实现,只使用 HuggingFace Transformers 的 tokenizer 组件。项目的代码风格受 Andrej Karpathy 的 "从头实现" 理念影响——保持最小化和显式化。
对于 Mac 用户来说,mflux 相较于 Diffusers + MPS 有以下优势:
- 原生 MLX 推理:模型权重直接从 PyTorch 转换为 MLX 格式(NCHW → NHWC),不需要通过 PyTorch 的 MPS 桥接层
- 磁盘占用更低:通过量化(q8/q4)可以大幅减少模型文件大小
- LoRA 训练支持:内置 mflux-train 工具,支持对 ERNIE-Image 进行 LoRA 微调
- 批量生成:支持一次性生成多张图片
- HTTP API 服务:可以启动远程推理服务器,作为 API 使用
更重要的是,社区开发者 treadon 已经将 ERNIE-Image-Turbo 的 MLX 权重预转换并上传到 HuggingFace(treadon/ERNIE-Image-Turbo-MLX),用户下载后开箱即用,无需自行转换。
三、安装与快速上手
安装
mflux 使用 uv 作为包管理器,安装非常简单:
# 安装 uv(如果尚未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
安装 mflux
uv pip install mflux
如果需要更快的下载速度,可以添加 hf_transfer 扩展:
uv pip install "mflux[hf_transfer]"
基本使用:文本生成图像
使用 ERNIE-Image-Turbo 生成第一张图片:
mflux-generate-ernie-image-turbo \
--prompt "一只黑白相间的中华田园犬在草地上奔跑,阳光明媚" \
--width 1024 \
--height 1024 \
--seed 42 \
--steps 8 \
-q 8
第一次运行会自动下载模型权重(~12GB q8 量化),后续运行直接使用本地缓存。
参数说明:
-q 8:使用 8-bit 量化,磁盘占用约 12GB,推荐大多数用户使用-q 4:使用 4-bit 量化,磁盘占用约 6.2GB,适合显存有限的 Mac--steps:Turbo 版本推荐 8 步,Base 版本推荐 28-50 步--guidance:Base 版本可使用 CFG(推荐 4.0),Turbo 版本固定为 1.0
使用 Base 模型
Base(非蒸馏)版本的 ERNIE-Image 需要更多步数,但支持分类器自由引导(CFG),适合对指令遵循要求更严格的任务:
mflux-generate-ernie-image \
--prompt "一张带有日语菜单的复古咖啡馆招牌,暖色调灯光" \
--width 1024 \
--height 1024 \
--seed 42 \
--steps 28 \
--guidance 4.0
图像到图像(img2img)
mflux 支持基于输入图像的二次生成,通过 --image-path 和 --image-strength 参数控制:
mflux-generate-ernie-image-turbo \
--prompt "将草图转化为精美的水彩画" \
--image-path /path/to/sketch.png \
--image-strength 0.6 \
--steps 8 \
-q 8
--image-strength 范围 0.0~1.0,值越大保留原图特征越多。
四、性能基准测试
根据社区开发者 treadon 在 M4 Pro 64GB 上的测试数据:
| 管线 | 总时间 | 每步时间 |
|---|---|---|
| PyTorch/MPS(diffusers) | 137.0s | 17.1s/步 |
| MLX(mflux) | 134.2s | 16.0s/步 |
细分耗时:
| 组件 | 耗时 |
|---|---|
| Text encode(PyTorch) | 0.1s |
| Denoise(MLX) | 128s |
| VAE decode(MLX) | 6s |
| 总计 | ~134s |
这意味着在 M4 Pro 上,使用 ERNIE-Image-Turbo 生成一张 1024×1024 的图片大约需要 2 分钟。这个速度虽然不如云端 GPU 方案快,但对于本地推理来说已经是可用的水平——特别是当你想在离线环境下工作,或者需要处理敏感内容时。
注意:不同 Mac 配置的性能差异较大:
- M1 Max(64GB):预计 180-220s
- M2 Ultra(128GB):预计 100-120s
- M4 Pro(64GB):参考值 ~134s
- M4 Max(128GB):预计 80-100s
五、量化与磁盘占用
ERNIE-Image 的完整模型权重约 22GB,对于大多数 Mac 用户来说这个数字有些大。mflux 支持两种量化级别:
| 量化级别 | 磁盘占用 | 说明 |
|---|---|---|
| 无量化(float16) | ~22GB | 完整精度,磁盘要求高 |
| q8(8-bit) | ~12GB | 推荐选项,质量损失极小 |
| q4(4-bit) | ~6.2GB | 适合磁盘空间有限的场景 |
使用 mflux-save 命令进行模型量化保存:
# 下载并保存为 q8 量化
mflux-save --model ernie-image-turbo -q 8
下载并保存为 q4 量化
mflux-save --model ernie-image-turbo -q 4
六、LoRA 微调:在 Mac 上定制专属风格
mflux 内置了 LoRA 训练工具 mflux-train,支持对 ERNIE-Image 进行微调。这意味着你可以在自己的 Mac 上训练专属风格模型,无需云端 GPU。
使用示例配置:
mflux-train --config train_ernie_image_turbo.json
训练配置文件示例(train_ernie_image_turbo.json):
{
"model": "ernie-image-turbo",
"dataset_path": "./my_dataset",
"lora_rank": 16,
"lora_alpha": 32,
"learning_rate": 1e-4,
"num_epochs": 10,
"batch_size": 1,
"quantize": 8
}
支持的目标层包括:
mlp.*— MLP 层time_embedding.*— 时间嵌入层adaln_modulation— Adaptive Layer Norm 调制层final_norm.linear— 最终归一化线性层
训练好的 LoRA 权重可以在推理时直接加载:
mflux-generate-ernie-image-turbo \
--prompt "my_style: 一只猫" \
--lora-weights /path/to/lora.safetensors \
--lora-scale 0.8
七、Python API 与 HTTP 服务
Python 脚本方式
mflux 也支持通过 Python API 调用,适合集成到更大的工作流中:
# /// script
# dependencies = ["mflux"]
# ///
from mflux import mflux_generate
mflux_generate(
model="ernie-image-turbo",
prompt="一只站在悬崖上的海鹦",
width=1280,
height=500,
seed=42,
steps=8,
quantize=8
)
启动 HTTP 服务
mflux 支持启动远程推理服务器,提供 HTTP API 接口:
mflux-server --model ernie-image-turbo -q 8 --port 8080
然后可以通过 REST API 调用:
curl -X POST http://localhost:8080/generate \
-H "Content-Type: application/json" \
-d '{"prompt": "赛博朋克风格的东京夜景", "width": 1024, "height": 1024}'
这为将 ERNIE-Image 集成到本地 Web 应用或自动化工作流提供了极大便利。
八、适用场景与注意事项
最适合的场景
- 离线环境:没有网络连接时仍可生成高质量图片
- 隐私敏感项目:图片数据不需要上传到云端
- 原型开发与测试:快速测试 prompt 效果
- LoRA 实验:在本地低成本训练和测试风格 LoRA
- 教育演示:在 MacBook 上现场演示 ERNIE-Image 能力
注意事项
- 内存要求:ERNIE-Image-Turbo q8 量化需要约 16GB 统一内存,建议 24GB 以上的 Mac
- 首次下载:模型权重较大(q8 约 12GB),首次运行需要较长时间下载
- 速度 vs 云端:本地推理速度远慢于云端 GPU(fal.ai 等平台约 9 秒/张),适合低吞吐量场景
- Turbo 优先:在 Mac 上优先使用 Turbo 版本(8 步),Base 版本(50 步)耗时过长
九、总结
mflux 为 Apple Silicon Mac 用户提供了一条在不依赖云端 GPU 的情况下运行 ERNIE-Image 的实用路径。虽然本地推理速度无法与云端 H100 相比,但离线可用性、数据隐私、以及原生 LoRA 训练支持,使其成为开发者和内容创作者在 Mac 上使用 ERNIE-Image 的重要补充方案。
关键要点:
- mflux 原生支持 ERNIE-Image 和 ERNIE-Image-Turbo
- 8-bit 量化后磁盘占用约 12GB,M4 Pro 上推理约 134 秒/张
- 支持 LoRA 训练、img2img、HTTP 服务
- 社区已有预转换 MLX 权重(treadon/ERNIE-Image-Turbo-MLX)
- 推荐 q8 量化 + Turbo 版本作为日常使用配置
关键词:ernie-image mflux ernie-image apple silicon ernie-image mlx ernie-image mac mflux ernie-image turbo mlx apple silicon ai image generation