【Mac用户必看】本地运行FLUX模型,轻松上手!
8 个月前
我在我的 Mac 上试用了这个工具,让我带你了解一下我学到的东西。
不再废话,让我们看看它有多好!
在本地运行 FLUX 模型
MFLUX 是什么?
MFLUX 基本上是将 Huggingface Diffusers 库中的 FLUX 实现逐行移植到 Apple 的 MLX 中。
它的设计非常简洁明了。
没有复杂的配置文件(除了分词器),网络架构是硬编码的。
目的是保持代码库小巧,专注于表达这些模型,这意味着处理更少的抽象层。
尽管 MFLUX 优先考虑可读性而非通用性和性能,但它出奇地快——尤其是在使用量化时更快。
就像在你的 Mac 上拥有一台精简、高效的图像生成机器。
让我带你浏览一下这个仓库,并解释一下我在过程中发现的东西!
安装 MFLUX
让 MFLUX 运行起来非常简单。
如果你已经安装了 uv
,这是一个用 Rust 编写的极快的 Python 包和项目管理器,你可以直接运行:
uv tool install --upgrade mflux
这将为你提供 mflux-generate
命令行工具以及开始所需的一切。
如果你更喜欢使用虚拟环境,你可以用经典的方式来做:
mkdir -p mflux && cd mflux && python3 -m venv .venv && source .venv/bin/activate
pip install -U mflux
好了,准备测试!
生成你的第一张图片
好了,让我们进入有趣的部分——生成图片!
安装好 MFLUX 后,你可以使用 mflux-generate
命令根据你的提示创建图片。
这里有一个简单的例子,使用 schnell
模型,量化设置为 8 位,仅进行 2 步推理:
mflux-generate --model schnell --prompt "A serene landscape with mountains and a lake at sunrise" --steps 2 --seed 2 -q 8
注意: 第一次运行时,它会下载模型权重,大约 34GB。是的,很大,但绝对值得。
让我们看看我们得到了什么:
太美了!
如果你想使用更强大的 dev
模型,你可以运行:
注意: FLUX.1-dev
模型可能需要访问权限。如果你遇到问题,请查看这个故障排除指南。
mflux-generate --model dev --prompt "A futuristic cityscape with flying cars and neon lights" --steps 25 --seed 2 -q 8
顺便说一下,我是在以下配置下运行的:
如果你想节省空间并可能加快处理速度,可以查看下面的量化部分。
另外,默认情况下,模型会缓存在你的主目录下的 .cache
中。如果你想更改这个位置,可以设置 HF_HOME
环境变量。更多详情请参阅 Hugging Face 文档。
命令行参数
mflux-generate
有很多选项可以使用。以下是一些最有用的:
--prompt
:你想要生成的图像的文本描述。--model
或-m
:在"schnell"
或"dev"
之间选择。--steps
:推理步骤的数量(通常步骤越多,质量越好)。--seed
:如果你想获得可重复的结果,可以设置随机数生成器的种子。--height
和--width
:设置输出图像的尺寸。--quantize
或-q
:使用量化来加快处理速度并节省内存(选项是4
或8
)。--lora-paths
:如果你使用适配器,指定 LoRA 权重的路径。--metadata
:导出包含图像元数据的.json
文件。
还有更多选项,但这些是我发现最有用的。要查看完整列表,可以参考文档或使用 --help
。
通过 Python 脚本运行
如果你更喜欢使用 Python 脚本,可以按如下方式生成图像:
from mflux import Flux1, Config
# 加载模型
flux = Flux1.from_alias(
alias="schnell", # "schnell" 或 "dev"
quantize=8, # 4 或 8
)
# 生成图像
image = flux.generate_image(
seed=2,
prompt="A futuristic cityscape with flying cars and neon lights",
config=Config(
num_inference_steps=2,
height=1024,
width=1024,
)
)
image.save(path="image.png")
速度有多快?
我对性能很好奇,所以做了一些挖掘和测试。
图像生成速度取决于你的 Mac 硬件。
例如:
- 在 M3 Max 上,大约需要 20 秒。
- 在 M2 Ultra 上,不到 15 秒。
- 我的 2023 M3 Pro(36GB)大约需要 80 秒。
如果你想测试自己的机器,可以运行:
time mflux-generate
--prompt "A futuristic cityscape with flying cars and neon lights"
--model schnell
--steps 2
--seed 2
--height 1024
--width 1024
请记住,第一次运行可能会比较慢,因为需要加载模型和其他开销。
感谢你花时间在这里!
如果你喜欢这篇文章,请花点时间 ****,点赞 50 次并留下评论。
我们还会带来更多内容!
匹配 Diffusers 实现
我喜欢 MFLUX 的一点是,如果你使用相同的初始潜在数组和参数,它可以生成与 Huggingface Diffusers 实现相同的图像。
来自 https://github.com/filipstrand/mflux 的对比
谈谈量化
量化是一种通过压缩权重来加快模型速度并减少内存使用的好方法。MFLUX 支持 4 位和 8 位量化。
你可以这样使用它:
mflux-generate
--model schnell
--steps 2
--seed 2
--quantize 8
--height 1920
--width 1024
--prompt "Your prompt here"
根据我的经验,在我的 M3 Pro 上使用 8 位量化几乎可以将图像生成时间减半,而质量差异可以忽略不计。
量化后的模型大小
以下是模型大小的对比:
- 4 位: 约 9.85GB
- 8 位: 约 18.16GB
- 16 位(原始): 约 33.73GB
保存量化后的模型
如果你想将量化后的模型保存到磁盘(这样你就不必每次运行时都进行量化),你可以这样做:
mflux-save
--path "/Your/Desired/Path/schnell_8bit"
--model schnell
--quantize 8
加载量化后的模型
要使用你保存的量化模型:
mflux-generate
--path "/Your/Desired/Path/schnell_8bit"
--model schnell
--steps 2
--seed 2
--prompt "Your prompt here"
从保存的量化模型加载时,不需要指定 -q
标志。
图像到图像生成
MFLUX 还支持图像到图像的生成。你可以提供一张初始图像,让模型根据它生成变体。方法如下:
mflux-generate
--prompt "Your prompt here"
--init-image-path "path/to/your/image.png"
--init-image-strength 0.3
--model dev
--steps 20
--seed 43
--guidance 4.0
--quantize 8
--height 1024
--width 1024
--init-image-strength
控制初始图像对输出的影响程度。接受的值在 0.0 到 1.0 之间,值越高,影响越大。
使用 LoRA 适配器
LoRA 适配器允许你使用额外的权重对模型进行微调。你可以这样使用它们:
mflux-generate --prompt "Your prompt" --model dev --steps 20 --seed 43 -q 8 --lora-paths "path/to/lora.safetensors"
你甚至可以组合多个 LoRA:
mflux-generate
--prompt "Your prompt"
--model dev
--steps 20
--seed 43
--lora-paths lora1.safetensors lora2.safetensors
--lora-scales 1.0 0.5
-q 8
只需确保 LoRA 权重与你使用的模型兼容。
ControlNet 集成
ControlNet 通过使用参考图像来指导生成,提供了更精细的控制。
你可以这样使用它:
mflux-generate-controlnet
--prompt "Your prompt"
--model dev
--steps 20
--seed 1727047657
-q 8
--lora-paths "path/to/lora.safetensors"
--controlnet-image-path "path/to/reference.png"
--controlnet-strength 0.5
--controlnet-save-canny
当与 LoRA 适配器结合使用时,这尤其强大。
注意: ControlNet 第一次使用时会下载额外的权重(约 3.58GB)。目前它针对 dev
模型进行了优化,但也可以与 schnell
一起使用。
请记住,MFLUX 仍在开发中,所以有一些需要注意的地方:
- 它一次生成一张图像。
- 尚不支持负面提示。
- LoRA 权重仅支持网络的转换器部分。
- 某些 LoRA 适配器可能无法工作。
- ControlNet 目前仅支持 canny 版本。
工作流程技巧
以下是我发现的一些有用的技巧:
- 要隐藏模型获取进度条,可以运行
export HF_HUB_DISABLE_PROGRESS_BARS=1
。 - 使用配置文件保存复杂的作业参数,而不是每次都输入。
- 为常用命令设置 shell 别名。例如:
alias mflux-dev='mflux-generate --model dev'
alias mflux-schnell='mflux-generate --model schnell --metadata'
下一步是什么?
MFLUX 还有很多计划:
- 支持 LoRA 微调。
- 使用 Gradio 或 Streamlit 的前端支持。
- 可能与 ComfyUI 等工具集成。
- 支持 PuLID 和基于深度的 ControlNet。
如果你有任何问题或遇到任何问题,请随时联系。
祝你生成愉快!
额外内容:使用 AI 构建
别忘了看看我们最近发布的一些实践者资源:
感谢你停下来,成为我们社区的重要一员!
推荐阅读:
FluxAI 中文
© 2025. All Rights Reserved