用 2.1 万美元训练一个文生图模型
2026 年 11 月 4 日,Linum 公布了 PJIT-21K 的训练账本,21,038 美元,权重与代码以 Apache 2.0 开放。这个数字可以复算,乘法和加总都对得上。但它只覆盖训练成本里最窄的一格,也就是 GPU 租金,既不包含数据与标注,也没有界定失败实验的边界。把这份账本拆开,能看清“便宜”里哪一部分是真省下来的,哪一部分只是没有写进这张表。
两万美元买到的是一份只有算力一格的账本
这份 21,038 美元的账本只覆盖算力租金一格,数据、人力、失败实验与评估都没有披露。它也不是一份性能声明,而是一个两人实验室的自报账本,模型卡原文写着 research checkpoint,not a production model,博客自述这是通往更大视频模型途中的 stepping stone。账本只有三行,边界非常清楚。
| 行 | 金额 | 算力口径 | 覆盖内容 |
|---|---|---|---|
| Pretraining | $20,348 | 8,139 H100-hours × $2.50 | 512² 阶段 610.27M 样本,1024² 阶段 49.97M 样本 |
| Post-training | $690 | 276 H100-hours × $2.50 | FDFO 变体(一种奖励后训练方法)加人工评审 |
| Total | $21,038 | 8,415 H100-hours | 64 张 H100,含 restarts |
逐行验算没有发现破绽。8,139 乘 2.50 等于 20,347.5,四舍五入到 20,348。276 乘 2.50 正好 690。两行相加是 21,038,两个小时数相加是 8,415。按 64 张卡满载换算,8,415 除以 64 约等于 131.5 小时,也就是 5.5 天。这份账唯一能自证的地方就是算术自洽,它不能证明这些小时真的被这样花掉。Linum
三行之下有两个隐含前提。第一是“64 张 H100,含 restarts”,但不清楚被否掉的消融和探索性 run 是否也在里面。第二是“每小时 2.50 美元”,这是作者自报的假定单价,全页没有云厂商、实例规格或合同类型,因此这个价格无法核验,也不该被归到任何一家云商头上。后训练那 690 美元只覆盖 GPU 算力,人工评审的人力成本没有计入。
把 $21,038 放回成本分项的坐标系,账本的空白立刻显现。Epoch AI 把成本核算分成三种约定,分别是只摊销硬件与能耗、按云租赁价计、以及包含研发人力与支撑实验的开发总成本。同一批前沿模型,云租赁口径的绝对值平均约为摊销口径的两倍,因为它系统性高估了自有硬件训练者。前沿模型的分项占比是硬件 47% 到 67%,研发人力 29% 到 49%,能耗只占 2% 到 6%。这组比例来自 GPT-3、GPT-4 一类前沿模型,不能套到一个 2B 参数的小团队身上,但它提示了一件事,算力从来只是成本的一项。Epoch AI
| 分项 | 在这份账本里的状态 |
|---|---|
| 算力租金 | 已披露,8,415 H100-hours × $2.50 |
| 数据获取与标注 | 完全未披露 |
| 失败实验与沉没成本 | 未界定,restarts 边界不明 |
| 评估与人工审核 | 未披露,$690 内人工评审的规模未知 |
| 研发人力 | 完全未披露 |
参数量也需要按口径读。官方发布物给的是 2.18B,对应配置里的 2,184,091,606,fp32 权重 8.7 GB,这是采样时的数字;模型卡的警告段与架构图标注则取整写成 2B。训练时还要加上挂在第 10、16 块的 readout 头与第 5 块之后的 PixelREPA 适配器,后者约 241M 参数、前者约 2.8M,博客称训练期约 2.42B。这些数字不是同一个东西,官方也明说辅助头不在发布权重里,采样时全部丢弃。pjit-21k Linum
这笔钱买到的模型结构如下。文本走冻结的 Qwen3.5-4B,图像走 32×32 的 patchify,两路拼成单流序列后进 22 块主干,辅助头挂在中间层,采样时全部丢掉。

