없는 모델은 기다리지 않고 직접 만들면 됩니다

Hugging Face ML Intern으로 103달러에 여섯 개의 맞춤 모델을 만든 기록을 따라가며 평가와 데이터와 증류가 어떻게 맞물리는지 읽어봅니다

원문 논문 보기
'없는 모델은 기다리지 않고 직접 만들면 됩니다' 기사 커버 이미지

Hugging Face 블로그에 2026년 10월 8일 올라온 Yuvraj Sharma와 Abubakar Abid의 글 The model that didn't exist, so you made it yourself는 에이전트에게 말로 시켜서 맞춤 모델을 만드는 이야기를 다룹니다. 이 글은 큰 모델이 없던 일을 작은 모델이 해내도록 만드는 과정이 평가와 데이터와 실행 환경으로 어떻게 이어지는지 보여줍니다. 원문 링크는 제목 아래에 걸려 있습니다.

없는 모델을 굳이 기다릴 필요가 있을까요

안녕하세요, 패트릭 입니다.

얼마 전부터 저는 모델 고르는 일이 옷을 고르는 일과 비슷해졌다고 느꼈습니다. 매장에 있는 기성복은 분명 잘 만들어졌는데, 정작 제가 앉은 자리에는 어깨가 맞지 않습니다. 그렇다면 치수를 재서 한 벌을 맞출까요, 아니면 어깨가 맞는 기성복이 나올 때까지 기다릴까요. 오늘 다룰 글은 기다리지 않고 맞추는 쪽을 택한 기록입니다. 저자는 HuggingChat에서 ML Intern이라는 에이전트 모드를 켜고 말을 걸었고, 며칠 사이에 여섯 개의 모델을 Hub에 올렸습니다. 저는 이 숫자보다 그 뒤의 순서가 더 눈에 들어왔습니다. 무엇을 만들지 정하기 전에 무엇을 잴지부터 정했기 때문입니다.

글의 시작은 꽤 구체적입니다. Qwen Image 2.1에 딸려 오는 9B짜리 프롬프트 교정 모델은 메모리를 20GB 가까이 먹고, 한 단락을 쓰기 전에 수천 토큰을 생각합니다. Hub에는 같은 9B를 압축해 둔 복사본만 있었습니다. 그래서 저자는 ML Intern에게 말을 걸어 0.8B짜리 버전을 만들었고, 다음 날 CPU에서 도는 모델을 받았습니다. 유효한 출력 비율은 99.7%였고, 쓰는 토큰은 스승 모델의 4분의 1 수준이었습니다. 스승 모델이 8,797개의 예시 요청에 라벨을 붙인 일을 포함한 전체 계산 비용은 16달러였습니다. 이 대목에서 저는 멈칫했습니다. 싼값에 놀란 것이 아니라, 싼값이 어디에서 왔는지가 궁금했기 때문입니다. 싼값은 대개 어딘가를 덜 썼다는 뜻이고, 덜 쓴 자리를 무엇으로 메웠는지가 이 글의 줄거리입니다.

왜 범용 모델은 우리 밭을 모를까요

감귤 잎 하나를 앞에 둔다고 생각해 보죠. 노랗게 뜬 잎을 보고 응애 문제인지 마그네슘 결핍인지 가르고, 유기농 처방과 일반 처방까지 함께 말해야 하는 자리입니다. 범용 vision 모델은 잎을 묘사하는 데는 능합니다. 그런데 처방까지 이어지는 판단에서는 자주 빗나갑니다. 말 그대로 밭을 모르기 때문입니다. 밭이라는 말은 비유가 아니라 데이터 분포를 가리킵니다. 병해충 사진 3,000장과 치료법 문장이 한 세트로 묶인 분포는 웹 전체를 훑은 분포와 다릅니다.

