microsoft/mscclpp

MSCCL++: A GPU-driven communication stack for scalable AI applications

해결하는 문제

MSCCL++는 GPU 간 통신을 더 효율적이고 사용자 정의 가능하게 만들기 위해 설계된 GPU 기반 통신 스택입니다. 특히 대규모 AI 모델(예: LLM)에서 표준 집합 통신 라이브러리가 특정 워크로드(예: LLM 추론에서 프롬프트 처리와 토큰 샘플링의 차이)에 최적화되지 않을 수 있는 분산 GPU 애플리케이션의 복잡성과 성능 저하 문제를 해결합니다.

작동 방식

MSCCL++는 개발자가 GPU 커널 내부에서 직접 통신 로직을 정의할 수 있도록 하는 다층 추상화 시스템을 제공합니다.

  • 채널: GPU 간 피어 투 피어 연결로 "채널"을 사용합니다. 호스트 측에서 정의되지만 GPU 커널 내부의 디바이스 함수로 호출됩니다.
  • 통신 프리미티브: 1사이드, 0복사 동기 및 비동기 프리미티브(put(), get(), signal(), flush(), wait() 등)를 제공하여 원격 GPU로 데이터를 전송할 때 원격 측에서 수신 명령이 필요 없도록 합니다.
  • 채널 유형: PortChannel(호스트 측 프록시를 사용해 DMA 전송을 트리거)와 MemoryChannel(GPU 스레드가 원격 메모리를 직접 읽고 쓰며 낮은 지연 시간을 제공)를 제공합니다.
  • 통합 인터페이스: 하드웨어의 차이를 추상화하여 NVLink, xGMI, InfiniBand를 구분하지 않고 동일한 인터페이스를 제공하며, 동일 노드 또는 다른 노드에 있는 GPU에서도 작동합니다.

대상 사용자

고성능 분산 AI 애플리케이션 개발자, 커널 개발자, 스케일러블 AI 인프라를 구축하는 연구자에게 적합합니다. 특히 SGLang, LMDeploy와 같은 LLM 서빙 프레임워크 또는 TVM과 같은 딥러닝 컴파일러를 개발하는 분들에게 유용합니다.

주요 특징

  • GPU 기반: 통신은 GPU 커널 내부에서 직접 트리거 및 관리할 수 있습니다.
  • 0복사 전송: 사용자 버퍼 간에 직접 데이터를 전송하여 대역폭과 메모리를 절약합니다.
  • 하드웨어 독립성: 로컬 및 원격 노드에서 NVLink, xGMI, InfiniBand에 대해 통합된 추상화를 제공합니다.
  • 사용자 정의 프록시 지원: GPU 트리거 처리를 최적화할 수 있는 사용자 정의 호스트 측 프록시를 지원합니다.
  • Python 바인딩: Python 기반 AI 애플리케이션과의 통합을 용이하게 하는 인터페이스를 포함합니다.

관련

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