노드 자원 프로파일링하기
    • PDF

    노드 자원 프로파일링하기

    • PDF

    Article Summary

    VPC 환경에서 이용 가능합니다.

    주의

    CLOVA NSML은 현재 Closed Beta로 일부 파트너사에게만 제공되어 있으며, 일반 사용자 대상 오픈 시기는 미정입니다.

    노드 자원 프로파일링이란, 실험에서 노드가 얼마나 효율적으로 자원을 활용하고 있는지 또는 의도한 대로 자원을 사용하고 있는지를 확인하는 것을 의미합니다. 프로파일링 도구를 이용하여 노드의 자원 활용에 대한 문제를 인식하고 이를 해결하기 위한 판단을 할 수 있습니다. 여기서는 다음과 같은 프로파일링 도구를 소개하고 설명합니다.

    NVIDIA SMI 사용하기

    NVIDIA SMI는 NVIDIA 사가 제공하는 CLI 명령으로 NVIDIA CUDA Toolkit 패키지에 포함되어 있으며 NVIDIA GPU 기기의 관리와 모니터링 작업을 실행할 수 있는 도구입니다.

    이 도구는 기본 이미지에 포함되어 있어 생성된 노드에서 바로 사용할 수 있으며, nvidia-smi 명령을 사용합니다.
    ai-clova-nsml-high-3-1_2

    Run(실험)을 진행할 때 메모리 사용량(Memory-Usuage)과 GPU 활용도(GPU-Util)에 주목해야 합니다. 실험을 진행할 때 메모리와 GPU를 활용도를 최대한 사용하는 방법을 찾는 것을 권장합니다.

    nvidia-smi 명령을 사용할 때 쿼리 옵션(-q)을 사용하면 유용하며 다음과 같은 쿼리 옵션의 하위 설정 옵션이 있습니다.

    • -d MEMORY,UTILIZATION: 표시할 정보 필터
    • -f TARGET_PATH: 표준출력(stdout)이 파일에 출력
    • -i GPU_NUMBER: 특정 GPU 정보만 보기
    • -l INTERVAL_TIME: 지정 시간 주기로 출력
    $ nvidia-smi -q -d MEMORY,UTILIZATION -f /mnt/tmp/util -i 0 -l 5
    

    NVIDIA Nsight Systems 사용하기

    NVIDIA Nsight Systems는 NVIDIA 사가 제공하는 분석 도구로 GPU 시스템 전반의 성능에 관련된 지표를 시각화해서 보여줍니다. NVIDIA Nsight Systems에 필요한 데이터는 nsys 명령으로 생성할 수 있으며 nsys 명령은 기본 이미지에 포함되어 있습니다. nsys 명령은 실행되는 작업의 프로세스를 프로파일링하고 결과 파일(.qdrep)을 생성합니다. 다음과 같이 nsys 명령을 실행할 수 있습니다.

    # -o 옵션으로 남길 위치를 지정할 수 있음
    $ nsys profile -o report python main.py
    

    생성된 결과는 NVIDIA Nsight Systems 도구를 다운로드하여 확인할 수 있습니다. 또는 --stats 옵션을 사용하여 데이터베이스 파일(.sqlite)을 생성할 수도 있습니다.

    $ nsys profile --stats true python main.py
    

    NVIDIA Nsight Systems로 다은과 같은 지표를 확인할 수 있습니다.

    • CUDA API 통계
    • CUDA Kernel 통계
    • CUDA 메모리 연산 통계 (시간)
    • CUDA 메모리 연산 통계 (크기)
    • 운영체제 런타임 API 통계

    py-spy 사용하기

    py-spy는 Python 코드 전문 프로파일링 도구입니다. py-spy는 기본 이미지에 포함되어 있지 않으며 사용하려면 직접 설치해야 합니다. 다음 명령을 수행하여 설치해 주십시오.

    $ pip install py-spy
    

    위 명령을 수행하면 ~/.local/bin/py-spy에 설치됩니다. 아래와 같은 명령으로 프로파일링을 수행할 수 있으며 결과는 SVG(.svg) 파일로 생성됩니다.

    $ py-spy record -o profile.svg --pid 12345
    # or
    $ py-spy record -o profile.svg -- python code/main.py
    

    생성된 SVG 파일 예
    ai-clova-nsml-high-3-1_3

    만약, 파일로 기록을 남기지 않고 실시간으로 콜 스택 상황을 보려면 top 옵션을 사용해 주십시오.

    $ py-spy top --pid 12345
    # or
    $ py-spy top -- python code/main.py
    

    top 옵션을 사용하면 아래와 같은 화면을 확인할 수 있습니다.
    ai-clova-nsml-high-3-1_4

    콜 스택 상황을 실시간으로 스냅샷을 남기고 싶을 때는 다음과 같이 dump 옵션을 사용해 주십시오.

    $ py-spy dump --pid 12345
    

    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.