lupinemachines/lupine

LUPINE is a GPU over IP bridge allowing GPUs on remote machines to be attached to CPU-only machines.

LUPINE – GPU-over-IP 브리지

기능 설명 – LUPINE은 GPU가 없는 CPU 전용 머신이 네트워크를 통해 실제 GPU가 있는 다른 머신으로 GPU 드라이버 호출을 전달하여 CUDA 기반 프로그램을 실행할 수 있게 합니다. 원격 GPU는 드라이버 라이브러리(libcuda.so, libnvidia-ml.so 등)가 클라이언트에 설치된 것처럼 로컬에 나타납니다.

사용 방법

  1. GPU가 장착된 호스트에서 서버 실행 (Docker 이미지 lupine-server). TCP 포트 14833에서 수신 대기하고 HTTP/2 RPC 인터페이스를 통해 GPU를 노출합니다.
  2. CPU 전용 호스트에서 클라이언트 실행 (Docker 이미지 lupine-client). 환경 변수 LUPINE_SERVER=<host>:14833을 설정합니다. 클라이언트는 LUPINE 심 라이브러리를 사전 로드하므로 모든 CUDA 프로그램(예: nvidia-smi, PyTorch, 사용자 정의 커널)이 자동으로 원격 GPU와 통신합니다.
  3. 선택적 추가 기능 – 추적(LUPINE_TRACE), TLS(HTTPS 프록시로 서버 앞단 구성), 또는 LUPINE_SERVER 엔드포인트의 쉼표로 구분된 목록을 제공하여 여러 서버에 걸친 멀티 GPU를 활성화할 수 있습니다.

주요 기술 포인트

  • 드라이버 전용 전달 – 저수준 드라이버 호출만 네트워크를 통해 전송됩니다. 애플리케이션은 자체 CUDA 런타임을 계속 사용합니다.
  • 심 – LUPINE은 드라이버 호출을 RPC로 변환하는 경량 "심" 라이브러리(libcuda.so.1, libnvidia-ml.so.1, NCCL, nvSHMEM)를 제공합니다.
  • 압축 및 유지 연결 – HTTP/2 본문은 Zstd로 압축됩니다. TCP 유지 연결(유휴 60초, 프로브 15초)은 유휴 흐름 시간 초과를 방지합니다.
  • 메트릭 – /metrics 엔드포인트는 추가 모니터링 에이전트 없이 Prometheus 호환 GPU 사용 통계를 노출합니다.
  • 정상 종료 – SIGTERM은 진행 중인 CUDA 호출을 드레인하고 LUPINE_CHECKPOINT_LIBRARY로 제공된 체크포인트 공급자를 선택적으로 실행합니다.
  • 멀티 GPU / 멀티 서버 – 여러 서버의 장치는 단일 순서 목록으로 표시됩니다. 서버 간 cuMemcpyPeer는 클라이언트를 통한 스테이징으로 작동합니다.
  • 플랫폼 지원 – Linux, macOS, Windows(amd64 및 arm64)용 사전 빌드 클라이언트 번들. Linux 클라이언트는 manylinux_2_28 ABI(glibc ≥ 2.28)를 대상으로 합니다.

일반적인 워크플로우

# GPU 호스트
docker run --rm --gpus all -p 14833:14833 \
  ghcr.io/lupinemachines/lupine-server:cuda-13.3.1-ubuntu24.04

# CPU 전용 호스트 – 모든 CUDA 프로그램 실행
docker run --rm -it -e LUPINE_SERVER=<gpu-host>:14833 \
  ghcr.io/lupinemachines/lupine-client:cuda-13.3.1-ubuntu24.04 nvidia-smi

PyTorch 기반 클라이언트 이미지(Dockerfile은 README에 표시)를 빌드하고 원격 GPU에 대해 작은 훈련 작업(microgpt_train)을 실행할 수도 있습니다.

대상 사용자 – 별도의 데이터 센터나 클라우드 VM에 강력한 GPU에 액세스할 수 있지만 로컬에 전체 CUDA 드라이버 스택을 설치하지 않고 가벼운 CPU 전용 워크스테이션에서 개발하려는 연구자 또는 엔지니어.

제한 사항

  • 내장 인증이 없습니다. 보안이 필요한 경우 서버를 TLS 종료 프록시 뒤에 배치해야 합니다.
  • 서버 간 피어 투 피어 복사는 클라이언트를 통해 스테이징되므로 추가 호스트 메모리 트래픽이 발생합니다.
  • 이전 Linux 배포판(CentOS 7, Ubuntu 18.04)은 더 이상 지원되지 않습니다.

자세한 정보 – 저장소에는 체크포인트 공급자, 추적 및 심을 로컬에서 컴파일하는 방법에 대한 자세한 문서가 포함되어 있습니다. Prometheus 메트릭은 http://<server>:14833/metrics에서 사용할 수 있습니다.


위의 모든 정보는 프로젝트 README에서 직접 가져온 것입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • Dispatch
  • 프로젝트