图注:P-JiT 的结构总览。冻结的文本编码器与 32×32 patchify 后的图像两路拼成单流序列,512² 时共 512 tokens,1024² 时共 1,280 tokens,再进入 22 块主干;第 5 块引出 PixelREPA,第 10、16 块引出 readout 头,第 22 块出输出。图下标注训练期辅助头约 241M、readout 头 2.8M,且采样时全部丢弃。图中不含任何成本或吞吐数字。Linum
还有一处口径摇摆。技术博客标题取整写 $21K,Hacker News 标题写约 $20K,正文账本是 $21,038。Hacker News 标题的约 $20K 与正文相差 1,038 美元,发布方从未解释。这正好说明自报数字在传播中会自己漂移,做账时只能以正文的 $21,038 为准。HN
数量级站得住,但两条复核路径都只能证明自洽
两条独立复核路径都只能把这个数量级钉在自洽这一档,不能证明账本真实性。一条从 GPU-hours 反推吞吐,一条从参数量与 token 数估算浮点运算量,任何一条改掉假设,结论都可能翻转。
路径 A 用官方页面的分段数字。8,139 小时里,512² 阶段占 6,741,1024² 阶段占 1,398。512² 阶段 610.27M 样本除以 6,741,得到每 H100-hour 约 9.05 万样本;1024² 阶段 49.97M 除以 1,398,得到约 3.57 万样本。后者每个样本的成本约为前者的 2.53 倍,而 1024² 的 token 数 1,280 正好是 512² 的 512 的 2.5 倍。成本随 token 数等比上升,说明这两个分段与文中所给的分辨率、样本数彼此不矛盾。局限也在这里,分段数字与总账来自同一个发布方,不是独立来源。
路径 B 是 6ND 估算,也就是用六倍参数量乘 token 数来粗算训练浮点运算量。按训练期约 2.42B 参数、512² 阶段每图 512 tokens、1024² 阶段每图 1,280 tokens 计算,总 token 数约为 3.77e11,训练浮点运算量约 5.5e21。用 H100 的 9.89e14 峰值算力乘 0.15 到 0.35 的 MFU(模型浮点利用率),再乘 3,600 秒,得到约 4,400 到 10,300 H100-hours。报出的 8,139 落在这个区间里。这里的 token 定义容易混淆,它是像素 patch 加上文本 token 的序列长度,不是语言模型词表里的 token 数。这个估算忽略了注意力与通信开销,MFU 区间又很宽,所以它只能说明两者不矛盾,不能当作已核验的结论。
| 假设 | 复核用的取值 | 改动后的后果 |
|---|---|---|
| 像素空间 token 定义 | 512² 为 512 tokens,1024² 为 1,280 tokens | 改按像素数或 patch 数计,FLOPs 会成倍变化 |
| MFU | 0.15 到 0.35 | 取 0.1 约需 1.5 万小时,取 0.5 约需 3 千小时,结论直接翻转 |
| 单价 | $2.50 / H100-hour | 按 Epoch 的 1.50 到 3.00 区间,总额在 1.26 万到 2.52 万美元之间 |
账本内部留下了一条时间线,前 80M 样本集中在高噪声,80M 处放宽后出现 0.157 的 live loss 尖峰,550M 进入学习率衰减,610M 切到 1024²。最后一段 loss 更高不等于模型更差,因为 1024² 阶段把噪声尺度从 2 提到 4,并换了一套固定评测图像集,两段不能直接比较。

图注:上下两栏训练进度图。上栏是固定评测集上的 validation loss,标出了 80M 处放宽噪声调度后的 0.157 尖峰、550M 处的学习率衰减、610M 处切换到 1024²,以及 1024² 段末端的 0.1270;下栏是同步的学习率。纵轴是 validation loss(固定评测集上的 loss),不是质量分数,两段用的评测集与噪声尺度不同。Linum
这份账也不能外推成“他们训练过的一切都这么便宜”。上一期的 138M 样本 run 用 32 张 H100,博客给足了架构、消融与评测,却没有披露任何 GPU-hours 或美元成本。P-JiT
最大的一笔钱落在数据侧,而它根本不在账本里
三行账之所以能这么小,前提是一大批工作在数据侧已经做完并且没有被计价。同一个实验室在自己的数据博客里把这条流水线摊开过,规模比 GPU 账本大得多。
图像侧从约 150 亿张降到约 2.5 亿张,留存 1.7%,约 98% 被丢掉。第一刀长宽比与最小边砍掉一半;在内容相关的过滤里,PaddleOCR 去文字密集图从 50 亿降到 33 亿,SFT 分类器从 33 亿降到 9.5 亿,是最大的两级。后面还有感知哈希去重与美学分档。

