문제해결¶
Debug Dump Binaries(DDB) 생성¶
DDB 파일은 RBLN NPU의 기능적인 문제해결을 위한 정보들을 담고 있는 파일로, RBLN 컴파일러의 입력정보와 각 컴파일 단계에서의 에러 로그 정보 등을 포함하고 있습니다. 모든 DDB 파일들은 안전하게 암호화되어 있습니다.
DDB 파일을 생성하려면 RBLN_DEBUG_LEVEL 환경 변수를 설정합니다:
RBLN_DEBUG_LEVEL=1:DDB파일 생성 시 모델 파라미터 제외RBLN_DEBUG_LEVEL=2:DDB파일 생성 시 모델 파라미터 포함
RBLN_DEBUG_LEVEL=2로 DDB 파일을 생성하는 것이 빠른 문제해결에 더 도움이 되지만, 보안상의 이슈로 모델 파라미터를 제외해야 하는 경우 RBLN_DEBUG_LEVEL=1로 DDB 파일을 생성할 수 있습니다.
문제를 진단하려면 해당 모델의 컴파일 명령에 RBLN_DEBUG_LEVEL=2를 설정해 다시 실행하면 됩니다.
아래는 RBLN Model Zoo에서 제공하는 파이토치 ResNet50 모델로 NPU에서 DDB를 생성하는 예제입니다:
DDB 디렉터리가 생성된 경우 다음과 유사한 파일들을 확인할 수 있습니다:
문제 해결에 도움이 필요한 경우, 생성된 모든 DDB 파일들을 압축하여 자세한 설명과 함께 RBLN Forum에 업로드해 주시기 바랍니다:
디바이스 지정(Device selection)¶
사용 중인 시스템에서 여러 개의 RBLN NPU 자원을 사용할 수 있는 경우, 아래와 같이 RBLN_DEVICES 환경 변수를 통해 특정 자원을 지정할 수 있습니다. 환경 변수에서 사용될 NPU 식별자(NPU ID)는 rbln-smi 유틸리티를 통해 확인할 수 있습니다.
Note
RBLN_VISIBLE_DEVICES는 RBLN_DEVICES의 별칭이며, 쉼표로 구분된 동일한 device ID 목록을 받습니다. 두 변수를 서로 다른 값으로 설정하면 RBLN_DEVICES가 우선하며, 무시된 변수를 알리는 경고가 한 번 출력됩니다.
성능 튜닝(Performance tuning)¶
컴파일된 모델의 대부분은 NPU 연산자로 구성되어 있지만 일부 CPU 연산자가 포함되어 있을 수 있습니다. 이런 경우 CPU 연산자들은 CPU 호스트 환경에 따라 성능이 달라질 수 있습니다.
CPU 연산자들의 성능을 최적화하기 위해 아래 방법 중 하나를 사용하여 스레드 개수를 조정할 수 있습니다.
1. 스레드 개수¶
옵션 1. 환경 변수 사용하기
모델 실행 전에 환경 변수를 설정하여 원하는 스레드 개수를 지정할 수 있습니다.
다음과 같이 한 줄로 실행할 수도 있습니다:
옵션 2. Python API 사용하기
set_num_threads()를 사용하여 직접 스레드 개수를 설정할 수 있습니다:
2. 최적의 스레드 개수¶
최적의 스레드 개수는 사용자의 CPU 호스트 환경에 따라 달라집니다. 수동으로 조정할 수도 있지만, 이를 자동으로 찾아주는 유틸리티 함수인 search_num_threads()를 제공합니다:
이 함수를 사용해 다양한 스레드 개수를 테스트하고 평균 실행 시간을 출력하여 최적의 값을 선택할 수 있습니다.
이 예제에서는 16개 스레드 개수가 가장 좋은 성능을 보이는 것을 확인할 수 있습니다. 이처럼 각 시스템에 맞게 벤치마크를 실행하여 최적의 스레드 개수를 찾을 수 있습니다.