基于Hugging Face Diffusers实现的FLUX的MLX移植版本。
关于
在您的Mac上本地运行来自Black Forest Labs的强大FLUX模型!
理念
MFLUX(MacFLUX)是将Hugging Face Diffusers库中的FLUX实现逐行移植到Apple MLX的版本。MFLUX刻意保持简洁明了 - 网络架构是硬编码的,除了分词器外不使用配置文件。目标是拥有一个专注于表达这些模型的精简代码库(从而避免过多抽象)。MFLUX优先考虑可读性,而非通用性和性能。
所有模型都是在MLX中从头实现的,只有分词器是通过Hugging Face Transformers库使用的。除此之外,只有最少的依赖,如用于简单图像后处理的Numpy和Pillow。
模型
- FLUX.1-Scnhell
- FLUX.1-Dev
安装
- 克隆仓库:
git clone git@github.com:filipstrand/mflux.git
- 进入项目目录并设置虚拟环境:
cd mflux && python3 -m venv .venv && source .venv/bin/activate
- 安装所需依赖:
pip install -r requirements.txt
生成图像
运行提供的main.py
python main.py
或创建一个新的独立脚本,如下所示
import sys
sys.path.append("/path/to/mflux/src")
from flux_1_schnell.config.config import Config
from flux_1_schnell.flux import Flux1Schnell
from flux_1_schnell.post_processing.image_util import ImageUtil
flux = Flux1Schnell("black-forest-labs/FLUX.1-schnell")
image = flux.generate_image(
seed=3,
prompt="奢华的生日蛋糕美食照。中间有三根蜡烛,形状像字母拼写出'MLX'一词。完美的灯光和舒适的背景,有大型散景和浅景深。场景氛围是托斯卡纳的日落阳台。照片从蛋糕侧面拍摄。温暖诱人的光线凸显了食材的质地和色彩,营造出令人食欲大开且优雅的效果。",
config=Config(
num_inference_steps=2,
)
)
ImageUtil.save_image(image, "image.png")
如果您的机器上尚未下载模型,它将开始下载过程并获取模型权重(Schnell模型约34GB大小)。
生成单张图像(使用2步推理,Schnell模型)需要2到3分钟。此实现已在两台MacBook Pro机器上测试:
- 2021 M1 Pro (32 GB)
- 2023 M2 Max (32 GB)
更新: 在更快的机器上,@karpathy和@awni报告时间约20秒甚至更短!
等同于Diffusers实现
生成图像时只有一个随机源:初始潜在数组。在此实现中,这个初始潜在完全由输入的seed
参数确定性控制。然而,如果我们导入从Diffusers实现中保存的固定潜在数组实例,那么MFLUX将生成与Diffusers实现相同的图像(假设使用固定的提示词并使用Diffusers设置中的默认参数设置)。
下面的图像说明了这种等同性。 在所有情况下,Schnell模型运行了2个时间步。 Diffusers实现在CPU模式下运行。 MFLUX的精度可以在Config类中设置。 在16位和32位精度之间切换时,最终图像通常会有明显但非常小的差异。
奢华的食物照片
昏暗房间里木桌上老旧多尘的CRT显示器的细节电影感景深渲染,周围杂乱脏乱。屏幕上柔和发光的字母"FLUX"。高细节硬表面渲染
写实风格,魔戒,一只蜷缩在巢穴中睡觉的小红龙,(柔焦),(光圈2.8),(焦距50mm)微距镜头f/2.8,中世纪巫师桌,(柔和)色彩,(舒适的)晨光透过附近窗户,(奇幻的)蒸汽形状,用(佳能EOS R5)拍摄,突出(宁静的)舒适感,中世纪,龙与地下城,角色扮演游戏,3D,16K,8K
一位60多岁的饱经风霜的渔夫站在他的船甲板上,凝视着暴风雨中的大海。他有浓密的花白胡须,深陷的蓝眼睛,皮肤因多年阳光照射而晒黑并布满皱纹。他穿着黄色雨衣和帽子,布料上挂着水滴。他身后,乌云密布,波浪拍打着船舷。整体氛围充满紧张感,表现出对大自然力量的敬畏。
意大利蛤蜊意大利面(Linguine alle vongole)的奢华美食照片,配有大量蛤蜊。完美的灯光和舒适的背景,有大型散景和浅景深。氛围是托斯卡纳日落阳台。照片从盘子侧面拍摄。意大利面闪闪发光,上面撒有帕尔马干酪和罗勒叶。温暖诱人的光线突出了食材的质地和色彩,营造出令人食欲大开且优雅的效果。
当前限制
- 图像逐一生成。
- 不支持负面提示词。
待办事项
- FLUX Dev实现
- LoRA适配器
- 命令行参数