图注:图像过滤漏斗的七个步骤,柱形深色段是保留、浅色段是丢弃,右侧标出每级保留量与相对候选池的比例,从约 150 亿一路降到约 250M。这是视频模型路线的披露,原文没有说明它与 PJIT-21K 的语料同源,比例不能当作后者的语料事实,图中数值是带约号的量级值。DataFiltering
过滤本身有真实支出,而且这笔支出不在 GPU 账本上。2024 年那一代用 EAST 在 CPU 集群上跑,作者的原话是花了数周。2025 年换成 PaddleOCR 加 TensorRT,部署在数千张 A10G 与 L4 上,跑完数百亿样本约 36 小时,花费不到 1 万美元。作者对前一代的自评是方向错了,不该找最便宜的过滤器,而该用负担得起的最好的过滤器。他把数据过滤称为除 scaling 之外唯一能拉动的最大杠杆。除这一步之外,其余各级的算力、存储与人力都没有美元披露。DataFiltering

图注:过滤技术栈的三代演进,从 2024 年 CPU 上的传统 CV,到 2025 年初 GPU 上微调的 LLM,再到 2025 年末的强化学习,每段标出了硬件与该代工具清单。图里没有成本数字,不能把三代时间点当作 PJIT-21K 训练时实际使用的版本。DataFiltering
标注是另一项隐形人力。流程是定义类别、标注约两千条样本、切分训练与验证、重复数轮、微调 LLM、在训练集上评估、再精修类别重标。作者自陈最大的问题是自一致性,标几百条之后标准就会不自觉放松。博客转述的 CameraBench 数据说,专家与标准答案仍有约 24% 的不一致,反复试验后才收敛到 96%。按作者的经验,两三千条样本就够训好一个过滤器。
这些披露有明确边界。它讲的是视频模型路线,原文从未说这套图像漏斗就是 PJIT-21K 的语料,因此漏斗比例只能当作同一实验室的数据哲学,不能当作这个模型的语料事实。官方“不能写字、不能做海报”的说明是设计取舍,训练数据里主动滤掉了渲染文字的图像。文字密集数据被过滤与模型不会写字之间的因果链,属于跨篇推断,作者自己也承认 OCR 会漏检。
外部读者最先追问的也正是数据。帖子下有 11 条评论,问题集中在训练数据来源与展示样例是否经过挑选,发帖账号一条回复都没有。可以核对的是,官方同时公开了 249 张样例与 13 张带说明的失败图,所以“只挑成功样例”的说法缺少依据,但样例的筛选规则确实没有说明。语料规模、caption 重写流程与标注人力,在账本与技术博客里都是空白。上一期提到的 dense caption 中位数 82 词,属于那次 138M 样本 run,不能安到这次的 660M 样本训练上。HN
便宜是真省出来的:样本数降下来,账单才同比例降下来
这份账里最硬的一笔省钱,是达到同等收敛所需样本数的下降。它能核验到一张图,能归因到具体机制,也因此让旁边那堆没有被计价的失败实验更值得追问。
前提来自像素空间路线。JiT 论文论证了预测干净数据与预测加噪量不是同一件事,图像位于高维像素空间的低维流形上,噪声在流形之外,因此有限容量的网络也能预测干净数据,只要它把噪声滤掉。实验很直接,ImageNet 256 条件生成跑 200 epoch,x-prediction 的 FID 是 10.14,ε-prediction 是 379.21,v-prediction 是 107.55。论文还把 patch 尺寸随分辨率放大,使各分辨率的 token 数恒为 256,Gflops 只从 25 涨到 26 再到 30。token 数不随分辨率平方增长,注意力开销就不会爆掉,这就是扔掉 VAE 之后能省算力的机制来源。JiT
P-JiT 在这条路线上做了三处工程改造。图像先被切成 32×32 的小块,线性层把 3,072 维压到 1,024 的瓶颈再升到 2,944,512² 时图像 256 tokens 加文本 256 tokens 共 512 tokens,1024² 时图像 1,024 tokens 加文本仍是 1,280 tokens。主干是 22 个单流 DiT 块,第 10、16 块各挂一个 readout 头,分别预测四分之一与二分之一分辨率的干净图像,第 22 块出全分辨率输出,第 5 块之后另挂 PixelREPA 支路。

