meta-pytorch/monarch

PyTorch Single Controller

Monarch – PyTorch용 분산 액터 프레임워크\n\n개요\n- Python 우선 라이브러리(러스트 코어)로, PyTorch 위에서 액터(서로 메시지를 보낼 수 있는 독립 프로세스)를 실행할 수 있습니다.\n- 액터는 메시(컬렉션)로 구성되며, 브로드캐스트, 포인트 투 포인트 RDMA 또는 일반 RPC 호출을 통해 통신할 수 있습니다.\n- 내장된 내결함성: 액터는 감독 트리를 형성하여 오류가 위로 전파되고 자동으로 복구될 수 있습니다.\n- 선택적 텐서 엔진은 libibverbs(RDMA)를 사용하여 분산 텐서 샤딩과 단방향 GPU/CPU 메모리 전송을 추가합니다.\n\n주요 개념\n| 기능 | 제공 내용 |\n|---|---|\n| 원격 액터 및 메시 | Actor를 상속하는 클래스를 작성하고 메서드에 @endpoint를 데코레이션한 다음 GPU 또는 노드에 여러 복사본을 생성합니다. 호출은 get()할 수 있는 퓨처를 반환합니다.\n| 감독 트리 | 계층적 프로세스 그룹이 실패한 자식을 자동으로 재시작하거나 정리합니다(Erlang/Elixir 감독과 유사).\n| RDMA 전송 | 하드웨어가 지원하는 경우 프로세스 간 GPU/CPU 메모리의 저지연, 제로 카피 이동.\n| 분산 텐서 | torch.Tensor를 액터 간에 샤딩하여 각 액터가 자신의 슬라이스를 처리하고 라이브러리가 기본 통신을 처리합니다.\n\n일반적인 워크플로(README에서)\npython\nfrom monarch.actor import Actor, endpoint, this_host\n\n# 8개 프로세스(GPU당 1개)\nprocs = this_host().spawn_procs({\"gpus\": 8})\n\nclass Trainer(Actor):\n @endpoint\n def train(self, step: int):\n ... # 여기에 훈련 로직\n\ntrainers = procs.spawn(\"trainers\", Trainer) # 8개의 Trainer 액터 생성\nfut = trainers.train.call(step=0) # 브로드캐스트 호출\nfut.get() # 모두 완료될 때까지 대기\n\n\n설치\n- 빌드된 휠: pip install torchmonarch(안정 버전) 또는 --pre로 나이틀리 빌드.\n- 소스 빌드는 uv 패키지 매니저, 나이틀리 러스트 툴체인, 선택적 CUDA/ROCm/RDMA 라이브러리를 사용합니다. 텐서 엔진을 비활성화(USE_TENSOR_ENGINE=0)하여 순수 액터, CPU 전용 설치가 가능합니다.\n- Docker 지원: 휠을 빌드한 후 제공된 Dockerfile.nightly를 사용하여 Kubernetes에 적합한 이미지를 생성합니다.\n\n대상 사용자\n- 많은 GPU나 노드에 걸쳐 PyTorch 훈련 또는 추론을 확장해야 하지만 원시 torch.distributed보다 더 높은 수준의 추상화를 원하는 연구자와 엔지니어.\n- 개별 워커가 충돌하고 자동 복구가 필요한 내결함성 AI 서비스를 구축하는 팀.\n- RDMA 지원 하드웨어에 액세스할 수 있고 초저지연 텐서 샤딩을 원하는 사용자.\n\n문서 및 커뮤니티\n- 호스팅 문서: https://meta-pytorch.org/monarch/ ("Getting started" 튜토리얼 포함).\n- 테스트는 러스트(cargo-nextest)와 Python(pytest) 모두로 작성되었습니다.\n- BSD-3-Clause 라이선스, 타사 RDMA 코드는 호환 라이선스.\n\n결론\nMonarch는 액터 스타일의 분산 프로그래밍, 내결함성, 선택적 고성능 RDMA 텐서 처리를 PyTorch에 확장하는 진정한 프로덕션급 프레임워크입니다. 원시 torch.distributed보다 더 많은 구조와 복원력이 필요한 고급 ML 워크로드를 대상으로 합니다.

관련

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