이 글에서 나온 감귤 병해진단 모델이 그 간격을 보여줍니다. 학습 데이터는 Hub의 Project AgML 쪽에 있던 세 갈래 자료를 합쳐서 만든 3,017장의 주석 이미지였고, 21가지 병과 해충과 영양 결핍과 치료 방향을 가립니다. 베이스 모델은 Qwen 3.5 2B였는데, 335장의 시험 사진에서 정답률은 14.9%에 그쳤습니다. 같은 시험지를 두 epoch 동안 A10G 하나로 학습한 뒤에는 52.8%로 올랐습니다. 계산 비용은 1.90달러였습니다. 같은 모델에 같은 질문을 던졌는데, 밭을 보여준 뒤와 전이 이렇게 갈린다는 점이 경험적으로 와닿죠. 생각해보면 사람도 비슷하게 배웁니다. 교과서로만 본 약초와 산에서 직접 캐본 약초는 손에 남는 감각이 다릅니다.

그렇다면 이 향상이 모델이 똑똑해졌다는 뜻일까요, 아니면 시험지가 밭으로 바뀌었다는 뜻일까요. 저는 후자에 가깝다고 봅니다. 베이스 모델의 가중치가 세상을 새로 이해한 것이 아니라, 감귤이라는 좁은 자리에서 무엇을 먼저 봐야 할지 몸에 익힌 것입니다. 그래서 이런 전공 모델은 넓게는 약해지고 좁게는 강해집니다. 이 교환을 받아들일 수 있을 때만 맞춤 모델이 답이 됩니다. 반대로 밭이 자주 바뀌는 자리라면, 좁게 맞춘 옷이 다음 달에는 어깨가 맞지 않을 수 있습니다. 이 판단이 뒤에 나오는 유지보수 이야기로 이어집니다.

큰 베이스 모델에서 가지처럼 뻗어 나오는 작은 맞춤 모델을 그린 편집 일러스트
큰 베이스 모델에서 가지처럼 뻗어 나오는 작은 맞춤 모델을 그린 편집 일러스트

그렇다면 평가는 언제 정해야 할까요

저자가 처음 보낸 메시지가 450단어였고, 여섯 번째 프로젝트에서는 2,000단어에 가까워졌다는 대목이 있습니다. 프롬프트가 길어진 이유는 말을 더 꾸몄기 때문이 아니라, 앞선 프로젝트에서 배운 조건을 다음 brief에 적어 넣었기 때문입니다. 데이터셋과 베이스 모델과 학습 스크립트를 이름까지 못 박았고, 이미 확인한 사실은 Verified facts, do not re-derive라는 표제 아래에 묶어서 에이전트가 같은 일을 다시 찾지 않게 했습니다. 카메라 각도 LoRA에서는 투명 이미지 지원을 막 넣은 trainer가 어느 것이고, 어느 대체 trainer가 열린 이슈 때문에 위험한지까지 적어 두었습니다. 저는 이 대목을 읽고 에이전트 활용법이 아니라 일하는 순서에 대한 이야기로 받았습니다. 에이전트에게 일을 맡기기 전에 사람이 무엇을 재고 무엇을 믿을지 정해 둔 것입니다.

여기서 두 줄이 전체를 지탱합니다. 하나는 학습 전에 베이스라인을 재라는 지시였습니다. 감귤 brief에 있던 문장은 같은 지표로 베이스 모델의 zero shot 점수를 먼저 보고하라는 내용이었습니다. 이 한 줄이 없으면 학습된 모델만 남고, 그것이 출발점보다 나은지 알 수 없습니다. 다른 하나는 50스텝만 돌리는 연기 테스트였고, 저장된 가중치가 실제로 바뀌었는지 확인한 뒤에 본 학습 비용을 쓰게 했습니다. 이미지 LoRA에서는 이 연기 테스트가 50스텝 학습과 가중치 변화 확인으로 붙어 있었습니다. 작은 돈으로 방향을 확인하고 큰돈을 쓰는 순서는 연구실이 아니라 공사 현장의 문법인데요. 먼저 구덩이를 조금 파보고, 흙이 맞으면 굴착기를 부르는 식입니다.

