150만 뷰 수채화 AI의 오픈소스 재현과 TRL 파이프라인

Surya Narreddi가 공개한 언어 모델의 수채화 영상이 150만 뷰를 기록하며 화제가 되었다. 이 영상 속 AI는 p5.brush라는 라이브러리를 사용해 자바스크립트 코드를 작성하며 그림을 그린다. p5.brush는 p5.js에 자연스러운 드로잉 도구를 추가해 주는 도구다. 단순한 영상의 화제성을 넘어 이 과정을 실무적으로 재현하기 위해 TRL(Transformer Reinforcement Learning, 트랜스포머 강화 학습)과 OpenEnv(강화 학습 환경 구축 도구)를 결합한 실행 가능한 오픈 파이프라인을 구축했다. 독자는 이제 단순한 시청자를 넘어 공개된 파이프라인을 통해 직접 수채화 AI의 작동 원리를 구현하고 테스트할 수 있다.

전체 파이프라인은 허깅페이스(Hugging Face) 플랫폼 위에서 엔드 투 엔드(End-to-End, 전 과정 통합)로 작동하도록 설계했다. 단순히 학습된 모델의 가중치만 공개한 것이 아니라 학습의 기초가 되는 참조 풀 데이터셋과 RL 환경, 구체적인 학습 스크립트, 그리고 최종 학습된 모델까지 전체 구성 요소를 모두 오픈소스로 제공한다. 이를 통해 개발자는 모델이 어떤 보상 체계와 환경에서 수채화 스타일의 코드를 생성하도록 학습되었는지 직접 확인하고 자신의 컴퓨팅 환경에서 그대로 실행하며 결과를 검증할 수 있다.

이 결과물이 큰 주목을 받은 이유는 최근 이미지 생성 모델들이 보여주는 통계적 완벽함과 정반대 지점에 있기 때문이다. 최신 모델들이 매끈하고 평균적인 고화질 이미지를 만들어낼 때, 이 모델은 느슨하고 불완전하며 손으로 직접 그린 듯한 느낌을 구현한다. 이러한 투박한 질감이 오히려 사용자들에게 신선하게 다가갔으며, 이는 150만 뷰라는 수치로 증명되었다. 이러한 접근은 2015년의 DeepDream이나 2018년의 Edmond de Belamy처럼 매체의 한계를 탐색하며 예술적 가능성을 찾던 초기 생성 AI 예술의 실험 정신과 맥을 같이 한다.

p5.brush의 제작자는 이번 성과가 나오기 훨씬 전부터 기계에게 그림을 가르치는 실험을 지속했다. 2022년에는 p5.js가 어린아이처럼 그림을 그리도록 가르치는 과정을 기록한 일기 형태의 생성 예술 시리즈를 제작했다. 당시 기록에는 기계가 크레용조차 제대로 사용하지 못하고 간단한 명령조차 수행하지 못해 매우 답답했다는 내용이 담겨 있다. 당시 세 편으로 기획되었던 시리즈는 두 편까지만 제작된 채 멈췄으나, 이번 수채화 AI의 등장은 그 마지막 세 번째 작품이 스스로 찾아온 것과 같은 결과다.

JS 코드 생성부터 보상 산출까지의 RL 루프 구조

모델은 약 150줄의 JavaScript 코드를 출력하며 이것이 실제 이미지로 변환되는 지점에서 루프가 시작된다. 렌더링은 Headless Chromium(화면 없이 작동하는 웹 브라우저)을 통해 수행된다. 이 환경은 모델이 사용하는 JavaScript 라이브러리와 시스템 프롬프트, 그리고 부정행위를 걸러내는 게이트까지 포함해 모델과 보상 사이의 모든 과정을 감싼다. 코드가 이미지로 바뀌어야만 비전 모델이 평가할 수 있는 물리적 근거가 마련되며, 이 과정에서 모델이 규칙을 어기고 편법으로 이미지를 생성하지 않았는지 검증하는 단계가 필수적으로 작동한다.

첫 번째 보상 모델인 HPSv3는 7B 규모의 오픈 선호도 모델이다. 이미지와 텍스트 설명을 입력하면 사람이 해당 이미지를 얼마나 선호할지를 점수로 반환한다. 대규모의 이미지 쌍 선택 데이터를 학습했기에 이 점수는 여러 사람의 취향을 합친 평균값으로 작동한다. 정답이 정해진 수학 문제나 테스트를 통과하는 코드와 달리, 미적 기준이라는 모호한 영역을 수치화하여 모델에게 학습 방향을 제시하는 장치다.

