开发者生态
morning
OUI-1:世界上第一个生成式 UI 模型
2026-09-09
1 阅读
约6分钟阅读
zahlekhan
字号:
DiffusionGemma 在生成 UI 基准上的微调为 71.7%,是其基础值的 5.5 倍。 OUI-1 是一个经过微调的 DiffusionGemma 模型,它使用 openui-lang 编写用户界面。它是 26BA4B 模型,可以在消费级 GPU(RTX 5090,FP8)上运行,权重位于 Gemma 使用条款下的 Hugging Face 上。代理驱动的界面是软件的未来。但要实现这一目标,要面临三个限制。接口必须在一秒内生成。它们必须足够可靠才能用作软件。而且模型必须足够小,才能在消费类硬件上本地运行。通过 AppLess,我们在 Cerebras 上使用 Gemma 4 探索了这种体验。但它依赖于云中的专用硬件。将其移动到设备上意味着解决一个更困难的问题:以显着减少的计算量保持响应能力,而不牺牲生成界面的质量或正确性。 OUI-1 是我们解决该问题的第一步:一个开放权重模型,旨在在消费类硬件上生成可靠的接口。我们的目标是以传统软件的速度在本地生成可靠的、代理驱动的界面。该协议已经就位。 OpenUI Lang 的令牌成本比 JSON 和流低 67%,因此界面在模型完成生成之前就开始出现。更困难的部分是找到具有合适速度和硬件配置文件的模型。这就是我们选择 DiffusionGemma 的原因。自回归模型一次生成一个令牌,并且存在内存带宽瓶颈。 DiffusionGemma 一次写入一个 256 个令牌的块,从噪音开始,并在确定后提交每个令牌。 Google 报告称,单个 H100 上每秒处理超过 1,000 个令牌,RTX 5090 上每秒处理超过 700 个令牌 [1]。 DiffusionGemma 为我们提供了我们想要的速度。但仅靠速度并不能成就软件:接口还必须能够正常工作。这就是我们需要缩小的差距。基准使差距变得具体。 DiffusionGemma 在生成 UI 基准测试中得分为 13.0%。它具有我们想要的速度和硬件配置,但不具备我们想要的可靠性。 OpenUI Lang 解析器使这些失败变得很容易看到。模式错误是错误的枚举、缺少必需的属性或发明的组件。接线错误是使用了但从未定义的名称,或者定义了但从未附加到根的部分。 header = CardHeader("Spending", "last 7 days") Total = Heading("$24,180", "h9") // 架构:h9 不是标题级别图表 = AreaChart(days, [spend], "wavy") // 架构:"wavy" 不是曲线类型 footer = TextContent("今天更新") // 接线:已定义,从不附加到根 root = Card([header, Total, Chart, Summary]) //接线:摘要从未定义 这成为我们的北极星:在不放弃速度的情况下降低这两种错误。培训分两个阶段展开。首先,我们通过监督微调教会 DiffusionGemma 编写 OpenUI Lang。然后我们使用自蒸馏来恢复其速度并提高其可靠性。一旦在一个组件库上运行,我们就在 27 个组件库中重复这一过程。我们从由较大模型编写的约 700 个 OpenUI Lang 示例开始,分布在七个组件库中,并在一台 A100 上运行 LoRA 微调。损失下降了。但基准分数也随之下降。该模型学会了编写更长、更密集的程序,但几乎没有一个程序能被干净地解析。我们将问题缩小到单个组件库:基准测试使用的组件库。分数从 13.0% 上升到 28.8%,但进步是有代价的。一次运行减少了接线错误,同时增加了模式错误;下一个则相反:运行模式错误孤立部分n 78 66 n + 1 112 40 n + 2 51 65 这两种错误类型像跷跷板一样移动。我们远远领先于基本模型,但没有一次运行使两者同时下降。我们假设我们已经达到了 LoRA 的容量限制:它一次可以学习一门学科,稍后进行全面的微调可以解决这种权衡问题。错误发生在哪里 2802 DiffusionGemma 24/184 运行时每 100 条语句有 35.3 个缺陷 1263 监督微调后 53/184 运行时每 100 条语句有 16.4 个缺陷 203 13.8 倍减少 OUI-1 132/184 运行时每 100 条语句有 3.8 个缺陷 模式错误接线错误:未定义的名称和孤立部分然后我们发现了第二个问题:模型变慢了。我们原本期望进行微调以使其更快。一旦熵低于界限,采样器就会提交一个令牌,因此了解该语言的模型应该会更快确定。相反,在同样的 20 个灯光简报上,生成时间从每次输出 1.6 秒增加到 4.3 秒。基本模型速度很快,因为它的输出简短且通用,平均每个语句 22 个标记。经过微调的模型写入真实姓名和值,平均每个语句 32 个标记,并且需要大约两倍的去噪步骤来提交每个标记。我们教它生成更有用的界面,但失去了最初使 DiffusionGemma 有趣的速度。每次输出秒数
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