AI Systems Performance Engineering (3)
Introduction
Chris Fregly의 AI Systems Performance Engineering $_[$$_{1}$$_]$ Chapter 4는 GPU와 GPU, node와 node 사이에서 data를 옮기는 통신 계층을 다룬다.
vLLM으로 multi-node serving 환경을 구성하면서 NCCL_SOCKET_IFNAME과 GLOO_SOCKET_IFNAME을 맞추고 NCCL_DEBUG=TRACE로 all-reduce 결과를 하나씩 확인했던 적이 있고 (vLLM Discussion #11353), 그 뒤에 NCCL과 RDMA, RoCE를 정리한 글도 썼다.
H100 8장짜리 node 두 대에서 InfiniBand를 끄고 (NCCL_IB_DISABLE=1) NCCL_SOCKET_IFNAME으로 Ethernet interface를 지정해 multimodal model을 serving했을 때는, NCCL 초기화는 정상적으로 끝났지만 V1 engine의 Ray DAG가 timeout으로 멈추는 문제를 겪었다 (vLLM Issue #27249).
이 장은 같은 주제를 성능 관점에서 다시 다루는데, 통신과 연산을 overlap하는 방법부터 NCCL 환경 변수의 함정, 그리고 추론용 point-to-point library인 NIXL까지 이어진다.
이번 글에서는 Chapter 4 (Tuning Distributed Networking Communication)를 다룬다.