티스토리 뷰

AI/Deep Learning

Deep Learning Frameworks

su3inni 2021. 12. 28. 13:26
이 글은 널리 사용되는 DL 프레임워크에 대해 간략하게 정리해보고 프로젝트 시작 전 어떤 프레임워크를 쓸 지 정해야할 때 참고하면 좋을 것 같습니다. 그림과 글의 내용은 The Deep Learning Compiler: A Comprehensive Survey 논문의 일부분 입니다. 

 

아래의 그림은 현재 널리 사용되는 프레임워크, 과거 프레임워크 및 ONNX 지원 프레임워크를 포함한 DL 프레임워크의 환경을 보여줍니다. 

 

Tensorflow

  • 모든 DL 프레임워크 중에서 TensorFlow는 C++, Python, Java, Go, R 및 Haskell을 포함한 언어 인터페이스에 대한 가장 포괄적인 지원을 제공합니다.
  • TensorFlow 사용의 복잡성을 줄이기 위해 Google은 TensorFlow 코어의 프런트엔드로 Keras를 채택합니다.
  • TensorFlow의 eager-mode는 PyTorch와 유사한 접근 방식을 적용하여 동적 계산 그래프를 더 잘 지원합니다.
  • TensorFlow Lite는 모바일 및 임베디드 딥러닝을 위해 설계되었으며 Android 신경망 API를 제공합니다.

 

Keras

  • Keras는 순수 Python으로 작성된 DL 모델을 빠르게 구축하기 위한 고급 신경망 라이브러리입니다. 
  • Keras는 자체적으로 DL 프레임워크는 아니지만 TensorFlow, MXNet, Theano 및 CNTK와 통합되는 고급 API를 제공합니다.
  • Keras를 사용하면 DL 개발자는 몇 줄의 코드로 신경망을 구축할 수 있으며 scikit-learn과 같은 다른 일반적인 DL 패키지와 통합할 수 있습니다.
  • Keras는 과도한 캡슐화로 인해 유연성이 부족하여 연산자를 추가하거나 낮은 수준의 데이터 정보를 얻기 어려울 수 있습니다.

 

PyTorch

  • 가장 널리 사용되는 동적 프레임워크인 PyTorch 동적 데이터 흐름 그래프를 구성하기 위한 기본 요소를 포함합니다.
  • PyTorch 1.0은 PyTorch 0.4와 Caffe2의 코드베이스를 통합하여 통합 프레임워크를 생성하여 PyTorch는 Caffe2의 이점인 효율적인 그래프 실행 및 모바일 배포를 지원할 수 있습니다.
  • FastAI는 PyTorch의 상위 계층 캡슐화를 기반으로 하는 고급 API 계층이며 PyTorch의 사용을 쉽게 하기 위해 Keras를 완전히 차용합니다.

 

Caffe/Caffe2

  • Caffe는 UC Berkeley에서 딥 러닝 및 이미지 분류를 위해 설계되었습니다.
  • Caffe에는 명령줄, Python 및 MATLAB API가 있습니다.
  • Caffe의 단순성으로 인해 소스 코드를 쉽게 확장할 수 있어 개발자가 심층 분석하기에 적합합니다.
  • Caffe2는 Caffe 프로젝트를 기반으로하며 Caffe2는 더 가벼운 API와 계산 그래프의 중간 결과에 더 쉽게 액세스할 수 있습니다.
  • 코드 구조는 TensorFlow와 유사합니다.

 

MXNet

  • MXNet은 Python, C++, R, Scala, Julia, Matlab 및 JavaScript를 비롯한 여러 언어 API를 지원합니다. 
  • 확장하는데 용이하며 데이터 로드 및 I/O 복잡성을 줄이는 관점에 중점을 두 설계되었습니다. 
  • MXNet은 Caffe 및 Tensorflow와 같은 선언적 프로그래밍과 PyTorch와 같은 명령형 등 다양한 패러다임을 제공합니다.
  • 2017년 12월 Amazon과 Microsoft는 Keras 및 FastAI와 유사한 고급 인터페이스인 MXNet 기반의 Gluon을 공동 출시했습니다.
  • Gluon유연한 동적 그래프와 효율적인 정적 그래프를 모두 지원합니다.

 

CNTK

  • CNTK는 Python, C++ 및 C# API 또는 자체 스크립팅 언어(예: BrainScript)를 통해 사용할 수 있습니다.
  • CNTK는 프로덕션에서 대규모 데이터에 대해 사용하기 쉽고 프로덕션 준비가 되도록 설계되었습니다.
  • CNTK는 모바일 장치에서의 사용을 제한하는 ARM 아키텍처를 아직 지원하지 않습니다.
  • TensorFlow 및 Caffe와 유사한 정적 계산 그래프를 사용하며, 여기서 DL 모델은 방향성 그래프를 통해 일련의 계산 단계로 처리됩니다.

 

PaddlePaddle

  • PaddlePaddle의 디자인은 Caffe와 유사하며, 여기서 각 모델은 레이어 세트로 표현될 수 있습니다.
  • PaddlePaddle v2는 TensorFlow를 참조하여 계층을 더 세분화된 연산자로 분할하여 더 복잡한 DL 모델을 지원하는 연산자 개념을 채택했습니다.
  • PaddlePaddle Fluid는 Python 인터프리터의 제한된 성능을 피하기 위해 자체 인터프리터를 제공하기 때문에 PyTorch와 유사합니다.

 

ONNX

  • Open Neural Network Exchange(ONNX)는 확장 가능한 계산 그래프 모델을 정의하므로 서로 다른 DL 프레임워크에 의해 구축된 계산 그래프를 ONNX로 쉽게 변환할 수 있습니다.
  • ONNX를 사용하면 DL 프레임워크 간에 모델을 변환하는 것이 더 쉬워집니다. ( 예를 들어 개발자는 MXNet 모델을 빌드한 다음 추론을 위해 PyTorch를 사용하여 모델을 실행할 수 있습니다. )
  • ONNX는 PyTorch, MXNet, PaddlePaddle 등에 통합되었으며 직접적으로 지원되지 않는 여러 DL 프레임워크(예: Keras)의 경우 ONNX는 변환기와 함께 사용될 수 있습니다. 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30