antirez/iris.c

Flux 2 image generation model pure C inference

解决的问题

Iris 解决了在没有庞大 Python 机器学习栈的情况下运行大型图像生成模型(如 FLUX 和 Z-Image)的问题。它提供了一个纯 C 实现,通过使用内存映射权重,可以在内存受限的系统(甚至是 8GB RAM)上工作,并且可以通过 Apple、NVIDIA 和 AMD 硬件上的 GPU 后端进行加速。

工作原理

Iris 是一个完全用 C 编写的推理管道,除了 C 标准库外没有外部依赖。它从 HuggingFace 加载开放权重扩散 Transformer 模型(FLUX.2 Klein、FLUX.3 Image Klein、Z-Image-Turbo),并直接在 GPU 或 CPU 上执行文本到图像的生成。该管道包含内置的 Qwen3 文本编码器,因此不需要单独的嵌入步骤。它支持蒸馏(快速、步骤少)和基础(较慢、质量更高)两种变体,并提供文本到图像、图像到图像和多参考生成功能。

适用人群

Iris 适用于希望在 Python 机器学习框架过于沉重或不可用的硬件上从文本生成图像的开发人员、研究人员和爱好者。它特别适合 Apple Silicon Mac(具有 MPS 加速)、NVIDIA 或 AMD GPU,甚至是仅 CPU 的 Linux 系统。终端显示和交互模式使其非常适合命令行工作。

亮点

  • 零依赖:纯 C 实现,独立运行。
  • GPU 加速:Metal (Apple)、CUDA (NVIDIA)、ROCm (AMD),以及可选的 CPU BLAS。
  • 快速:在 Apple Silicon MPS 上,其性能在多种分辨率下优于 PyTorch 的优化 MPS 管道。
  • 内存高效:内存映射权重将峰值内存从约 16GB 降低到约 4-5GB,使 8GB RAM 系统成为可能。
  • 支持 FLUX.2 Klein (4B/9B)、FLUX.3 Image Klein 和 Z-Image-Turbo 模型。
  • 文本到图像、图像到图像和多参考(最多 16 个)生成。
  • 交互式 CLI 模式,具有大小、种子、步骤等命令。
  • 通过 Kitty 协议或 iTerm2 内联图像进行终端图像显示。
  • PNG 元数据存储种子和模型信息以实现可重复性。
  • 测试确保输出与参考向量的一致性。

相关

  • 项目
  • 项目
  • 项目
  • 项目