GPU 1장이 실제로 제공 가능한 인원수입니다.
모델을 담을 수 있는 머신이라고 해서 사용자에게 서비스를 제공할 수 있는 머신인 것은 아닙니다. 가중치는 한 번만 지불하는 통행료이며, 그것을 제외하고 남는 부분이 인원에게 서비스를 제공하기 위해 가진 전체 예산입니다. 그 남는 부분 — 카드의 크기가 아니라 — 이 용량을 결정하며, 메모리 자체보다 훨씬 빠르게 움직입니다.
짧은 답
- 용량은 카드가 아니라 남는 메모리
- 4비트 기준으로 Llama 3.3 70B 모델은 누구에게도 서비스를 제공하기 전에 이미 40 GB를 차지합니다. 그 이후로는 동시 요청 1건마다 2.9 GB씩 더 필요합니다.
- 메모리가 2번 대가를 치르는 이유
- 동일한 카드 1장에서 48 GB에서 240 GB로 늘리면 메모리는 5.0×배, 좌석 수는 35×배가 됩니다. 가중치는 이미 지불이 끝난 상태입니다.
- 후보 목록 중 최악의 선택
- NVIDIA L40S 머신은 월 $714에 동시 요청 2건을 수용합니다 — 좌석당 $357.00입니다.
- 더 저렴하면서 가장 나은 선택
- 4 × NVIDIA L4 머신은 $564에 좌석 19개를 수용합니다 — 더 저렴한 청구서로 좌석당 $29.68입니다.
요약
모델이 들어가는지 알려주는 모든 가이드는 요청 1건에 관한 질문에 답할 뿐입니다. 제품은 요청 1건이 아닙니다. 2명이 동시에 엔드포인트를 사용하는 순간, 머신은 대화의 2번째 사본을 메모리에 올려야 합니다 — 3번째도, 40번째도 마찬가지입니다 — 반면 가중치 자체는 정확히 한 번만 저장됩니다.
그러므로 서비스를 제공할 수 있는 인원 수를 결정하는 것은 카드의 크기가 아닙니다. 카드의 크기에서 모델을 뺀 값을, 대화 1건의 비용으로 나눈 값입니다. 이 두 값은 무엇이든 주문하기 전에 이미 알 수 있으며, 그래서 용량은 머신러닝에서 몇 안 되게 종이 위에서 미리 계산해 정확히 맞힐 수 있는 것 중 하나입니다.
가중치는 통행료입니다. 트래픽과 무관하게 진입 시 한 번만 지불합니다. 사용자가 늘어도 커지지 않고, 돌려받지도 않습니다.
키/값 캐시가 사용료입니다. 동시 요청마다 지불하며, 그 요청이 열려 있는 동안 계속 지불하고, 대화가 길어질수록 커집니다.
용량은 남는 부분을 사용료로 나눈 값입니다. 그래서 메모리가 2배인 머신은 흔히 2배가 아니라 10배 많은 인원에게 서비스를 제공합니다.
그리고 딱 맞는 가장 저렴한 머신이 보통 최악의 선택인 이유. 그 머신이 들어가는 것은 남는 부분이 거의 없기 때문이고, 실제로 돈을 내고 사는 것은 바로 그 남는 부분뿐입니다.
아래 내용은 모두 같은 카탈로그를 대상으로, 4비트에 컨텍스트 8k 기준으로 구성 도구와 동일한 계산을 수행합니다. 메모리 계산식 자체가 생소하다면 별도의 가이드가 있습니다 — 이 페이지는 그 계산식에 2명 이상이 나타나면 무슨 일이 벌어지는지를 다룹니다.
가중치를 제외하고 남는 것
이 사이트의 기준 모델을 가져와 같은 카드로 만든 모든 크기의 노드에 올려 보십시오. 같은 실리콘, 같은 카드당 가격, 그 외 모든 것이 같습니다 — 오직 메모리 양만 다릅니다. 마지막 열 2개가 완전히 다른 속도로 움직이는 것을 지켜보십시오.
| 노드 | 메모리 | 가중치 제외 후 남는 부분 | 동시 요청 | 월 요금 |
|---|---|---|---|---|
| NVIDIA L4 | 24 GB | — | 담지 못함 | $125 |
| 2 × NVIDIA L4 | 48 GB | 8 GB | 2 | $285 |
| 4 × NVIDIA L4 | 96 GB | 56 GB | 19 | $564 |
| 8 × NVIDIA L4 | 192 GB | 152 GB | 52 | $1,106 |
| 10 × NVIDIA L4 | 240 GB | 200 GB | 69 | $1,371 |
첫 번째 행이 이 페이지의 교훈 전부입니다: 가중치조차 담지 못하는 카드는 아무에게도 서비스를 제공하지 못하며, 그것도 근소한 차이가 아닙니다. 그 뒤의 행들은 메모리는 균등한 폭으로 늘지만 좌석은 갈수록 가파르게 늘어나는데, 40 GB의 통행료를 첫 행에서 이미 다 지불했고 다시는 지불하지 않기 때문입니다.
seats = (memory − weights) ÷ cache_per_request. Llama 3.3 70B의 경우 4비트 기준으로 40 GB의 통행료와, 열려 있는 대화 1건당 2.9 GB의 사용료가 발생합니다. 나누기 전에 빼십시오 — 순서를 거꾸로 하면 데모에서는 괜찮아 보였던 머신이 프로덕션에서야 문제를 드러냅니다.
사용자 1명에게 실제로 드는 비용
이번에는 같은 모델들을 구매자가 실제로 정렬하는 방식대로, 즉 저렴한 순서로 정렬했습니다. 마지막 열은 월 가격을 머신이 한 번에 수용할 수 있는 인원 수로 나눈 값입니다 — 데모 이상의 무언가를 구축하는 경우, 머신 2대를 정직하게 비교할 수 있는 유일한 열입니다.
전제 하나를 모든 숫자에 영향을 주기 때문에 미리 밝혀 둡니다: 각 좌석 수는 노드 전체에 걸쳐 있는 모델 인스턴스 1개를 기준으로 하며, 이는 --tensor-parallel-size 플래그가 제공하는 설정입니다. 가중치는 한 번만 저장되고, 카드마다 남는 메모리를 같은 대화 풀에 보탭니다. 대신 같은 노드에서 별도의 사본 2개를 실행하면 통행료를 2번 지불하는 셈이 되어, 전체 좌석 수는 오히려 줄어듭니다.
| 노드 | 메모리 | 월 요금 | 동시 요청 | 사용자당 |
|---|---|---|---|---|
| 2 × NVIDIA L4 | 48 GB | $285 | 2 | $142.50 |
| NVIDIA RTX A6000 | 48 GB | $286 | 2 | $143.00 |
| 2 × NVIDIA RTX 4090 | 48 GB | $416 | 2 | $208.00 |
| 4 × NVIDIA L4 | 96 GB | $564 | 19 | $29.68 |
| 2 × NVIDIA RTX A6000 | 96 GB | $597 | 19 | $31.42 |
| 2 × NVIDIA RTX 5090 | 64 GB | $692 | 8 | $86.50 |
| NVIDIA L40S | 48 GB | $714 | 2 | $357.00 |
| 2 × NVIDIA A100 PCIe | 80 GB | $802 | 13 | $61.69 |
| 4 × NVIDIA RTX 4090 | 96 GB | $814 | 19 | $42.84 |
| NVIDIA A100 PCIe | 80 GB | $1,091 | 13 | $83.92 |
색칠된 2칸을 각자의 가격 열과 비교해 보십시오. NVIDIA L40S 머신은 월 $714에 좌석 2개를 수용하고, 4 × NVIDIA L4 머신은 $564 — 더 적은 비용으로 — 좌석 19개를 수용합니다. 청구서는 0.79×인데 좌석은 10×인 셈이며, 더 비싼 쪽이 대부분의 후보 목록에 남는 이유는 바로 그 머신에서 모델이 카드 1장에 들어가기 때문입니다.
처음 10개 행이 아니라 카탈로그 전체를 놓고 보면, 이 모델의 좌석당 최저가는 월 $2,239의 8 × NVIDIA RTX A6000입니다: 동시 요청 119건, 건당 $18.82. 위 후보 목록의 그 무엇보다 훨씬 큰 청구서지만, 그래도 사용자 1명을 수용하는 가장 저렴한 방법입니다 — 바로 이 문장이 제품 규모를 산정하는 것인지 프로토타입 규모를 산정하는 것인지를 가릅니다.
또 하나의 배수, 컨텍스트 길이
지금까지는 모두 컨텍스트 8k를 전제했습니다. 이 전제가 머신 선택보다 더 큰 영향을 미칩니다. 캐시는 사용자당뿐 아니라 토큰당으로도 지불하므로, 대화를 얼마나 길게 허용하느냐에 따라 같은 노드가 수용하는 인원 수가 완전히 달라집니다.
머신 1대, 모델 4개, 컨텍스트 길이 4가지. 노드는 월 $1,106의 8 × NVIDIA L4입니다 — 모델 4개를 동시에 모두 담는, 당사 카탈로그에서 가장 저렴한 노드이며, 그 덕분에 아래 모든 수치가 동일한 메모리를 기준으로 측정됩니다.
| 모델 | 토큰당 캐시 | 4k | 8k | 32k | 128k |
|---|---|---|---|---|---|
| Llama 3.1 8B | 128 KiB | 325 | 162 | 40 | 10 |
| Qwen 3 32B | 256 KiB | 150 | 75 | 18 | 4 |
| Llama 3.3 70B | 320 KiB | 105 | 52 | 13 | 3 |
| Qwen 3 235B-A22B (MoE) | 188 KiB | 67 | 33 | 8 | 2 |
동일한 머신 1대에서, Llama 3.3 70B 모델은 동시 사용자 105명에서 3명으로 늘어납니다 — 35×배 차이입니다 — 순전히 커맨드라인에서 설정하는 숫자 하나 때문입니다. 하드웨어는 전혀 바뀌지 않았습니다.
여기서 2가지가 따라 나옵니다. 첫째, 눈여겨봐야 할 컨텍스트 열은 모델 카드가 광고하는 값이 아니라 실제로 서비스를 제공하는 값입니다 — 128k를 지원하는 모델이라고 해서 그만큼을 반드시 예약해야 하는 것은 아닙니다. 둘째, 토큰당 캐시는 크기가 비슷한 모델 사이에서도 크게 달라지는데, 이는 파라미터 수가 아니라 어텐션 설계로 정해지기 때문입니다. 그 표에서 가장 큰 모델들이 오히려 가장 작은 캐시를 가진 경우도 있는데, 이는 이 분야 전체에서 가장 의외인 사실입니다.
용량을 되찾는 4가지 방법
얻는 효과는 크고 드는 비용은 적은 순서로 나열했습니다. 첫 번째는 거의 무료나 다름없는데도 거의 항상 활용되지 않은 채 남아 있습니다.
--max-model-len 값을 실제 상한으로 설정하십시오.| 모델 | 16비트 캐시 | 8비트 캐시 | 좌석 증가 |
|---|---|---|---|
| Llama 3.1 8B | 162 | 325 | +163 |
| Qwen 3 32B | 75 | 150 | +75 |
| Llama 3.3 70B | 52 | 105 | +53 |
| Qwen 3 235B-A22B (MoE) | 33 | 67 | +34 |
같은 노드, 같은 가중치, 같은 비용. 유일한 차이는 캐시를 저장하는 정밀도뿐이며, 이것이 팀 하나에 서비스를 제공하는 머신과 제품 하나에 서비스를 제공하는 머신의 차이를 만듭니다.
좌석과 서비스는 별개
위 숫자를 바탕으로 무언가의 규모를 정하기 전에 짚고 넘어가야 할 점이 하나 있으며, 이 페이지가 정직할 수 있는 것은 바로 이 점 덕분입니다. 여기 나오는 모든 수치는 머신이 열어 둘 수 있는 대화 수를 셀 뿐입니다. 그 대화 전부가 빠르게 응답되고 있다는 보장은 아닙니다.
메모리와 대역폭은 서로 다른 2가지 상한입니다. 8 × NVIDIA L4에서 Llama 3.3 70B 머신은 동시 대화 52건을 수용할 여유가 있는 반면, 그 머신에 혼자 접속한 사용자 1명은 초당 약 17 토큰을 봅니다. 좌석 52개를 모두 채운다고 해서 각자에게 초당 17 토큰이 보장되는 것은 아닙니다 — 생성은 동일한 메모리 대역폭을 공유하므로 배칭이 늘수록 전체 처리량은 늘어나지만 사용자별 속도는 떨어집니다. 대역폭 상한은 메모리 상한보다 훨씬 먼저 도달합니다.
다행히 이 2가지 상한은 함께 움직입니다: 가중치를 제외하고 메모리가 많이 남는 머신은, 예외를 빼면 대역폭도 더 넓은 머신인 경우가 대부분입니다. 여유 용량을 기준으로 고른다고 해서 속도를 희생하는 경우는 드뭅니다. 최종적으로 고른 머신에서 서빙 스택을 구성하는 것은 별도의 가이드에서 다루며, 거기서 이 숫자들이 실제 플래그로 바뀝니다.
보유한 사용자 수에 맞춰 고르기
순서대로 나열했습니다. 워크로드를 설명하는 첫 줄에서 멈추십시오.
- 한 번에 요청 1건. 배치 작업, 내부 도구, 개발자 1명. 모델을 카드 1장에 담을 수 있는 가장 저렴한 머신을 사고 여기서 읽기를 멈추십시오 — 이 페이지의 모든 열은 지금 필요하지 않은 질문에 답하고 있습니다.
- 가끔, 소수 인원. 팀용 도구, 초기 단계 제품입니다. 사용자 수가 아니라 피크 동시 요청 수를 계산하십시오: 등록 사용자가 100명이어도 동시 접속자는 소수를 넘는 경우가 드뭅니다. 그렇다면 좌석 수가 그 피크치를 넉넉히 웃도는 가장 저렴한 머신을 고르십시오.
- 실제 트래픽이 있는 실제 제품. 카탈로그를 가격이 아니라 좌석당 가격으로 정렬하고, 컨텍스트 길이는 실제로 제공하는 만큼으로 상한을 두고, 캐시를 8비트로 낮추십시오. 그러면 우승자는 월 가격만으로는 후보 목록에 올리지 않았을 머신일 것입니다.
- 긴 문서 또는 긴 대화. 컨텍스트 표를 먼저 읽고 머신 표를 그다음에 읽으십시오. 32k 이상에서는 캐시가 워낙 압도적이어서, 모델 선택보다 그 뒤에 있는 어텐션 설계가 더 중요합니다.
- 변동이 크고 예측할 수 없는 트래픽. 절대 실패해서는 안 되는 피크치를 기준으로 규모를 정하십시오. 캐시는 바닥나면 빌려올 수 없기 때문입니다 — 대화를 놓을 곳이 없는 요청은 대기열에서 기다립니다. 피크가 드물고 아주 크다면, 한 달에 2번뿐인 스파이크에 맞춘 머신보다 초과분을 위한 토큰당 과금 API가 더 저렴합니다.
어느 줄에서 멈췄든, 다른 무엇보다 먼저 뺄셈을 하십시오: 머신의 메모리에서, 제공할 정밀도 기준으로 모델의 가중치를 뺀 다음, 남는 부분을 보십시오. 그 나머지가 바로 고객이 임대하는 대상입니다. 구성 도구는 당사가 운영하는 모든 노드에 걸쳐 동일한 계산을 수행하며, 한 달치 비용이 얼마인지는 별도로 계산합니다.
다른 가이드
- 비용 · 6분
월 단위 임대가 시간 단위보다 유리한 경우
실제 숫자로 계산한 손익분기점, 시간 단위 가격이 청구서 전까지 감추는 비용 3가지, 그리고 추정치를 3배로 부풀리는 유휴 시간의 함정.
가이드 읽기 - 비용 · 9분
자체 호스팅 대 토큰당 과금 API
토큰당 과금 API와 GPU 임대 사이의 손익분기점을 당사의 실제 가격과 처리량으로 계산했습니다 — 그리고 그 계산이 빠뜨리는 4가지.
가이드 읽기 - 실전 · 11분
노드 1개로 Llama 3.3 70B 서빙
제공받은 머신에서 OpenAI 호환 엔드포인트까지, 중요한 플래그와 처리량을 조용히 절반으로 떨어뜨리는 두 가지 플래그.
가이드 읽기