지출 상한도 같은 문법입니다. brief 끝에는 모델 카드에 들어갈 산출물과 함께 전체 지출 상한을 적었고, 이를테면 12달러를 넘기 전에 묻라는 식의 문장이 붙었습니다. ML Intern은 매 작업을 0달러 예산에서 시작하고 유료 작업 전에는 허락을 받기 때문에, 이 상한은 실제로 지켜졌습니다. 상한을 적지 않으면 에이전트가 프로젝트 크기에 따라 두어 가지 경로를 제안하고 어느 쪽을 택할지 묻습니다. 저는 이 대목에서 평가를 먼저 정한다는 말이 거창한 원칙이 아니라 이런 문장들이라는 점을 다시 봤습니다. 무엇을 재고, 얼마까지 쓰고, 언제 멈출지를 글로 박아 두는 일입니다.

가중치 전부를 고쳐야만 전공이 될까요

작은 가중치만으로 전공을 만드는 방법이 이 글 곳곳에 나옵니다. LoRA라는 이름이 대표적입니다. 모델 전체를 다시 학습하는 대신, 원래 가중치 옆에 작은 어댑터 가중치를 붙이고 그 부분만 고치는 방식입니다. QLoRA까지 가면 양자화한 베이스 위에 어댑터를 얹어서 메모리 부담을 더 낮춥니다. Huggy LoRA가 좋은 보기입니다. FLUX.2 klein base 4B 위에 Hugging Face 브랜드 자산 특유의 평면 화풍으로 그린 Huggy를 올리는 작업이었고, 학습 재료는 주석을 단 그림 84장이었습니다.

이 실험에서 저는 단계별 그림이 가장 솔직했다고 느꼈습니다. 에이전트는 100스텝마다 체크포인트를 저장하고 같은 프롬프트 묶음으로 그림을 뽑아서 고르게 했습니다. 200스텝에서 Huggy가 처음으로 제대로 자리 잡았고, 500스텝을 넘기면서는 Huggy와 무관한 프롬프트에도 Huggy 화풍이 스미기 시작했습니다. 좁은 자리에서는 잘 맞던 옷이 넓은 자리에서는 몸을 조이는 셈입니다. 학습된 LoRA는 4스텝으로 증류된 klein 모델에서도 그대로 돌았고, 계산 비용은 7.60달러였습니다. 적은 재료로 큰 화풍을 옮길 수 있다는 말이 이 숫자들과 붙어야 실감이 납니다. 재료가 84장이면 모으는 데는 며칠이면 되지만, 그 84장이 어떤 자세와 표정과 배경을 담았는지가 결과를 가릅니다. 양보다 구성이 앞선다는 말이 이런 자리에서 나옵니다.

그렇다면 언제 전체 파인튜닝을 하고 언제 LoRA로 멈출까요. 제 눈에 들어온 기준은 자리를 옮기는 폭입니다. 말투나 화풍이나 카메라 각도처럼 출력의 한 켜를 바꾸는 일에는 작은 어댑터로 충분한 경우가 많습니다. 반면 감귤 진단처럼 판단의 근거 자체를 새로 익혀야 하는 일에는 베이스를 더 깊게 건드리는 편이 어울립니다. 물론 경계는 흐릿합니다. 같은 LoRA라도 학습 스텝과 데이터 구성에 따라 넓게 번질 수 있기 때문입니다. 그래서 100스텝마다 같은 그림을 뽑아보는 식의 눈금이 필요합니다. 숫자가 아니라 눈금이 남는다는 점에서 저는 이 Huggy 실험을 가볍게 보지 않았습니다.

감귤 잎을 앞에 두고 범용 모델과 현장 전공 모델을 나란히 비교한 도표
감귤 잎을 앞에 두고 범용 모델과 현장 전공 모델을 나란히 비교한 도표

남의 시선을 빌려오는 일은 어떻게 시킬까요

