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 저장소

https://github.com/distantmagic/paddler




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

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

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