Rgpu: PyTorch 및 CUDA를 위한 원격 GPU 실행

Rgpu는 개발자가 로컬 클라이언트에 애플리케이션 로직을 유지하면서 원격 NVIDIA 머신에서 GPU 가속 워크로드를 실행할 수 있게 해주는 프레임워크입니다. 이를 통해 사용자는 CUDA 설치가 없는 머신(예: macOS 장치)에서도 원격 하드웨어에서 PyTorch 연산을 실행하고 텐서를 보유할 수 있습니다.

두 가지 실행 경로: PyTorch 디바이스 및 CUDA Shim

Rgpu는 원격 GPU 실행을 워크플로우에 통합하는 두 가지 방법을 제공합니다:

  • PyTorch 디바이스: 이는 더 간단한 통합 경로입니다. PyTorch 프로그램이 rgpu 디바이스를 선택하여 TCP를 통해 torch 연산을 실행할 수 있게 합니다.
  • CUDA Shim: 이 경로는 기존 Linux CUDA 프로그램(기본 CUDA PyTorch 포함)을 위해 설계되었습니다. libcuda, CUDA 런타임, cuBLAS, cuBLASLt 및 cuDNN에 대한 shim을 제공하여 호출을 원격 서버로 리디렉션함으로써 기존 바이너리가 수정 없이 작동할 수 있게 합니다.

구현 및 배포

Rgpu는 rgpu-run 런처가 연결 및 터널 구성을 처리하는 클라이언트-서버 아키텍처를 활용합니다.

PyTorch 빠른 시작

PyTorch 디바이스를 사용하려면 사용자는 pip install rgpu를 통해 라이브러리를 설치하고 텐서를 생성할 때 디바이스를 rgpu로 지정합니다:

import torch
import rgpu

x = torch.ones(4, device="rgpu")
print((x * 2).sum().item())

실행은 원격 호스트에 대한 SSH 터널을 관리하는 rgpu-run 명령을 통해 처리됩니다:

rgpu-run --host user@gpu-host --ssh-port 2222 -i ~/.ssh/gpu_key python smoke.py

보안 고려 사항

PyTorch 및 CUDA shim 프로토콜 모두 기본적으로 연결을 인증하거나 암호화하지 않습니다. 통신을 보호하려면 rgpu-opserver를 기본 localhost 바인드로 유지하고 모든 트래픽을 SSH 터널을 통해 라우팅해야 합니다.

프로젝트 구조

Rgpu 저장소는 여러 기능 구성 요소로 구성되어 있습니다:

구성 요소 목적
client/ CUDA 클라이언트 shim 및 전송
server/ CUDA 서버 및 디스패치
common/ 공유 프로토콜 및 생성된 API 메타데이터
python/ PyTorch 디바이스 및 런처
codegen/ CUDA 헤더 파서 및 소스 생성기

기술 비평 및 커뮤니티 피드백

Rgpu는 하드웨어를 애플리케이션에서 분리하는 유연한 방법을 제공하지만, 일부 커뮤니티 구성원은 성능 오버헤드에 대한 우려를 제기했습니다.

이는 무의미합니다. 이 수준에서 추상화하면 시스템에서 스톨에 가장 민감하지 않은 부분이 가장 많은 지연을 받게 되기 때문입니다. 엔진의 피스톤이 5블록 떨어져 있고 토크를 전송하는 것과 같습니다. 전체 엔진이 5블록 떨어져 있고 조향 입력만 전송하는 것과는 다릅니다.

이 비평은 작업 수준이 아닌 연산 수준에서 추상화함으로써 시스템이 스톨에 매우 민감한 연산에 상당한 지연을 도입할 수 있으며, 기존 원격 실행 방법에 비해 고성능 훈련 워크로드에 대한 유용성을 제한할 수 있음을 시사합니다.

SUMMARY: Rgpu는 Python 애플리케이션이 로컬 클라이언트 머신에 유지되는 동안 PyTorch 텐서 및 CUDA 연산을 원격 NVIDIA GPU에서 실행할 수 있게 해주는 오픈 소스 도구입니다.

TITLE: Rgpu: PyTorch 및 CUDA를 위한 원격 GPU 실행

Sources

관련

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