提交智能体收藏0
技术动态

用 TRL 与 OpenEnv 训练代码模型画水彩:一次开源复现实验

Hugging Face 博客作者复现“让语言模型写 p5.brush JavaScript 画水彩”的项目,公开了参考数据集、RL 环境、训练脚本与模型。核心问题是用审美偏好而非可验证答案做强化学习:奖励由编译门控、长度、成对视觉评判与 HPSv3 美学打分组成,作者训练三种权重组合并比较。

项目背景

2026 年 8 月,Surya Narreddi 发布了语言模型用 p5.brush 编写 JavaScript 绘制水彩的视频;原始博客只讲早期“近景花卉”阶段且未开放产物。本文作者从工程角度复现,并开源全部部件:参考图池数据集、RL 环境、训练脚本与训练后的模型,整条流水线在 Hugging Face 上运行(Jobs 训练、Spaces 承载环境与打分模型、Inference Providers 调用评判模型、Hub 汇总产物)。

方法要点

  • 输出是代码:模型生成约 150 行 JavaScript,可读可改可重跑,每次笔触决策可见。
  • 风格靠限制:p5.brush 提供 47 个方法,提示词只允许 10 个(填充类方法),其余线条、排线、自定义笔刷会破坏水彩观感。作者在提示词中额外加入“每个花瓣画两三遍,先大笔再小笔更不透明”,称输出明显更有色彩。
  • 奖励设计:编译并真正上色且不作弊的门控 0.05、长度 0.05、成对评判 0.60、HPSv3 0.30。成对评判用 Qwen3-VL-30B-A3B-Instruct 将候选画作与从图池随机抽取的四张参考对比,双向呈现后取胜率;HPSv3 为开放 7B 偏好模型,对渲染图给出人类偏好分。
  • 图池即奖励:178 张模型生成的画作由作者手工分为“喜欢”和“还行”两档,成对评判抽参考时两档各半,让弱策略仍有可胜信号。作者指出图池无人工作品是真实局限,因为 p5.brush 可获取代码的人类作品太少。

三组实验

只改变两个模型评判的权重:judge-led(0.60/0.30,跑 110 步)、hps-led(0.30/0.60,跑 110 步)、hps-only(0/0.90,跑 60 步)。首次成功训练依赖对 TRL GRPOTrainer 的四项修改:学习率 2e-5 调到 5e-5、调度器改为 constant_with_warmup、scale_rewards 设为 none、target_modules 改为 all-linear(MoE 模型的路由专家仍是冻结的融合张量)。

平均组奖励前三分之一到后三分之一的变化:hps-only 0.58→0.71,judge-led 0.45→0.72,hps-led 0.57→0.82。作者观察到学习主要体现在分布中部:差画(低于 0.3)变少,最好画作变化不大;加入成对评判后好画继续提升,颜料覆盖率翻倍。hps-only 若所有 rollout 都达到其好画水平,均值上限约为 0.771。

作者自述的局限与发现

  • 同一轮内画作趋于相似,GRPO 会朝图池中单一主题收敛;多样性取决于图池多样性。
  • 模型不遵守“15 到 30 个填充形状”的提示,实际均值 7 到 9,且该数量与奖励几乎不相关,说明策略不为未被奖励的指令付费。
  • 基础设施故障(渲染超时、打分器无响应)曾被当作 0 分进入奖励,约占全部 rollout 的 1.5%,最差一次达 5.2%;修复后这类路径返回 None 并从组中剔除。作者还修复了 OpenEnv 客户端复用已关闭 websocket 的 bug 并提交上游。
  • 每步 8 个 rollout,耗时 15 到 18 分钟,其中 70% 到 80% 用于渲染;单次渲染 69 到 96 秒,截止 90 秒。资源上训练用 1 张 H200,60 步约 18 小时、110 步约 34 小时;HPSv3 占用一个 a100-large Space 且整轮需在线。

作者以观众视角认为 judge-led 最多样、最有趣;这是个人判断,非评测结论。

来源与核对说明

  1. Hugging Face 官方博客 ↗https://huggingface.co/blog/train-to-paint-with-code

本文经 AI 整理及独立自动校对,未做运行验证;自动校对仍可能遗漏问题,请以原始资料为准。

这篇内容对你有帮助吗?

点赞人数由服务器记录,收藏保存在当前浏览器。

继续阅读

Azure 示例:基于自有文档的 RAG 聊天应用 →

NVIDIA NeMo Gym 用于芯片设计智能体评测:Siemens EDA 案例 →

构建可靠数据分析代理:KDD Cup 2026 经验分享 →