CoMMA 사용 설정, 사용 중지, 구성

이 가이드에서는 Collective Communication Analyzer (CoMMA) 라이브러리를 사용 설정, 사용 중지, 관리하는 방법을 설명합니다. CoMMA는Google Cloud 서비스의 NCCL 원격 분석을 수집합니다. CoMMA에 대한 자세한 내용은 Collective Communication Analyzer (CoMMA)를 참고하세요.

CoMMA 사용 설정

NCCL gIB 플러그인이 포함된 이미지를 사용하는 경우 CoMMA가 사전 설치되고 사용 설정됩니다. 이러한 이미지 목록은 CoMMA가 사용 설정된 이미지를 참고하세요.

설치 옵션

이러한 이미지를 사용하지 않고 CoMMA를 설치하려면 다음 방법 중 하나를 사용하세요.

설치 방법 지원되는 머신 유형
NCCL Google 인프라 번들 (gIB) 이미지(최신 머신 유형에 권장) A4X Max, A4X, A4 High, A3 Ultra
CoMMA 설치 프로그램 이미지 A4X, A4 High, A3 Ultra
소스에서 빌드 (이전 머신 유형에 필요) GPU가 연결된 A3 Mega, A3 High, A3 Edge, A2 Ultra, A2 Standard, N1

CoMMA 설치

CoMMA를 설치하려면 다음 옵션 중 하나를 선택하세요.

NCCL gIB 이미지

NCCL gIB 이미지를 사용하여 CoMMA를 설치하려면 다음 명령어를 실행하세요.

docker run --rm --name nccl-gib-installer
 --volume /usr/local/gib:/var/lib/gib \
 us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/nccl-plugin-gib install \
 --install-nccl

CoMMA 설치 프로그램 이미지

독립형 Docker 이미지에서 CoMMA 바이너리를 가져올 수 있습니다. CoMMA Docker 이미지 us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/comma-installerinitContainers로 사용하여 워크로드 컨테이너에 CoMMA 바이너리를 설치할 수 있습니다. 컨테이너는 /artifacts 디렉터리에 바이너리를 저장합니다.

CoMMA 설치 프로그램 이미지를 사용하려면 다음 단계를 완료하세요.

  1. NCCL 2.23 이상을 설치합니다.

  2. initContainers에 다음 스니펫을 추가하여 워크로드에 CoMMA를 설치합니다.

    - name: profiler-plugin-installer
      image: us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/comma-installer:latest
      imagePullPolicy: Always
      volumeMounts:
      - name: nccl-plugin-volume
        mountPath: /usr/local/nccl-plugin
      command:
        - /bin/sh
        - -c
        - |
          set -ex
          rm -rf /usr/local/nccl-plugin/lib64/libnccl-profiler.so
          cp /artifacts/libnccl_profiler.so /usr/local/nccl-plugin/lib64/libnccl-profiler.so
    
          # GPUViz is a dependency of telemetry insights such as straggler detection
          rm -rf /usr/local/nccl-plugin/lib64/libGPUViz.so
          cp /artifacts/libGPUViz.so /usr/local/nccl-plugin/lib64/
    

YAML 구성 스니펫은 CoMMA를 설치할 컨테이너를 지정합니다. 이 스니펫은 설치 프로그램 컨테이너 이미지, 풀 정책, 플러그인의 볼륨 마운트를 지정합니다. 동일한 볼륨 마운트가 LD_LIBRARY_PATH에 추가된 <mount-path>/lib64와 함께 워크로드 컨테이너에 마운트되어야 합니다. command 섹션은 셸 스크립트를 실행하여 기존 프로파일러 라이브러리를 삭제합니다. 그런 다음 새 프로파일러 라이브러리를 지정된 플러그인 디렉터리에 복사합니다. 스크립트는 프로파일러 플러그인의 올바른 버전이 설치되어 사용 준비가 되었는지 확인합니다.

소스에서 빌드

소스에서 CoMMA 라이브러리를 빌드하려면 다음 소프트웨어를 설치하세요.

  • 컴파일러와 Cargo에 필요한 Rust 프로그래밍 언어 rustup 또는 시스템 패키지와 함께 설치할 수 있습니다.
  • Libclang-dev(bindgen에 필요)
  • CMake 버전 3.10 이상

소스에서 빌드하려면 다음 단계를 완료하세요.

  1. 저장소와 하위 모듈을 클론합니다.

    git clone --recurse-submodules https://github.com/google/CoMMA
  2. Cargo를 사용하여 바이너리를 컴파일합니다.

    cargo build --release

    Cargo는 바이너리를 target/release/libnccl_profiler.so에 저장합니다.

  3. 다음 방법 중 하나를 사용하여 CoMMA 라이브러리를 로드하도록 NCCL을 사용 설정합니다.

    • 컴파일된 libnccl_profiler.soLD_LIBRARY_PATH의 디렉터리에 복사합니다. 이름을 libnccl-profiler.so로 바꿉니다(밑줄 대신 하이픈 사용).
    • 또는 NCCL_PROFILER_PLUGIN 환경 변수를 설정하여 .so 파일의 경로를 지정합니다.

설치 또는 사용 설정 확인

NCCL이 CoMMA 라이브러리를 로드하는지 확인하려면 NCCL 로그를 검토하세요.

  1. NCCL 디버그 로깅을 사용 설정합니다. NCCL_DEBUG=INFO 환경 변수를 설정하여 로깅을 사용 설정합니다. 더 자세한 디버그 수준을 지정할 수도 있습니다. 디버그 옵션에 대한 자세한 내용은 NVIDIA 문서의 NCCL_DEBUG 섹션을 참고하세요.
  2. 디버깅할 INIT 하위 시스템을 지정합니다. NCCL_DEBUG_SUBSYS=INIT 환경 변수를 설정하여 INIT를 지정합니다. 다른 하위 시스템을 지정할 수도 있습니다. 하위 시스템 옵션에 관한 자세한 내용은 NCCL_DEBUG_SUBSYS 섹션을 참고하세요.
  3. NCCL 로그에서 다음과 비슷한 줄을 찾습니다. NCCL INFO PROFILER/Plugin: Plugin name set by env to PATH_TO_PROFILER_PLUGIN

CoMMA 사용 중지

CoMMA가 이미 설치된 경우 워크로드를 실행하기 전에 NCCL_TELEMETRY_MODE=0 CoMMA 환경 변수를 설정하여 NCCL 원격 분석이 수집되지 않도록 합니다. CoMMA 환경 변수를 설정하려면 환경 변수 설정을 참고하세요.

CoMMA를 사용 중지한 후 다시 사용 설정하려면 다음 단계를 따르세요.

  1. NCCL_TELEMETRY_MODE 환경 변수를 0이 아닌 값으로 설정합니다. 예를 들어 기본 모드를 사용하려면 NCCL_TELEMETRY_MODE=3를 지정합니다.

    전체 옵션 목록을 검토하려면 구성 옵션 표에서 NCCL_TELEMETRY_MODE를 참고하세요.

  2. CoMMA가 작동하는지 확인합니다.

CoMMA NCCL 원격 분석 구성 및 보기

환경에서 CoMMA가 사용 설정된 경우 데이터 세부사항 수준을 설정하여 수집되는 원격 분석 데이터의 유형을 구성할 수 있습니다. 이 섹션에서는 데이터 세부사항과 사용 가능한 옵션을 설정하는 방법을 설명합니다.

CoMMA에서 수집하는 데이터를 검토하여 조직의 보안 정책과 일치하는지 확인하거나 자체 NCCL 원격 분석 분석 도구로 분석할 수도 있습니다. 이렇게 하려면 원시 데이터를 로컬 파일로 내보내세요.

데이터 세부사항 설정

CoMMA는 다양한 세부사항 수준에서 NCCL 원격 분석을 수집합니다. 환경 변수를 사용하여 세부사항 수준을 구성합니다. CoMMA 환경 변수를 설정하려면 환경 변수 설정을 참고하세요.

  • 기본 동작: 기본적으로 CoMMA는 집단 및 피어 투 피어를 포함한 NCCL 작업과 해당 작업의 메타데이터, 완료 시간을 추적합니다. 다음 환경 변수를 사용합니다.
    • NCCL_PROFILER_TRACK_NCCLOP=true
    • NCCL_PROFILER_AGGREGATE_STEPS=true
    • NCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP=true
  • 더 세부적인 수준의 데이터 수집을 사용 설정하려면 다음 환경 변수를 설정하세요.
    • NCCL_PROFILER_TRACK_PROXYOP=true를 설정하여 프록시 작업의 완료 시간을 추적합니다.
    • NCCL_PROFILER_TRACK_STEPS=true를 설정하여 각 네트워킹 I/O 작업에 소요된 시간을 추적합니다. 이 설정은 가장 높은 수준의 세부사항을 제공합니다.

환경 변수의 전체 목록을 검토하려면 구성 옵션을 참고하세요.

로컬 파일로 데이터 내보내기

원시 데이터를 로컬 파일로 내보내서 확인합니다. 데이터를 로컬 파일로 내보내고 출력을 보려면 다음 단계를 따르세요.

  1. NCCL_TELEMETRY_MODE1 또는 4로 설정합니다. NCCL_TELEMETRY_MODE 환경 변수에 대해 알아보려면 구성 옵션을 참고하세요.
  2. 다음 내보내기 경로 중 하나를 설정합니다.

    • NCCL_PROFILER_LATENCY_FILE=PATH를 설정하여 자세한 이벤트 트레이스를 로컬 파일로 내보냅니다. PATH/tmp/latency-%p.txt과 같은 경로로 바꿉니다.
    • 집계된 요약 통계를 내보내려면 NCCL_PROFILER_SUMMARY_FILE=PATH를 설정합니다. PATH/tmp/summary-%p.txt과 같은 경로로 바꿉니다.

      시스템에서 %p를 프로세스 ID로 바꿉니다.

  3. 출력을 검토합니다. 원시 출력은 JSON 파일입니다.

구성 옵션

다음 섹션에서는 CoMMA에 대해 구성할 수 있는 모든 환경 변수를 요약합니다. 또한 환경 변수를 설정하는 방법도 설명합니다.

CoMMA 환경 변수 설정

CoMMA 환경 변수를 기본값이 아닌 값으로 설정하려면 환경 변수를 설정하세요. 컴퓨팅 인스턴스의 명령줄에서 환경 변수를 설정하거나 시작 스크립트에 추가할 수 있습니다. 명령줄에서 환경 변수를 설정하면 값은 세션별로만 유지됩니다. 환경 변수를 영구적으로 만들려면 ~/.bashrc 파일, ~/.profile 또는 운영체제에서 사용하는 시작 파일에 배치합니다. 자세한 내용은 운영체제 문서를 참고하세요.

워크로드가 NCCL 초기화 중에 변수를 읽으므로 워크로드가 시작되기 전에 CoMMA 환경 변수를 설정해야 합니다. 다음과 같이 환경 변수를 설정할 수 있습니다.

export ENVIRONMENT_VARIABLE=VALUE

다음을 바꿉니다.

  • ENVIRONMENT_VARIABLE: 설정하려는 환경 변수입니다(예: NCCL_TELEMETRY_MODE).
  • VALUE: 환경 변수의 값(예: 0)입니다.

CoMMA 환경 변수

이 섹션에는 CoMMA에 설정할 수 있는 환경 변수와 기본값이 나열되어 있습니다.

이름 설명 기본값
NCCL_PROFILER_AGGREGATE_STEPS 네트워크 청크 작업 집계를 사용 설정 (true)하거나 사용 중지 (false)합니다. true
NCCL_PROFILER_GPUVIZ_LIB NCCL 원격 분석을 Google Cloud 서비스에 업로드하는 라이브러리인 libGPUViz.so의 경로를 지정합니다. 이 라이브러리는 에이전트 통신 API를 래핑합니다. 에이전트 통신 API는 게스트 운영체제 내에서 실행되는 프로세스와 같은 에이전트가 Google Cloud 서비스와의 보안되고 안정적인 연결을 시작하는 데 사용하는 인터페이스입니다.

NCCL gIB 이미지를 설치 프로그램으로 사용하거나 NCCL gIB 플러그인이 번들로 제공되는 이미지를 사용하는 경우 이 환경 변수를 설정하지 않아도 됩니다.

NCCL_PROFILER_LATENCY_FILE 지연 시간 추적 파일의 경로 템플릿을 지정합니다. 예를 들면 /tmp/latency-%p.txt입니다. 시스템은 이름의 %p를 프로세스 ID (pid)로 바꿉니다.

파일 기반 내보내기를 사용 중지하려면 이 변수를 설정 해제하세요.
NCCL_PROFILER_PLUGIN 프로파일러 플러그인 바이너리의 경로를 지정합니다.

이 설정을 지정하지 않으면 NCCL이 LD_LIBRARY_PATH에서 libnccl-profiler.so을 찾습니다.
NCCL_PROFILER_SUMMARY_FILE 집계된 요약 파일의 경로를 지정합니다. 예를 들면 /tmp/summary-%p.txt입니다. 시스템은 이름의 %p를 프로세스 ID (pid)로 바꿉니다.

파일 기반 내보내기를 사용 중지하려면 이 변수를 설정 해제하세요.
NCCL_PROFILER_SUMMARY_INTERVAL 요약 보고의 간격을 지정합니다. 예를 들면 10s, 1m입니다. d, h, m, s, ms, us, ns 지원 1m
NCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP 프로세스 간 NCCL 프록시 작업을 모니터링하는 기능을 사용 설정 (true)하거나 사용 중지 (false)합니다. true
NCCL_PROFILER_TRACK_NCCLOP 그룹 통신과 지점 간 통신을 비롯한 NCCL 작업의 추적 및 보고를 사용 설정 (true)하거나 사용 중지 (false)합니다. true
NCCL_PROFILER_TRACK_PROXYOP 프록시 작업 추적 및 보고를 사용 설정 (true)하거나 사용 중지 (false)합니다. false
NCCL_PROFILER_TRACK_STEPS 네트워크 청크 작업의 추적 및 보고를 사용 설정 (true)하거나 사용 중지 (false)합니다. false
NCCL_TELEMETRY_MODE NCCL 원격 분석 데이터의 내보내기 위치를 제어합니다. 옵션은 다음과 같습니다.

설명
0 NCCL 원격 분석 수집을 사용 중지합니다.
1 NCCL 원격 분석을 로컬 파일로 내보냅니다. 이 방법을 사용하면 Google에서 NCCL 원격 분석을 사용할 수 없습니다.
3 NCCL 원격 분석을 Google 서비스로 내보냅니다.
4 NCCL 원격 분석을 로컬 파일과 Google 서비스 모두로 내보냅니다.
3

다음 단계