AI

Mac M系列 FLUX Kontext 安装和运行

FLUX.1 Kontext是什么


FLUX.1 Kontext 是由 Black Forest Labs 推出的图像生成与编辑模型,支持上下文感知的图像处理。模型基于文本和图像提示进行生成与编辑,支持对象修改、风格转换、背景替换、角色一致性保持和文本编辑等多种任务。FLUX.1 Kontext Pro版本支持快速迭代图像编辑,能在多次编辑中保持图像质量和角色特征稳定。。Kontext Max版本在提示词遵循、排版生成和编辑一致性方面表现卓越,速度极快。FLUX.1 Kontext [dev] 是FLUX.1 Kontext pro 的开源开发版本,拥有120亿(12B)参数,支持在消费级硬件上高效运行,实现媲美专有工具的顶级图像编辑性能,对标GPT-4o和Gemini 图像生成功能。

FLUX.1 Kontext的项目地址
项目官网:https://bfl.ai/announcements/flux-1-kontext
GitHub仓库:https://github.com/black-forest-labs/flux
HuggingFace模型库:https://huggingface.co/black-forest-labs/FLUX.1-Kontext-dev

 

ComfyUI安装


ComfyUI 的桌面版是支持 Apple Silicon,所以这次我们直接选择桌面版。安装过程会很简单。

ComfyUI下载地址:https://www.comfy.org/zh-cn

打开 http://comfy.org,直接下载 Mac 版就可以了,下载完成之后直接双击 dmg 文件。

这就是一个常规的 macOS 软件安装方式 ,拖动到 Application,然后打开 ComfyUI。

然后就会进入配置页面了,全程可视化配置,没有任何复杂的地方,点击开始使用。

选择 GPU 类型

按默认选择左边的 MPS 加速,不启用 CPU 模型。点击下一步,安装位置设置。

可以设置 ComfyUI 的主要目录。这个目录里会包含如下的文件:

插件,输入,模型,输出这些都放在这里。如果没有特殊需求直接下一步,如果有多个硬盘,或者有大的硬盘,就尽量切换到大空间的路径。因为这个目录需要放模型,所需空间会比较大。

桌面设置

这里基本默认就可以了,如果你的网络是内外,可以点开镜像设置。我的网络没问题,他直接打勾✅了,所以我是直接点击安装,自动设置 Python 环境和安装依赖。

这个过程非常丝滑,你不需要关心具体细节,它会全自动完成。因为 macOS 的深度学习包不是很大,也不需要几个 G 的 CUDA,所以即便是在线下载依赖,整个过程也不会太久。

安装完成之后自动启动。

启动之后会弹出模板,让你选择,选好之后就可以开始使用了,到这里之后,后面的操作就和 Windows 平台差不多了,同样在演示例子中选择 Flux,然后选择小兔子的那个工作流。

打开之后,他同样会提示你下载几个必要的模型。因为这是桌面端,只要点击一下下载,它会自动帮你下载并放到正确的路径,当然,你也可以直接去 Huggingface 下载。下载完成之后,就可以点击运行了。

https://huggingface.co/bullerwins/FLUX.1-Kontext-dev-GGUF/tree/main

在运行之前一切顺利,整个过程还挺丝滑。但是点击运行之后就出现问题了。

模型加载全部没有问题,但是到了 KSampler 这一步的时候,就出了错误了。

错误提示为:

Trying to convert Float8_e4m3fn to the MPS backend but it does not have support for that dtype.

通过右下角的查找问题,可以快速转到 GitHub 的讨论版块,有六个提问,一个已经被解决了,看了一圈也不是特别清楚。但是,我根据他的提示信息盲猜,这应该是数据类型的问题。M 系列芯片和 N 卡支持的数据类型不一样,FP8 这种估计只有 N 卡上可以。

所以,我的思路是下载 FP16 的 FLux 模型,FP16 的 Clip 模型。果然,换了模型之后,就没有报错了。

下载地址分别为:

# 黑森林官方 HF
HTTPS://huggingface.co/black-forest-labs/FLUX.1-Kontext-dev
# ComfyUI 官方 HF
HTTPS://huggingface.co/comfyanonymous/flux_text_encoders

换了模型之后就可以正常生成图片。但是…. 时间有点久。

必须优化下,借用 Windows 的优化思路,同时考虑到 M 系列对 GGUF 支持比较好。我就在 M4 上也安装了 GGUF 插件,然后加载了 GGUF 模型。

 

Flux kontext GGUF节点安装和使用


所以,今天主要是讲如何使用GGUF模型,包括模型从哪里下载,使用什么节点,如何修改工作流。在昨天的基础上,完成今天的内容并不会太难。

使用GGUF是需要下载单独的GGUF模型。

GGUF(GPT Generative Unified Format)是一种专门用于大语言模型(如Llama、Mistral等)推理的模型文件新格式。

兼容性更好:支持更多模型结构(不仅仅是Llama系列)。

信息更丰富:文件内可以保存模型结构、参数、词表、量化信息等多种元数据,方便后续加载和复用。

体积优化:支持多种量化方式,进一步缩小模型文件体积,适合本地、边缘设备部署。

