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

news2025/5/12 15:26:14

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.coloradmin.cn/o/2374028.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[强化学习的数学原理—赵世钰老师]学习笔记01-基本概念

[强化学习的数学原理—赵世钰老师]学习笔记01-基本概念 1.1 网格世界的例子1.2 状态和动作1.3 状态转移1.4 策略1.5 奖励1.6 轨迹、回报、回合1.6.1 轨迹和回报1.6.2 回合 1.7 马尔可夫决策过程 本人为强化学习小白&#xff0c;为了在后续科研的过程中能够较好的结合强化学习来…

1、Kafka与消息队列核心原理详解

消息队列&#xff08;Message Queue, MQ&#xff09;作为现代分布式系统的基础组件&#xff0c;极大提升了系统的解耦、异步处理和削峰能力。本文以Kafka为例&#xff0c;系统梳理消息队列的核心原理、架构细节及实际应用。 Kafka 基础架构及术语关系图 术语简要说明 Produce…

免费公共DNS服务器推荐

当自动获取的DNS或本地运营商的DNS出现问题&#xff0c;可能导致软件无法连接服务器。此时&#xff0c;手动修改电脑的DNS设置或许能解决问题。许多用户觉得电脑上网速度慢、游戏卡顿&#xff0c;归咎于DNS问题。确实&#xff0c;我们可以自行设置一个DNS来改善网络体验。不少用…

【统计以空格隔开的字符串数量】2021-11-26