카메라 각도 LoRA는 없던 것을 있게 한 사례입니다. Qwen Image 2.1이 나온 지 며칠 뒤, 사물을 왼쪽 45도에서 본 모습처럼 돌려 보여주는 커뮤니티 추가물은 아직 없었습니다. 그래서 저자는 ML Intern에게 그 일을 맡겼습니다. 재료는 Google Scanned Objects에 있던 가정용품 스캔 1,030점을 CPU 작업으로 24개 각도씩 돌려서 만든 24,722장의 투명 이미지였습니다. 그중 461점은 학습용으로 다듬고 40점은 시험용으로 따로 묶었으며, 학습 전후를 견주는 1,844쌍을 23가지 카메라 지시에 고르게 나눴습니다.

학습은 A100 하나로 2,000스텝을 약 90분에 돌렸고 3.75달러가 들었습니다. 그런데 전체 프로젝트는 반나절에 48개 작업이었습니다. 빠진 패키지와 잘못된 경로로 실패한 뒤 에이전트가 다시 제출한 것까지 센 숫자입니다. 전체 계산 비용은 16달러였습니다. 저는 이 실패 횟수를 숨기지 않은 대목이 마음에 들었습니다. 에이전트가 시킨다고 한 번에 되는 것이 아니라, 깨지고 고치는 일을 사람이 보지 않는 곳에서 대신한다는 점이 드러나기 때문입니다. (참고로 투명 이미지 처리는 trainer마다 되는 버전이 갈려서, brief에 어느 trainer를 쓰라고 못 박은 것이 이런 실패를 줄이는 데 한몫했습니다.)

이 실험을 데이터 관점에서 다시 읽으면 세 가지가 남습니다. 첫째는 재료를 직접 만들었다는 점입니다. 없으면 찍으면 됩니다. 스캔 모형을 돌려서 각도를 뽑는 일은 사람이 사진을 찍는 일보다 지루하지만, 기계에게는 시키기 좋은 일입니다. 둘째는 나눔이 분명하다는 점입니다. 461점과 40점과 1,844쌍이라는 숫자는 학습과 시험과 견줌의 자리를 미리 가른 흔적입니다. 셋째는 오염을 막는 감각입니다. 시험용 40점을 학습에서 뺀 것은 당연해 보이지만, 당연한 일을 빼먹으면 점수가 부풀고 그 부푼 점수를 믿고 배포까지 가게 됩니다. 저는 그래서 데이터 정제와 중복 제거와 오염 제거가 점수보다 먼저라는 말을 이런 숫자들에서 읽었습니다. 재료가 깨끗해야 눈금이 믿을 만합니다.

낙서 하나를 사진으로 바꾸려면 무엇이 필요할까요

Doodle in LoRA는 낙서를 사진으로 바꾸는 추가물입니다. 사진 위에 분홍색 낙서를 올리고 짧은 말로 사물 이름을 적으면, 그 자리에 사물이 들어서면서 원래 조명과 구도가 그대로 이어집니다. 이런 데이터셋은 세상에 없었기 때문에 brief에 만드는 법부터 적었습니다. Open Images의 실제 사진에서 LaMa inpainting 모형으로 사물 하나를 지우고, 지운 자리에 낙서를 그린 뒤, 손대지 않은 원본 사진을 정답으로 삼는 순서입니다. 에이전트는 이 쌍 만드는 스크립트를 CPU 모래상자에서 쓰고 시험한 뒤 GPU 작업으로 돌렸고, 쓰는 동안 원본 사진마다 저자와 라이선스를 기록했다.

그렇게 모인 것이 학습용 6,042쌍과 시험용 160쌍이었고, 시험용 중 40쌍은 학습에 전혀 넣지 않은 23개 사물 분류에서 가져왔습니다. 학습 전에는 베이스 모델 점수와 Viggle turbo LoRA를 얹은 점수를 각각 쟀고, 묶음 편집이 한 장씩 편집과 같은 그림을 내는지까지 확인해서 평가 비용을 낮췄습니다. 학습은 A100 하나로 2,000스텝을 1시간 38분에 돌렸고 4달러가 들었으며, 48쌍으로 체크포인트를 견주어 500스텝을 골랐습니다. Viggle turbo LoRA와 6스텝으로 짝지었을 때 그린 자리에 사물이 들어선 비율은 67.5%였고, 한 번 고치는 데 4.7초가 걸렸습니다. 학습에 없던 23개 분류에서도 65.0%와 64.2%로 어슷하게 나와서, 본 적 없는 사물에도 크게 흔들리지 않았습니다. 전체는 하루 조금 넘게 59개 작업이었고 24.30달러였습니다.

여기서 저는 두 가지를 따로 봅니다. 하나는 합성 데이터를 쓰는 솜씨입니다. 지우고 낙서하고 맞추는 식의 합성은 재료를 싸게 불리는 지름길이지만, 같은 버릇이 반복되면 모형이 그 버릇만 외울 수 있습니다. 그래서 학습에 없던 분류를 따로 빼서 재는 눈금이 필요합니다. 65.0%와 64.2%라는 어슷한 숫자는 그 눈금이 살아 있다는 뜻입니다. 다른 하나는 사람 손의 자리입니다. 저자와 라이선스를 한 장씩 기록한 일은 점수에 직접 더해지지 않지만, 나중에 누가 이 재료로 무엇을 해도 되는지 가르는 선이 됩니다. 데이터가 커질수록 이런 선이 먼저 무너집니다. 저는 그래서 재료의 양보다 출처 기록이 오래 남는다는 쪽에 손을 듭니다.

스캔한 사물을 여러 각도로 돌려보며 학습 데이터를 만드는 과정을 그린 단계도
스캔한 사물을 여러 각도로 돌려보며 학습 데이터를 만드는 과정을 그린 단계도

큰 모델의 버릇을 작은 모델에 옮기면 어떻게 될까요

글 맨 앞에 나온 Pocket Rewriter는 증류의 맛을 보여줍니다. 9B 스승이 하던 프롬프트 다듬기를 0.8B와 2B 학생에게 옮기는 일입니다. 순서는 이렇습니다. 먼저 작은 지시 모델로 8,797개의 짧은 이미지 요청을 뽑았는데, 사진과 포스터와 로고와 인포그래픽을 섞고 3분의 1쯤에는 따옴표로 묶은 정확한 문구를 넣었으며, 영어 아닌 언어도 여럿 섞었습니다. 이어서 9B 스승이 A100 하나로 2시간 37분에 걸쳐 그 요청들을 다듬었고 6.50달러가 들었습니다. 걸러서 남긴 1,840개가 학습 재료가 되었습니다.

학생 학습은 A10G에서 0.8B가 12분, 2B가 18분이었고 둘을 합쳐 0.75달러였습니다. 0.8B는 CPU에서 도는 812MB짜리 GGUF 파일로도 나왔습니다. 전체는 약 11시간에 24개 작업이었고 16달러였습니다. 결과는 앞에서 말한 대로 유효 출력 99.7%에 토큰은 4분의 1 수준이었습니다. 저는 이 대목을 읽으며 증류를 전수라는 옛말로 바꿔 봅니다. 스승이 문제를 풀어 보이면 제자가 그 풀이를 따라 익히는 일인데요. 제자가 스승만큼 넓게 알 필요는 없고, 다듬기라는 한 가지 버릇만 몸에 익히면 됩니다. 좁게 익히니 몸이 가벼워지고, 몸이 가벼우니 CPU라는 작은 방에도 들어갑니다.

Agate 실험은 같은 전수를 더 빡빡하게 밀어붙인 경우입니다. Logolabs의 Agate Preview 002는 260M짜리 텍스트 이미지 모델이라 브라우저에도 들어가지만, 안내를 곁들인 50스텝, 곧 100번의 네트워크 통과가 필요합니다. 저자는 이를 4번 통과로 줄여 달라고 했습니다. 첫 시도는 155,000장의 학습 이미지를 latent로 미리 깔고 안내를 모델에 구운 뒤, 스텝을 16에서 8로, 다시 4로 단계적으로 줄이는 순서였고 A100에서 돌아갔습니다. 4스텝 학생은 같은 4스텝으로 돌린 스승을 GenEval과 FID에서 앞섰고, 이어서 브라우저용 ONNX로 내보냈습니다. 첫 시도는 약 13시간에 22달러였습니다. 두 번째 시도에서는 스승이 16스텝으로 만든 24,000쌍을 더해 4스텝 학생을 한 시간쯤 더 다듬었고, GenEval이 0.509에서 0.536으로 올랐습니다. 50스텝 스승의 0.563에는 못 미치지만 통과 횟수는 4분의 1입니다. 두 번째는 약 8시간이었고, 둘을 합치면 37달러였습니다.

그렇다면 증류는 언제 쓰고 언제 말까요. 제 답은 이렇습니다. 스승의 버릇이 분명하고, 그 버릇을 재는 자가 있을 때 씁니다. Pocket Rewriter에는 유효 출력 비율과 토큰 양이라는 자가 있었고, Agate에는 GenEval과 FID라는 자가 있었습니다. 자가 없으면 증류는 흉내에 그칩니다. 스승처럼 보이는 말을 흉내 내지만, 어디가 나아졌는지 아무도 모르기 때문입니다. 그리고 증류에는 허락의 문제도 붙습니다. 큰 모델에서 뽑은 풀이를 작은 모델에 옮겨도 되는지는 라이선스와 이용 조건이 가릅니다. 기술을 논하기 전에 쓸 수 있는 재료인지부터 따지는 일이 요즘 들어 더 자주 필요합니다.

분홍색 낙서가 사진 속 조명과 어울리는 사물로 바뀌는 과정을 그린 개념도
분홍색 낙서가 사진 속 조명과 어울리는 사물로 바뀌는 과정을 그린 개념도

103달러라는 숫자를 어떻게 읽어야 할까요

여섯 모델의 계산 비용을 한 줄에 세우면 감귤 진단 1.90달러, Huggy LoRA 7.60달러, Pocket 재작성 16.05달러, 시점 궤도 LoRA 16달러, Doodle in LoRA 24.30달러, Agate 4스텝 두 차례 합계 37달러이고, 다 합치면 103달러쯤 됩니다. 저는 이 합계를 싸다는 말로 덮지 않고 나눠서 읽었습니다. 돈이 어디에 쓰였는지가 다음 프로젝트의 예산이 되기 때문입니다. 감귤은 시험 사진 335장과 두 epoch 학습이 돈을 가른 자리였고, 카메라는 24,722장을 만드는 CPU 작업과 90분짜리 A100 학습이 돈을 가른 자리였습니다. 낙서는 6,042쌍을 짓는 손과 1시간 38분짜리 학습이 돈을 가른 자리였고, 재작성은 8,797개를 다듬는 2시간 37분이 돈을 가른 자리였습니다. 같은 16달러라도 어디에 썼는지가 다르면 다음에 아낄 자리도 달라집니다.

이 대목에서 저희가 새 아키텍처를 볼 때 쓰는 눈금을 함께 봅니다. 저희는 벤치마크 숫자만 보지 않고, 무엇이 바뀌었고 그 변화가 시스템에서 어떤 비용 구조를 만드는지를 함께 봅니다. Pocket 0.8B가 토큰을 4분의 1로 쓴다는 말은 요금표의 말이 아니라 서빙의 말입니다. 토큰이 줄면 같은 GPU에서 더 많은 요청을 받거나, 같은 요청을 더 싼 자리로 옮길 수 있습니다. 812MB GGUF가 CPU에서 돈다는 말도 같은 맥락입니다. GPU 대기 줄이 아니라 남는 CPU에서 돌릴 수 있으면, 밤사이 쌓인 요청을 아침 전에 비우는 식의 운영이 됩니다. Agate를 ONNX로 내보내 브라우저에서 돌린다는 말 역시 서버 왕복을 지운다는 뜻입니다. 키를 누를 때마다 그림이 바뀌는 자리에서는 왕복을 지우는 편이 점수를 올리는 일보다 체감이 큽니다.

