YOLO Vision 2026:

Huawei Ascend Integration for Ultralytics YOLO#

Huawei Ascend AI 프로세서에 컴퓨터 비전 모델을 배포하려면 Ascend AI Core에서 실행되는 .om 오프라인 모델 형식으로 모델을 컴파일해야 합니다. Ultralytics YOLO 모델을 Ascend로 내보내면 로보틱스, 산업용 검사, 스마트 카메라 배포 전반에서 사용되는 Atlas 개발자 보드 및 OrangePi AIPro 기기에서 빠르고 저전력인 추론을 실행할 수 있습니다.

Huawei Ascend란 무엇인가요?#

Huawei Ascend는 화웨이의 이종 컴퓨팅 스택인 CANN(Compute Architecture for Neural Networks)과 쌍을 이루는 AI 프로세서 패밀리입니다. CANN은 표준 ONNX 그래프를 Ascend AI Core를 타겟팅하는 하드웨어별 .om 오프라인 모델로 변환하는 호스트 측 도구인 ATC(Ascend Tensor Compiler)를 제공합니다.

ATC는 완전히 호스트에서 실행되므로 Ascend 하드웨어를 연결하지 않고도 일반 x86-64 또는 ARM64 Linux 머신에서 모델을 컴파일한 다음, 생성된 .om을 타겟 기기로 복사하여 추론을 수행할 수 있습니다.

Ascend NPU에서 학습하기#

Ultralytics는 AMP, 검증, 체크포인팅, 재개, AutoBatch를 포함하여 torch_npu을 사용한 단일 및 다중 NPU 학습을 지원합니다. device=npu:0을 통해 하나의 NPU를 선택하거나 device=npu:0,1를 통해 여러 NPU를 선택할 수 있으며, 분산 학습에는 HCCL이 사용됩니다. 호환되는 CANN, PyTorch 및 torch_npu 버전을 설치하고 먼저 CANN 환경을 소스(source)하세요. 설치 및 사용 예시는 Ascend NPU 학습 섹션을 참조하세요.

Ascend 내보내기 포맷#

Ultralytics 내보내기 도구는 먼저 중간 ONNX 그래프를 기록한 다음, name 인수로 타겟팅하는 SoC에 맞게 컴파일하도록 ATC를 호출합니다. 그 결과 .om 바이너리 및 Ultralytics 메타데이터를 담고 있는 독립형 모델 디렉터리가 생성됩니다.

Ascend 모델의 주요 특징#

  • 전용 AI Core: 컴파일된 모델은 호스트 CPU가 아닌 Ascend AI Core에서 실행되므로 실시간 카메라 파이프라인에서 훨씬 더 높은 처리량을 제공합니다.
  • 호스트 측 컴파일: ATC에는 연결된 NPU가 필요 없으므로 CI, 컨테이너 또는 노트북에서 내보내기가 실행됩니다.
  • ONNX 우선(ONNX-first): 표준 Ultralytics ONNX 내보내기는 독점적인 중간 형식 없이 CANN 툴체인으로 직접 공급됩니다.
  • 정적 형태(Static shapes): 입력 형태가 컴파일 타임에 .om에 고정되므로 런타임 형태 협상 오버헤드가 제거됩니다.
  • 다중 기기 타겟팅: name을 변경하여 지원되는 모든 SoC용으로 동일한 ONNX 그래프가 컴파일됩니다.

지원되는 작업#

Huawei Ascend 내보내기는 7가지 Ultralytics 태스크를 모두 지원합니다. 시맨틱 세그멘테이션과 깊이 추정은 해당 헤드가 포함된 유일한 모델 패밀리인 YOLOv8에서만 사용할 수 있습니다.

작업YOLOv8YOLO11YOLO26
Detect
세그먼트
시맨틱
깊이
분류
Pose
OBB

지원되는 기기#

name과 함께 타겟 SoC를 전달하세요. ATC가 이를 .om 내에 --soc_version로 반영하므로 배포할 보드와 일치해야 합니다. 로컬에서는 CANN 설치가 커널을 제공하는 모든 SoC용으로 컴파일할 수 있습니다. Ultralytics Platform은 Ascend310P1, Ascend310P3, Ascend310B1 및 Ascend310B4 타겟을 지원합니다.

name기기로컬 내보내기플랫폼
Ascend310P3Atlas 300I Pro, Atlas 300V Pro
Ascend310P1Atlas 300I
Ascend310B4OrangePi AIPro 20T, Atlas 200I A2
Ascend310B1OrangePi AIPro 8T

Ascend로 내보내기: YOLO 모델 변환하기#

참고

