promptchain: 단일 GPU에서 로컬 LLM을 교체하기 위한 Python 라이브러리 및 MCP 서버
요약
단일 GPU 환경에서 여러 로컬 LLM을 효율적으로 관리하고 교체할 수 있는 Python 라이브러리 promptchain을 소개합니다. VRAM 관리를 위한 정책 엔진과 통합 스트리밍 기능을 제공하며, MCP 서버를 통해 에이전트가 직접 모델 라이프사이클을 제어할 수 있습니다.
핵심 포인트
- VRAM 최적화를 위한 자동 퇴거(Auto-eviction) 및 우선순위 정책 지원
- 로컬 및 클라우드 백엔드 간 통합 스트리밍 인터페이스 제공
- MCP 서버 지원으로 Claude Code 등 에이전트가 모델 스왑 직접 수행 가능
- LRU 방식 및 모델 고정(pinning) 등 정교한 모델 관리 기능
몇 주 전, 저는 다양한 백엔드에 대해 모델 로딩 및 언로딩을 처리하는 Streamlit 앱인 promptchain에 대해 게시물을 올렸습니다. 피드백을 확인한 후, 저는 이를 로컬 LLM(LM Studio, Ollama, 모든 OpenAI 호환 서버)을 구동하기 위한 작은 Python 라이브러리로 만들기로 결정했습니다. 이 라이브러리는 로컬 및 클라우드 백엔드 전반에 걸친 통합 스트리밍 (unified streaming) 기능과 VRAM 관리를 위한 실제 정책 엔진 (policy engine)을 제공합니다. 또한, 에이전트가 이 모든 것을 직접 제어할 수 있도록 MCP 서버도 함께 제공합니다.
이 라이브러리가 해결하려는 문제: 단일 소비자용 GPU에서 하나 이상의 로컬 모델을 실행하려면 수동으로 계속 로딩 및 언로딩을 하거나, 프로젝트마다 직접 스왑 로직 (swap logic)을 작성해야 합니다. 저는 단순히 단일 서버 프록시 (single-server proxy)가 아니라, 실제 정책 (policy)이 적용된 상태에서 여러 백엔드를 아우르는 클라이언트를 원했습니다.
라이브러리 사용법:
python
from promptchain import ModelManager, Endpoint
mgr = ModelManager(policy="auto", max_resident=1, idle_unload=300)
mgr.register("drafter", Endpoint("lmstudio", "gemma-4-4b"))
mgr.register("coder", Endpoint("ollama", "qwen3-coder:30b"), priority=10)
with mgr.use("coder") as m:
for token in m.stream(user_message="write fizzbuzz in rust"):
print(token, end="")
VRAM 예산 또는 상주 모델 수 제한(resident-count cap) 하에서 우선순위(priority) 및 LRU(Least Recently Used) 방식에 의한 자동 퇴거(Auto-eviction), 완전한 제어를 위한 수동 모드, 모델이 절대 퇴거되지 않도록 하는 고정(pinning), 사전 워밍 (pre-warming), 전체 그룹의 원자적 스왑인 (atomic swap-in) 기능을 지원합니다. 스트리밍 또한 로컬과 클라우드 전반에 걸쳐 통합되어 있습니다. 즉, Ollama를 사용하든 Claude를 사용하든 resp.usage / resp.reasoning / resp.tool_calls가 동일하게 작동합니다.
MCP 서버:
pip install "promptchain[mcp]"
동일한 정책 엔진이 도구(tools)로 노출됩니다: ps (현재 상주 중인 모델 확인), load / unload / swap, 그리고 generate. 이를 Hermes Agent, Claude Code, Claude Desktop 또는 MCP를 지원하는 다른 모든 도구에 연결하면, 사용자가 직접 스크립트를 짜는 대신 에이전트가 자신의 모델 라이프사이클 (lifecycle)을 직접 관리하게 됩니다. 즉, 일반적인 언어로 무엇이 로딩되어 있는지 확인하고 같은 턴에 모델을 스왑할 수 있습니다. 기존의 두 모델 Streamlit 앱 (Prompter → Coder 파이프라인)은 여전히 존재하며, 이제 이 라이브러리를 사용하여 구동됩니다.
저장소(Repo): https://github.com/atharva557/Prompt-Chaining
PyPI: https://pypi.org/project/promptchain/
제출자: /u/atharva557 [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기