MFLUX简介
MFLUX(MacFLUX)是一个基于Apple MLX框架的FLUX模型实现,旨在让用户能够在Mac电脑上本地运行强大的FLUX图像生成模型。FLUX模型由Black Forest Labs开发,是一种先进的文本到图像生成模型。
MFLUX的核心理念是保持代码简洁明了,同时优先考虑可读性而非通用性和性能。它是Hugging Face Diffusers库中FLUX实现的逐行移植版本,使用Apple MLX框架重新实现。
MFLUX的主要特点
- 支持FLUX.1-Schnell和FLUX.1-Dev两种模型
- 代码简洁,网络架构硬编码,最小化依赖
- 除tokenizer外,所有模型都使用MLX从头实现
- 支持4位和8位量化,可大幅提升生成速度和降低内存占用
- 提供灵活的命令行参数,方便调整生成参数
安装和使用
安装步骤
- 克隆MFLUX仓库:
git clone git@github.com:filipstrand/mflux.git
- 进入项目目录并创建虚拟环境:
cd mflux && python3 -m venv .venv && source .venv/bin/activate
- 安装依赖:
pip install -r requirements.txt
生成图像
MFLUX提供了简单的命令行接口用于生成图像。以下是使用Schnell模型生成图像的示例:
python main.py --model schnell --prompt "Luxury food photograph" --steps 2 --seed 2
对于更强大但速度较慢的Dev模型,可以增加时间步数:
python main.py --model dev --prompt "Luxury food photograph" --steps 25 --seed 2
⚠️ 注意:如果模型尚未下载,程序会自动开始下载模型权重(Schnell或Dev模型约34GB)。可以使用量化版本来减小模型体积。
命令行参数
MFLUX提供了丰富的命令行参数,允许用户灵活调整生成过程:
--prompt
: 生成图像的文本描述(必填)--model
或-m
: 使用的模型,可选"schnell"或"dev"(必填)--output
: 输出图像文件名(默认为"image.png")--seed
: 随机数种子(默认基于时间)--height
: 输出图像高度(默认1024像素)--width
: 输出图像宽度(默认1024像素)--steps
: 推理步数(默认4步)--guidance
: 引导系数(仅用于"dev"模型,默认3.5)--path
: 本地模型路径--quantize
或-q
: 量化级别(4位或8位)
性能对比
MFLUX在不同Mac设备上的图像生成速度各不相同。以下是使用Schnell模型,2个时间步,1024x1024分辨率生成图像的性能数据:
设备 | 用户 | 报告时间 | 备注 |
---|---|---|---|
M3 Max | @karpathy | ~20s | |
M2 Ultra | @awni | <15s | |
2023 M2 Max (96GB) | @explorigin | ~25s | |
2021 M1 Pro (16GB) | @qw-in | ~175s | 可能会导致Mac卡顿 |
2023 M3 Pro (36GB) | @kush-gupt | ~80s | |
2020 M1 (8GB) | @mbvillaverde | ~335s | 512x512分辨率 |
2022 M1 MAX (64GB) | @BosseParra | ~55s | |
2021 M1 Pro (32GB) | @filipstrand | ~160s | |
2023 M2 Max (32GB) | @filipstrand | ~70s |
高级功能:量化
MFLUX支持4位和8位量化模式,可以显著提升生成速度并降低内存占用。以下是使用8位量化模式生成图像的示例:
python main.py \
--model schnell \
--steps 2 \
--seed 2 \
--quantize 8 \
--height 1920 \
--width 1024 \
--prompt "Tranquil pond in a bamboo forest at dawn, the sun is barely starting to peak over the horizon, panda practices Tai Chi near the edge of the pond, atmospheric perspective through the mist of morning dew, sunbeams, its movements are graceful and fluid — creating a sense of harmony and balance, the pond's calm waters reflecting the scene, inviting a sense of meditation and connection with nature, style of Howard Terpning and Jessica Rossier"
量化不仅可以加速生成过程,还能大幅减少模型占用的磁盘空间:
4 位 | 8 位 | 原始 (16 位) |
---|---|---|
9.85GB | 18.16GB | 33.73GB |
保存和加载量化模型
MFLUX允许用户将量化后的模型保存到本地磁盘,以便后续快速加载使用:
python save.py \
--path "/Users/username/Desktop/schnell_8bit" \
--model schnell \
--quantize 8
加载并使用保存的量化模型:
python main.py \
--path "/Users/username/Desktop/schnell_8bit" \
--model schnell \
--steps 2 \
--seed 2 \
--height 1920 \
--width 1024 \
--prompt "Your prompt here"
结语
MFLUX为Mac用户提供了在本地运行强大FLUX模型的便捷方式。通过简洁的实现和灵活的配置选项,用户可以轻松生成高质量图像,同时得益于Apple MLX框架的优化,实现较快的生成速度。量化功能进一步增强了MFLUX的实用性,使其能够在资源受限的设备上高效运行。
尽管MFLUX目前仍有一些限制,如一次只能生成一张图像、不支持负面提示词等,但项目团队正在积极开发新功能,如LoRA适配器、LoRA微调以及前端界面支持等。随着持续的改进和社区贡献,MFLUX有望成为Mac平台上强大而灵活的图像生成工具。
🔗 相关链接: