RBLN 컴파일러 API 개요¶
RBLN SDK의 설계 철학은 RBLN NPU를 활용한 서빙환경 구축에 들어가는 사용자의 노력을 최소화 함으로써 사용자가 온전히 자신의 서비스 목적에 맞는 딥러닝 모델 개발에 집중할 수 있도록 하는 것입니다. 이를 위해 RBLN 컴파일러 및 RBLN 런타임의 사용자 API를 최대한 간결하고 직관적으로 설계하고 있습니다.
RBLN SDK의 사용자 API는 가장 많이 사용되는 딥러닝 프레임워크인 파이토치와 텐서플로우를 지원합니다. 기존 코드의 런타임 부분만 RBLN SDK에서 제공하는 사용자 API로 수정하면, 사전학습 된 파이토치와 텐서플로우 모델을 RBLN NPU들에서 쉽게 구동할 수 있습니다. RBLN SDK의 사용자 API 구조는 아래 그림과 같습니다.
RBLN 컴파일러는 파이토치 및 텐서플로우 그래프를 입력으로 받아 모델을 컴파일 할 수 있습니다. 구체적으로, 파이토치의 ① / ②torch.nn.Module
, 텐서플로우 v2의 ③tf.function
, 텐서플로우 v1의 ④GraphDef
를 입력으로 받아 컴파일을 수행합니다.
컴파일 과정은 Model Conversion (모델 변환), Graph Generation (그래프 생성), Graph Optimization (그래프 최적화) 의 세 단계로 이루어 집니다. 이 과정에서 컴파일된 객체가 생성되며, RBLN 런타임에서 즉시 추론에 사용되거나 향후 추론 과정에서 지속적으로 활용을 위해 .rbln
파일로 디스크에 저장됩니다.
컴파일 결과물은 RBLN 런타임 모듈 ⑥ Runtime()
혹은 AsyncRuntime()
생성시 사용되며, 생성된 런타임 모듈의 ⑦ run()
함수를 호출하면 RBLN NPU에서 추론을 실행할 수 있습니다. run()
함수는 입출력 데이터 타입으로 torch.Tensor
와 numpy.ndarray
를 지원합니다.
RBLN 컴파일러의 API를 보다 깊이 이해할 수 있도록, 아래 문서를 제공합니다: