GPU VPS vs API 토큰 비용: 손익분기점 계산법
GPU VPS 임대와 토큰당 API 과금 중 무엇이 더 저렴할까요? 월간 사용량에 따른 비용 역전 지점을 계산하는 공식과 모델별 손익분기점 수치를 정리했습니다. 직접 수치를 대입하여 현재 지출이 최적화된 상태인지 확인해 보시기 바랍니다.
손익분기점의 실제 위치
GPU VPS는 특정 시점에서 토큰당 과금되는 API 비용보다 경제적입니다. 고정된 월 임대료를 해당 월에 실제로 생성한 출력 토큰 수로 나눈 값이, 동일한 토큰을 API로 처리할 때 발생하는 비용보다 낮아지는 지점입니다. 임대료는 변하지 않지만 API 청구액은 요청마다 늘어납니다. 따라서 정답은 항상 월간 사용량에 따라 결정되며, 단순히 '예' 또는 '아니오'로 답할 수 없습니다.
시간당 $0.50인 중급형 GPU VPS(730시간 기준 월 $365)를 예로 들어 계산합니다. 최상위 모델 API와 비교하면 월간 출력 토큰이 24.3백만 개일 때 손익분기점에 도달합니다. 소형 상용 모델과 비교하면 73백만 개입니다. 동일한 규모의 호스팅된 오픈 웨이트 모델과 비교하면 손익분기점에 도달할 수 없습니다. 카드 한 장이 한 달 동안 생성할 수 있는 토큰 양이 교차점에 도달하기에 부족하기 때문입니다.
공개된 손익분기점 연구들은 이 질문에 대한 명확한 답을 주지 못합니다. 2026년 초에 발표된 두 연구는 H200 기준 72%의 지속적 활용률, MI300X 기준 22%에서 48% 사이의 듀티 사이클에서 교차점이 발생한다고 분석했습니다. 두 연구 모두 동일 공급업체의 서버리스 제품과 비교했으며, 독자들이 한 달 동안 지출하는 비용보다 시간당 단가가 훨씬 높은 가속기를 기준으로 삼았습니다. 산술 방식은 동일합니다. 아래 내용은 카드 한 장, 7B에서 30B 범위의 오픈 모델, 그리고 일반적인 종량제 API 요금을 기준으로 다시 계산한 것입니다.
아래의 모든 숫자는 결과값이 아닌 입력값입니다. 각 항목을 본인의 상황에 맞게 수정하십시오.
직접 수치를 대입할 수 있는 공식
cost_per_million = (hourly_rate * 1000000) / (tokens_per_second * 3600 * duty_cycle)
breakeven_millions_per_month = (hourly_rate * hours_per_month) / api_price_per_million
capacity_millions_per_month = (tokens_per_second * 3600 * hours_per_month) / 1000000
required_duty_cycle = breakeven_millions_per_month / capacity_millions_per_month네 가지 입력값이 필요하며, 모두 측정하거나 조회할 수 있습니다.
hourly_rate는 GPU VPS의 시간당 비용으로, 유휴 상태인 시간도 포함합니다. 월 단위로 결제한다면 월 요금을 730으로 나눕니다.tokens_per_second은 실제 동시성 환경에서 서버가 유지하는 총 출력 속도입니다. 벤더 차트에 기재된 단일 스트림 수치가 아닙니다.duty_cycle은 한 달 중 GPU가 토큰을 생성하는 데 사용되는 시간의 비율입니다. 한 달 내내 대여하고 하루에 2시간씩 사용한다면 8.3%가 됩니다.api_price_per_million는 비교 대상이 되는 출력 토큰의 종량제 가격입니다.
챗봇이나 에이전트 작업에서는 출력 비용이 청구서의 대부분을 차지하므로, 이 예시는 양쪽 모두 출력 토큰을 기준으로 가격을 산정합니다. 프롬프트가 길다면 입력 토큰 비용을 양쪽에 추가하십시오. API 측면에서는 청구서에 별도의 항목으로 표시됩니다. 직접 운영하는 서버의 경우, 프리필(prefill) 과정에서 GPU 시간을 소모하므로 이미 더 낮은 측정값인 tokens_per_second으로 반영됩니다.
How to measure tokens per second before you trust the arithmetic
Everything above rests on one measured number. Get it wrong by a factor of three and the answer is wrong by a factor of three. Measure it on the card you are renting, with the model and the quantisation you will really run.
Ollama gives you the single-stream figure in one command:
ollama run qwen3:8b --verbose "Write 400 words about disk latency."--verbose prints a timing block after the answer. The line that matters is eval rate, in tokens per second, which counts generation only. prompt eval rate is prefill speed and is normally much higher. Your numbers will differ from these:
eval count: 412 token(s)
eval duration: 9.612s
eval rate: 42.86 tokens/sSingle stream is the wrong number for a cost model, because it measures one request at a time on a card that can serve many at once. For the aggregate figure, serve the model with vLLM and read the throughput the server reports about itself:
pip install vllm
vllm serve Qwen/Qwen3-8B --max-model-len 8192While requests are in flight, the server logs a status line on every reporting interval. The exact fields move between vLLM releases, so read yours rather than mine:
Avg prompt throughput: 812.4 tokens/s, Avg generation throughput: 396.1 tokens/s, Running: 16 reqs, Waiting: 0 reqs, GPU KV cache usage: 21.7%Avg generation throughput is the number the formula wants. It climbs as you add concurrent requests until the KV cache (key-value cache, the per-request attention state vLLM keeps in VRAM) is full, then it stops climbing. Push past that and requests queue instead of going faster, which you see as a rising Waiting count. vLLM also ships a load generator, vllm bench serve. Its flags change between versions, so run vllm bench serve --help on the version you installed instead of copying a command from a blog post.
Watch the card while the test runs:
nvidia-smi --query-gpu=utilization.gpu,memory.used,power.draw --format=csv -l 5If utilization.gpu sits near 100% during generation, you are throughput-bound and the number you measured is the real ceiling. If it stays low, something else is the limit: too few concurrent requests, a slow client, or a model that does not fit in VRAM and is being partly offloaded to system RAM. Ollama and vLLM make very different trade-offs here, and the gap between them on the same card is wide enough to move your break-even by a factor of several.
한 달 동안의 비용 청구 내역
이 예시는 24 GB GPU VPS를 시간당 $0.50에 임대하여 vLLM으로 8B 오픈 모델을 서비스하는 경우를 가정합니다. 16개의 동시 요청을 처리하며 초당 400개의 출력 토큰을 생성하는 성능을 기준으로 합니다. 임대료는 카드 사용 여부와 관계없이 고정됩니다. 해당 속도로 한 달 동안 카드를 멈추지 않고 가동할 경우 총 1,051백만 개의 출력 토큰을 생성할 수 있습니다.
The data behind this chart
[
{
"output_tokens_millions": 5,
"gpu_vps_usd": 365,
"open_api_usd": 1,
"small_api_usd": 25,
"frontier_api_usd": 75
},
{
"output_tokens_millions": 10,
"gpu_vps_usd": 365,
"open_api_usd": 2,
"small_api_usd": 50,
"frontier_api_usd": 150
},
{
"output_tokens_millions": 25,
"gpu_vps_usd": 365,
"open_api_usd": 5,
"small_api_usd": 125,
"frontier_api_usd": 375
},
{
"output_tokens_millions": 50,
"gpu_vps_usd": 365,
"open_api_usd": 10,
"small_api_usd": 250,
"frontier_api_usd": 750
},
{
"output_tokens_millions": 100,
"gpu_vps_usd": 365,
"open_api_usd": 20,
"small_api_usd": 500,
"frontier_api_usd": 1500
},
{
"output_tokens_millions": 250,
"gpu_vps_usd": 365,
"open_api_usd": 50,
"small_api_usd": 1250,
"frontier_api_usd": 3750
},
{
"output_tokens_millions": 500,
"gpu_vps_usd": 365,
"open_api_usd": 100,
"small_api_usd": 2500,
"frontier_api_usd": 7500
},
{
"output_tokens_millions": 1000,
"gpu_vps_usd": 365,
"open_api_usd": 200,
"small_api_usd": 5000,
"frontier_api_usd": 15000
}
]GPU 비용은 365 달러로 평탄하게 유지되는데, 이는 임대료가 카드 사용량에 영향을 받지 않기 때문입니다. 반면 모든 API 비용은 0에서 시작하는 직선 형태를 띱니다. 각 비용 곡선은 정확히 한 번 교차합니다.
월 25백만 개의 출력 토큰을 생성할 때 프론티어 API의 비용은 375 달러이며, 두 방식의 비용 차이는 10달러 이내입니다. 50백만 개의 토큰을 생성할 경우 소형 상용 모델의 비용은 250 달러로, 여전히 더 저렴한 선택지입니다. 카드를 한 달의 95% 동안 가동해야 하는 1000백만 개의 출력 토큰 시점에서, 호스팅된 오픈 웨이트 API의 비용은 200 달러로 고정 임대료와 비교됩니다. 카드가 가장 높은 부하로 작동하는 지점에서조차 직접 임대 방식이 거의 두 배 가까이 비쌉니다.
이 마지막 결과는 사람들에게 놀라움을 주지만, 이는 우연이 아닙니다. 호스팅된 오픈 웨이트 엔드포인트는 높은 가동률로 운영되는 GPU 클러스터이므로, 그 가격은 포화 상태인 카드의 비용과 비슷하게 책정됩니다. 카드를 한 대만 빌려 최대 부하 미만으로 운영하는 방식으로는 포화 상태의 클러스터 운영 비용을 이길 수 없습니다. 우리가 비용 효율성을 확보할 수 있는 부분은 실리콘 사용 시간이 아닌 모델의 성능을 기준으로 가격이 책정되는 프론티어 모델의 가격 정책입니다.
듀티 사이클별 출력 토큰 100만 개당 비용
사용량과 듀티 사이클은 같은 사실을 다른 관점에서 본 것입니다. 임대는 시간을 구매하는 행위입니다. 유휴 시간은 아무것도 생산하지 않지만 비용은 계속 발생합니다.
The data behind this chart
[
{
"label": "100% duty",
"self_host_usd_per_million": "0.35",
"open_api_usd_per_million": "0.20",
"small_api_usd_per_million": "5.00",
"frontier_api_usd_per_million": "15.00"
},
{
"label": "50% duty",
"self_host_usd_per_million": "0.69",
"open_api_usd_per_million": "0.20",
"small_api_usd_per_million": "5.00",
"frontier_api_usd_per_million": "15.00"
},
{
"label": "25% duty",
"self_host_usd_per_million": "1.39",
"open_api_usd_per_million": "0.20",
"small_api_usd_per_million": "5.00",
"frontier_api_usd_per_million": "15.00"
},
{
"label": "10% duty",
"self_host_usd_per_million": "3.47",
"open_api_usd_per_million": "0.20",
"small_api_usd_per_million": "5.00",
"frontier_api_usd_per_million": "15.00"
},
{
"label": "5% duty",
"self_host_usd_per_million": "6.94",
"open_api_usd_per_million": "0.20",
"small_api_usd_per_million": "5.00",
"frontier_api_usd_per_million": "15.00"
},
{
"label": "2% duty",
"self_host_usd_per_million": "17.36",
"open_api_usd_per_million": "0.20",
"small_api_usd_per_million": "5.00",
"frontier_api_usd_per_million": "15.00"
}
]세 개의 API 열은 2026년 8월 기준 일반적인 공개 정가입니다. 호스팅된 8B 오픈 웨이트 모델은 출력 토큰 100만 개당 0.20 달러, 소형 상용 모델은 5.00 달러, 프론티어 모델은 15.00 달러입니다. 이는 예시일 뿐입니다. 결정을 내리기 전에 오늘의 가격 페이지를 확인하십시오. 만약 종량제 토큰 방식이 아닌 고정 월간 요금제와 비교한다면 구독 산정 방식은 다르게 적용되며 손익분기점도 다시 이동합니다.
카드를 최대 성능으로 가동하면 출력 토큰 100만 개당 비용은 0.35 달러로, 이는 매우 저렴한 수준입니다. 듀티 사이클이 10%일 때 동일한 100만 개의 비용은 3.47 달러가 됩니다. 듀티 사이클이 2%일 때 비용은 17.36 달러가 되는데, 이는 호스팅된 오픈 모델이 동일한 출력에 대해 청구하는 0.20 달러와는 비교할 수 없는 수준입니다.
대략 10% 미만의 듀티 사이클에서는 GPU를 임대하는 것이 더 비싼 선택입니다. 귀하는 0.20 달러에 판매되는 출력물에 대해 토큰 100만 개당 3.47 달러를 지불하고 있는 셈이며, 그 차액으로 구매하는 것은 개인 정보 보호와 변동 없는 청구서입니다. 이는 충분히 가치 있는 비용일 수 있습니다. 하지만 가격 측면에서의 이득은 아니므로 이를 비용 절감 항목으로 분류하지 마십시오.
각 API 티어별 손익분기점 물량
The data behind this chart
[
{
"label": "Hosted open 8B API",
"breakeven_tokens_millions": 1825,
"required_duty_pct": 174
},
{
"label": "Small commercial model",
"breakeven_tokens_millions": 73,
"required_duty_pct": 6.9
},
{
"label": "Frontier model",
"breakeven_tokens_millions": 24.3,
"required_duty_pct": 2.3
}
]frontier 티어의 경우 월간 24.3백만 개의 출력 토큰이 필요하며, 이는 해당 카드가 처리할 수 있는 용량의 2.3%에 불과합니다. 이는 매우 낮은 기준입니다. 코딩 에이전트를 운영하는 소규모 팀이 근무 시간 동안만 가동해도 충분히 달성할 수 있습니다.
small commercial 티어의 경우 월간 73백만 개의 토큰, 즉 6.9%의 듀티 사이클이 필요합니다. hosted open-weight 티어의 경우 필요한 듀티 사이클은 174%입니다. 100%를 초과하는 수치는 정의상 도달할 수 없습니다. 한 달에 포함된 시간보다 더 많은 시간을 카드가 가동되어야 하기 때문입니다. 해당 시간당 요금 체계에서 중급형 카드 한 장으로는 이 비교에서 우위를 점할 수 없으므로, 결과를 바꿀 수 있는 유일한 방법은 더 저렴한 카드, 더 빠른 카드, 또는 가격 이외의 다른 이유를 찾는 것뿐입니다.
공식에 숨겨진 비용
이 공식은 GPU 시간과 토큰 비용만을 계산합니다. 실제로는 그 외에도 여러 비용이 발생합니다.
콜드 스타트(Cold starts). 16비트 가중치를 사용하는 8B 모델은 약 16 GB 크기이며, 로컬 디스크에서 VRAM으로 로드하는 데 수십 초가 걸립니다. 사용하지 않을 때 서버를 중지하면 임대료는 아낄 수 있지만, 매번 첫 번째 요청마다 대기 시간이 발생합니다. 대기 시간을 피하려고 서버를 계속 켜두면 가동률이 떨어져 토큰당 비용이 상승합니다. 이러한 상충 관계가 바로 서버리스 추론이 존재하는 이유입니다.
스토리지 및 다운로드. 모델 가중치는 용량이 큽니다. 16비트 8B 모델은 약 16 GB, 4비트로 양자화된 30B 모델은 약 18 GB이며, 16비트 30B 모델은 24 GB 카드에 아예 들어가지도 않습니다. 매달 디스크 비용을 지불해야 하며, 재구축할 때마다 시간 비용도 발생합니다. 일주일간 실험한 뒤에는 du -sh ~/.cache/huggingface/hub를 실행하십시오. 한 번 시도했던 모든 양자화 파일이 그대로 남아 있기 때문에 예상보다 빠르게 용량이 증가합니다.
사용자의 시간. 드라이버 및 CUDA 버전 문제, 어제는 작동하던 컨텍스트 길이에서 발생하는 메모리 부족(OOM) 오류, 채팅 템플릿을 변경하는 모델 업데이트 등이 있습니다. 이 모든 것은 토큰당 비용 수치에 나타나지 않으며, 사용자의 저녁 시간을 할애하여 해결해야 합니다. 이러한 서버를 처음 구성한다면, 한 달 임대를 결정하기 전에 GPU VPS가 실제로 제공하는 것을 읽어보는 것이 좋습니다.
품질 격차. 이는 가장 큰 숨겨진 비용이자 가격을 책정하기 가장 어려운 부분입니다. 8B 오픈 모델은 최첨단(frontier) 모델이 아닙니다. 최첨단 모델은 한 번에 해결할 작업을 8B 모델이 세 번 시도해야 한다면, 유용한 답변 하나당 실제 가격은 차트 수치의 세 배가 되며, 결국 작업에 실패할 수도 있습니다. 가격을 비교하기 전에 직접 프롬프트를 사용하여 성능을 비교하십시오. 에이전트 워크로드의 경우, 난이도에 따라 라우팅하고 대량 작업에는 저렴한 로컬 토큰을 사용하는 것이 일반적인 해결책이며, 이것이 VPS에서 에이전트 비용을 제어하는 방법의 핵심입니다.
잊고 있는 청구 항목. 중지한 시간당 GPU 인스턴스라도 연결된 스토리지와 예약된 IP 주소에 대한 비용은 계속 청구될 수 있습니다. 가격 페이지가 아닌 청구서를 직접 확인하십시오.
가격 외의 요소에서 셀프 호스팅이 유리한 경우
비용 계산이 결정적인 요인이 아닌 네 가지 사례입니다.
- 통제권을 벗어나서는 안 되는 데이터. 규정 준수 규칙에 따라 제3자에게 텍스트를 전송할 수 없는 경우, 토큰당 가격은 고려 대상이 아닙니다.
- 일정에 따른 꾸준한 대량 작업. 매일 밤 6시간 동안 실행되는 배치 분류 작업은 구조적으로 25%의 가동률을 유지하며, 예상치 못한 청구서가 발생하지 않습니다.
- 속도 제한. 본인의 그래픽 카드는 단일 큐를 가지며 온전히 본인 소유입니다.
- API로 제공되지 않는 모델. 특정 파인튜닝이 필요한 경우, 비교할 대상 자체가 존재하지 않습니다.
저렴한 버전을 먼저 테스트하고 싶다면 VPS에서 Ollama로 작은 모델 실행하기에 오후 한나절이면 충분하며, 임대할 그래픽 카드에 맞춰 오픈 모델 규모 산정하기를 통해 실제로 필요한 GPU 사양을 파악할 수 있습니다. GPU 한 달 임대 계약을 맺기 전에 먼저 측정해 보십시오.
FAQ
GPU VPS가 API 비용보다 경제적인 월간 토큰 처리량은 어느 정도입니까?
GPU의 월간 임대 비용을 API의 백만 출력 토큰당 가격으로 나눕니다. 월 365달러인 GPU를 기준으로, 백만 토큰당 15.00달러인 최상위 API와 비교하면 월 24.3백만 출력 토큰에서 손익분기점에 도달합니다. 백만 토큰당 5.00달러인 소형 상용 모델과 비교하면 73백만 토큰입니다. 백만 토큰당 0.20달러인 호스팅 오픈 웨이트 모델의 경우, 중급형 카드 한 대로는 한 달 동안 손익분기점에 도달할 만큼의 토큰을 생성할 수 없습니다.
호스팅 오픈 웨이트 API가 직접 운영하는 GPU보다 저렴한 이유는 무엇입니까?
API 가격은 GPU를 완전히 가동했을 때의 비용에 가깝게 책정되지만, 사용자의 카드는 항상 완전히 가동되지 않기 때문입니다. 수천 건의 동시 요청을 처리하는 제공업체는 서버 가동률을 포화 상태로 유지하므로, 토큰 생성의 한계 비용에 가까운 가격으로 판매할 수 있습니다. 사용자의 카드는 하루 중 대부분 유휴 상태이며, 사용자는 그 유휴 시간까지 비용을 지불합니다. 가동률이 10%일 때 사용자의 비용은 백만 출력 토큰당 3.47달러인 반면, 제공업체는 0.20달러입니다.
입력 토큰도 출력 토큰과 함께 계산해야 합니까?
프롬프트가 길다면 계산에 포함하십시오. 여기에서의 비교는 챗봇이나 에이전트 작업에서 비용을 주도하는 출력 토큰만을 기준으로 합니다. 입력을 추가하면 양쪽 모두의 수치가 변합니다. API 측에서는 청구서에 별도의 낮은 가격 항목으로 표시됩니다. 직접 운영하는 카드의 경우, 프리필(prefill) 과정에서 GPU 시간을 소비하므로 비용은 이미 측정된 초당 총 토큰 수에 포함되어 있습니다. 실제 프롬프트 길이로 측정하면 양쪽을 비교할 수 있습니다.
공식에 필요한 초당 토큰 수를 어떻게 측정합니까?
실제 사용할 환경과 동일하게 모델을 서비스한 뒤, 실제 동시성 환경에서의 총 생성 속도를 확인하십시오. Ollama의 경우 ollama run <model> --verbose은 초당 토큰 단위로 eval rate를 출력하지만, 이는 단일 스트림 기준이므로 배치 처리 서버의 성능을 과소평가하게 됩니다. vLLM의 경우, 서버가 실행 중일 때 로그에 Avg generation throughput가 기록되며 이 수치를 사용해야 합니다. 동시에 nvidia-smi을 확인하십시오. 생성 중에 GPU 사용률이 100%에 가깝지 않다면 아직 최대 성능에 도달하지 못한 것입니다.
사용률이 10% 미만일 때도 GPU VPS를 임대할 가치가 있습니까?
가격 측면에서는 그렇지 않습니다. 가동률 10%일 때 백만 출력 토큰당 3.47달러를 지불하며, 2%일 때는 17.36달러를 지불하게 됩니다. 두 경우 모두 최상위 API를 제외한 이 비교의 모든 종량제 API보다 비용이 높습니다. 이 기준선 아래에서 임대하는 경우는 오직 개인 정보 보호나 API에서 제공하지 않는 모델을 사용해야 할 때뿐입니다.