물론 같은 연산량이라고 같은 값은 아닙니다. A100 한 시간과 A10G 한 시간은 요금이 다르고, 같은 A100이라도 묶음 크기와 정밀도와 양자화에 따라 벽시계 시간과 처리량이 갈립니다. 그래서 저는 이 글의 비용 표기를 GPU와 CPU 작업 요금이라는 조건과 함께 읽었습니다. 조건을 빼고 103달러만 들고 다니면 다음 프로젝트에서 어긋납니다. 사무실에서 쓰는 전기와 공장에서 쓰는 전기가 다른 것처럼, 학습용 계산과 서빙용 계산도 다른 자리에서 돕니다. 학습은 한 번 내는 돈이고 서빙은 매일 내는 돈입니다. 학습이 싸도 서빙이 비싸면 남는 장사가 아니고, 학습이 비싸도 서빙이 싸면 오래 쓸수록 남습니다. 이 셈이 서면 작은 모델이 왜 작은지가 설명됩니다.

큰 프롬프트 교정 모델에서 작은 CPU용 학생 모델로 지식이 옮겨가는 증류 흐름도
큰 프롬프트 교정 모델에서 작은 CPU용 학생 모델로 지식이 옮겨가는 증류 흐름도

합성 데이터를 돌려쓰면 무엇이 남을까요

여기까지 읽으면 합성 데이터가 만능처럼 보일 수 있습니다. 그런데 저는 여기서 조금 의심했습니다. 스승이 만든 풀이로 제자를 가르치고, 그 제자가 만든 풀이로 다음 제자를 가르치면 무엇이 남을까요. 붕괴라는 말이 가리키는 것이 바로 이 지점입니다. 같은 버릇을 돌려쓰면 처음에는 매끈해지지만, 돌릴수록 바깥 세상의 결이 지워지고 모형은 자기 말투만 굳힙니다. Pocket 재작성에서 8,797개를 뽑은 뒤 1,840개만 남긴 대목이 그래서 눈에 밟힙니다. 뽑는 일보다 거르는 일이 결과를 가른다는 뜻이기 때문입니다. 중복을 덜고 오염을 덜고 사람 손으로 확인하는 일을 빼면, 재료는 싸게 불어나지만 눈금은 조용히 무너집니다.

주인의 문제도 남습니다. 스승 모델에서 뽑아낸 풀이를 누구 것으로 볼지, 그 풀이로 만든 학생을 어떻게 나눠도 되는지는 라이선스와 이용 조건이 정합니다. brief에 원본 사진마다 저자와 라이선스를 적게 한 대목이 이런 맥락에서 읽힙니다. 점수가 먼저가 아니라 쓸 수 있는지가 먼저입니다. 베이스가 바뀌는 속도도 빚이 됩니다. Qwen Image 2.1이 나오자마자 없던 카메라 LoRA를 만들었다는 말은 뒤집으면 베이스가 바뀌면 맞춤도 따라가야 한다는 뜻입니다. 버전 하나가 올라가면 파이프라인이 멈추는 자리가 생기고, 데이터 만드는 스크립트부터 평가 자까지 손을 봐야 합니다. 맞춤 모델이 많아질수록 이 손질이 쌓입니다. 그래서 맞춤은 만드는 값보다 모시는 값이 더 자주 듭니다.