生态广泛:被Ollama、llama.cpp、lmdeploy、ComfyUI、text-generation-webui等多个AI推理工具支持。

这个模型已经有人做好了 ,只要打开下面这个地址:

https://huggingface.co/bullerwins/FLUX.1-Kontext-dev-GGUF/tree/main

可以看到如下内容:

根据自己的情况来下载模型,显存小的就下载小的模型。显存大点的就下载大一点的模型,从23.8G到4.02GB任君选择。如果不确定,可以参考开头的截图。或者Q2,Q4,Q6,Q8分别下载一个。放到diffusion_models/文件夹下面

  ComfyUI/
├──   models/
│   ├──   diffusion_models/
│   │   └── flux1-dev-kontext_fp8_scaled.safetensors
│   ├──   vae/
│   │   └── ae.safetensor
│   └──   text_encoders/
│       ├── clip_l.safetensors
│       └── t5xxl_fp16.safetensors 或者 t5xxl_fp8_e4m3fn_scaled.safetensors

这样模型部分就完成了。

 

插件安装

有了模型之后,还需要专门插件和节点去加载这个模型。

插件地址:

https://github.com/city96/ComfyUI-GGUF

根据项目主页的介绍单独安装,也可以通过ComfyUI Manger来快速安装。

下面以ComfyUI Manager为例:

打开ComfyUI后右上角有一个Manager按钮,点击一下会弹出一个窗口,然后选择节点管理。
然后搜索ComfyUI-GGUF, 索到了之后点击Install 开始安装。

这里可能会有好几个结果,选名字最匹配,后面Star数量最多那个。插件安装完成之后,会要求重启软件。点击左下角的Restart重启软件。这样插件就安装完成了!

 

工作流修改

重启软件之后,双击工作流空白处,输入GGUF

此时就可以看到很多GGUF相关的节点了,选中Unet Loader来加载FluxKontext的GGUF模型。

如果你是先安装了节点,重启之后才放模型,记得要刷新以下节点定义。

这样节点才能读取到模型!
然后把原先接在Load Diffusion Model上的线换到Unet Loader上。

Unet Loader 里通过unet_name可以切换具体的gguf模型
为了进一步节省空间,可以把DualCLIP加载器也换一下:

换成GGUF版之后,clip_name1换一个叫“t5-v1_1-xxl-encoder-gguf”的文件。这个文件可以通过这个地址下载:

https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf/tree/main

接下来就可以点击运行测试了。

可以看到运行过程中只用了10.5G显存。
我的电脑在不运行Flux的时候,其他软件大概占用了3G显存。所以FLUX这次总共用了7.5GB左右。所以理论上8G挤一挤也是够用的。12G应该能轻松驾驭。

   

ComfyUI 安装Login 插件


登录时会需要密码

 

Kontext 的能力


风格转化

提示词:transform to a Ghibli photo

改变着装

提示词:Change the girl's clothes to a bikini while preserving her facial features, hairstyle, and pose.

改变视角

提示词:Rotate the camera 90 degrees to view directly from side the woman.

移除物体

提示词:Remove the person in the image.

 

老照片修复

提示词:Repair this old photo, keep the appearance of the characters unchanged to the greatest extent, eliminate cracks, enhance clarity, correct colors, restore the original photo, and achieve ultra-high-definition quality.

修改文字

提示词:change the text on the pager sign to "piano"

改变发色

提示词:change the girl hair to pink

老照片修复

提示词:Repair this old photo, keep the appearance of the characters unchanged to the greatest extent, eliminate cracks, enhance clarity, correct colors, restore the original photo, and achieve ultra-high-definition quality.

改变图片文字

Replace the toothbrush in the hand of the main character on the left with a microphone, making the character look like they are singing. Change the text content to "Singing, louder, more noise."

将左侧主角手中的牙刷替换为麦克风,让角色看起来像在唱歌。将文字内容改为"唱歌,更大声,更多噪音。"

生成一组图片

        原图
        保持原始画面风格,清晨的江南小巷,刚被雨水冲刷过。一个纸鸢缠绕在电线杆上,屋檐下挂着一个竹篮,巷尾的茶馆刚刚开门,温暖的灯光从里面洒出。
        保持原始画面风格,一位穿着深绿色旗袍的女子撑着伞走进雨中的小巷,脸上带着淡淡的思索表情。她穿过灰砖和瓦屋顶,雨滴轻轻地拍打着她的伞,路旁的灯笼随风轻轻摇曳。
        保持原始画面风格,镜头拉近到屋檐的一角,那里有一只小鸟,给小鸟一个特写镜头。
        保持原始画面风格,她经过一家裁缝店,橱窗里挂着未完成的布料。一只猫在门旁的踏板上打盹,而店内,一位老人专注地缝制着,每一针都一丝不苟。
        保持原始画面风格,镜头拉近,给左下角睡着的猫一个特写镜头。「镜头拉近这个效果很好用,后续可以在首尾帧或者连续镜头中使用。」
        保持原始画面风格,她在老街尽头的一家邮局前停下,从包里取出一封旧信。背景是潮湿的格子窗和一个斑驳的门牌;信封的边缘有些破损。
        保持原始画面不变,环境变成夜晚。