PrismaCoder가 루브릭 분해로 멀티모달 코드 학습 데이터를 걸러낸다

PrismaCoder: Pushing the Boundaries of Open Multimodal Code Intelligence through Decomposed Rubric Synthesis

arXiv2610.20538v1

Qiushi Sun2026-10-14

무엇인가

멀티모달 코드 지능은 프로그램이라는 기호 세계와 그 실행이 만들어내는 시각 세계를 잇는 능력이다. 모델이 차트, 웹페이지, 애니메이션, 반구조화 문서를 만들어야 하는 수요가 커지면서 상용 모델들은 텍스트 설명이나 스크린샷 하나로 인터랙티브 결과물을 뽑아낸다. 문제는 오픈 진영의 데이터 양과 품질, 그리고 그 데이터를 만드는 파이프라인이다. 논문은 둘 중 품질이 더 어렵다고 본다. 샘플이 프로그램으로서 맞아야 하고, 잘 구성돼야 하고, 무엇보다 렌더링된 뒤 시각적으로 맞아야 하는데 기존 신호 중 이 셋을 모두 덮는 것이 없다. 실행은 통과 아니면 실패만 돌려주고, 코드 유사도는 시각 결과와 대응하지 않으며, 태스크별 검증기는 다른 태스크로 일반화되지 않는다.

어떻게 동작하나

제안 방법의 중심은 PrismaForge라는 루브릭 기반 평가 프레임워크다. 각 후보 샘플을 (지시문 x, 생성 코드 c, 실행 결과물 v) 튜플로 두고, 코드에서 검증 가능한 항목을 모은 코드 루브릭과 렌더링 결과에서 직접 관찰 가능한 항목을 모은 시각 루브릭을 분리해 평가한다. 분리가 핵심인 이유를 논문은 그림으로 보여준다. 어떤 합성 페이지는 코드 검사에서 참조 페이지의 내용·색·레이아웃을 모두 담고 있어 전부 통과하지만, 푸터가 Services 섹션 위에 겹쳐 그려져 세 번째 버튼을 잘라먹는다. 이때 전체를 한 번에 보는 판정은 78점을 줘서 풀의 약 5분의 4보다 높게 평가하지만, 비전 루브릭은 0.18점을 준다. 각 모달리티 안에서는 다시 도메인 공통 기준과 해당 지시문에서 합성한 샘플별 기준으로 나뉘고, 기준마다 샘플 의존 가중치를 곱해 정규화한 뒤 두 모달리티 점수를 가중합해 최종 점수를 만든다. 지시문마다 난이도를 먼저 매기고 그 난이도 구간에 따라 생성할 기준 개수의 범위를 정해, 복잡한 샘플은 세밀하게 보되 판정 비용은 통제한다.

무엇과 다른가

같은 루브릭이 강화학습 보상으로도 쓰인다. 프롬프트마다 K개의 롤아웃을 뽑아 실행하고, 실행이나 렌더링에 실패한 롤아웃은 보상을 0으로 준다. 성공한 롤아웃은 코드·시각 루브릭으로 점수를 매기고, 그룹 내에서 평균을 빼고 표준편차로 나눈 정규화 어드밴티지를 계산해 GRPO의 클리핑 목적함수로 정책을 최적화한다. MoE 모델에서는 전문가 학습을 안정화하기 위해 GSPO 목적함수와 Rollout Routing Replay를 함께 썼다고 밝힌다.

어떻게 쓰나

데이터는 네 갈래 시드에서 모은다. 시각화 기초는 Python과 SVG, Mermaid, Vega-Lite 같은 시각화 언어의 플로팅 스킬을 담당한다. 과학 아티팩트는 오픈소스 GitHub 저장소의 플로팅 코드와 arXiv 논문 그림에서 가져오고, AST 기반 패스로 길거나 단일체인 스크립트를 자기완결 단위로 쪼갠다. 프런트엔드 레이아웃과 인터랙션은 WebCode2M과 MCD 데이터셋의 웹페이지, 그리고 인터랙티브 데모에서 온다. 기호 표기는 PubChem에서 시드한 화학 구조 코드와 LaTeX, Asymptote, LilyPond, Manim 프로그램으로 채운다. 이렇게 모은 후보는 포맷별 게이트키퍼로 컴파일·렌더링을 통과해야 하고, 루브릭 점수에 따라 하위는 폐기, 중간 구간은 실패한 루브릭 항목을 피드백으로 코드를 다시 생성, 상위는 감독 코퍼스로 보존된다. 결과물이 PrismaCoder-2M으로, 12개 이상 카테고리와 10개 프로그래밍 언어를 아우르며 텍스트 중심과 비전 중심 데이터를 모두 포함한다고 주장한다. 강화학습용 데이터는 Python, HTML, SVG 세 도메인에서 중간·어려움 난이도 후보 2만 건을 감독학습 전에 홀드아웃하고, 각 인스턴스당 5개 롤아웃의 루브릭 점수 분산이 큰 5천 건만 남겨 정책의 능력 경계에 학습을 집중한다. 파이프라인 자체는 모델을 교체 가능하게 설계했고, 이 논문에서는 큐레이션에 Claude-Opus-4.6, 루브릭 생성에 Gemini-3-Pro, 판정에 Gemini 3 Flash를 썼다.

전제와 한계

실험은 Qwen3.5-9B와 Qwen3.5-35B-A3B를 후학습해 PrismaCoder-9B와 PrismaCoder-35B를 만들고, JanusCoderV, VinciCoder, VisCoder2-7B 같은 오픈 멀티모달 코드 모델과 비교한다. 웹 인터페이스 생성에서 두 모델은 태스크 특화 오픈 베이스라인보다 판정 점수가 20점 이상 높고, 9B는 DesignBench 생성과 WebCode2M CLIP 점수에서 상용 모델을 앞선다. 다만 DesignBench 편집은 두 모델 모두 Claude 4.6과 Gemini 3 전 변형보다 낮은 유일한 웹 지표다. ChartMimic에서는 두 모델 모두 오픈 베이스라인을 앞서고, 35B는 두 설정 모두에서 대부분의 상용 모델을 능가한다. 화학 구조 코드에서는 35B가 모든 출력을 파싱해 표에서 가장 높은 Tanimoto 유사도 97.56을 기록한다. 텍스트 중심 태스크에서는 ArtifactsBench 전체 점수에서 오픈 베이스라인 전부와 GPT-4o를 넘고, InteractScience의 프로그램 렌즈에서 35B가 28.00점으로 최고 오픈 베이스라인을 앞서며 Gemini 3 Flash에 필적한다. 9B에서 35B로 키우면 이 점수가 3.20점 오른다. VisPlotBench에서는 35B가 세 지표 모두 오픈 베이스라인 1위이고 Mean 점수가 그 최고치보다 11.02점 높아 Claude Sonnet 4.6에 견줄 만하다. 반면 이미지 조건 SVG는 VinciCoder-8B가 앞선 유일한 비전 중심 지표다.

분석 파트에서 눈에 띄는 것은 루브릭 필터링 자체의 효과다. 같은 데이터 풀에서 크기가 같은 두 부분집합을 뽑아 하나는 전체를 한 번에 점수 매기는 방식으로, 다른 하나는 PrismaForge 루브릭으로 걸러 Qwen3.5-9B를 파인튜닝했다. 루브릭으로 거른 쪽이 모든 벤치마크에서 더 높았고 Vega-Lite에서는 최대 24점 차이가 났다. 이득은 텍스트 중심 포맷에서 크고 비전 중심에서는 작아서 Design2Code는 소수점 이하 수준에 그친다. 두 부분집합 크기가 같으니 이 격차는 각 판정이 어떤 샘플을 남겼는지의 차이다. 백본 일반화도 확인한다. Gemma-4-31B-it와 Qwen3-VL-30B-A3B-Instruct에 같은 데이터와 방법을 적용해 Python 플로팅과 HTML 두 도메인에서 12개 지표 전부가 베이스 모델보다 높았고, 모든 지표에서 강화학습이 감독학습 위에 더해졌다. ChartMimic 이득은 감독학습이 대부분을 만들고, HTML 이득은 강화학습이 주도하며 감독학습만으로 떨어진 지표를 모두 회복한다. 사람과의 일치도도 측정했다. 학습 데이터에서 100개 샘플을 뽑아 사람 주석자와 상용 모델 판정 3종에게 직접 점수 방식과 루브릭 방식을 각각 적용하게 했는데, 루브릭 기반 판정이 절대 점수 수준과 쌍대 순서 양쪽에서 사람 판단과 훨씬 높게 일치했고 유도되는 부분 순서도 더 일관됐다.

실무 관점에서 이 논문이 쓸모 있는 지점은 렌더링 결과물의 품질을 학습 신호로 바꾸는 구체적인 절차다. 실행 성공 여부만으로 데이터를 거르면 코드는 맞지만 그림이 깨진 샘플이 그대로 남고, 반대로 사람이 전부 검수하기에는 규모가 안 나온다. 코드 검사와 시각 검사를 분리하고, 도메인 공통 기준에 지시문별 기준을 얹고, 난이도에 따라 기준 개수를 늘리는 설계는 차트·웹페이지·SVG 같은 산출물을 다루는 팀이라면 그대로 참고할 만하다. 다만 도입 전에 확인할 것은 두 가지다. 하나는 루브릭 생성과 판정에 어떤 모델을 쓰는지다. 이 논문은 폐쇄 모델 세 개를 파이프라인에 넣었고, 루브릭 생성기와 판정기를 일부러 다른 모델로 분리해 편향이 재생산되지 않게 했다고 밝힌다. 다른 하나는 자체 벤치마크 판정자와 파이프라인 판정자가 같은 모델 패밀리일 때 생기는 편향으로, 저자들도 이를 인지해 판정자를 바꿔도 이득이 유지되는지 별도로 확인했다고 적는다.

논문은 별도의 한계 절을 두지 않는다. 본문에서 드러나는 전제와 미제시 항목은 이렇다. 파이프라인이 Claude-Opus-4.6, Gemini-3-Pro, Gemini 3 Flash라는 상용 모델에 의존하므로 완전한 오픈 재현은 아니다. 게이팅에 쓰는 임계값과 도메인별 임계값의 구체적 수치는 원문에 제시되지 않았다. 성능 면에서도 두 모델이 모든 지표를 석권하지는 않는다. DesignBench 편집은 Claude 4.6과 Gemini 3 전 변형보다 낮고, 이미지 조건 SVG는 VinciCoder-8B가 앞선다. 35B-A3B가 MoE 구조라 GSPO와 Rollout Routing Replay 같은 별도 안정화 기법이 필요했다는 점도 재현 시 고려해야 할 조건이다.