콘텐츠로 이동

RBLN Profiler 시작하기

이 페이지에서는 RBLN 프로파일러를 사용하는 기본적인 방법에 대해 간략하게 서술합니다. RBLN 모델주의 파이토치 ResNet50 모델을 예시로 프로파일링 데이터를 추출하는 방법을 알아봅니다.

사전 준비

시작하기에 앞서 아래의 파이썬 패키지들이 설치되어 있는지 확인합니다:

Note

RBLN 프로파일러는 rebel-compiler에서 제공하는 기능 중 하나입니다. 따라서, rebel-compiler를 설치할 때 함께 설치되며 따로 설치할 필요가 없습니다.

프로파일링 데이터 추출하기

이 예제에서는 이미지 분류를 위해 훈련된 ResNet50을 컴파일합니다.

사전 준비

우선, 프로젝트 디렉토리로 이동한 후 필요한 패키지들을 설치합니다.

$ cd RBLN_MODEL_ZOO_PATH/pytorch/vision/image_classification/torchvision
$ pip3 install -r requirements.txt

모델 컴파일

ResNet50 모델은 아래 명령어를 통해 컴파일할 수 있습니다. 모델 컴파일이 끝나면 디렉토리에 resnet50.rbln 파일이 생성된 것을 확인할 수 있습니다.

$ python3 compile.py --model_name resnet50

추론을 통한 프로파일링 데이터 추출

추론을 수행할 때 환경변수 RBLN_PROFILER=1를 설정하거나, 코드 내부의 rebel.Runtime 안에 activate_profile=True 인자를 사용하면 모델을 프로파일링합니다.

  • 환경 변수 사용: 환경변수 RBLN_PROFILER=1를 설정하여 RBLN 프로파일러를 활성화합니다.

    $ RBLN_PROFILER=1 python3 inference.py --model_name resnet50
    

  • RBLN Runtime API 사용: activate_profiler=True를 설정하여 프로파일러를 활성화합니다.

    1
    2
    3
    4
    5
    # `inference.py` 파일을 아래와 같이 수정합니다.
    ...
    # RBLN runtime module을 이용하여 컴파일한 모델을 불러옵니다.
    module = rebel.Runtime(f"{model_name}.rbln", activate_profiler=True)
    ...
    

  • optimum-rbln의 경우: rbln_activate_profiler=True를 설정하여 프로파일러를 활성화합니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # `inference.py` 파일을 아래와 같이 수정합니다.
    ...
    # 컴파일한 모델을 불러옵니다.
    model = RBLNLlamaForCausalLM.from_pretrained(
        model_id=os.path.basename(model_id),
        export=False,
        rbln_activate_profiler=True,
    )
    ...
    

위 명령어를 실행하면 아래의 프로파일링 결과를 확인할 수 있습니다.

RBLN Profiler Generation Status Report는 프로파일러가 트레이싱 과정과 Protocol Buffer 파일을 생성하는 과정에서 발생하는 모든 상태 정보를 아래의 세 가지 카테고리로 보여줍니다.

  • System Passes: 일반적인 시스템 이상을 모니터링하고, 메모리 할당 상태를 확인하며, 명령 프로세서에서 생성된 프로파일 데이터를 검증합니다.

  • Compilation Passes: RBLN 컴파일러에 의해 생성된 프로파일 정보를 검증하고 명령어 의존성 위반 여부를 탐지합니다.

  • Tracing Passes: Command Processor로부터 프로파일링 데이터를 수집하고 검증하며, 이에 대한 분석을 수행하고, 데이터 분석을 통해 시각화 전처리를 수행합니다. 또, Protocol Buffer 파일 생성 및 직렬화(serialize)를 위해 레이아웃을 재구성하고 구조를 변환합니다.

Note

RBLN 프로파일러의 결과에서 지속적으로 Failed이 발생할 시, support@rebellions.ai로 연락바랍니다.

  • 생성된 파일명
    • Multi Stream (전체 로그): rbln_{date}_{time}.pb
      • 위 파일은 단일 프로파일러 인스턴스 상에서 발생한 모든 추론 과정의 tracing 정보들을 하나의 plot에 표현하며, 단일 *.pb 파일에 기록됩니다.
    • Single Stream (sequence 별 로그): rbln_{date}_{time}_{sequence_index}.pb
      • 위 파일들은 단일 프로파일러 인스턴스 상에서 실행된 모듈의 단일 추론에 대한 tracing 정보를 하나의 plot에 표현합니다. 즉, 단일 스트림의 경우, 모듈 갯수와 모듈마다의 추론 횟수만큼의 *.pb 파일들이 생성됩니다.

생성된 .pb 파일은 Perfetto를 통해 시각화 할 수 있습니다.