콘텐츠로 건너뛰기

Ultralytics YOLO 모델에 대한 OpenVINO 추론 최적화하기: 종합 가이드

OpenVINO 에코시스템

소개

딥 러닝 모델, 특히 Ultralytics YOLO 모델과 같은 객체 감지를 위한 모델을 배포할 때는 최적의 성능을 달성하는 것이 중요합니다. 이 가이드에서는 지연 시간과 처리량에 중점을 두고 추론을 최적화하기 위해 Intel OpenVINO 툴킷을 활용하는 방법에 대해 자세히 설명합니다. 소비자급 애플리케이션을 작업하든 대규모 배포를 하든, 이러한 최적화 전략을 이해하고 적용하면 다양한 디바이스에서 모델을 효율적으로 실행할 수 있습니다.

지연 시간 최적화

지연 시간 최적화는 소비자 시나리오에서 흔히 볼 수 있는 단일 입력이 주어지면 단일 모델의 즉각적인 응답이 필요한 애플리케이션에 필수적입니다. 목표는 입력과 추론 결과 사이의 지연을 최소화하는 것입니다. 그러나 짧은 지연 시간을 달성하려면 특히 동시 추론을 실행하거나 여러 모델을 관리할 때 신중한 고려가 필요합니다.

지연 시간 최적화를 위한 주요 전략:

  • 디바이스당 단일 추론: 지연 시간을 줄이는 가장 간단한 방법은 디바이스당 한 번에 한 번만 추론하도록 제한하는 것입니다. 동시성이 증가하면 지연 시간이 증가하는 경우가 많습니다.
  • 하위 장치 활용: 멀티 소켓 CPU 또는 멀티 타일 GPU와 같은 장치는 내부 하위 장치를 활용하여 지연 시간 증가를 최소화하면서 여러 요청을 실행할 수 있습니다.
  • OpenVINO 성능 힌트: OpenVINO 의 ov::hint::PerformanceMode::LATENCY 에 대한 ov::hint::performance_mode 속성을 사용하면 모델 컴파일 중 성능 튜닝이 간소화되어 기기에 구애받지 않고 미래에도 사용할 수 있는 접근 방식을 제공합니다.

첫 번째 추론 지연 시간 관리:

  • 모델 캐싱: 지연 시간에 영향을 미치는 모델 로드 및 컴파일 시간을 줄이려면 가능한 경우 모델 캐싱을 사용하세요. 캐싱을 사용할 수 없는 시나리오의 경우 일반적으로 CPU가 가장 빠른 모델 로드 시간을 제공합니다.
  • 모델 매핑 대 읽기: 로드 시간을 줄이기 위해 OpenVINO 에서 모델 읽기를 매핑으로 대체했습니다. 그러나 모델이 이동식 또는 네트워크 드라이브에 있는 경우 다음을 사용하는 것이 좋습니다. ov::enable_mmap(false) 를 클릭하여 다시 읽기로 전환합니다.
  • 자동 장치 선택: 이 모드는 CPU 에서 추론을 시작하고 준비가 되면 가속기로 전환하여 첫 번째 추론 대기 시간을 원활하게 줄입니다.

처리량 최적화

처리량 최적화는 수많은 추론 요청을 동시에 처리하는 시나리오에서 매우 중요하며, 개별 요청 성능을 크게 저하시키지 않으면서 리소스 활용도를 극대화합니다.

처리량 최적화를 위한 접근 방식:

  1. OpenVINO 성능 힌트: 성능 힌트를 사용하여 여러 디바이스에서 처리량을 향상시키는 높은 수준의 미래 지향적인 방법입니다.

    import openvino.properties.hint as hints
    
    config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
    compiled_model = core.compile_model(model, "GPU", config)
    
  2. 명시적 배치 및 스트림: 고급 성능 튜닝을 위한 명시적 일괄 처리 및 스트림 사용과 관련된 보다 세분화된 접근 방식입니다.

처리량 지향 애플리케이션 설계:

처리량을 최대화하려면 애플리케이션은 다음과 같이 해야 합니다:

  • 기기의 기능을 최대한 활용하여 입력을 병렬로 처리합니다.
  • 데이터 흐름을 병렬 실행을 위해 예약된 동시 추론 요청으로 분해합니다.
  • 콜백이 포함된 비동기 API를 활용하여 효율성을 유지하고 디바이스 고갈을 방지하세요.

다중 장치 실행:

OpenVINO의 멀티 디바이스 모드는 애플리케이션 수준의 디바이스 관리 없이도 디바이스 간 추론 요청의 균형을 자동으로 조정하여 처리량 확장을 간소화합니다.

실제 성능 향상

Ultralytics YOLO 모델로 OpenVINO 최적화를 구현하면 상당한 성능 향상을 얻을 수 있습니다. 벤치마크에서 입증된 바와 같이, 사용자는 Intel CPU에서 최대 3배 빠른 추론 속도를 경험할 수 있으며, 통합 GPU, 전용 GPU 및 VPU를 포함한 Intel 하드웨어 스펙트럼에서 훨씬 더 빠른 가속화가 가능합니다.

예를 들어, Intel 제온 CPU에서 YOLOv8 모델을 실행할 때 OpenVINO 버전은 정확도 저하 없이 이미지당 추론 시간 측면에서 PyTorch 버전보다 지속적으로 우수한 성능을 발휘합니다.

실제 구현

내보내기 기능을 사용하여 OpenVINO Ultralytics YOLO 모델을 내보내고 최적화할 수 있습니다:

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")

# Export the model to OpenVINO format
model.export(format="openvino", half=True)  # Export with FP16 precision

내보낸 후에는 최적화된 모델로 추론을 실행할 수 있습니다:

# Load the OpenVINO model
ov_model = YOLO("yolov8n_openvino_model/")

