내가 AI 모델 셀프 호스팅(Self-Hosting)을 그만둔 이유 (여러분도 아마 그래야 할 것입니다)
요약
개인이 LLM 셀프 호스팅을 시도하며 겪은 막대한 하드웨어 비용, 전기료, 그리고 무엇보다 막대한 시간적 기회비용을 분석합니다. 클라우드 API 대비 성능, 속도, 컨텍스트 길이 측면에서 셀프 호스팅이 갖는 한계를 설명합니다.
핵심 포인트
- 하드웨어 구매 및 유지보수에 예상보다 높은 비용 발생
- 디버깅 및 설정에 소요되는 시간적 기회비용이 매우 큼
- 단일 소비자용 GPU는 클라우드 API의 추론 성능을 따라갈 수 없음
- VRAM 제한으로 인해 긴 컨텍스트 길이를 확보하기 어려움
여기에 기사가 있습니다:
나는 나만의 LLM (Large Language Model)을 호스팅하기 위해 3개월의 시간과 500달러 이상의 GPU 비용을 쏟아부었습니다. eBay에서 중고 RTX 3090을 구매했고, 주말 내내 드라이버를 Ubuntu와 잘 작동하게 만들려 애썼으며, 그 후 Ollama, vLLM, 그리고 text-generation-webui의 세계로 머리부터 뛰어들었습니다. 나는 셀프 호스팅(Self-hosting)이 유일한 길이라고 확신했습니다. 속도 제한(Rate limits)도 없고, 데이터 유출도 없으며, 벤더 종속(Vendor lock-in)도 없습니다. 순수하고 완전한 통제권 말이죠.
내가 틀렸습니다.
단순히 조금 틀린 것이 아니라, 처참하게 틀렸습니다. 그리고 현재 같은 길을 걷고 있는 대부분의 개발자들도 결국 같은 결론에 도달할 것이라고 생각합니다. 그 이유는 다음과 같습니다.
아무도 말하지 않는 숨겨진 비용
나의 실제 비용을 분석해 보겠습니다. 중고 RTX 3090은 450달러였습니다. 파워 서플라이(Power supply) 업그레이드가 필요했는데 여기에 120달러가 들었습니다. PCIe 라이저 케이블(PCIe riser cable), 써멀 페이스트(Thermal paste), 그리고 내 컴퓨터가 제트 엔진 소리를 내는 바람에 교체한 새 케이스 팬까지 합치면 60달러가 추가되었습니다. 단 한 번의 추론(Inference)을 실행하기도 전에 이미 630달러를 쓴 셈입니다.
그다음은 전기 요금이었습니다. 3090은 부하(Load) 상태에서 약 350W를 소모합니다. kWh당 0.12달러의 비용으로 하루 8시간씩 가동하면 한 달에 약 10달러가 추가됩니다. 아주 나쁜 수준은 아니지만, 공짜도 아닙니다.
진짜 치명적인 것은 하드웨어나 전기 요금이 아니었습니다. 바로 나의 시간이었습니다. 나는 그 3개월 동안 문제를 디버깅(Debugging)하는 데 대략 40시간을 보냈습니다. CUDA가 적절한 버전의 PyTorch와 작동하도록 만드는 일, 2,000개 토큰(Token) 생성 중간에 왜 모델의 VRAM이 부족해지는지 파악하는 일, 초당 0.5개 토큰을 더 짜내기 위해 양자화(Quantization) 파라미터를 조정하는 일 등 말이죠. 손실된 생산성을 고려할 때 내 시간 가치를 시간당 약 50달러로 계산한다면, 이는 2,000달러의 기회비용입니다.
이 모든 것이 API를 통해 단돈 몇 푼으로 얻을 수 있는 모델보다 더 느리고 성능이 낮은 모델을 위한 것이었습니다.
성능의 한계는 실재합니다
불편한 진실은 이렇습니다. 여러분의 홈 GPU 설정은 제대로 프로비저닝된 (provisioned) 클라우드 엔드포인트 (endpoint)의 성능을 결코 따라갈 수 없습니다. 저는 Q4_K_M 양자화 (quantization)를 적용한 Llama 3 8B를 실행하고 있었습니다. 단일 3090에서 초당 약 4.5 토큰 (tokens per second)이 나왔습니다. 동일한 모델에 대해 더 낮은 지연 시간 (latency)과 더 높은 처리량 (throughput)으로 초당 50개 이상의 토큰을 제공하는 API 엔드포인트와 비교해 보십시오.
왜 그럴까요? API 제공업체들은 텐서 병렬성 (tensor parallelism), 최적화된 커널 (optimized kernels), 그리고 배치 추론 (batched inference)을 사용하여 A100 또는 H100 클러스터에서 이러한 모델들을 실행하기 때문입니다. 단일 소비자용 GPU로는 이를 재현할 수 없습니다. 절대 불가능합니다.
단순히 속도만의 문제도 아닙니다. 컨텍스트 길이 (context length)의 문제입니다. 저는 8K 컨텍스트에 갇혀 있었는데, 그보다 더 큰 값은 VRAM을 초과했기 때문입니다. 반면, 제가 전환한 API는 별도의 설정 없이도 128K 컨텍스트를 지원합니다. 대규모 코드베이스를 분석하고 문서를 생성하는 저의 사용 사례(use case)에서, 그 차이는 하늘과 땅 차이였습니다.
유지보수 비용 (The Maintenance Tax)
셀프 호스팅 (Self-hosting)은 한 번 설정하면 끝나는 것이 아닙니다. 매주 새로운 모델이 출시됩니다. Meta가 Llama 4를 내놓고, Mistral이 새로운 파인튜닝 (fine-tune) 모델을 출시합니다. 취리히의 어떤 연구자가 CodeLlama의 더 나은 양자화 버전을 발표하기도 합니다. 흐름을 따라가고 싶다면, 끊임없이 새로운 모델을 다운로드하고, 변환하고, 테스트해야 합니다.
그다음은 보안 패치 주기입니다. 어느 날 포트 (port) 방화벽 설정을 잊어버려 제 Ollama 인스턴스가 인터넷에 노출되어 있다는 사실을 깨달았습니다. 누군가 제 GPU에서 임의의 모델을 실행했을 수도 있었습니다. 이는 단순히 창피한 일이 아니라, 책임 소재가 발생하는 위험 요소입니다.
또한 Docker 업데이트로 인해 추론 컨테이너 (inference container)가 깨지거나, SSD 고장으로 모델 가중치 (weights)가 손상되어 (7GB의 데이터를 다시 다운로드해야 했습니다), 정전으로 인해 파일 시스템이 손상되는 문제들도 처리해야 했습니다. 유지보수 비용 (maintenance tax)은 실재하며, 매우 비쌉니다.
셀프 호스팅이 실제로 의미 있는 경우
셀프 호스팅이 결코 올바른 선택이 아니라고 말하는 것은 아닙니다. 정당한 사례들이 있습니다:
- 개인정보에 민감한 애플리케이션 (Privacy-sensitive applications): 의료 기록, 금융 데이터 또는 기밀 정보를 다루고 있다면, 이를 API로 전송하는 것은 컴플라이언스(Compliance, 규제 준수) 측면에서 악몽이 될 수 있습니다.
- 오프라인 환경 (Offline environments): 선박, 원격 연구소 또는 군사 배치용 시스템을 구축하고 있다면, 선택의 여지가 없습니다.
- 실험 (Experimentation): 새로운 데이터로 모델을 미세 조정(Fine-tuning)하려는 연구자라면, 가중치(Weights)와 그래디언트 계산(Gradient computations)에 대한 로컬 액세스가 필요합니다.
- 지연 시간에 민감한 애플리케이션 (Latency-critical applications): 실시간 시스템을 위해 10ms 미만의 응답 시간이 필요하다면, 로컬 모델이 유일한 옵션일 수 있습니다.
하지만 콘텐츠 생성, 코드 보조, 요약, 챗봇, 데이터 추출 등 나머지 99%의 유스케이스(Use cases)에 대해서는 API 방식이 압도적으로 더 낫습니다.
내 마음을 바꾼 수치들
3개월간의 좌절 끝에, 저는 제대로 된 비용 대비 편익 분석(Cost-benefit analysis)을 수행하기로 했습니다. 가장 흔한 유스케이스인 '풀 리퀘스트(Pull requests) 요약'을 대상으로 삼았습니다. 제 로컬 환경에서 100개의 요약을 실행하고, API를 사용하여 100개의 요약을 실행했습니다. 결과는 다음과 같았습니다:
| 지표 (Metric) | 셀프 호스팅 (Self-Hosted) | API |
|---|---|---|
| 총 소요 시간 | 45분 | 4분 |
| ... | ... | ... |
API가 더 빠르고, 더 저렴하며, 더 뛰어났습니다. 비교조차 되지 않았습니다.
그 후 한 달간의 사용량으로 추정해 보았습니다. 한 달에 1,000개의 요약을 처리한다면, 셀프 호스팅 설정은 전기료 약 15달러와 디버깅(Debugging)에 드는 제 시간을 포함한 비용이 들 것입니다. API는 약 20달러가 들 것입니다. 단 5달러의 차이로, 저는 10배 빠른 추론(Inference), 99.9%의 가동 시간(Uptime), 그리고 유지보수 제로(Zero maintenance)를 얻을 수 있었습니다.
계산을 해보니, 저는 스스로 시스템 관리자(Sysadmin)가 되는 특권을 누리기 위해 웃돈을 지불하고 있었다는 사실을 깨달았습니다.
내가 현재 사용하는 것
그 실험 이후, 저는 모든 프로덕션 워크로드(Production workloads)를 API 기반 추론으로 완전히 전환했습니다. 빠른 프로토타이핑(Prototyping)과 오프라인 테스트를 위해 여전히 로컬 Ollama 인스턴스를 유지하고 있지만, 중요한 작업—즉, 제품이나 고객용 도구에 들어가는 모든 것—에 대해서는 API를 사용합니다.
제가 최종적으로 선택한 특정 제공업체(provider)는 tai.shadie-oneapi.com입니다. 이곳은 제가 필요한 모델들(Llama, Mistral, CodeLlama, GPT-4)을 지원하며, 단순한 REST API를 제공하고, 예전에 전기료로만 15달러가 들던 작업을 약 1달러 정도의 비용으로 해결해 줍니다. 지연 시간(latency)은 짧은 생성 작업 시 일관되게 200ms 미만이며, 6개월 동안 사용하면서 단 한 번의 중단(outage)도 없었습니다. 지루할 정도로 안정적이고 저렴합니다. 이것이 바로 제가 인프라(infrastructure)에 기대하는 모습입니다.
핵심 요약 (The Takeaway)
LLM(대규모 언어 모델)을 셀프 호스팅(self-host)할지 고민 중인 개발자라면, 먼저 계산기를 두드려 보십시오. 하드웨어 비용, 전기 요금, 그리고 무엇보다 중요한 여러분의 시간을 계산해 보세요. 여러분 자신의 시간에 얼마나 높은 가치를 두는지 스스로에게 솔직해져야 합니다. 자신이 제어권(control)을 최적화하려는 것인지, 아니면 결과(results)를 최적화하려는 것인지 스스로에게 물어보십시오.
저에게 답은 명확했습니다. 저는 제 침실에서 데이터 센터를 운영하는 척하는 것을 그만두었습니다. 주말마다 CUDA 버전을 붙잡고 씨름하는 것도 그만두었습니다. 대신 더 빠르게 기능을 출시하고 밤에 더 편하게 잠들기 시작했습니다.
여러분도 아마 그래야 할 것입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기