GPU VPS와 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으로 나타납니다.
산술 연산을 신뢰하기 전 초당 토큰 수 측정하는 방법
위의 모든 내용은 하나의 측정값에 기반합니다. 이 값을 3배 틀리게 측정하면 결과도 3배 틀려집니다. 실제 사용할 모델과 양자화 방식을 적용하여, 임대한 카드에서 직접 측정하십시오.
Ollama는 다음 명령 하나로 단일 스트림 수치를 제공합니다.
ollama run qwen3:8b --verbose "Write 400 words about disk latency."--verbose는 답변이 끝난 뒤 타이밍 블록을 출력합니다. 여기서 중요한 줄은 eval rate이며, 이는 생성 속도만을 초당 토큰 수로 나타낸 것입니다. prompt eval rate은 프리필(prefill) 속도로, 일반적으로 훨씬 높게 나타납니다. 실제 측정값은 다음 예시와 다를 수 있습니다.
eval count: 412 token(s)
eval duration: 9.612s
eval rate: 42.86 tokens/s단일 스트림 수치는 비용 모델을 산출할 때 적합하지 않습니다. 여러 요청을 동시에 처리할 수 있는 카드에서 단일 요청만 측정하기 때문입니다. 전체 처리량을 확인하려면 vLLM으로 모델을 서빙하고 서버가 자체적으로 보고하는 처리량을 확인하십시오.
pip install vllm
vllm serve Qwen/Qwen3-8B --max-model-len 8192요청이 처리되는 동안 서버는 보고 주기마다 상태 줄을 로그에 남깁니다. 정확한 필드명은 vLLM 릴리스마다 변경될 수 있으므로, 제 로그가 아닌 사용 중인 버전의 로그를 확인하십시오.
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이 공식에 필요한 수치입니다. 동시 요청을 추가할수록 이 수치는 상승하다가 KV 캐시(vLLM이 VRAM에 유지하는 요청별 어텐션 상태)가 가득 차면 더 이상 오르지 않습니다. 이 한계를 넘어서면 요청이 더 빨리 처리되지 않고 대기열에 쌓이며, 이는 Waiting 수치가 상승하는 것으로 확인할 수 있습니다. vLLM은 부하 생성 도구인 vllm bench serve도 함께 제공합니다. 이 도구의 플래그는 버전에 따라 변경되므로, 블로그 게시물의 명령어를 그대로 복사하지 말고 설치된 버전에서 vllm bench serve --help을 실행하십시오.
테스트가 진행되는 동안 카드의 상태를 모니터링하십시오.
nvidia-smi --query-gpu=utilization.gpu,memory.used,power.draw --format=csv -l 5생성 중에 utilization.gpu이 100%에 가깝다면 처리량 제한에 걸린 것이며, 측정된 수치가 실제 한계치입니다. 만약 수치가 낮게 유지된다면 다른 요소가 병목 현상을 일으키는 것입니다. 동시 요청 수가 너무 적거나, 클라이언트가 느리거나, 모델이 VRAM에 다 들어가지 못해 시스템 RAM으로 일부 오프로드되고 있을 가능성이 있습니다. Ollama와 vLLM은 여기서 매우 다른 트레이드오프를 선택합니다. 동일한 카드에서도 두 도구 간의 성능 격차는 손익분기점을 몇 배나 바꿀 정도로 큽니다.
한 달간의 청구 내역 예시
이 예시는 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백만 개의 출력 토큰을 처리할 때 frontier API의 비용은 375 달러로, 두 방식의 비용 차이는 10달러 이내입니다. 50백만 개의 경우 소형 상용 모델의 비용은 250 달러로 여전히 더 저렴한 선택지입니다. 카드를 한 달의 95% 동안 가동해야 하는 1000백만 개의 출력 토큰 처리 시, 호스팅된 오픈 웨이트 API의 비용은 200 달러가 되어 동일한 임대료와 비교됩니다. 카드가 가장 높은 부하로 작동하는 지점에서도 오히려 비용이 거의 두 배 가까이 높게 나타납니다.
이 마지막 결과는 많은 이들에게 놀라움을 주지만, 이는 우연이 아닙니다. 호스팅된 오픈 웨이트 엔드포인트는 높은 가동률로 운영되는 GPU 클러스터이므로, 그 가격은 포화 상태인 카드 한 장의 비용과 비슷하게 책정됩니다. 카드 한 장을 빌려 최대 부하 미만으로 운영하는 방식으로는 포화 상태의 클러스터 효율을 이길 수 없습니다. 우리가 이길 수 있는 것은 실리콘 가동 시간이 아닌 모델의 성능에 따라 가격이 책정되는 frontier API의 가격 체계뿐입니다.
듀티 사이클별 백만 출력 토큰당 비용
사용량과 듀티 사이클은 동일한 사실을 두 가지 측면에서 바라본 것입니다. 임대료는 시간을 구매하는 비용입니다. 유휴 시간은 아무것도 생산하지 않으면서 비용만 발생시킵니다.
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 오픈 웨이트 모델은 백만 출력 토큰당 0.20 달러, 소형 상용 모델은 5.00 달러, 프런티어 모델은 15.00 달러입니다. 이는 예시일 뿐입니다. 결정을 내리기 전에 오늘의 가격 페이지를 확인하십시오. 만약 토큰 단위 종량제가 아닌 고정 월간 요금제와 비교한다면 구독 비용 산정 방식은 달라지며 손익분기점도 이동합니다.
카드를 최대 성능으로 가동하면 백만 출력 토큰당 비용은 0.35 달러로, 이는 매우 저렴한 수준입니다. 10% 듀티 사이클에서는 동일한 백만 토큰당 3.47 달러가 소요됩니다. 2% 듀티 사이클에서는 17.36 달러가 소요되는데, 이는 동일한 출력에 대해 호스팅된 오픈 모델이 청구하는 0.20 달러와 비교할 때 저렴한 수준이 아닙니다.
대략 10% 듀티 사이클 미만에서는 GPU를 임대하는 것이 더 비싼 선택입니다. 귀하는 0.20 달러에 판매되는 출력을 얻기 위해 백만 토큰당 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-bit 가중치를 사용하는 8B 모델은 약 16 GB 크기이며, 로컬 디스크에서 VRAM으로 로드하는 데 수십 초가 걸립니다. 사용하지 않을 때 서버를 중지하면 대여료는 아낄 수 있지만, 첫 요청마다 대기 시간이 발생합니다. 대기 시간을 피하려고 서버를 계속 켜두면 가동률이 떨어져 토큰당 비용이 상승합니다. 이 상충 관계가 바로 서버리스 추론이 존재하는 이유입니다.
스토리지 및 다운로드. 가중치 파일은 매우 큽니다. 16-bit 8B 모델은 약 16 GB, 4-bit 양자화된 30B 모델은 약 18 GB이며, 16-bit 30B 모델은 24 GB 카드에 아예 올라가지도 않습니다. 상위 모델로 갈수록 한계는 명확해집니다. Kimi K3와 같은 1조 파라미터 규모의 오픈 모델을 실행하려면 가중치만으로도 시간 단위로 대여 가능한 어떤 단일 카드보다 용량이 커집니다. 매달 디스크 비용을 지불해야 하며, 재구축할 때마다 시간도 소모됩니다. 일주일간 실험한 뒤에는 du -sh ~/.cache/huggingface/hub를 실행하십시오. 한 번 시도했던 모든 양자화 파일이 그대로 남아 있어 예상보다 빠르게 용량이 증가합니다.
사용자의 시간. 드라이버와 CUDA 버전 문제, 어제는 잘 작동하던 컨텍스트 길이에서 발생하는 out-of-memory 오류, 챗 템플릿을 변경하는 모델 업데이트 등이 있습니다. 이 모든 것은 토큰당 비용 수치에 나타나지 않으며, 오롯이 사용자의 저녁 시간을 할애해야 해결할 수 있습니다. 이런 서버를 처음 구성한다면, GPU VPS가 실제로 제공하는 것을 미리 읽어보고 한 달 대여를 결정하는 것이 좋습니다.
품질 격차. 이는 가장 큰 숨겨진 비용이자 가격을 매기기 가장 어려운 부분입니다. 8B 오픈 모델은 최첨단(frontier) 모델이 아닙니다. 최첨단 모델이 한 번에 끝낼 작업을 세 번 시도해야 한다면, 유용한 답변 하나당 실제 가격은 차트 수치의 세 배가 되며, 결국 작업에 실패할 수도 있습니다. 가격을 비교하기 전에 직접 프롬프트를 입력해 성능을 비교하십시오. 에이전트 워크로드의 경우, 난이도에 따라 라우팅하고 대량 작업에는 저렴한 로컬 토큰을 사용하는 것이 일반적인 해결책입니다. 이것이 VPS에서 에이전트 비용을 제어하는 방법의 핵심입니다.
잊고 있는 청구 항목. 중지한 시간 단위 GPU 인스턴스라도 연결된 스토리지와 예약된 IP 주소에 대한 요금은 계속 청구될 수 있습니다. 가격 페이지가 아닌 실제 청구서를 확인하십시오.
가격 외의 요소로 셀프 호스팅이 유리한 경우
비용 산출이 결정적인 요인이 아닌 4가지 사례입니다.
- 데이터가 통제 범위를 벗어날 수 없는 경우. 규정 준수 규칙에 따라 제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에서 제공하지 않는 특정 모델을 사용해야 할 때뿐입니다.