# Run inference with performance hints for latency
results = ov_model("path/to/image.jpg", verbose=True)

결론

Ultralytics YOLO 모델을 지연 시간 및 처리량에 맞게 최적화하면 OpenVINO 애플리케이션의 성능을 크게 향상시킬 수 있습니다. 이 가이드에 설명된 전략을 신중하게 적용하면 개발자는 모델이 효율적으로 실행되어 다양한 배포 시나리오의 요구 사항을 충족할 수 있습니다. 지연 시간 최적화 또는 처리량 최적화 중 어떤 것을 선택할지는 특정 애플리케이션의 요구 사항과 배포 환경의 특성에 따라 달라진다는 점을 기억하세요.

자세한 기술 정보와 최신 업데이트는 OpenVINO 문서와 Ultralytics YOLO 리포지토리를 참조하세요. 이러한 리소스에서는 딥러닝 모델을 최대한 활용할 수 있도록 심층적인 가이드, 튜토리얼 및 커뮤니티 지원을 제공합니다.


모델이 최적의 성능을 달성하도록 하는 것은 단순히 구성을 조정하는 것이 아니라 애플리케이션의 요구 사항을 이해하고 정보에 입각한 의사 결정을 내리는 것입니다. 실시간 응답을 최적화하든 대규모 처리를 위한 처리량을 극대화하든, Ultralytics YOLO 모델과 OpenVINO 조합은 개발자가 고성능 AI 솔루션을 배포할 수 있는 강력한 툴킷을 제공합니다.

자주 묻는 질문

OpenVINO 을 사용하여 짧은 지연 시간을 위해 Ultralytics YOLO 모델을 최적화하려면 어떻게 해야 하나요?

짧은 지연 시간을 위해 Ultralytics YOLO 모델을 최적화하는 데는 몇 가지 주요 전략이 필요합니다:

  1. 장치당 단일 추론: 지연을 최소화하기 위해 디바이스당 추론을 한 번에 한 번으로 제한합니다.
  2. 하위 장치 활용: 지연 시간 증가를 최소화하면서 여러 요청을 처리할 수 있는 멀티 소켓 CPU 또는 멀티 타일 GPU와 같은 장치를 활용하세요.
  3. OpenVINO 성능 힌트: OpenVINO 사용 ov::hint::PerformanceMode::LATENCY 를 사용하여 모델 컴파일 중에 디바이스에 구애받지 않고 간편하게 튜닝할 수 있습니다.

지연 시간 최적화에 대한 보다 실용적인 팁은 가이드의 지연 시간 최적화 섹션을 참조하세요.

Ultralytics YOLO 처리량 최적화를 위해 OpenVINO 을 사용해야 하는 이유는 무엇인가요?

OpenVINO 성능 저하 없이 디바이스 리소스 활용도를 극대화하여 Ultralytics YOLO 모델 처리량을 향상시킵니다. 주요 이점은 다음과 같습니다:

  • 성능 힌트: 여러 기기에서 간단하고 높은 수준의 성능 튜닝이 가능합니다.
  • 명시적 일괄 처리 및 스트림: 고급 성능을 위한 미세 조정.
  • 멀티 디바이스 실행: 자동화된 추론 로드 밸런싱으로 애플리케이션 수준 관리가 간편해집니다.

구성 예시:

import openvino.properties.hint as hints

config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
compiled_model = core.compile_model(model, "GPU", config)

처리량 최적화에 대한 자세한 내용은 상세 가이드의 처리량 최적화 섹션에서 확인하세요.

OpenVINO 에서 첫 번째 추론 지연 시간을 줄이기 위한 모범 사례는 무엇인가요?

첫 번째 추론 지연 시간을 줄이려면 다음 사례를 고려하세요:

  1. 모델 캐싱: 모델 캐싱을 사용하여 로드 및 컴파일 시간을 줄입니다.
  2. 모델 매핑 대 읽기: 매핑 사용(ov::enable_mmap(true))를 기본값으로 사용하지만 읽기(ov::enable_mmap(false)) 모델이 이동식 또는 네트워크 드라이브에 있는 경우.
  3. 자동 장치 선택: 자동 모드를 활용하여 CPU 추론으로 시작하여 가속기로 원활하게 전환할 수 있습니다.

첫 번째 추론 대기 시간 관리에 대한 자세한 전략은 첫 번째 추론 대기 시간 관리 섹션을 참조하세요.

지연 시간과 처리량 최적화의 균형을 맞추려면 어떻게 해야 하나요 Ultralytics YOLO 와 OpenVINO?

지연 시간과 처리량 최적화의 균형을 맞추려면 애플리케이션 요구 사항을 이해해야 합니다:

  • 지연 시간 최적화: 즉각적인 응답이 필요한 실시간 애플리케이션(예: 소비자 등급 앱)에 이상적입니다.
  • 처리량 최적화: 동시 추론이 많은 시나리오에 가장 적합하며 리소스 사용을 극대화합니다(예: 대규모 배포).

OpenVINO 의 고급 성능 힌트와 멀티 디바이스 모드를 사용하면 적절한 균형을 맞추는 데 도움이 될 수 있습니다. 특정 요구 사항에 따라 적절한 OpenVINO 성능 힌트를 선택하세요.

OpenVINO 외에 다른 AI 프레임워크와 함께 Ultralytics YOLO 모델을 사용할 수 있나요?

예, Ultralytics YOLO 모델은 매우 다재다능하며 다양한 AI 프레임워크와 통합할 수 있습니다. 옵션은 다음과 같습니다:

Ultralytics 통합 페이지에서 더 많은 통합 기능을 살펴보세요.

📅1 년 전 생성됨 ✏️ 업데이트됨 9 일 전

댓글