용어집

ONNX (개방형 신경망 교환)

ONNX 이 어떻게 AI 모델 이동성과 상호 운용성을 향상시켜 다양한 플랫폼에서 Ultralytics YOLO 모델을 원활하게 배포할 수 있도록 지원하는지 알아보세요.

YOLO 모델을 Ultralytics HUB로 간단히
훈련

자세히 알아보기

빠르게 진화하는 인공지능(AI)머신러닝(ML) 분야에서는 서로 다른 도구와 플랫폼 간에 모델을 효율적으로 이동하는 것이 매우 중요합니다. ONNX (오픈 신경망 교환)는 AI 모델을 위해 특별히 설계된 오픈 소스 형식을 제공함으로써 이 문제를 해결합니다. 이는 범용 번역기 역할을 하여 개발자가 다음과 같은 하나의 프레임워크에서 모델을 훈련할 수 있도록 합니다. PyTorch와 같은 하나의 프레임워크에서 모델을 훈련한 다음 다른 프레임워크나 추론 엔진(예 TensorFlow 과 같은 다른 프레임워크나 추론 엔진 또는 ONNX 런타임과 같은 특수 런타임을 사용하여 배포할 수 있습니다. 이러한 상호 운용성은 연구부터 생산에 이르는 과정을 간소화하여 AI 에코시스템 내에서 협업과 유연성을 촉진합니다. ONNX 처음에 Facebook AI ResearchMicrosoft Research에서 개발했으며, 현재는 활발한 커뮤니티 프로젝트가 되었습니다.

관련성 ONNX

ONNX 핵심 가치는 다음을 촉진하는 데 있습니다. 휴대성 및 상호 운용성 AI 개발 라이프사이클을 지원합니다. 개발자는 특정 프레임워크의 에코시스템에 종속되지 않고 ONNX 활용하여 다양한 도구와 하드웨어 플랫폼 간에 자유롭게 모델을 이동할 수 있습니다. 공통 연산자 집합을 정의함으로써( 신경망) 및 표준 파일 형식(.onnx), ONNX 모델의 구조와 학습된 매개변수(가중치)가 일관되게 표시됩니다. 이는 특히 다음과 같은 사용자에게 유용합니다. Ultralytics YOLO 모델에 대한 간단한 방법을 제공하기 때문입니다. 모델을 ONNX 형식으로 내보내기. 이 내보내기 기능을 통해 사용자는 다음과 같은 모델을 가져올 수 있습니다. YOLOv8 또는 최신 YOLO11 다양한 하드웨어 및 소프트웨어 플랫폼에 배포할 수 있으며, 종종 최적화된 추론 엔진 향상된 성능과 하드웨어 가속.

ONNX 작동 방식

ONNX 몇 가지 주요 기술 기능을 통해 상호 운용성을 달성합니다:

  • 공통 모델 표현: ONNX 컨볼루션 또는 활성화 함수와 같은 표준 계산 그래프 연산자 세트와 공통 데이터 유형 시스템을 정의합니다. 딥 러닝 모델이 ONNX 변환되면 해당 아키텍처와 매개변수가 이 공유 표현으로 변환됩니다.
  • 그래프 기반 구조: ONNX 모델은 계산 그래프로 표현됩니다. 그래프의 노드는 연산(예: 행렬 곱셈 또는 ReLU 함수 적용)을 나타내고, 에지는 이러한 연산 사이의 데이터 흐름(텐서)을 나타냅니다. 이 그래프 구조는 많은 ML 프레임워크에서 공통적으로 사용되므로 쉽게 변환할 수 있습니다.
  • 버전 관리 시스템: ONNX 연산자 집합(opset)에 대한 버전을 유지 관리합니다. 이를 통해 이전 버전과의 호환성을 보장하여 이전 버전으로 만든 모델을 해당 버전을 지원하는 최신 런타임에서 계속 실행할 수 있습니다.
  • 확장성: ONNX 핵심 연산자 집합을 정의하지만, 프레임워크와 하드웨어 공급업체가 특수 기능을 지원할 수 있도록 사용자 정의 연산자도 허용합니다.
  • 에코시스템 및 도구: 다양한 프레임워크에서 모델을 변환하기 위한 라이브러리( ONNXPyTorch 또는 TensorFlow), ONNX 그래프 시각화 및 디버깅을 위한 도구, 다양한 하드웨어에서 고성능 추론에 최적화된 ONNX 런타임과 같은 런타임(CPU, GPU, 특수 가속기).

애플리케이션 ONNX

ONNX 모델 트레이닝 환경과 다양한 배포 대상 간의 중요한 가교 역할을 합니다. 다음은 두 가지 구체적인 예시입니다:

  1. 엣지 디바이스에 컴퓨터 비전 모델 배포: 개발자는 다음을 사용하여 Ultralytics YOLO 모델과 같은 객체 감지 모델을 훈련합니다. PyTorch 를 사용하여 모델을 훈련합니다. 리소스가 제한된 엣지 디바이스 (예: 스마트 카메라 또는 드론)에 배포하기 위해 모델을 ONNX 형식으로 내보냅니다. 그런 다음 다음과 같은 도구를 사용하여 이 ONNX 파일을 최적화할 수 있습니다. NVIDIA TensorRT 또는 Intel OpenVINO 같은 도구를 사용하여 최적화하고 디바이스에서 직접 효율적인 실시간 추론을 위해 배포할 수 있습니다. 이러한 유연성은 다양한 모델 배포 옵션에서 강조됩니다. 다양한 산업 분야의 사례에 대한 Ultralytics 솔루션을 살펴볼 수 있습니다.
  2. 프레임워크 간 협업 및 배포: 한 연구팀이 새로운 모델 아키텍처를 개발하기 위해 TensorFlow. 다른 팀은 이 모델을 다음과 같이 구축된 기존 애플리케이션에 통합하고자 합니다. PyTorch. 두 번째 팀은 TensorFlow 모델을 ONNX 내보내면 원래 TensorFlow 프레임워크 없이도 PyTorch 환경 내에서 쉽게 로드하여 사용하거나 표준화된 ONNX Runtime을 사용하여 다양한 서버 구성(클라우드 또는 온프레미스)에 배포할 수 있습니다. 따라서 모델 제공 및 통합이 더욱 쉬워집니다.

ONNX 관련 개념

ONNX 관련 용어와 구별하는 것이 중요합니다:

  • 프레임워크별 형식: PyTorch 같은 형식 .pt/.pth 또는 TensorFlow SavedModel 는 각각의 프레임워크에 고유합니다. ONNX 중개자 역할을 하여 이러한 형식 간에 변환하거나 공통 런타임을 통해 배포할 수 있도록 합니다. TorchScript 는 PyTorch 모델 직렬화를 위한 또 다른 포맷으로, 때때로 ONNX 내보내기의 대안 또는 전구체로 사용됩니다.
  • 추론 엔진/런타임: ONNX 런타임과 같은 도구, TensorRT, 및 OpenVINO 와 같은 도구는 ML 모델을 효율적으로 실행하도록 설계된 소프트웨어 라이브러리입니다. 이러한 엔진 중 다수는 ONNX 모델을 사용할 수 있으며, 특정 하드웨어 타겟에 대한 추가 최적화 (예: 양자화 또는 그래프 융합)를 적용하는 경우가 많습니다. ONNX 이러한 엔진에 표준화된 모델 입력을 제공합니다.

요약하자면, ONNX 머신 러닝 작업(MLOps) 파이프라인에서 유연성과 상호 운용성을 보장하는 중요한 표준으로, 개발자가 프레임워크 제한의 제약 없이 학습 및 배포에 가장 적합한 도구를 선택할 수 있게 해줍니다. Ultralytics HUB와 같은 플랫폼은 이러한 형식을 활용하여 모델 개발에서 실제 적용까지의 여정을 간소화합니다.

모두 보기