【Mac用户必看】本地运行FLUX模型,轻松上手!


8 个月前

我在我的 Mac 上试用了这个工具,让我带你了解一下我学到的东西。

不再废话,让我们看看它有多好!

None

在本地运行 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。是的,很大,但绝对值得。

None

让我们看看我们得到了什么:

None

太美了!

如果你想使用更强大的 dev 模型,你可以运行:

注意: FLUX.1-dev 模型可能需要访问权限。如果你遇到问题,请查看这个故障排除指南

mflux-generate --model dev --prompt "A futuristic cityscape with flying cars and neon lights" --steps 25 --seed 2 -q 8

顺便说一下,我是在以下配置下运行的:

None

如果你想节省空间并可能加快处理速度,可以查看下面的量化部分。

另外,默认情况下,模型会缓存在你的主目录下的 .cache 中。如果你想更改这个位置,可以设置 HF_HOME 环境变量。更多详情请参阅 Hugging Face 文档

命令行参数

mflux-generate 有很多选项可以使用。以下是一些最有用的:

  • --prompt:你想要生成的图像的文本描述。
  • --model-m:在 "schnell""dev" 之间选择。
  • --steps:推理步骤的数量(通常步骤越多,质量越好)。
  • --seed:如果你想获得可重复的结果,可以设置随机数生成器的种子。
  • --height--width:设置输出图像的尺寸。
  • --quantize-q:使用量化来加快处理速度并节省内存(选项是 48)。
  • --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 秒

None

如果你想测试自己的机器,可以运行:

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 实现相同的图像。

None

来自 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