图注:P-JiT 的完整结构框图。冻结的文本编码器与 patchify 后的图像两路拼接成单流序列,进入 22 块主干;紫色分支标出三个 readout 挂点在第 10、16、22 块,以及第 5 块之后的 PixelREPA 对齐支路。图中的层数与维度不能用来反推 FLOPs 或账单,也不构成第三方验证。P-JiT
多分辨率读出的收益有一张来自上一期发布线的消融表。所有对照组同样训 22 块主干、同一配方、75M 样本,报告的是最终块预测 512² 图像的速度空间均方误差。三个读出把 loss 从 0.1037 降到 0.0934,降幅 10.0%。全分辨率三读出是 0.0948,两个读出是 0.0960,把低分辨率读出降权反而更差,为 0.0983。倒金字塔分辨率优于全分辨率,等权优于降权,两条结论都与直觉相反。在同一配方下把 loss 压低 10%,等价于达到同样 loss 所需的样本数减少,这才落到账单上。这些消融各自的算力成本没有披露。
| 变体 | 读出位置 | 相对基线 | loss |
|---|---|---|---|
| 1-Readout | 512² @ 第 22 块 | 基线 | 0.1037 |
| 3-Readout | 128² @ 10、256² @ 16、512² @ 22 | −10.0% | 0.0934 |
| 3-Readout 全分辨率 | 512² @ 10、16、22 | −8.5% | 0.0948 |
| 2-Readout | 128² @ 10、512² @ 22 | −7.4% | 0.0960 |
| 3-Readout 降权 | 权重 0.25 / 0.5 / 1.0 | −5.1% | 0.0983 |
PixelREPA 解决的是另一个问题。把 latent 空间里常用的 REPA 表征对齐直接搬到像素空间,训练早期确实更快,但越训越糟。200 epoch 时 vanilla JiT 的 FID 是 4.37,直接加 REPA 是 5.14,差了 17.6%。论文的解释是信息不对称,语义目标被强压缩后,大量像素上不同的图像会落到特征空间的相近区域,直接回归这种目标就成了捷径,损害集中在特征紧密聚集的那批图像上。修法是两层 Transformer adapter 加部分 token 掩码,掩码比例 0.2 最优,FID 为 4.00。这条支路只在训练期存在,推理不付代价。PixelREPA
![]()
图注:PixelREPA 的对齐支路与主去噪支路是分开的。左侧冻结语义编码器提供目标,中部掩码适配器只在部分 token 上做对齐,右侧主去噪通路照常运行。掩码只在训练期生效,因此推理零开销;图里不含损失权重、掩码比例或挂载块号。PixelREPA
边界也要一起写明。这篇论文用 DINOv2,挂载位置也按它自己的规则定,与 P-JiT 的 DINOv3-L 和第 5 块之后不是一回事。它只能为掩码比例与两层 adapter 提供机制解释,P-JiT 的具体选型只能由 Linum 自己的架构文档支撑。
11.3 倍是收敛效率的唯一一手图证,四个口径必须同屏读:30K 生成对 30K 真实图的分布匹配指标,25.4 是量表下界,Linum v2 曲线从 117M 起且只有 4 个 checkpoint,点间为 log-log 插值。它的准确含义是 P-JiT 在约 50M 样本处越过 Linum v2 用 567M 样本达到的终值 79.9;这是样本数效率,不是质量倍数,P-JiT 终值 27.9 离下界只差 2.5。