두 번째 보상 모델은 HF Inference Providers(허깅페이스 추론 제공 서비스)를 통해 호출하는 Qwen3-VL-30B-A3B-Instruct 비전 모델이다. 이 모델은 개별 점수가 아니라 상대적 승률을 계산하는 Pairwise Judge(쌍별 판정관) 역할을 수행한다. 참조 풀에서 무작위로 선택한 4개의 이미지와 모델이 생성한 후보 이미지를 쌍으로 묶어 비교한다. 이때 번짐(bleeds), 반투명한 워시(translucent washes), 부드러운 가장자리(soft edges) 같은 구체적인 평가 기준을 가이드로 제공한다. 각 비교 대상과 제시 순서를 모두 바꿔가며 대조한 뒤 후보 이미지가 승리한 비율을 최종 점수로 산출한다.

Qwen3-VL의 판정 기준은 오직 참조 풀에 저장된 이미지들이다. 이는 대중적 취향을 반영하는 HPSv3와 달리 제작자가 의도한 개인적 예술 취향을 모델에 이식하는 과정이다. 모델은 이 두 가지 보상 점수를 합산해 자신의 코드를 수정하며 더 나은 수채화 스타일을 찾아간다. 프론티어 모델이 이미 수채화 코드를 짤 수 있는 시점에서, 이 루프의 핵심은 소형 모델이 특정 개인의 예술적 선호도를 학습하게 만드는 데 있다. 정답이 없는 스타일 영역에서도 참조 풀이라는 명확한 기준점만 있다면 RLHF(인간 피드백 기반 강화학습)와 유사한 방식으로 성능을 고도화할 수 있다.

47개 메서드 중 10개만 허용한 '스타일 제약' 전략

p5.brush 라이브러리가 제공하는 전체 47개 메서드 중 단 10개만 사용하도록 제한했다. 허용 리스트에는 다음과 같은 메서드들이 포함된다.

javascript
scaleBrushes, noStroke, fill, noFill, fillBleed, fillTexture, beginShape, vertex, endShape, circle

모델이 사용할 수 있는 도구의 가짓수를 극단적으로 줄여 수채화라는 특정 양식을 강제한 설계다. 도구의 수를 줄이는 것은 모델이 학습 과정에서 겪을 시행착오를 줄이고 정답에 빠르게 수렴하게 만드는 장치가 된다.

나머지 37개 메서드를 배제한 이유는 선 긋기나 해칭(hatching, 가는 선을 겹쳐 칠하는 기법) 같은 기능이 수채화 특유의 번짐과 뭉쳐짐을 해치기 때문이다. 모델이 선을 그리는 대신 오직 채워진 도형만을 그리게 만들면 라이브러리가 모든 도형에 자동으로 번짐 효과를 추가한다. 이는 모델에게 창작의 자유도를 주는 대신 스타일의 일관성을 확보하는 전략이다. 선이라는 명확한 경계가 사라지고 면 중심의 구성이 이루어질 때 비로소 수채화다운 느낌이 살아난다.

p5.brush(수채화 질감을 시뮬레이션하는 라이브러리)는 단순한 도형 그리기를 넘어 실제 매체의 물리적 특성을 구현한다. 안료가 경계를 넘어 번지거나 종이의 질감이 드러나고 붓질에 무게감이 실리는 방식이다. 예를 들어 모델이 `fillBleed(0.25)`를 호출하면 잉크가 얼마나 멀리 퍼질지를 결정하게 된다. 단순한 색칠이 아니라 잉크의 확산 정도를 제어하는 파라미터를 조정함으로써 물의 양과 종이의 흡수율을 조절하는 것과 같은 효과를 낸다.

실제 구현 단계에서는 각 꽃잎을 하나의 도형으로 끝내지 않고 큰 패스와 작은 패스를 2~3번 겹쳐 그리도록 지시한다. `beginShape`와 `vertex`를 사용해 임의의 다각형 패스를 만들고 이를 반복적으로 쌓아 올리는 방식이다. 면과 면이 겹치면서 발생하는 농도 차이가 수채화의 깊이감을 만든다. 단순한 단색 채우기가 아니라 겹침의 횟수와 크기를 조절하는 것이 시각적 완성도를 결정하는 핵심이다.

기존의 텍스트-투-이미지 모델에서는 프롬프트라는 단일 레버에만 의존해 스타일을 조절했다. 하지만 프롬프트는 세부 묘사가 늘어날수록 제어력이 떨어지는 한계가 있다. 반면 이 방식은 코드의 어휘 자체를 제한함으로써 모델이 엉뚱한 기법을 쓰지 못하게 막고 의도한 질감만 출력하게 만든다. 이는 모델의 출력물을 텍스트가 아닌 실행 가능한 코드로 정의하고 그 코드의 문법을 제한함으로써 얻은 정밀한 제어력의 결과다.

보상 믹스(Reward Mix)에 따른 '취향'의 학습 결

실험은 HPSv3(인간 선호도 점수 v3)만 사용한 모델과 보상 믹스(Reward Mix)를 적용한 두 종류의 모델을 비교하는 방식으로 진행했다. 처음에는 파이프라인이 정상적으로 작동하는지 확인하기 위해 HPSv3 전용 모델로 학습을 시작했다. 보상 수치가 상승하고 지표가 건강하게 유지되는 것을 확인한 뒤에야 개인의 취향을 반영한 더 긴 학습 과정을 실행했다. 이는 RL(강화 학습)이 정답이 없는 미적 취향이라는 주관적 영역에서도 유효하게 작동하는지 검증하기 위한 설계다.

