RBLN Profiler 시작하기¶
이 페이지에서는 RBLN 프로파일러를 사용하는 기본적인 방법에 대해 간략하게 서술합니다. RBLN 모델주의 파이토치 ResNet50 모델을 예시로 프로파일링 데이터를 추출하는 방법을 알아봅니다.
사전 준비¶
시작하기에 앞서 아래의 파이썬 패키지들이 설치되어 있는지 확인합니다:
- torch
- torchvision
- rebel-compiler >= 0.7.1
- RBLN Model Zoo
Note
RBLN 프로파일러는 rebel-compiler에서 제공하는 기능 중 하나입니다. 따라서, rebel-compiler
를 설치할 때 함께 설치되며 따로 설치할 필요가 없습니다.
프로파일링 데이터 추출하기¶
이 예제에서는 이미지 분류를 위해 훈련된 ResNet50을 컴파일합니다.
사전 준비¶
우선, 프로젝트 디렉토리로 이동한 후 필요한 패키지들을 설치합니다.
모델 컴파일¶
ResNet50 모델은 아래 명령어를 통해 컴파일할 수 있습니다. 모델 컴파일이 끝나면 디렉토리에 resnet50.rbln
파일이 생성된 것을 확인할 수 있습니다.
추론을 통한 프로파일링 데이터 추출¶
추론을 수행할 때 환경변수 RBLN_PROFILER=1
를 설정하거나, 코드 내부의 rebel.Runtime
안에 activate_profile=True
인자를 사용하면 모델을 프로파일링합니다.
-
환경 변수 사용: 환경변수
RBLN_PROFILER=1
를 설정하여 RBLN 프로파일러를 활성화합니다. -
RBLN Runtime API 사용:
activate_profiler=True
를 설정하여 프로파일러를 활성화합니다. -
optimum-rbln의 경우:
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
파일에 기록됩니다.
- 위 파일은 단일 프로파일러 인스턴스 상에서 발생한 모든 추론 과정의 tracing 정보들을 하나의 plot에 표현하며, 단일
Single Stream
(sequence 별 로그):rbln_{date}_{time}_{sequence_index}.pb
- 위 파일들은 단일 프로파일러 인스턴스 상에서 실행된 모듈의 단일 추론에 대한 tracing 정보를 하나의 plot에 표현합니다. 즉, 단일 스트림의 경우, 모듈 갯수와 모듈마다의 추론 횟수만큼의
*.pb
파일들이 생성됩니다.
- 위 파일들은 단일 프로파일러 인스턴스 상에서 실행된 모듈의 단일 추론에 대한 tracing 정보를 하나의 plot에 표현합니다. 즉, 단일 스트림의 경우, 모듈 갯수와 모듈마다의 추론 횟수만큼의
생성된 .pb 파일은 Perfetto를 통해 시각화 할 수 있습니다.