Olla v0.1.0 - 홈랩 및 온프레미스 추론을 위한 경량 오픈소스 LLM 프록시 (Ollama, vLLM, SGLang
요약
Olla는 홈랩 및 온프레미스 환경에서 Ollama, vLLM 등 여러 LLM 추론 서버를 통합 관리하기 위한 경량 Go 프록시입니다. 이 도구는 모델 인식 라우팅과 부하 분산/장애 복구 기능을 제공하여 단일 엔드포인트의 안정성을 높입니다. 또한 OpenAI 및 Anthropic 호환 API 인터페이스와 상세한 관측 가능성 대시보드를 제공합니다.
핵심 포인트
- 여러 LLM 추론 런타임(Ollama, vLLM 등)을 통합 관리하는 프록시 역할을 수행합니다.
- 모델 인식 라우팅 및 우선순위/라운드 로빈 기반 부하 분산 기능을 제공합니다.
- 건강 검사 및 서킷 브레이커를 통해 높은 신뢰성의 장애 복구(failover)가 가능합니다.
- OpenAI/Anthropic 호환 통합 API로 다양한 클라이언트와의 연동이 용이합니다.
여러분 안녕하세요. 약 18개월 전, 저희는 홈랩과 직장에서 여러 로컬 LLM 추론 서버를 관리하면서 계속 겪던 몇 가지 어려움들을 해결하기 위해 Olla 개발을 시작했습니다. 이전에 개발 초기 단계일 때 이곳에서 공유한 적이 있습니다. 그 이후로 상당히 성장했으며, 방금 v0.1.0(저희의 25번째 버전!)을 출시했습니다. 우리가 해결하려는 문제들은 크게 변하지 않았으며, 이제 일부 고객들이 이를 사용하고 있습니다: 추론 엔드포인트 하나가 다운되면 워크플로우 전체가 멈춥니다. 모델들이 여러 장치, GPU 및 런타임에 분산되어 있지만, 이들을 하나의 플릿(fleet)처럼 쉽게 관리할 방법이 없습니다. Ollama, vLLM, SGLang, llama.cpp 또는 LM Studio 간 전환은 애플리케이션 재설정을 의미합니다. 동일한 모델을 제공하는 여러 장치가 있지만, 통합된 부하 분산(load balancing)이나 장애 복구(failover) 기능이 없습니다. 무엇이 정상인지, 무엇이 실행 중인지, 요청이 어디로 가고 있는지에 대한 가시성이 제한적입니다. 추론 백엔드가 다른 것을 말할 때 OpenAI 또는 Anthropic API를 예상하는 애플리케이션들이 있습니다. vllm이나 sglang이 qwen3.8을 더 잘 제공하는지 실험해 보고 싶습니다. 바로 여기에 Olla가 등장합니다. 이것은 여러분의 애플리케이션과 추론 서버 사이에 위치하는 Go로 작성된 경량 프록시이자 부하 분산기입니다. 현재 수행하는 기능 중 일부는 다음과 같습니다: 모델 인식 라우팅(Model-aware routing): 백엔드 전반에 걸쳐 모델을 자동으로 검색하고, 실제로 해당 모델을 제공하는 장치로 요청을 라우팅합니다. 부하 분산 및 장애 복구: 우선순위(Priority), 라운드 로빈(round-robin) 및 최소 연결(least-connections) 기반의 부하 분산 기능을 건강 검사(health checks)와 서킷 브레이커(circuit breakers)와 함께 제공합니다. 여러 추론 런타임: Ollama, vLLM, SGLang, llama.cpp, LM Studio, MLX, Docker Model Runner, LMDeploy, Lemonade 등 다수 지원. 통합 API: 필요에 따라 변환을 포함하여 OpenAI 호환 및 Anthropic 호환 인터페이스를 제공합니다. Open WebUI, Claude Code 및 기타 클라이언트에게 유용합니다. KV 캐시 지역성(KV cache locality): 적절한 경우 요청을 동일한 백엔드에 유지하는 스티키 세션(Sticky sessions) 기능을 제공합니다. 관측 가능성(Observability): 내장 대시보드, 엔드포인트 상태, 요청 통계 및 Prometheus 메트릭을 제공합니다.
경량 배포: 단일 Go 바이너리 또는 Docker 컨테이너로 구성됩니다. 데이터베이스나 외부 서비스가 필요하지 않습니다.
v0.1.0의 새로운 기능은 무엇인가요? 이번 릴리스는 주로 신뢰성을 개선하고, 혼합된 추론 환경을 운영하는 사용자들에게 Olla를 더욱 유용하게 만드는 데 중점을 두었습니다.
임베딩(embeddings), 재순위 지정(reranking), 분류(classification)를 포함한 Hugging Face Text Embeddings Inference (TEI) 지원이 추가되었습니다. 대시보드가 개선되어 엔드포인트 가시성(endpoint visibility), 사용자 지정 가능한 열, 필터링 및 플릿 통계가 추가되었습니다.
비멱등 요청(non-idempotent requests) 처리 등을 포함하여 사용자 지정 가능한 재시도(retry) 및 장애 복구(failover) 동작이 구현되었습니다. 모델 기능 감지 능력이 향상되었으며, 특히 비전(vision), 도구 호출(tool calling), 임베딩 및 재순위 지정기(rerankers)에 대한 지원이 강화되었습니다.
모델 검색과 활성 추론 요청 간의 동시성 문제(concurrency issues)가 수정되었습니다. 요청 통계가 수정되었고, OpenAI 및 Anthropic 경로 전반에 걸쳐 속도 제한(rate limiting)이 개선되었습니다. 라우팅, 백엔드 검색, 구성 유효성 검사 등 여러 사소한 수정 사항들이 적용되었습니다.
또한 커뮤니티로부터 훌륭한 기여를 받아 매우 고무적이었습니다.
왜 또 다른 LLM 프록시를 구축해야 할까요? 우리는 Kubernetes, 데이터베이스 또는 복잡한 오케스트레이션 스택이 필요하지 않으면서 작고 빠르며 비교적 배포하기 쉬운 무언가를 원했습니다. 또한 저희가 시작했을 때도 그런 종류의 도구가 많지 않았습니다.
우리는 NVIDIA GPU 서버, Mac Studio, DGX Spark 및 다양한 추론 런타임(inference runtimes)을 혼합하여 Olla를 사용해 왔습니다. 특히 여러 대의 머신을 가지고 있고 특정 모델을 어떤 백엔드가 서비스하는지 신경 쓰고 싶지 않을 때 매우 유용합니다.
이는 추론 엔진(inference engines)을 대체하려는 것이 아닙니다. 단지 여러 개의 추론 엔진을 함께 실행하는 과정을 덜 고통스럽게 만들어 줄 뿐입니다.
링크: GitHub: https://github.com/thushan/olla 문서(Docs): https://thushan.github.io/olla/ v0.1.0 릴리스 노트: https://tensorfoundry.io/news/olla-v-1-0-release
만약 여러 개의 로컬 추론 서버를 운영하고 계시다면, 현재 라우팅(routing)과 장애 복구(failover)를 어떻게 관리하고 계신지 듣고 싶습니다.
그리고 언제나처럼, Olla를 사용해 보시고 그 결과(그리고 무엇이 고장 나는지!)를 알려주세요.
작성자: /u/2shanigans [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기