Originally published at three.dev.
회사 어딘가에 지난달 청구서에 전월보다 높은 항목이 있고, 아무도 그 이유를 정확히 말할 수 없습니다. 제품은 변하지 않았고, 사용자 수도 변하지 않았으며, 사람들이 한 유일한 행동은 모델의 새 버전으로 이동하는 것뿐이었는데, 그것이 더 좋았고 목록 가격(list price)이 3분의 1 저렴했기 때문입니다. 그럼에도 불구하고 청구액은 늘어났습니다.
올봄 Stanford, Berkeley, Carnegie Mellon, Microsoft 연구원 그룹은 이와 관련된 놀라운 사실에 수치를 부여했습니다. 테스트한 모델 쌍 전반에 걸쳐 목록 가격이 낮은 모델이 실행하는 데 32% 더 많은 비용이 들었으며, 최악의 경우 최대 28배나 많이 들었습니다.
그 발견은 광범위하게 공유되었고 그럴 자격이 있었지만, 이것은 잘못된 모델을 선택하는 것에 대한 이야기입니다. 우리가 이해하고 싶었던 것은 훨씬 덜 눈에 띄는 케이스, 즉 아무것도 선택하지 않았을 때 발생하는 경우입니다. 동일한 기능, 동일한 프롬프트, 동일한 공급업체(vendor), 그리고 이미 비용을 지불하고 있던 모델의 다음 버전입니다.
의견은 찾기 쉬웠으므로, 우리는 대신 측정하기로 결정했습니다. 이 게시물을 위해 우리는 많은 제품이 가지고 있는 기능을 모방하는 워크로드를 구성했는데, 기술 문서 단락을 가져와서 일반적인 작업을 수행하는 리딩 어시스턴트(reading assistant)입니다: 한 문장 요약, 논문을 읽지 않은 사람을 위한 두 문장 설명, 숫자 답안이 있는 질문, JSON으로 추출, 스페인어로 번역.
문서는
모델은 단어당 요금을 부과하지 않습니다. 대신 텍스트를 잘게 자르는 단위(pieces)에 대해 요금을 부과하는데, 업계에서는 이를 토큰(tokens)이라고 부릅니다.
이러한 분할 작업은 단어별로 이루어지지 않습니다. 모델을 학습시키기 전에 각 모델에는 수만 개 정도의 고정된 어휘집(vocabulary)의 토큰들이 제공됩니다. 이 어휘집은 'the'나 'model' 같은 일반적인 단어는 하나의 토큰으로 처리하고, 'convolutions'와 같이 희귀한 단어는 두세 개의 토큰으로 조합되도록 선택되었습니다. 이러한 분할 작업을 수행하는 모델의 부분이 바로 토크나이저(tokenizer)이며, 새로운 버전의 모델은 종종 새로운 어휘집을 가지고 나오기 때문에 같은 텍스트라도 다른 수의 토큰으로 나뉘게 됩니다.
이 모든 것의 시작점이 된 문장, 즉 논문에서 자신들의 발명품을 소개하는 문장은 다음과 같습니다: "우리는 순환(recurrence)과 합성곱(convolutions)을 완전히 배제하고 오직 어텐션 메커니즘(attention mechanisms)에만 기반한 새로운 간단한 네트워크 아키텍처인 트랜스포머(Transformer)를 제안합니다." Sonnet 4.6은 이 문장을 28개의 토큰으로 자릅니다. 이를 대체한 버전인 Sonnet 5는 완전히 동일한 문장을 48개로 자릅니다.
The same sentence, chopped by two versions of the same model: Sonnet 4.6 uses 28 tokens and Sonnet 5 uses 48. Across the workload Sonnet 5 needs 1.37x the tokens, from 1.17x on JSON to 1.40x on Spanish.
문장의 내용이나 의미는 아무것도 변하지 않았습니다. 토크나이저만 바뀌었고, 토큰 단위로 비용을 지불하기 때문에 같은 문장을 읽는 데 이제 71% 더 많은 토큰이 필요하게 된 것입니다.
얼마나 더 필요한지는 보내는 콘텐츠에 따라 다릅니다. 오른쪽 막대 그래프가 보여주듯이, 산문(prose)과 스페인어(Spanish)가 가장 큰 영향을 받고, 코드(code)와 JSON은 가장 적게 받습니다. 그리고 전체 작업 부하를 통틀어 볼 때 1.37배에 달했습니다. 이것이 Sonnet만의 특이점도 아닙니다. 동일한 가격으로 책정된 두 버전인 Opus 4.6과 Opus 4.7조차 같은 텍스트에서 1.40배의 차이를 보입니다.
따라서 버전 간에는 일종의 교환 비율(exchange rate)이 존재하며, 이는 가격표 어느 곳에도 인쇄되어 있지 않습니다.
청구서에 도달하지 못한 가격 절감분
Anthropic은 6월에 Sonnet의 가격을 3분의 1로 인하했습니다. Anthropic은 Sonnet 4.6을 입력 토큰당 3달러, 출력 토큰당 15달러로 책정했으며, Sonnet 5는 각각 2달러와 10달러에 출시되었습니다. 만약 사용자가 변경 없이 전환 후 청구액이 3분의 1로 떨어졌다고 가정했다면, 아마도 확인해보지 않았을 것입니다.
Sonnet 4.6 to Sonnet 5: input and output prices fall 33%, but the bill for the same 191 requests rises 4%, from $1.58 to $1.65 per 1,000 requests.
사고(thinking) 기능을 두 버전 모두 끈 상태에서 191개의 요청을 보냈을 때, 리스트 가격은 33% 하락했지만 청구액은 4% 상승했습니다. 두 모델 모두 기본 설정(defaults)으로 두었을 때, 즉 변경하지 않는 기본 설정에서는 6% 상승했습니다.
이러한 변화의 일부는 이전 섹션에서 언급된 환율 때문인데, 입력 토큰이 1.37배 증가했기 때문입니다. 더 큰 부분은 출력에서 발생했습니다. 출력은 모델이 작성하는 내용뿐만 아니라 읽는 내용에도 정교하게 적용되기 때문에 1.66배 증가했으며, 또한 Sonnet 5가 더 많은 내용을 담고 있기 때문이기도 합니다.
동일한 단락과 동일한 지침을 사용했을 때, 한 문장 요약은 청구된 토큰 수 기준으로 48개에서 90개로 늘어났고, 두 문장 설명은 82개에서 160개로 늘어났습니다. 공급업체들은 읽는 토큰 대비 5배 높은 비율로 작성되는 토큰에 대해 비용을 청구합니다(2달러 대 10달러). 따라서 더 긴 답변이 돈의 대부분을 차지했습니다: 출력은 업그레이드 전에는 청구액의 약 3분의 2를 차지했지만, 이후에는 70% 이상을 차지했습니다.
Sonnet 5가 더 나은 모델입니다. 이전에 사용하던 모델도 사실 질문에 모두 답했지만, 여기서는 품질 향상을 보여줄 수는 없고 손실된 것이 없다는 것만 보여드릴 수 있습니다. 우리가 보여드릴 수 있는 것은, 아무도 건드리지 않은 기능에 적용된 33%의 가격 인하가 더 큰 청구서로 이어졌다는 것입니다.
추가 비용이 발생한 곳
다음으로 우리는 더 어려운 경우, 즉 동일한 가격을 두 번 지불하는 상황을 살펴보았습니다. 세 쌍의 조합이 해당됩니다. Sonnet 5에서 Sonnet 5.5로의 전환은 두 경우 모두 2달러와 10달러이며, GPT-6 Sol에서 GPT-6.1 Sol도 마찬가지입니다. 우리는 이 네 가지 경우에 대해 각각 191개의 요청을 기본 설정과 가장 저렴한 설정으로 보냈습니다.
Opus 4.6에서 Opus 4.7로의 업그레이드는 두 경우 모두 $5와 $25이며, 이는 우리가 생각하는 방식으로 진행했던 오래된 업그레이드였습니다. 따라서 오직 내용 잘림(chopping)과 답변 길이만 변경될 수 있었습니다. 그런 다음 우리는 각 청구서를 그 원인별로 하나씩 분리했습니다.
Four ways a bill moves while the price per token stands still: the chopping (+40% input tokens), the longer answer (+51% output tokens), the default that thinks (+7% on the bill), and the setting that vanished (+14% on the bill).
내용 잘림(The chopping). 이것은 사람들이 들었던 누수 현상이며, 이 두 쌍에서는 Sonnet 5와 5.5가 토크나이저를 공유하고 두 GPT-6 Sol도 마찬가지이기 때문에 0%입니다. 하지만 가격은 변하지 않았습니다. Opus 4.6과 Opus 4.7 모두 $5와 $25로 책정되어 있으며, 동일한 191개 요청에 대해 새로운 버전의 입력 토큰이 40% 더 많았습니다. 나머지 세 가지 누수 현상이 사람들을 놀라게 합니다.
더 긴 답변(The longer answer). 새 버전은 항상 그런 것은 아니지만, 같은 질문에 대해 더 많이 작성하는 경향이 있습니다. Opus 4.7은 생각 기능을 끄고 Opus 4.6과 동일한 가격으로 진행되었음에도 불구하고, 동일한 191개 요청에 대해 51% 더 많은 출력 토큰을 작성했으며, 두 누수 현상 사이에서 청구액은 47% 더 높게 나왔습니다. 어느 버전도 생각 기능을 사용하지 않는 기본 설정(defaults)에서는 격차가 35%로 줄어드는데, 이는 Opus 4.6이 기본 설정에서 더 많이 작성하기 때문입니다.
저부하 상태의 GPT-6.1 Sol은 저부하 상태의 GPT-6 Sol보다 12% 더 많이 작성했고 비용도 8% 더 들었습니다. 반면 Sonnet 5.5는 가장 저렴한 설정에서 일부 작업에서는 약간 짧고 다른 작업에서는 약간 긴 답변을 작성함으로써, Sonnet 5의 가장 저렴한 설정과 정확히 동일한 청구서를 생성했습니다.
생각 기능을 사용하는 기본 설정(The default that thinks). 기본 설정으로 두었을 때, Sonnet 5.5는 전체 답변이 단일 숫자인 질문을 포함하여 요청 중 12%에서 답변하기 전에 추론하는 것을 결정했습니다. 공급업체는 추론 과정을 출력으로 청구하므로, 청구액은 전반적으로 7% 상승했고, 생각 기능이 순수 오버헤드인 사실 기반 질문에서는 50% 상승했습니다. 요청된 내용 중 어느 것도 이러한 내용을 요구하지 않았습니다. 모델의 합리적인 기본 설정 개념이 바뀌었고, 송장도 그에 따라 움직였습니다.
사라진 설정. GPT-6 Sol은 none이라는 추론(reasoning) 설정을 제공했으며, 팀들은 이 설정을 중심으로 가장 저렴한 요청을 조정했습니다. 하지만 GPT-6.1 Sol에는 해당 설정이 없습니다. 어제까지 한 팀이 신중하게 조정한 요청이 오늘 오류로 돌아오고, 그에 가장 가까운 대체재인 low는 14% 더 비싸고 답변하는 데 세 배 이상의 시간이 걸립니다.
GPT-6 Sol at reasoning none costs $0.90 per 1,000 requests. GPT-6.1 Sol rejects none, and its lowest setting, low, costs $1.02, 14% more.
적어도 이 경우는 오류로 눈에 띄게 실패합니다. 다른 경우들은 전혀 실패하지 않습니다. 몇 주 후에 청구서 상의 숫자로 도착할 뿐입니다.
저희는 각각의 비용을 측정했으며, 이들이 하나의 깔끔한 숫자로 합쳐지지는 않습니다. 이것이 바로 핵심입니다. 청구서는 그중 하나를 통해서든 아니면 네 가지 모두를 통해 누출될 수 있지만, 정직한 가격표에는 어느 것도 표시되지 않습니다.
양방향으로 작용하다 (It goes both ways)
이것들이 업그레이드가 항상 더 비싸다는 것을 의미하지는 않습니다. 이 요청들에서 GPT-6.1 Sol의 기본값은 새로운 버전이 추론을 덜 수행하기 때문에 GPT-6 Sol의 기본값보다 6% 저렴했습니다. 그리고 전체적으로 7% 더 비용이 들었던 Sonnet 업그레이드도 JSON 추출에서는 12% 더 저렴했고, 사실 질문(fact questions)에서는 50% 더 비쌌습니다.
Sonnet 5 to Sonnet 5.5 at the same price, change in cost by task: fact questions +50% on defaults, summary +10%, translation +8%, explanation +8%, JSON extraction -12%.
추론을 끄면 순위가 바뀌는데, 하단 막대에서 볼 수 있듯이: 기본값 대비 8% 더 비쌌던 설명(explanation) 작업은 추론을 끄면 12% 더 저렴합니다. Sonnet 5.5의 비용이라는 것은 없습니다. 중요한 것은 사용자의 작업과 설정에 따라 얼마가 드는가이며, 이 숫자는 같은 기능의 두 작업 사이에서 마이너스에서 플러스로 변할 수 있습니다.
동일한 191개의 요청이 두 공급업체 모두로 전송되었기 때문에, 이 실행은 우리가 의도하지 않았던 비교 또한 가능하게 합니다: 동일한 $2와 $10에서 가장 새로운 모델들 간의 비교입니다. Sonnet 5.5는 GPT-6.1 Sol보다 53%에서 61% 더 비쌌으며, 그 격차 대부분은 다시 환율 때문이었습니다.