缘由一提标准的大一oj提木-编程语言-CSDN问答 void 统计以空格隔开的字符串数量() {//缘由https://ask.csdn.net/questions/7580109?spm1005.2025.3001.5141int n 0, x 0, g 0, k 1;string s "";cin >> n;getchar();while (n--){getline(cin, s);while …

OSCP备战-kioptrixvm3详细解法

探测IP arp-scan -l 得出目标IP&#xff1a;192.168.155.165 也可以使用 netdiscover -i eth0 -r 192.168.155.0/24 也可以使用 nmap -sN 192.168.155.0/24 --min-rate 1000 修改hosts文件 找到IP后&#xff0c;通过之前读取README.txt了解到&#xff0c;我们需要编辑host…

《从零构建大模型》PDF下载(中文版、英文版)

内容简介 本书是关于如何从零开始构建大模型的指南&#xff0c;由畅销书作家塞巴斯蒂安• 拉施卡撰写&#xff0c;通过清晰的文字、图表和实例&#xff0c;逐步指导读者创建自己的大模型。在本书中&#xff0c;读者将学习如何规划和编写大模型的各个组成部分、为大模型训练准备…

大数据应用开发和项目实战-电商双11美妆数据分析

数据初步了解 &#xff08;head出现&#xff0c;意味着只出现前5行&#xff0c;如果只出现后面几行就是tail&#xff09; info shape describe 数据清洗 重复值处理 这个重复值是否去掉要看实际情况&#xff0c;比如说&#xff1a;昨天卖了5瓶七喜&#xff0c;今天卖了5瓶七…

招行数字金融挑战赛数据分析赛带赛题二

赛题描述&#xff1a;根据提供的脱敏资讯新闻数据&#xff0c;选手需要对提供的训练集进行特征工程&#xff0c;构建资讯分类模型&#xff0c;对与测试集进行准确的新闻分类。 最终得分&#xff1a;0.8120。十二点关榜没看到排名&#xff0c;估算100&#xff1f; 训练集很小&am…

卡尔曼滤波算法(C语言)

此处感谢华南虎和互联网的众多大佬的无偿分享。 入门常识 先简单了解以下概念&#xff1a;叠加性&#xff0c;齐次性。 用大白话讲&#xff0c;叠加性&#xff1a;多个输入对输出有影响。齐次性&#xff1a;输入放大多少倍&#xff0c;输出也跟着放大多少倍 卡尔曼滤波符合这…

ENSP-OSPF综合实验

AR4中通过ospf获取的其他区域路由信息&#xff0c;并且通过路由汇总后简化路由信息 实现全网通&#xff0c;以及单向重发布&#xff0c;以及通过缺省双向访问&#xff0c; 通过stub简化过滤四类五类lsa&#xff0c;简化ospf路由信息 通过nssa简化ospf信息 区域汇总简化R4路由信…

电池单元和电极性能

电芯设计中的挑战 对于电池制造商来说&#xff0c;提高电池能量和功率密度至关重要。在高功率密度和长循环寿命之间取得平衡是电池设计中的关键挑战&#xff0c;通常需要仔细优化材料、电极结构和热管理系统。另一个关键挑战是通过优化重量体积比来降低电池单元的总体成本。 工…

软件设计师-错题笔记-软件工程基础知识

1. 解析&#xff1a; A&#xff1a;体系结构设计是概要设计的重要内容&#xff0c;它关注系统整体的架构&#xff0c;包括系统由哪些子系统组成、子系统之间的关系等 B&#xff1a;数据库设计在概要设计阶段会涉及数据库的逻辑结构设计等内容&#xff0c;如确定数据库的表结…

销售管理系统使用全攻略:从基础配置到数据分析

如果你是一名刚接手公司销售管理系统的销售经理&#xff0c;你会深刻体会到一个好工具的重要性。如果老板突然要查看季度销售数据时&#xff0c;就不用手忙脚乱地翻找各种Excel表格。 今天就来分享我的经验&#xff0c;希望能帮助到同样需要快速上手的朋友。 系统基础配置指南 …

PowerShell 脚本中文乱码处理

问题描述 脚本带中文&#xff0c;执行时命令行窗口会显示出乱码 示例 Write-Host "测试成功&#xff01;"解决方法 问了DeepSeek&#xff0c;让确认是不是 UTF8 无 BOM 格式 事实证明方向对了 但是确认信息有偏差 改成 UTF8 with BOM 使用任意支持修改编码的文本…

前端性能指标及优化策略——从加载、渲染和交互阶段分别解读详解并以Webpack+Vue项目为例进行解读

按照加载阶段、渲染阶段和交互阶段三个维度进行系统性阐述&#xff1a; 在现代 Web 开发中&#xff0c;性能不再是锦上添花&#xff0c;而是决定用户体验与业务成败的关键因素。为了全面监控与优化网页性能&#xff0c;我们可以将性能指标划分为加载阶段、渲染阶段、和交互阶段…

RDD实现单词计数

Scala&#xff08;Spark Shell&#xff09;方法 如果你在 spark-shell&#xff08;Scala 环境&#xff09;中运行&#xff1a; 1. 启动 Spark Shell spark-shell &#xff08;确保 Spark 已安装&#xff0c;PATH 配置正确&#xff09; 2. 执行单词统计 // 1. 读取文件&am…

Java快速上手之实验七

1&#xff0e;编写鼠标事件响应程序MouseEventDemo.java&#xff0c;当鼠标进入和离开窗口时给出相应显示&#xff0c;当按下、弹起时显示当前鼠标的坐标值。 2&#xff0e;编写鼠标事件响应程序MouseMotionEventDemo.java&#xff0c;当鼠标在窗口内移动时显示鼠标的坐标值。 …

可视化图解算法36: 序列化二叉树-I(二叉树序列化与反序列化)

1. 题目 描述 请实现两个函数&#xff0c;分别用来序列化和反序列化二叉树&#xff0c;不对序列化之后的字符串进行约束&#xff0c;但要求能够根据序列化之后的字符串重新构造出一棵与原二叉树相同的树。 二叉树的序列化(Serialize)是指&#xff1a;把一棵二叉树按照某种遍…

Vivado FPGA 开发 | 创建工程 / 仿真 / 烧录

注&#xff1a;本文为 “Vivado FPGA 开发 | 创建工程 / 仿真 / 烧录” 相关文章合辑。 略作重排&#xff0c;未整理去重。 如有内容异常&#xff0c;请看原文。 Vivado 开发流程&#xff08;手把手教学实例&#xff09;&#xff08;FPGA&#xff09; 不完美先生 于 2018-04-…

Javascript:数组和函数

数组 创建数组 使用new创建 let arrnew array(数组大小); 直接赋值创建 let Arr2[];let Arr3[1,A,"HELLLO"]; 这里JS的数组里面的元素属性可以各不相同 演示代码 <script>let Arr1new Array(5);let Arr2[];let Arr3[1,A,"HELLLO"];console.…