Ascend 내보내기에는 Linux 전용인 CANN 툴킷이 필요합니다. atc 컴파일러는 PATH에 있어야 합니다. 내보내기 전에 CANN 환경 스크립트를 소스(source)하세요 (예: source /usr/local/Ascend/ascend-toolkit/set_env.sh).

설치#

Ultralytics를 설치한 후 Huawei에서 CANN을 별도로 설치하세요.

설치
# Install the required package for YOLO
pip install ultralytics

CANN 툴킷은 화웨이에서 배포하며 자동으로 설치되지 않습니다. Ascend 커뮤니티 다운로드 페이지에서 다운로드하거나, ATC 및 해당 종속성을 번들로 포함하는 공식 ascendai/cann 컨테이너 이미지 중 하나를 사용하세요.

타겟 SoC에 툴킷 맞추기

ATC는 연산자 커널이 설치된 SoC 패밀리에 대해서만 컴파일할 수 있습니다. ascend310p 커널만 포함된 툴킷은 Ascend310B4 타겟을 요청받았을 때 No supported Ops kernel and engine are found for ... Conv2D로 인해 실패합니다. 배포하려는 디바이스에 맞는 일치하는 Ascend-cann-kernels-<soc> 패키지를 설치하세요.

사용법#

Ascend 형식은 내보내기(Export), 예측(Predict)검증(Validate) 모드를 지원합니다. 추론과 검증은 Ascend 하드웨어에서 실행됩니다. 모델을 내보낸 다음, 내보낸 모델을 로드하여 추론을 실행하거나 정확도를 검증하세요.

내보내기(Export)
from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to Ascend format for an Atlas 200I / OrangePi AIPro board
model.export(format="ascend", name="Ascend310B4")

# Load the exported Ascend model and run inference on the device
ascend_model = YOLO("yolo26n_ascend_model")
results = ascend_model("https://ultralytics.com/images/bus.jpg")

내보내기 인수#

인수유형기본값설명
formatstr'ascend'Ascend AI 프로세서와의 호환성을 정의하는, 내보낸 모델의 타겟 포맷입니다.
namestr'Ascend310B4'--soc_version으로 ATC에 전달되는 타겟 SoC (예: Ascend310P3). CANN 설치에 커널이 있는 모든 SoC가 유효합니다. 지원되는 기기(Supported Devices)를 참조하세요. 배포 기기와 일치해야 합니다.
imgszint 또는 tuple640모델 입력을 위한 원하는 이미지 크기이며, 정적 형태로 .om에 고정됩니다.
batchint1오프라인 모델로 컴파일된 정적 배치 크기입니다.
quantizeint16양자화 정밀도. Ascend 내보내기는 FP16 전용이며 지정되지 않은 경우 16을 자동으로 활성화합니다. 더 이상 사용되지 않는 half/int8 플래그를 대체합니다.
opsetint17중간 그래프를 위한 ONNX opset. CANN ONNX 파서가 허용하는 가장 높은 버전인 17로 제한됩니다.
simplifyboolTrueonnxslim(으)로 중간 ONNX 그래프를 단순화합니다.
nmsboolFalse지원되는 감지, 세그멘테이션, 포즈, OBB 모델에 NMS(비최대 수압)를 추가합니다.
FP32를 사용할 수 없는 이유는 무엇인가요?

Ascend AI Core는 합성곱에 대해 DT_FLOAT16DT_INT8 입력만 허용하므로 FP32 오프라인 모델은 하드웨어에서 실행될 수 없습니다. quantize=32를 요청하면 실행되지 않는 모델을 조용히 생성하는 대신 오류가 발생합니다.

내보내기 프로세스에 대한 자세한 내용은 내보내기에 관한 Ultralytics 문서 페이지를 방문하세요.

출력 구조#

성공적으로 내보낸 후에는 다음 레이아웃의 모델 디렉토리가 생성됩니다:

yolo26n_ascend_model/
├── yolo26n_Ascend310B4.om  # Compiled Ascend offline model (AI Core executable)
└── metadata.yaml           # Model metadata (classes, image size, task, etc.)

.om 파일은 CANN 런타임이 기기에서 로드하는 컴파일된 오프라인 모델입니다. 아티팩트가 자체 설명적이도록 이름에 타겟 SoC가 포함되어 있습니다. 로더가 거기서 찾은 단일 모델을 선택하므로 디렉터리당 하나의 .om을 유지하세요. metadata.yaml에는 Ultralytics 추론 파이프라인에서 사용하는 클래스 이름, 이미지 크기 및 기타 정보가 포함되어 있습니다.

내보낸 YOLO Ascend 모델 배포하기#

