실행하는 모든 GPU를 위한 VRAM 임대 서비스
요약
GPU 메모리 부족(OOM) 문제를 해결하기 위해 'Berth'라는 VRAM 임대 서비스를 개발했습니다. 이 시스템은 여러 AI 엔진이 하나의 GPU 자원을 공유할 때, 우선순위에 따라 자동으로 리소스를 할당하고 이전 프로세스에게 언로드 및 종료를 요청합니다.
핵심 포인트
- 여러 AI 모델을 동시에 실행할 때 발생하는 OOM 문제를 해결함.
- Berth는 엔진 간의 GPU 자원 할당 순서와 우선순위를 관리하는 데몬입니다.
- 프로세스 종료 후에도 남아있는 VRAM까지 강제로 해제하여 안정성을 높였습니다.
- Linux + NVIDIA 환경에서만 사용 가능하며, API 기반으로 설계되었습니다.
저는 llama-swap이라는 채팅 모델을 실행하고, 수동으로 시작하는 두 번째 엔진과 ComfyUI를 하나의 RTX 4090에서 사용합니다. 가끔 이 세 가지가 동시에 로드될 때 하나는 CUDA out of memory로 인해 실패합니다. 저는 이것에 지쳐서 Berth라는 것을 만들었습니다. 각 엔진은 berth run을 통해 시작됩니다. 이는 데몬에게 카드를 요청하고 순서를 기다립니다. 더 높은 우선순위의 엔진이 GPU를 원하면, Berth는 현재 소유자에게 언로드하도록 요청합니다: 먼저 llama-swap의 unload URL을 사용한 후, SIGTERM, 그리고 SIGKILL을 사용합니다. nvidia-smi가 메모리가 해제된 것을 보여줄 때까지 카드를 다음 엔진에 넘겨주지 않습니다. 프로세스가 종료되더라도 VRAM을 한동안 붙잡고 있을 수 있기 때문에, Berth는 드라이버를 기다리며 종료를 무시합니다. 참고 사항: Linux + NVIDIA 환경에서만 사용 가능합니다. Windows 빌드는 있지만 아직 지원되지 않습니다. - 데몬당 하나의 카드만 사용 가능합니다. 두 개의 GPU가 있는 경우, Berth는 둘 다 인벤토리하지만 하나만 스케줄링합니다. - 대시보드에는 인증 기능이 없습니다. 루프백(loopback) 또는 Tailscale 뒤에 두고 사용하세요. - 저는 llama-swap, llama.cpp, Ollama, 그리고 ComfyUI 스타일의 핸드오프를 매일 실행합니다. vLLM, SGLang, LM Studio, TabbyAPI, LocalAI 리더들을 라이브 설치가 아닌 문서화된 API를 기준으로 테스트했습니다. 만약 특정 환경에서 잘못 읽는 부분이 있다면, 엔드포인트 출력과 함께 이슈를 열어주시면 제가 수정하겠습니다. berth. /u/Distinct-Pie2389 [link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기