当前位置: 首页 > web >正文

Chroma:一个开源的8.9B文生图模型

Chroma 模型讲解

一、模型概述

Chroma 是一个基于 FLUX.1-schnell 的 8.9B 参数模型。它采用了 Apache 2.0 许可证,完全开源,允许任何人使用、修改和在其基础上进行开发,不存在企业限制。该模型目前正在训练中,训练数据集从 20M 样本中精心挑选出 5M 数据,涵盖动漫、兽类、艺术作品和照片等多种类型。Chroma 模型完全未经过审查,重新引入了缺失的人体解剖学概念,旨在成为一个可靠且开放的开源选择。

二、相关链接

  • Hugging Face 调试仓库:链接

  • 实时 AIM 训练日志:链接

  • 训练代码:链接

  • CivitAi 画廊:链接

  • CivitAi 模型:链接

三、模型目标与支持

Chroma 致力于成为一个开源、未经过审查且为社区打造的模型。目前的预训练运行已经使用了 6000+ H100 小时,长期维持成本较高。

四、如何运行模型

(一)ComfyUI

1. 要求
  • Chroma 检查点(在此仓库中选择最新版本)

  • 替代选项:FP8 缩放量化(ComfyUI 使用的格式,可能提高推理速度)

  • 替代选项:GGUF 量化(需要安装 ComfyUI-GGUF 自定义节点)

  • T5 XXL 或 T5 XXL fp8(两者均可)

  • FLUX VAE

  • Chroma_Workflow

2. 安装步骤

(1) 进入 ComfyUI 的 ComfyUI/custom_nodes 文件夹。

(2) 克隆仓库:git clone https://github.com/lodestone-rock/ComfyUI_FluxMod.git

(3) 重启 ComfyUI。

(4) 如果 ComfyUI 已经在运行,刷新浏览器。

(5) 将 T5_xxl 放入 ComfyUI/models/clip 文件夹。

(6) 将 FLUX VAE 放入 ComfyUI/models/vae 文件夹。

(7) 将 Chroma 检查点放入 ComfyUI/models/diffusion_models 文件夹。

(8) 加载 chroma workflow 至 ComfyUI。

(9) 运行 workflow。

(二)diffusers [WIP]

简要技术报告、架构修改等内容正在完善中。

五、架构修改

(一)12B → 8.9B

FLUX 有 3.3B 参数用于编码一个输入向量。通过简单实验发现,将这些池化向量置零后,模型输出几乎不变。因此,用 250M 参数替换这些参数成为可能。这些参数原本用于在去噪过程中告知模型所处的时间步,并接收池化 CLIP 向量的信息。由于这些向量被置零后影响不大,所以用简单的前馈神经网络(FFN)替换后,模型大小成功缩减至 8.9B。

(二)MMDiT Masking

在预训练过程中,BFL 忽略了对 T5 和 MMDiT 令牌的掩蔽。例如,短句 “a cat sat on a mat” 在 T5 和 MMDiT 中表示为 <bos> a cat sat on a mat <pad><pad>...<pad><pad><pad>。模型会过度关注填充令牌,从而淹没实际提示信息。解决方法是掩蔽,使模型不与填充令牌关联。但全部掩蔽填充令牌会导致模型分布外,生成模糊图像。因此,解决方案是仅保留一个填充令牌的掩蔽,其余掩蔽。这样,MMDiT 只需关注 <bos> a cat sat on a mat <pad>

(三)Timestep Distributions

在训练扩散/流模型时,会随机采样时间步,但并非均匀采样。因为经验表明,更多地训练某些时间步可使模型更快收敛。FLUX 使用 “lognorm” 分布,优先训练中间时间步。但这种方法存在缺陷:尾部(高噪声和低噪声区域)训练极为稀疏。如果训练时间很长(例如 1000 步),几乎不可能接触到这些尾部区域。当模型最终接触到这些区域时,损失会剧烈波动,即使使用很大的批量大小也会扰乱训练。解决方法是使用 -x² 函数更频繁地采样和训练尾部时间步。这使得分布在 0 和 1 附近更厚,确保更好的覆盖范围。

(四)Minibatch Optimal Transport [WIP]

FLUX 实际上并不是在 “去噪” 图像,而是在训练一个矢量场,将一个分布(噪声)映射到另一个分布(图像)。一旦矢量场被学习,就可以通过它将噪声转换为图像。通过数学方法选择更好的配对,可以减少 “路径模糊性”,从而加速训练。

六、核心技术汇总

在这里插入图片描述

http://www.xdnf.cn/news/4738.html

相关文章:

  • SSM框架(Spring + Spring MVC + MyBatis)整合配置的详细步骤
  • Arm核的Ubuntu系统上安装Wireshark
  • MySQL如何进行调优
  • AquaCrop 模型新视角:多技术助力农业精准水管理
  • 室内定位误差分布评估到底该用累计误差还是混淆矩阵?
  • 复刻低成本机械臂 SO-ARM100 单关节控制(附代码)
  • STM32+安信可Ai-WB2-12F连接阿里云物联网平台
  • Google AI版图:解析AI Studio, Gemini, NotebookLM与GCP
  • 15 个 Azure DevOps 场景化面试问题及解答
  • WTK6900C-48L:离线语音芯片重构玩具DNA,从“按键操控”到“声控陪伴”的交互跃迁
  • 用uniapp在微信小程序实现画板(电子签名)功能,使用canvas实现功能
  • Android 数据持久化之 文件存储
  • SpringBoot整合PDF导出功能
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】电商数据分析案例-9.1 业务场景与数据准备
  • Wireshark基本使用
  • $SYNT 迈入新时代:治理门户更新 + 通胀提案发布
  • [机器学习介绍与定义]机器学习-part1
  • 删除链表倒数第N个节点
  • 什么是变量提升?(形象的比喻)
  • 【AI入门】CherryStudio入门4:创建知识库,对接思源笔记
  • Spring Boot 实现验证码生成与校验:从零开始构建安全登录系统
  • Linux Shell编程之条件语句
  • Jquery ajax 提交序列化或JSON数据到后台
  • 前端缓存踩坑指南:如何优雅地解决浏览器缓存问题?
  • CKESC STONE 80A-MC 电调的全场景可靠性技术测评
  • 从零打造个人博客静态页面与TodoList应用:前端开发实战指南
  • Maven
  • AI CUBE 使用指南 目标检测格式范例 AI cube 报错数据集不合规范,请清洗数据集
  • 在Hugging Face网站像Github一样克隆repository到本地的具体步骤
  • 【数据结构】——链表OJ(下)