학습의 성패를 가르는 핵심은 하이퍼파라미터 튜닝보다 무엇이 아름다운지를 결정하는 참조 풀(Pool) 구축에 있었다. 참조 풀은 모델이 정답지로 삼을 이미지 집합을 의미하며 여기서는 수동으로 등급을 매긴 데이터셋이 사용되었다. 개발자는 수치적인 설정값을 조정하는 시간보다 어떤 이미지를 풀에 넣을지 결정하는 데이터 큐레이션 작업에 더 집중했다. 결과적으로 무엇을 아름답다고 정의하느냐는 데이터의 구성이 모델의 최종 스타일을 결정하는 실질적인 제어 장치가 되었다.

보상 믹스에서는 보편적인 미적 기준인 HPSv3와 개인의 취향을 반영하는 Pairwise Judge(쌍별 비교 판별자) 사이의 가중치를 조절했다. Pairwise Judge의 가중치가 높아질수록 모델은 대중적인 기준보다 설계자의 개인적 취향에 더 가깝게 학습한다. 가중치가 너무 높거나 지향하는 스타일이 평균적인 미적 기준에서 너무 멀어지면 모델이 학습을 멈추는 현상이 발생할 수 있다. 하지만 실제 실험에서는 Pairwise Judge의 비중을 높인 두 모델 모두 학습을 유지하며 성공적으로 스타일을 제어했다.

실행 과정은 환경과 스코어러 모델을 복제하고 보상 믹스를 위한 환경 변수를 설정하는 단일 명령어로 처리한다. 수동으로 등급을 매긴 참조 풀이 정책(Policy)을 성공적으로 유도했음이 최종 페인팅 결과와 지표로 증명되었다. 취향이라는 주관적 기준을 보상 함수로 설계했을 때 모델이 붕괴하지 않고 특정 스타일을 학습할 수 있다는 실무적 가능성을 확인했다. 이는 정교한 수식 설계보다 양질의 참조 데이터를 구축하는 것이 RL 기반 스타일 학습의 더 효율적인 경로가 된다.

프롬프트 엔지니어링에서 '취향 RL'로의 실무 전환

소형 모델과 특정 도메인의 보상 모델을 조합하는 RL(강화학습) 방식은 텍스트-투-이미지 모델의 프롬프트를 조절해 결과물을 제어하던 기존 방식의 한계를 넘는다. 정답이 없는 미적 취향이나 스타일 영역에서도 RLHF(인간 피드백 기반 강화학습)와 유사한 경로로 보상 함수를 설계하면 모델의 성능을 특정 방향으로 고도화할 수 있다. 프론티어 모델의 범용적인 제로샷 생성 능력에 의존하는 대신 소형 모델에 특정 도메인의 미적 기준을 직접 이식하는 경로를 택한 결과다.

수천 장의 튤립 사진을 직접 촬영하고 라벨링해 데이터셋 자체를 예술 작품으로 전시한 안나 리들러(Anna Ridler)의 사례처럼 이번 프로젝트 역시 수작업으로 큐레이션한 이미지 세트를 학습의 기준으로 삼았다. 예술과 디자인 관점의 원본 아이디어를 엔지니어링 관점에서 재현하며 모든 구성 요소를 공개하는 방식으로 접근했다. 이는 데이터의 양보다 큐레이션의 질이 모델의 최종 스타일을 결정한다는 실무적 판단에 근거하며 소형 모델이 특정 도메인에서 전문성을 가질 수 있음을 보여준다.

모델에게 방대한 API 참조 문서를 제공하면 존재하지 않는 메서드를 임의로 만들어 호출하는 환각 현상이 빈번하게 발생한다. 이를 해결하기 위해 문서 제공을 생략하고 엄격한 허용 목록(allowlist)만을 사용하는 방식을 적용했다. 200번의 GEPA(가이드 기반 에이전트 최적화) 반복 과정을 통해 검증된 허용 목록은 모델이 불필요한 기능을 탐색하지 않고 정해진 도구만 정확하게 사용하도록 강제하는 제약 조건이 된다.

학습 레시피에 각 꽃잎을 그릴 때 큰 패스로 먼저 바탕을 잡고 그 안에 더 작고 불투명한 패스를 2~3번 겹쳐 그리라는 구체적인 지시 문장을 추가했다. 이 한 문장의 레시피 변경이 수채화 특유의 겹침 효과와 깊이감을 구현하는 결정적인 차이를 만들었다. 실무자는 정답이 없는 미적 취향을 RL 보상 함수로 설계하고 이를 소형 모델에 이식해 특정 스타일의 전문성을 확보하는 경로를 선택해야 한다.