본문 바로가기
원문
Hugging Face Blog·· 2026년 9월 3일주요 뉴스AI 점수62

TRL과 OpenEnv로 코딩 모델에게 수채화를 그리게 하는 강화학습 재현 절차

Training a coding model to paint watercolours with TRL and OpenEnv

AI 요약

Hugging Face 블로그가 Surya Narreddi의 수채화 생성 기법을 TRL과 OpenEnv로 재현했으며, 데이터셋, RL 환경, 학습 스크립트, 학습된 모델을 모두 공개했다고 밝혔다. Qwen/Qwen3.5-35B-A3B에게 p5.brush용 JavaScript를 작성하게 하고, 심사 모델과 미적 평가 모델의 보상으로 학습시켰다. 세 가지 보상 배분 방식 모두에서 보상이 상승했다.

자세히

모델은 약 150줄의 JavaScript를 작성해 p5.brush 라이브러리로 수채화를 그린다. p5.brush의 47개 메서드 중 허용되는 것은 10개뿐이며, 채워진 도형에 번짐이 더해지는 방식으로 화풍이 결정된다. 보상은 게이트 0.05, 코드 길이 0.05, 쌍별 심사 0.60, HPSv3 0.30의 합계이다. 쌍별 심사에는 Qwen3-VL-30B-A3B-Instruct를 사용하며, 수작업으로 평가한 178장의 참조 풀과 비교한다. 풀은 "love"와 "okay" 두 단계로 나뉘며, 4개의 오픈 웨이트 모델이 생성한 작품 중에서 선별했다.

학습은 심사를 중시하는 judge-led, 중간 방식인 hps-led, HPSv3만 사용하는 hps-only 세 가지를 비교했다. 평균 그룹 보상은 처음 3분의 1과 마지막 3분의 1 구간에서 hps-only가 0.58에서 0.71로, judge-led가 0.45에서 0.72로, hps-led가 0.57에서 0.82로 올랐다. 모델은 처음에 나쁜 그림을 줄이는 것을 학습했으며, judge-led에서는 총보상 0.3 미만의 롤아웃이 99개에서 16개로 줄었다. 심사 모델을 넣은 실행에서는 물감의 피복률도 약 2배로 늘었다. 시스템 프롬프트는 15~30개의 도형을 요구하지만, 실제로는 7~9개만 사용했고 보상과의 상관관계도 거의 없었다.

처음에는 보상 곡선이 평평하게 유지되었으나, GRPOTrainer의 네 가지 변경으로 학습이 진전되었다. 학습률을 2e-5에서 5e-5로, 스케줄러를 constant_with_warmup으로, scale_rewards를 none으로, LoRA의 target_modules를 all-linear로 바꿨다. 인프라 장애가 보상 0.0으로 섞여 들어가고 있었기 때문에, None을 반환해 그룹에서 제외하도록 수정했다. 또한 OpenEnv 클라이언트에서 끊어진 websocket이 남아 있는 문제도 발견해 수정안을 업스트림에 전달했다.

비용은 H200 1기로 60스텝에 18시간, 110스텝에 약 34시간이 소요되었다. 1스텝은 15~18분이며, 그중 70~80%가 렌더링에 쓰인다. 향후 방안으로는 모델이 자신의 그림을 확인할 수 있도록 다단계로 확장하는 것과, 4B 규모에서도 유효한 코드를 작성한 소형 모델을 활용하는 것 등이 제시되었다. 풀이 무엇을 아름답다고 볼지를 결정하기 때문에 보상 설계의 핵심은 큐레이션에 있다고 글을 맺었다.

선정 이유

보상 설계에서 실패한 실험과 비용까지 구체적인 수치로 정리되어 있어, 선호도를 보상으로 삼는 RL을 직접 재현할 때 판단 근거로 활용할 수 있다.

출처: Hugging Face Blog · huggingface.co