Ultralytics YOLO 모델을 Ascend 포맷으로 성공적으로 내보낸 후 다음 단계는 Ascend 하드웨어에 배포하는 것입니다.

런타임 설치#

추론을 수행하려면 기기의 CANN 런타임과 CANN의 pyACL 바인딩을 래핑하는 ais_bench Python 패키지가 필요합니다. 화웨이 Ascend 도구 리포지토리에서 빌드하고 설치하세요:

# On the Ascend device, with CANN installed and sourced
source /usr/local/Ascend/ascend-toolkit/set_env.sh

# Build and install the ais_bench inference wheel
git clone https://gitee.com/ascend/tools.git
cd tools/ais-bench_workload/tool/ais_bench
pip3 wheel ./backend -v
pip3 install ./aclruntime-*.whl
pip3 wheel ./ -v
pip3 install ./ais_bench-*.whl

내보낸 yolo26n_ascend_model 디렉터리를 기기에 복사한 다음, 다른 Ultralytics 형식과 정확히 동일하게 추론을 실행하세요.

권장 워크플로우#

  1. Ultralytics 학습 모드(Train Mode)를 사용하여 모델을 **학습(Train)**하거나 사전 학습된 체크포인트에서 시작하세요.
  2. 타겟 SoC와 일치하는 name을 전달하여 CANN이 설치된 모든 Linux 호스트에서 Ascend로 **내보내기(Export)**하세요.
  3. 내보낸 모델 디렉터리를 Ascend 기기로 **복사(Copy)**합니다.
  4. 온디바이스 추론을 위해 CANN 런타임 및 ais_bench으로 **배포(Deploy)**하세요.

실제 활용 사례#

Ascend 하드웨어에서 실행되는 YOLO 모델은 다양한 임베디드 및 산업용 비전 애플리케이션에 적합합니다:

  • 산업 자동화: 생산 라인에서의 고속 품질 검사 및 결함 감지.
  • 스마트 감시: 중앙 서버 없는 엣지 게이트웨이에서의 실시간 다중 카메라 객체 감지.
  • 로보틱스: 자율 이동 로봇 및 협동 로봇 팔을 위한 온보드 인지.
  • 스마트 시티: 저전력 노변 장치에서의 트래픽 모니터링 및 보행자 분석.

요약#

이 가이드에서는 Huawei Ascend NPU에서 Ultralytics YOLO를 학습하고 CANN ATC 컴파일러를 사용하여 모델을 Ascend .om 형식으로 내보내는 방법을 배웠습니다. 내보내기는 호스트에서 완전히 실행되며, 독립형 모델 디렉터리를 생성하고, 단일 name 인수를 통해 지원되는 모든 Ascend SoC를 타겟팅합니다.

사용법에 대한 자세한 내용은 공식 CANN 문서를 방문하세요.

또한 다른 Ultralytics YOLO 통합에 대해 자세히 알아보려면 통합 가이드 페이지를 방문하여 유용한 리소스를 확인하세요.

FAQ#

  • Ultralytics 및 CANN 툴킷을 설치하고, atcPATH에 있도록 CANN 환경을 소스(source)한 다음, Python에서 model.export(format="ascend", name="Ascend310B4")를 사용하거나 CLI에서 yolo export model=yolo26n.pt format=ascend name=Ascend310B4으로 내보내세요. name를 배포 기기의 SoC로 설정하세요.

  • 아니요. ATC 컴파일러는 호스트에서 완전히 실행되므로 NPU가 연결되지 않은 표준 x86-64 또는 ARM64 Linux 머신에서 컴파일이 작동합니다. 내보낸 .om에서 추론을 실행하려면 Ascend 하드웨어가 필요합니다.

  • CANN 설치에 요청한 SoC용 연산자 커널이 포함되어 있지 않습니다. 각 툴킷에는 특정 SoC 패밀리용 커널이 포함되어 있으므로 타겟에 맞는 Ascend-cann-kernels-<soc> 패키지를 설치하거나 해당 기기 패밀리용으로 빌드된 컨테이너 이미지를 사용하세요.

  • Ascend AI Core 합성곱은 DT_FLOAT16DT_INT8 텐서만 허용합니다. FP32 오프라인 모델은 하드웨어에서 실행에 실패하므로 내보내기 도구는 --precision_mode=force_fp16로 컴파일하며 명시적인 quantize=32 요청은 거부합니다.

  • name 인수를 통해 선택된, 설치된 CANN 툴킷이 커널을 제공하는 모든 SoC. 검증된 4가지 타겟 및 Ultralytics Platform에서의 가용성에 대해서는 지원되는 기기(Supported Devices)를 참조하세요.

댓글