图注:对数纵轴的 FD-DINOv2 收敛曲线,越低越好。Linum v2 止于 567M 样本处的 79.9,P-JiT 止于 138M 样本处的 27.9,虚线是 real-vs-real 下界 25.4,横跨两者的标注写着 11.3 倍更少样本。每个点用 30K 张 256² 生成图对 30K 张域内真实图计算,Linum v2 曲线从 117M 样本才起,点间为 log-log 插值。这是 138M 样本的 release checkpoint,不是 21K 这次发布的模型。纵轴是分布匹配指标而非美学质量,不能读成质量领先三倍。P-JiT
配方本身也在省样本。前 80M 样本的噪声调度集中在高噪声,均值 t 为 0.67,t 小于 0.1 的占比不到 0.05%。80M 之后放宽到更宽的正态分布,均值降到 0.46,t 小于 0.1 的占比升到 2.3%,t 约 0.10 附近的训练时间步占比提高了约 107 倍。先在高噪声处学结构,再放宽学细节,这是把同样的样本用得更充分。

图注:两个阶段的训练时间步密度对比。黑色虚线是集中的高噪声调度,紫色实线是放宽后的调度,更多概率质量移到接近干净图像的一端。右上角对比表给出均值 t 从 0.67 到 0.46,t 小于 0.1 的占比从不足 0.05% 到 2.3%。图里不标切换时刻,80M 这个数字来自正文。Linum
省下来的钱旁边,是一长串没有计价的失败实验。DDT 主张编码器分四倍参数,作者实测 4:1 比 1:1 更差。瓶颈 256 与 1024 的结果几乎一样,最后保留了更宽的 1024。整套 Gated Residual 改造里,把 timestep 塞进写侧 gate 的版本训练慢 80%,被直接放弃;剩下两个组合打成平手。1、2、4 个 stem 的多 patchification 尝试全部不及基线。作者的原话是回到了起点。这些实验的算力成本一项都没有披露,而账本里 restarts 的边界又没有界定,所以沉没成本是否被计入 8,139 小时,无法判定。P-JiT
decent 目前无法核验:没有一个分数出自第三方
发布方说这是一个 decent 的模型,但截至 2026 年 11 月 5 日,没有任何独立第三方评测。能核验的只有官方自述的失败模式、作者自评的分数口径,以及一份没有评测过这个模型的第三方方法学。
官方承认的边界很清楚。2B 的 DiT 加 4B 文本编码器,在全身像、多实体场景、多人交互与世界知识上都会吃力,偶尔也能生成对。模型不能写字、不能做海报,因为渲染文字的图像在训练数据里被主动滤掉了。这是产品取舍,不是纯能力不足。
上一期发布的 P-JiT 有一组 prompt-following 分数,它的口径很容易被忽略。全部分数是在用 Claude Opus 5.5 改写全部 2,418 条 benchmark prompt 之后得到的,judge 仍按原始 prompt 打分,但生成器看到的是改写后的版本。上一代 Linum v2 从改写中受益最多,GenEval 从 0.561 涨到 0.855;P-JiT 从 0.612 涨到 0.817。两者的差距几乎全部来自 counting 的 0.80 对 0.56 与 colors 的 0.95 对 0.90。三个模型的原生分辨率还不同,所以表内排序不能当作能力排序,更不能与外部模型横比。这些分数属于 138M 样本的 release checkpoint,不能安到 21K 这次发布上。
第三方的部分只能借方法,不能借结论。一篇受控评测用同一张初始噪声、只改数量词,再人工数了 3,088 张图,每张 0.10 美元。结论是 2 到 8 个物体时所有模型都跟得住,跟随率 80% 到 99%;超过十个之后开始分化,同噪声排序从 0.47 到 0.78 不等。更关键的是它证明评测口径可以自相矛盾。一个不跟随的模型,完全数对的 exact 率仍有 4%,而永远画 16 个的常数猜测,相对误差 0.27,反而优于更松的参考估计器 0.38。
| 口径 | 读数 | 意味着什么 |
|---|---|---|
| 同噪声排序 | 超过十个后 0.47 到 0.78 | 0.5 表示无方向,越接近 0.8 跟随越松但仍有方向 |
| exact 率 | 不跟随的模型仍有 4% | 低 exact 率不能直接证明模型忽略请求 |
| 常数猜测 | 永远画 16 个,相对误差 0.27 | 分数可以奖励一个完全不看 prompt 的策略 |
| 检测器计数 | 密集人群系统性少计,方向可翻转 | 换一个计数器,结论可能反过来 |
这篇论文没有评测 PJIT-21K,全文检索不到这个模型,所以它的计数结论不能迁移。它提供的是一条把 decent 落成可核验命题的路径,而不是这个模型的质量判决。计数研究
社区能补的也只有定性观察。一位评论者提到过度平滑与诡异反光,这两项官方失败清单没有单列;肢体畸变则与官方的 13 张失败图高度重合。另一位问样例筛选,但官方既公开了 249 张样例,也公开了 13 张失败图,这个问题至今没有答案,因为作者没有回应。
| 失败模式 | 来源 |
|---|---|
| 全身像、多实体、多人交互、世界知识 | 官方 Limitations,并配 13 张失败图 |
| 不能写字、不能做海报 | 官方说明,原因是文字类训练数据被过滤 |
| 过度平滑、诡异反光 | 单一评论者的定性观察,官方未单列 |
| 样例是否经过挑选 | 单一评论者的提问,作者零回应 |
放进坐标系:差距里有一部分是规模,有一部分只是口径
两万美元与 62.8 万美元之间的差距,一部分是模型规模,一部分只是口径。把 $21,038 放进同类自报成本会看到三级台阶,台阶之间硬件代际、单价假设与覆盖阶段全都不同,机械相除得到的倍数只能当作量级感。Z-Image 报的是 314K H800 GPU-hours、约 62.8 万美元,单价假设是每小时 2 美元的零售租赁价,表 1 拆成低分辨率预训练 147.5K、Omni 预训练 142.5K、后训练 24K 三段。这条流水线同时产出基础模型、Turbo 与 Edit,后训练那一格同时承载 SFT、少步蒸馏与 RLHF,Turbo 没有独立成本行。Z-Image

