Paddler, llama.cpp 서버 최적화를 위한 오픈소스 로드 밸런서

Paddler, llama.cpp 서버 최적화를 위한 오픈소스 로드 밸런서

Paddler, llama.cpp 서버 최적화를 위한 오픈소스 로드 밸런서

소개

Paddler는 llama.cpp 서버를 위해 설계된 상태 유지형 로드 밸런서 및 리버스 프록시입니다. 기존의 라운드 로빈이나 최소 연결 수와 같은 전략은 llama.cpp 서버에는 효과적이지 않습니다.

Paddler는 각 서버의 사용 가능한 슬롯을 인지하여 요청을 효율적으로 분배하고, 에이전트를 통해 개별 서버의 상태를 모니터링하여 최적의 성능을 제공합니다. 또한, 서버의 동적 추가/제거를 지원해 자동 스케일링 도구와의 통합이 가능합니다.

기존의 로드 밸런서들이 요청을 단순히 분배하는 것과 달리, Paddler는 각 서버의 상태와 가용 슬롯을 고려해 요청을 분배합니다. 이는 서버 리소스의 최적화와 더불어 서버 장애 발생 시 빠르게 대처할 수 있는 장점을 제공합니다. 예를 들어, NGINX나 HAProxy와 같은 전통적인 로드 밸런서들은 이러한 세부적인 상태 관리를 제공하지 않습니다.

주요 특징

  • 상태 유지형 로드 밸런싱: 각 서버의 가용 슬롯을 인지하여 효율적인 요청 분배

  • 서버 상태 모니터링: 에이전트를 통해 각 서버의 상태를 실시간으로 모니터링

  • 동적 서버 관리: 서버의 동적 추가/제거 지원

  • 자동 스케일링 지원: AWS 등 클라우드 제공자의 자동 스케일링 도구와 통합 가능

사용 방법

설치

Paddler를 설치하려면, 최신 릴리스를 releases page에서 다운로드 하거나, 직접 빌드할 수 있습니다. 빌드에는 go>=1.21nodejs가 필요합니다.

$ git clone git@github.com:distantmagic/paddler.git
$ cd paddler
$ pushd ./management
$ make esbuild # dashboard front-end
$ popd
$ go build -o paddler

에이전트 실행

에이전트는 llama.cpp 인스턴스와 같은 호스트에 설치되어야 합니다.

./paddler agent \
    --external-llamacpp-host 127.0.0.1 \
    --external-llamacpp-port 8088 \
    --local-llamacpp-host 127.0.0.1 \
    --local-llamacpp-port 8088 \
    --management-host 127.0.0.1 \
    --management-port 8085

로드 밸런서 실행

로드 밸런서는 에이전트로부터 데이터를 수집하고 외부에 리버스 프록시를 노출합니다.

./paddler balancer \
    --management-host 127.0.0.1 \
    --management-port 8085 \
    --reverseproxy-host 196.168.2.10 \
    --reverseproxy-port 8080

튜토리얼

라이선스

이 프로젝트는 MIT License로 공개 및 배포 되고 있습니다.

Paddler GitHub 저장소




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: