본문 바로가기
Amazon Web Services/SageMaker

[AWS] Amazon SageMaker Neo 란?

by @__100.s 2021. 11. 8.
반응형

The background of Amazon SageMaker Neo

  • 개발자는 모델 구축이 완료되면 여러 플랫폼에 최적의 성능으로 모델을 배포해야 한다.
  • 이 경우 개발자는 크게 두 가지 문제를 맞닥뜨리게 된다.

  • Problem 1: Not all models are liberated
    • 모델을 배포할 플랫폼에는, 개발자가 모델을 구축하는 데 사용한 버전의 프레임워크가 있어야 한다.
    • 하지만 플랫폼은 많은 프레임워크를 모두 지원하지 않는다. (비용과 복잡성의 문제)
    • 이러한 제한 사항 때문에 개발자는 다음과 같은 결정을 내린다.
      • 모델 배포를 더 적은 수의 플랫폼으로 제한
      • 모델 구축을 위한 프레임워크 선택 시, 작업에 적합한 프레임워크가 아니더라도 더 많은 플랫폼에서 지원하는 프레임워크를 선택

  • Problem 2 : Framework optimization is complicated

  • 일반적으로 추론 과정의 경우 개발자는 지연시간과 처리량 최적화에 중점을 둔다. 이는 하드웨어 아키텍처에 의존적이다.
  • 그러므로 개발자는 배포하고자 하는 각각의 플랫폼들에 대해 모델의 성능을 수동으로 조정해야 한다.

이러한 문제점들로 인해 개발자는 모델의 성능이 최선이 아니더라도, 어느 정도의 성능이 나오면 안주하게 된다.

이는 하드웨어 플랫폼의 리소스를 충분히 활용하지 않는 선택이므로 모델 배포의 전체 비용을 증가시킨다.

Amazon SageMaker Neo : Train once, run anywhere

  • Amazon SageMaker Neo는 이러한 문제를 해결하기 위해 설계되었다.
  • Neo는 모델이 개발된 프레임워크로부터 자유롭게 하며, 모델이 배포될 하드웨어 리소스를 최대한 활용할 수 있도록 한다.


How does Amazon SageMaker work?

What is Amazon SageMaker Neo?

  • Neo는 CompilerRuntime으로 나누어서 설명할 수 있다.
  • Compiler
    • Neo Compiler는 MXNet, PyTorch, TensorFlow 및 XGBoost로 작성된 모델을 프레임워크 특정 형식에서 효율적인 공통 형식으로 변환한다. 변환하는 과정에서 Neo는 모델을 자동으로 최적화시킨다.
  • Runtime
    • Neo Compiler로 변환된 모델은 더 이상 프레임워크가 없어도 실행할 수 있는 형식이므로 하드웨어 플랫폼에서 런타임 공간이 크게 줄어든다.
    • 일반적으로 프레임워크가 소비하는 리소스는 MXNet 450MB, Tensorflow 660MB, PyTorch 1000MB로 변환된 코드는 이러한 리소스의 100분의 1 미만의 약 1MB의 리소스를 사용하는 소형 런타임인 Neo 런타임에 의해 실행된다.
    • 대상 하드웨어에 프레임워크를 설치하는 대신 소형 런타임 라이브러리를 로드하기만 하면 되기 때문이다.


Neo AI github

  • 구체적으로 Amazon SageMaker Neo가 어떻게 작동하는지 알아보기 위해 Neo AI github의 요소들을 살펴보자. 아래는 Amazon SageMaker Neo에 관여하고 있는 목록들이다.
    • Neo Loader
      • Neo Framework → Relay IR converter
    • TVM
      • Deep learning model compiler
    • Treelite
      • decision tree model compiler
    • Neo AI DLR
      • Compact, common runtime for deep learning models and decision tree model compiled by AWS SageMaker Neo, TVM or TreeLite.


Neo compiler

  • Neo Compiler는 오픈 소스 및 파트너가 제공하는 컴파일러를 (Treelite 또는 TVM) 사용하여 모델을 최적화한다.
  • 아래의 내용은 TVM을 사용한 모델 최적화 예시이다.

 

  1. 예를 들어 Tensorflow 모델이 Neo Comiler에 들어오면,
  2. Neo loader는 모델을 확인한 뒤, TVM Relay IR module을 통해 모델을 변환
    1. deep learnig model → TVM
    2. decision tree model → Treelite
  3. TVM IR Module은 먼저 계산 그래프를 생성한 뒤, 그래프 최적화를 진행
  4. 최적화된 그래프에 대해 IR을 생성한 뒤 하드웨어 의존적 최적화를 진행
    • 그래프는 하드웨어에 독립적인 정보만을 표현할 수 있기에, 하드웨어 의존적 최적화가 가능한 형태인 IR(Intermediate Representation ; 중간 표현)로 변환해야 함.
  5. 이 과정을 통해 최적화된 IR module 결과를 타깃 하드웨어에서 잘 작동하는 백엔드 용 코드로 생성
    • GPU → CUDA/OpenCL
    • CPU → LLVM

Neo Runtime

  • Neo runtime인 Neo AI DLR은 AWS SageMaker Neo, TVM 또는 Treelite로 컴파일된 딥러닝 모델 및 의사 결정 트리 모델을 위한 컴팩트한 공통 런타임이다.
  1. Neo AI DLR은 컴파일 된 모델을 최적화 할 적절한 실행 백엔드로 보냄 (TVM runtime, Treelite runtime ...)
  2. 모델을 하위 모델로 나누어 적절한 가속기에서 실행 → 타깃 하드웨어를 최대한 활용하기 위함
    • 가속기에서 지원하는 연산자를 사용하는 부분은 가속기에서 실행
    • 나머지 부분은 CPU에서 실행

Neo Architecture

 

참고

반응형