图注:Z-Image 与 Z-Image-Edit 的训练流水线。低分辨率预训练与 Omni 预训练构成上游初始化,之后分成两条后训练支路,分别产出两个模型,图中另有 Prompt Enhancer 与编辑模型的继续训练两条附属流程。图里没有 GPU 小时或美元数字,不能说 Edit 的继续训练全额落在 314K 之内。Z-Image
第二级是 SeFi-Image,最大 5B 模型自报 125K A800 GPU-hours,没有美元换算,也没说明是否包含数据重标注、VAE 训练、RL 后训练与消融。作者称这约为 Z-Image 的 10% 到 20%,但用它自己引用的 314K 直接相除,125 除以 314 约等于 40%,口径没有解释。它的自评也并非处处领先,DPG-Bench 是 87.27,低于 Qwen-Image 的 88.32 与 Z-Image 的 88.14;OneIG-ZH 是 0.5379,低于 0.5480。SeFi

图注:SeFi-Image 的框架。单个 DiT 同时接收带噪的复合潜变量、双 timestep 嵌入与文本嵌入,输出语义流与纹理流两路速度。这是架构改造的示意,图里没有参数量、步数或算力数字,也不能读成两个模型串行。SeFi
| 模型 | 自报算力 | 自报美元 | 单价假设 | 覆盖范围 |
|---|---|---|---|---|
| Z-Image 6.15B | 314K H800 | $628K | $2/H800-hour 零售价 | 整条流水线,含基础模型与 Turbo;Edit 由同一流水线派生,其继续训练是否计入未说明 |
| SeFi 5B | 125K A800 | 未换算 | 未披露 | 只有 5B 一档,边界不明 |
| PJIT-21K 2.18B | 8,415 H100 | $21,038 | $2.50/H100-hour | 预训练加后训练 |
这三家都是厂商自报,没有一个经过第三方核验。把 314K 与 8,415 相除约 37 倍,把 62.8 万与 21,038 相除约 30 倍,这个比值只能当量级感,不能读成真实成本差 30 倍,因为单价假设、硬件代际、模型规模与覆盖阶段全都不同。
“必须烧千万美元”的叙事,问题不在数字全假,而在把不可比的数字放进了同一张表。Epoch 的成本表里,图像类的 DALL-E 是 10 万美元、Parti 是 40 万美元、Amazon Titan 是 800 万美元,前沿 LLM 一侧 GPT-4 是 4,000 万美元、Grok 4 是 5 亿美元。每条记录带 3 倍、10 倍、30 倍的容差分级,34 行图像生成条目里只有 1 行填了成本值,2024 年之后的现代文生图模型没有成本数字。跨代际、跨规模、跨口径的数字放在一起,只能给出量级印象。
许可也需要读清楚。Apache 2.0 覆盖权重与代码,可以商用与再分发。它不覆盖数据来源、标注流程与评测协议,第三方文本编码器 Qwen3.5-4B 不在授权范围内。仓库只含推理代码,训练代码不在其中,所以按这份发布物能复现的是推理,不是训练。推理门槛写在模型卡上,8.7 GB 的 fp32 权重加 8 GB 的 bf16 文本编码器,再加 activations。
$690 那一行也不是零头,它有具体的方法语义。FDFO 把整段采样视为单个动作,从同一初始噪声生成一对轨迹,用图像差乘奖励差构造一个确定指向高奖励图像的更新方向,再均匀施加到整条轨迹的每一步。它之所以要绕开逐步 MDP,是因为扩散与流模型拿不到可用的 likelihood,PPO 式裁剪只能用代理比值。但要强调,这篇论文优化的是 Stable Diffusion 3.5 Medium 加 LoRA,指标不能迁移,它也没有披露 FDFO 自身的算力,因此指标无法与 $690 对账。FDFO

图注:两种后训练更新方向的对照。左侧 Flow-GRPO 按组内相对优势逐点更新,红色更新箭头在各步之间方向杂乱;右侧 FDFO 用同一初始噪声的一对轨迹,更新方向沿整条轨迹一致指向奖励更高的一侧。图中不含任何分数、样本数或成本。FDFO
照这份账本走一遍,缺的格子要自己补:数据与标注要自建,算力单价要自己谈,训练配方要自己重做,后训练与人工评审要自己承担,评测要自己做,人力与许可也要自己确认。
| 复现项 | 官方状态 |
|---|---|
| 数据 | 未披露语料来源与规模 |
| 算力 | 给了小时数与假定单价,未给云商与合同 |
| 训练 | 配方与两阶段配置已披露,训练代码不在仓库 |
| 后训练 | 只说是 FDFO 变体,细节与人工评审规模未披露 |
| 评测 | 无 benchmark 分数,无第三方评测 |
| 人力 | 完全未披露 |
| 许可 | 权重与代码 Apache 2.0,数据与文本编码器不含在内 |
两万美元买到的是一次可复算的量级演示,加一套可商用权重。买不到的是数据、人力、试错与评测,这几格不在账本里,也不在任何一份附带文档里。
参考文献
- Training a Text-to-Image Model for $21K(Linum Field Notes, Issue 04) — https://www.linum.ai/field-notes/pjit-21k
- Linum-AI/pjit-21k 模型卡与代码仓库 — https://huggingface.co/Linum-AI/pjit-21k
- Pyramid-JiT: Low-Res Drafts, High-Res Images(Linum Field Notes, Issue 03) — https://www.linum.ai/field-notes/pyramid-jit
- Data Filtering for Generative Video Pre-training(Linum Field Notes, Issue 01) — https://www.linum.ai/field-notes/data-filtering-gen-video
- Show HN: A decent text-to-image model trained for ~$20K — https://news.ycombinator.com/item?id=50368208
- Back to Basics: Let Denoising Generative Models Denoise(JiT) — arXiv:2511.13720
- Representation Alignment for Just Image Transformers is not Easier than You Think(PixelREPA) — arXiv:2603.14366
- Finite Difference Flow Optimization for RL Post-Training of Text-to-Image Models(FDFO) — arXiv:2603.12893
- Z-Image: An Efficient Image Generation Foundation Model with Single-Stream Diffusion Transformer — arXiv:2511.22699
- SeFi-Image: A Text-to-Image Foundation Model with Semantic-First Diffusion — arXiv:2606.22568
- Same Layout, Different Count: What Number Words Do Past Ten in Text-to-Image Models — arXiv:2611.06840
- Final training runs account for a minority of R&D compute spending(Epoch AI) — https://epoch.ai/gradient-updates/r-and-d-vs-training-compute