블로그6분 읽기

판단 한 줄에 LLM을 통째로 태우고 있었어요

톤 게이트에 TypeSafe Jev 층을 붙이면서 배운 것. 출력 토큰 없이 확률만 주는 모델이 BERT 분류기와 뭐가 다른지, 어디까지 맡겨도 되는지 정리했어요.

판단 한 줄에 LLM을 통째로 태우고 있었어요 대표 이미지

우리 블로그와 랜딩 카피에는 톤 규칙이 있어요. 무생물을 주어로 쓰지 않기, 명사로 문장 끝내지 않기 같은 것들이죠.

그걸 정규식으로 잡는 게이트를 먼저 만들었어요. 문자열 모양은 잘 잡는데, 뜻은 못 보더라고요. "시즌이 쌓여요"가 왜 어색한지는 정규식이 알 수가 없거든요.

그래서 문장 판정 세 개를 모델한테 넘겼습니다. 여기서 알게 된 게 하나 있어요. 저는 예/아니오 하나 받자고 LLM을 통째로 돌리고 있었어요. 답은 한 글자인데 청구서는 수천 토큰이었죠.

판단만 파는 모델이 뭔가요

TypeSafe가 내놓은 Jev는 글을 쓰지 않아요. 출력 토큰이라는 게 아예 없습니다.

대신 세 가지만 돌려줘요. 후보 중에 뭘 고를지(Choice), 몇 점인지(Score), 예인지 아니오인지(Noul). 전부 확률 숫자로 나옵니다.

그래서 가격표가 이상하게 생겼어요. 입력은 100만 토큰에 0.042달러인데, 출력은 무료예요. 쓸 출력이 없으니까요. 응답은 평균 0.1초쯤 걸립니다.

카너먼이 말한 빠른 사고와 느린 사고를 떠올리면 편해요. 긴 추론을 돌리는 모델이 느린 쪽이라면, Jev는 반사적으로 튀어나오는 쪽을 맡습니다. 회사가 System One이라고 부르는 이유죠.

LLM과 Jev를 나란히 돌린 데모 화면

BERT 분류기랑 뭐가 다른가요

처음 들었을 때 제일 먼저 든 생각도 그거였어요. 해커뉴스 500개 가까운 댓글에서도 같은 질문이 제일 많았고요.

재미있게도 만든 사람이 그냥 인정합니다. "결국 제로샷 분류기 아니냐"는 요약에 창업자가 그대로 맞다고 답했어요.

그래서 질문은 "분류기냐"가 아니라 "분류기인데 왜 새로우냐"가 됩니다. 답은 두 군데예요.

첫째, 라벨을 문장으로 바꿉니다. BERT 계열은 분류 기준을 바꾸려면 데이터를 다시 모아 학습시켜야 하죠. 제 게이트는 규칙이 바뀔 때마다 질문 문장만 고쳐요.

둘째, 확률을 믿을 수 있게 훈련했습니다. 분류기가 뱉는 0.97은 보통 과신이에요. LLM한테 "확신하세요?"라고 물어보는 건 더 못 믿고요. Jev는 0.8이라고 하면 실제로 열 번 중 여덟 번쯤 맞는 쪽으로 맞춰져 있습니다.

BERT 분류기LLM 프롬프트Jev
라벨 바꾸기재학습문장 수정문장 수정
확률 신뢰과신 잦음자기평가라 불안보정 학습됨
출력라벨토큰 수천 개확률 숫자
비용·속도비쌈

한 가지 같이 적어둡니다. 발표 자료의 "환각 0%" 차트는 논란이 많았어요. 타입을 안 틀린다는 뜻이지 내용이 맞다는 뜻이 아니거든요. 승인하면 안 될 걸 승인해도 스키마는 멀쩡합니다.

대신 검증된 건 따로 있어요. 한 개발자가 306회 판정을 돌렸는데, Jev가 틀린 2건은 전부 신뢰도 0.20.3 구간이었고 비교군 LLM이 틀린 3건은 전부 0.91.0 구간이었습니다. 틀리긴 둘 다 틀려요. 한쪽만 틀릴 때 티를 냅니다.

확률을 믿어도 되는 이유

여기서 RLCD가 나와요. Reinforcement Learning for Calibrated Decisions, 보정된 판단을 위한 강화학습입니다.

이름 때문에 헷갈리기 쉬운데, 학계에 먼저 있던 RLCD와는 다른 거예요. 그쪽은 Contrastive Distillation이고 여전히 텍스트를 생성합니다. 약자만 같아요.

