What is ONNX
오픈 신경망 교환(ONNX)은 모든 유형의 머신러닝 또는 딥러닝 모델을 표현하도록 설계된 개방형 형식입니다.
머신 러닝 학습의 결과는 입력 데이터와 출력 예측 간의 관계를 나타내는 모델 파일입니다. 이러한 모델은 파이토치, 텐서플로우 등 다양한 프레임워크를 사용하여 학습할 수 있습니다. 이러한 프레임워크는 각각 다른 형식으로 학습된 모델을 생성하므로 다양한 소프트웨어 환경에서 사용할 수 있도록 이식성이 떨어집니다.
ONNX 포맷은 머신러닝 프레임워크 간의 중간 역할을 하는 통일된 포맷을 제공함으로써 프레임워크 상호 운용성을 가능하게 합니다. 이러한 상호 운용성 덕분에 학습된 모델을 다양한 소프트웨어 플랫폼에 쉽게 배포할 수 있습니다.
IOS 배포 시나리오
iOS 앱을 통해 학습된 모델을 배포하는 것이 목표인 시나리오를 예로 들어 보겠습니다. TensorFlow 프레임워크의 사용하기 쉬운 인터페이스인 Keras에서 신경망 모델을 구성하는 데 익숙합니다. 여정은 사용자가 앱을 사용하는 하드웨어를 이해하는 것으로 시작됩니다. 최신 Apple 기기에는 칩의 일부로 Apple Neural Engine(ANE)이 탑재되어 있습니다.
iPhone 14의 A15 바이오닉 칩은 6코어 CPU, 5코어 GPU 및 16코어 뉴럴 엔진(ANE)과 함께 제공됩니다. 이 기기에서 딥 러닝 모델은 CPU만, CPU와 GPU만, 또는 모든 컴퓨팅 엔진(CPU, GPU, ANE)에서 작동할 수 있습니다.
ANE는 특히 무거운 애플리케이션의 경우 모델을 실행하는 가장 빠른 방법입니다. iOS에서 CoreML은 딥 러닝 추론에 최적화된 프레임워크입니다. 또한 CoreML은 운영 체제에 내장되어 있으므로 ML 바이너리 라이브러리를 앱과 함께 컴파일, 링크 또는 제공할 필요가 없습니다.
이제 목표 프레임워크가 정의되었으므로 학습된 모델을 Core ML로 변환하는 방법을 찾아야 합니다. 이 작업은 ONNX를 통해 쉽게 수행할 수 있습니다. tf2onnx 라이브러리를 사용하여 Keras 모델을 ONNX로 변환하고 파이썬의 onnx-coreml 라이브러리를 사용하여 ONNX를 Core ML 모델로 변환합니다. 이제 Core ML 모델을 앱에 배포할 준비가 되었습니다.

결론
요약하자면, ONNX 포맷을 사용하면 딥러닝으로 훈련된 모델을 다양한 하드웨어에서 실행되는 다양한 프레임워크에서 효율적으로 사용할 수 있습니다. 이를 통해 ML 엔지니어는 모델을 반복해서 개발할 필요 없이 진화하는 하드웨어 및 소프트웨어 프레임워크의 이점을 활용할 수 있습니다.
'MLOps' 카테고리의 다른 글
[MLOps] - 개요 (0) | 2024.01.06 |
---|