견고함과 안전을 증명하는 일도 따로 있습니다. 감귤에서 52.8%라는 숫자는 335장이라는 시험지 위의 숫자이고, 낙서에서 67.5%라는 숫자는 160쌍이라는 시험지 위의 숫자입니다. 시험지를 바꾸면 숫자가 바뀝니다. 특히 시험에 없던 23개 분류에서 어슷하게 나왔다는 결과는 반갑지만, 그것 하나로 바깥세상 전체를 보증할 수는 없습니다. 저는 이 결과보다 그 뒤의 나눔이 더 오래 간다고 봅니다. 학습과 시험을 가르고, 본 적 없는 분류를 따로 빼고, 묶음과 낱장을 견주는 식의 나눔 말입니다. 이런 나눔이 있어야 숫자를 읽을 수 있고, 숫자를 읽을 수 있어야 배포를 결정할 수 있습니다. 배포는 점수가 아니라 조건의 문제이기 때문입니다. 어느 조명에서, 어느 말투로, 어느 양으로 들어와도 같은 자리를 지키는지를 묻는 일입니다.

그래서 다음에 만들 모델은 무엇인가요

글 끝에서 저자는 비결을 길게 말하지 않습니다. 만들고 싶은 모델과 쓸 수 있는 데이터에서 출발하고, 작은 예산과 베이스라인과 연기 테스트를 붙이고, 돌아온 결과를 읽고 상한을 올리라고 합니다. 만든 것은 X에 올리고 Gradio와 Hugging Face를 태그하라고 덧붙입니다. 저는 이 맺음이 거창하지 않아서 마음에 들었습니다. 맞춤 모델은 선언이 아니라 수리이기 때문입니다. 어디가 새는지 재고, 맞는 재료를 가져오고, 고친 뒤에 다시 재는 일을 반복하는 것입니다.

제가 앞으로 보고 싶은 것은 세 가지입니다. 첫째는 평가 자의 공유입니다. 335장과 160쌍과 1,844쌍 같은 눈금이 각자의 카드에만 남지 않고, 같은 밭을 보는 사람들끼리 같은 자를 쓰게 될까요. 같은 자를 쓰면 맞춤끼리 견줄 수 있고, 견줄 수 있으면 다음 재료를 고르기 쉬워집니다. 둘째는 실패 기록의 공유입니다. 48개 작업과 59개 작업이라는 숫자 뒤에는 빠진 패키지와 잘못된 경로가 있습니다. 이 실패를 다음 brief의 Verified facts로 옮기는 일이 쌓이면, 에이전트는 같은 구덩이에 빠지지 않습니다. 셋째는 작은 자리에서의 오래 쓰기입니다. 812MB 파일이 CPU에서 돌고 4스텝 모델이 브라우저에서 도는 그림은 점수표 바깥의 쓰임입니다. 이런 쓰임이 쌓이면 맞춤 모델은 실험이 아니라 가구가 됩니다. 매일 쓰는 의자처럼요.

그렇다면 사람의 역할은 무엇일까요. 에이전트가 학습과 평가와 게시를 대신하는 자리에서도, 무엇을 재고 무엇을 믿고 얼마까지 쓸지를 정하는 일은 사람에게 남습니다. 450단어에서 2,000단어로 늘어난 brief가 그 증거입니다. 말을 길게 한 것이 아니라 책임을 글로 적은 것입니다. 저는 그래서 이 글을 모델 만드는 법이 아니라 일을 맡기는 법에 대한 글로 읽었습니다. 없던 모델을 기다리지 않고 직접 만드는 일은, 결국 무엇을 맡기고 무엇을 끝까지 쥐고 있을지를 고르는 일입니다. 다음에 여러분이 만들 모델은 어느 밭의 어떤 아침을 지키나요. 그 질문에 답하는 brief부터 쓰면, 에이전트는 그다음부터 돕습니다.

데이터센터 GPU와 CPU 브라우저라는 서로 다른 실행 자리를 나란히 그린 배치 개념도
데이터센터 GPU와 CPU 브라우저라는 서로 다른 실행 자리를 나란히 그린 배치 개념도

참고 자료

  1. The model that didn't exist, so you made it yourself · huggingface.co

    리뷰 원문