사람 선호로 학습하면(RLHF) 모델이 듣기 좋은 답으로 쏠려요. 정답 검증으로 학습하면(RLVR) 맞다 틀리다는 배우는데 확신의 세기는 안 배우고요. 보정 학습은 "얼마나 확신하는가"를 직접 맞힙니다.

RLHF, RLVR, RLCD 학습 경로 비교

그래서 제 코드에 0.8이라는 숫자를 쓸 수 있었어요. 확률이 보정돼 있지 않으면 임계값은 의미가 없거든요.

숫자는 어디까지 말해주나요

회사가 공개한 벤치마크를 그대로 옮기면 이렇습니다.

워크플로Jev 정확도비용최고 LLM 정확도비용
고객 응대76.0%$0.000178.3%$0.0323
보안 사고 분류61.7%$0.000166.2%$0.0574
에이전트 관측71.6%$0.000376.6%$0.0575
인보이스 처리61.8%$0.001179.1%$0.2152

고객 응대는 2.3%p 차이에 비용이 300배 쌉니다. 인보이스는 17%p가 벌어지고요.

그러니까 "Jev가 LLM보다 낫냐"는 질문 자체가 틀렸어요. 어느 판단을 싼 층으로 내릴 수 있냐가 실제 질문입니다.

정확도와 비용의 파레토 곡선

제 게이트에 붙일 때 정한 것들

실제로 붙여보니 코드보다 정책이 더 오래 걸렸어요.

세 가지를 정했습니다.

  • 전부 경고로만. 승인된 카피에 돌려 오탐이 0인 걸 볼 때까지 차단하지 않아요.
  • 코드가 먼저 거릅니다. 물어볼 가치가 있는 조각만 올려요. 짧은 라벨은 애초에 안 보냅니다.
  • 모델이 죽어도 게이트는 삽니다. Jev 층이 실패해도 정규식 층은 끝까지 돌아요.

길이 기준에서 한 번 데였어요. 8자 미만은 거르게 뒀더니 "시즌이 쌓여요"가 7자라 그냥 통과하더군요. 대표 예문이 게이트를 비껴가는 걸 보고 7로 내렸습니다.

못 하는 것도 분명해요

공식 문서가 직접 인정하는 약점이 있어요. Jaggedness, 능력이 들쭉날쭉하다는 뜻입니다.

어려운 걸 맞히고 쉬운 걸 틀려요. 비슷해 보이는 두 문장에 성능이 다르게 나오기도 하고요.

그래서 벤치마크 표를 다시 보게 됩니다. 17%p 벌어지는 일에 단독으로 세우면 안 되는 거예요.

싸지면 덜 쓰는 게 아니라 더 씁니다

모델 이름이 제번스에서 왔습니다. 석탄 기관이 효율적으로 바뀌자 석탄 소비가 줄기는커녕 폭발했다는 그 경제학자요.

저도 똑같이 됐어요. 판단이 비쌀 땐 정규식으로 때우고 넘어갔는데, 싸지니까 규칙 세 개를 다 모델한테 물어보고 있습니다. 아마 더 늘겠죠.

전통 소프트웨어, 에이전트, AI 내장 소프트웨어 구조 비교

판단 한 줄에 LLM을 통째로 태우던 습관은 이제 접어도 될 것 같아요. 비싼 모델을 어디에 쓸지 고르는 일이 설계가 됩니다.

FAQ

자주 묻는 질문

Jev는 BERT 같은 분류 모델과 뭐가 다른가요?
라벨을 프롬프트로 즉석에서 바꿀 수 있고, 돌려주는 확률이 보정(calibration) 학습을 거쳤다는 점이 달라요. BERT는 라벨을 바꾸려면 재학습해야 하고, 확률은 자주 과신합니다.
RLCD가 논문에서 본 그 RLCD인가요?
아니에요. TypeSafe의 RLCD는 Reinforcement Learning for Calibrated Decisions이고, 학계의 RLCD(Reinforcement Learning from Contrastive Distillation, arXiv 2307.12950 / ICLR 2024)와는 이름만 같습니다.
판단을 전부 Jev에 맡겨도 되나요?
워크플로마다 달라요. 공식 벤치마크에서 고객 응대는 최고 LLM과 2.3%p 차이인데, 인보이스 처리는 17%p 벌어집니다. 차이가 큰 쪽은 사람이나 LLM이 받는 2차 층을 남겨두세요.