Link to this sectionHuawei Ascend Export for Ultralytics YOLO Models#
Huawei Ascend AI 프로세서에 컴퓨터 비전 모델을 배포하려면 Ascend AI Core에서 실행되는 .om 오프라인 모델 포맷으로 컴파일해야 합니다. Ultralytics YOLO 모델을 Ascend로 내보내면 로보틱스, 산업용 검사, 스마트 카메라 배포 전반에 사용되는 Atlas 개발자 보드 및 OrangePi AIPro 기기에서 빠르고 전력 소모가 적은 추론을 실행할 수 있습니다.
Link to this sectionHuawei Ascend란 무엇인가요?#
Huawei Ascend는 Huawei의 이기종 컴퓨팅 스택인 CANN(Compute Architecture for Neural Networks)과 결합된 AI 프로세서 제품군입니다. CANN에는 표준 ONNX 그래프를 Ascend AI Core를 타겟팅하는 하드웨어 전용 .om 오프라인 모델로 변환하는 호스트 측 도구인 ATC(Ascend Tensor Compiler)가 포함되어 있습니다.
ATC는 완전히 호스트에서 실행되므로 Ascend 하드웨어를 부착하지 않고도 일반 x86-64 또는 ARM64 Linux 머신에서 모델을 컴파일한 다음, 결과 .om 파일을 타겟 기기로 복사하여 추론을 수행할 수 있습니다.
Link to this sectionAscend 내보내기 포맷#
Ultralytics 내보내기 도구는 먼저 중간 ONNX 그래프를 작성한 다음, name 인수로 타겟팅하는 SoC에 맞게 컴파일하도록 ATC를 호출합니다. 그 결과로 .om 바이너리 및 Ultralytics 메타데이터를 담고 있는 자체 포함형 모델 디렉터리가 생성됩니다.
Link to this sectionAscend 모델의 주요 특징#
- 전용 AI Core: 컴파일된 모델은 호스트 CPU가 아닌 Ascend AI Core에서 실행되므로 실시간 카메라 파이프라인에서 훨씬 더 높은 처리량을 제공합니다.
- 호스트 측 컴파일: ATC에는 연결된 NPU가 필요 없으므로 CI, 컨테이너 또는 노트북에서 내보내기가 실행됩니다.
- ONNX 우선: 표준 Ultralytics ONNX 내보내기는 독점적인 중간 포맷 없이 CANN 툴체인으로 직접 공급됩니다.
- 정적 형태(Static shapes): 입력 형태가 컴파일 시점에
.om에 고정되므로 런타임 형태 협상 오버헤드가 제거됩니다. - 다중 기기 타겟팅:
name을 변경하여 지원되는 모든 SoC용으로 동일한 ONNX 그래프를 컴파일할 수 있습니다.
Link to this section지원되는 작업#
Ascend 내보내기는 7가지 Ultralytics 태스크를 모두 지원합니다. 감지, 인스턴스 세그멘테이션, 포즈, OBB, 분류는 YOLO26, YOLO11, YOLOv8 패밀리를 다루며, 시맨틱 세그멘테이션과 깊이 추정은 YOLO26 전용입니다.
Link to this section지원되는 기기#
Pass the target SoC with name; ATC bakes it into the .om as --soc_version, so it must match the board you deploy to. Locally you can compile for any SoC your CANN installation provides kernels for. On Ultralytics Platform, the 310B targets are listed as coming soon while their operator kernels are added to the build image.
name | 기기 | 로컬 내보내기 | 플랫폼 |
|---|---|---|---|
Ascend310P3 | Atlas 300I Pro, Atlas 300V Pro | ✅ | ✅ |
Ascend310P1 | Atlas 300I | ✅ | ✅ |
Ascend310B4 | OrangePi AIPro 20T, Atlas 200I A2 | ✅ | 출시 예정 |
Ascend310B1 | OrangePi AIPro 8T | ✅ | 출시 예정 |
Link to this sectionAscend로 내보내기: YOLO 모델 변환하기#
Ascend 내보내기에는 Linux 전용인 CANN 툴킷이 필요합니다. atc 컴파일러가 PATH에 있어야 합니다. 내보내기 전에 source /usr/local/Ascend/ascend-toolkit/set_env.sh와 같이 CANN 환경 스크립트를 소싱하세요.
Link to this section설치#
Ultralytics를 설치한 후 Huawei에서 CANN을 별도로 설치하세요.
# Install the required package for YOLO
pip install ultralyticsCANN 툴킷은 Huawei에서 배포하며 자동으로 설치되지 않습니다. Ascend 커뮤니티 다운로드 페이지에서 다운로드하거나, ATC 및 그 종속성을 번들로 포함하는 공식 ascendai/cann 컨테이너 이미지 중 하나를 사용하세요.
ATC can only compile for SoC families whose operator kernels are installed. A toolkit carrying only ascend310p kernels fails with No supported Ops kernel and engine are found for ... Conv2D when asked for an Ascend310B4 target. Install the matching Ascend-cann-kernels-<soc> package for the device you deploy to.
Link to this section사용법#
Ascend 포맷은 Export, Predict, Validate 모드를 지원합니다. 추론과 검증은 Ascend 하드웨어에서 실행됩니다. 모델을 내보낸 다음 내보낸 모델을 로드하여 추론을 실행하거나 정확도를 검증하세요.
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")Link to this section내보내기 인수#
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
format | str | 'ascend' | Ascend AI 프로세서와의 호환성을 정의하는, 내보낸 모델의 타겟 포맷입니다. |
name | str | 'Ascend310B4' | --soc_version으로 ATC에 전달되는 타겟 SoC (예: Ascend310P3). CANN 설치에 커널이 있는 모든 SoC가 유효합니다. 지원되는 기기를 참조하세요. 배포 기기와 일치해야 합니다. |
imgsz | int 또는 tuple | 640 | 모델 입력을 위한 원하는 이미지 크기이며, 정적 형태(static shape)로 .om에 포함됩니다. |
batch | int | 1 | 오프라인 모델로 컴파일된 정적 배치 크기입니다. |
quantize | int | 16 | 양자화 정밀도. Ascend 내보내기는 FP16 전용이며 지정하지 않으면 16을 자동으로 활성화합니다. 더 이상 사용되지 않는 half/int8 플래그를 대체합니다. |
opset | int | 17 | 중간 그래프를 위한 ONNX opset. CANN ONNX 파서가 허용하는 가장 높은 버전인 17로 제한됩니다. |
simplify | bool | True | onnxslim을 사용하여 중간 ONNX 그래프를 단순화합니다. |
nms | bool | False | 지원되는 감지, 세그멘테이션, 포즈, OBB 모델에 NMS(비최대 수압)를 추가합니다. |
Ascend AI Core는 컨볼루션에 대해 DT_FLOAT16 및 DT_INT8 입력만 허용하므로 FP32 오프라인 모델은 하드웨어에서 실행될 수 없습니다. quantize=32를 요청하면 실행되지 않는 모델을 조용히 생성하는 대신 오류가 발생합니다.
내보내기 프로세스에 대한 자세한 내용은 내보내기에 대한 Ultralytics 문서 페이지를 참조하십시오.
Link to this section출력 구조#
성공적으로 내보낸 후에는 다음 레이아웃의 모델 디렉토리가 생성됩니다:
yolo26n_ascend_model/
├── yolo26n_Ascend310B4.om # Compiled Ascend offline model (AI Core executable)
└── metadata.yaml # Model metadata (classes, image size, task, etc.)The .om file is the compiled offline model that the CANN runtime loads on the device. Its name carries the target SoC so the artifact is self-describing; keep one .om per directory, since the loader picks the single model it finds there. The metadata.yaml contains class names, image size, and other information used by the Ultralytics inference pipeline.
Link to this section내보낸 YOLO Ascend 모델 배포하기#
Ultralytics YOLO 모델을 Ascend 포맷으로 성공적으로 내보낸 후 다음 단계는 Ascend 하드웨어에 배포하는 것입니다.
Link to this section런타임 설치#
추론을 수행하려면 기기의 CANN 런타임과 CANN의 pyACL 바인딩을 래핑하는 ais_bench Python 패키지가 필요합니다. Huawei 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 포맷과 정확히 동일하게 추론을 실행하세요.
Link to this section권장 워크플로우#
- Ultralytics Train 모드를 사용하여 모델을 **훈련(Train)**하거나 사전 훈련된 체크포인트에서 시작하세요.
- CANN이 설치된 Linux 호스트에서 Ascend로 **내보내기(Export)**를 수행하고 타겟 SoC와 일치하는
name을 전달합니다. - 내보낸 모델 디렉터리를 Ascend 기기로 **복사(Copy)**합니다.
- 기기 내 추론을 위해 CANN 런타임 및
ais_bench로 **배포(Deploy)**합니다.
Link to this section실제 활용 사례#
Ascend 하드웨어에서 실행되는 YOLO 모델은 다양한 임베디드 및 산업용 비전 애플리케이션에 적합합니다:
- 산업 자동화: 생산 라인에서의 고속 품질 검사 및 결함 감지.
- 스마트 감시: 중앙 서버 없는 엣지 게이트웨이에서의 실시간 다중 카메라 객체 감지.
- 로보틱스: 자율 이동 로봇 및 협동 로봇 팔을 위한 온보드 인지.
- 스마트 시티: 저전력 노변 장치에서의 트래픽 모니터링 및 보행자 분석.
Link to this section요약#
이 가이드에서는 CANN ATC 컴파일러를 사용하여 Ultralytics YOLO 모델을 Huawei Ascend .om 포맷으로 내보내는 방법을 배웠습니다. 내보내기는 호스트에서 완전히 실행되며, 자체 포함된 모델 디렉터리를 생성하고 단일 name 인수를 통해 지원되는 모든 Ascend SoC를 타겟팅하므로 훈련된 .pt 체크포인트에서 Ascend AI 프로세서의 가속화된 FP16 추론으로 가는 직접적인 경로를 제공합니다.
사용법에 대한 자세한 내용은 공식 CANN 문서를 방문하세요.
또한 다른 Ultralytics YOLO integrations에 대해 더 알고 싶으시다면, 유용한 리소스가 가득한 integration guide 페이지를 방문해 보세요.
Link to this sectionFAQ#
Link to this sectionUltralytics YOLO 모델을 Ascend 포맷으로 어떻게 내보내나요?#
Ultralytics와 CANN 툴킷을 설치하고, atc가 PATH에 있도록 CANN 환경을 소싱한 다음, Python에서 model.export(format="ascend", name="Ascend310B4") 또는 CLI에서 yolo export model=yolo26n.pt format=ascend name=Ascend310B4를 사용하여 내보냅니다. name을 배포 기기의 SoC로 설정하세요.
Link to this section모델을 내보내려면 Ascend 하드웨어가 필요한가요?#
아니요. ATC 컴파일러는 호스트에서 완전히 실행되므로 NPU가 연결되지 않은 표준 x86-64 또는 ARM64 Linux 머신에서 컴파일이 작동합니다. 내보낸 .om에서 추론을 실행하려면 Ascend 하드웨어가 필요합니다.
Link to this section내보내기가 "No supported Ops kernel and engine are found" 오류로 실패하는 이유는 무엇인가요?#
CANN 설치에 요청한 SoC용 연산자 커널이 포함되어 있지 않습니다. 각 툴킷은 특정 SoC 패밀리용 커널을 번들로 제공하므로 타겟에 맞는 Ascend-cann-kernels-<soc> 패키지를 설치하거나 해당 기기 패밀리용으로 빌드된 컨테이너 이미지를 사용하세요.
Link to this sectionAscend 내보내기가 FP16만 지원하는 이유는 무엇인가요?#
Ascend AI Core 컨볼루션은 DT_FLOAT16 및 DT_INT8 텐서만 허용합니다. FP32 오프라인 모델은 하드웨어에서 실행되지 않으므로 내보내기 도구는 --precision_mode=force_fp16으로 컴파일하고 명시적인 quantize=32 요청을 거부합니다.
Link to this section어떤 Ascend 기기가 지원되나요?#
name 인수를 통해 선택된, 설치된 CANN 툴킷이 커널을 제공하는 모든 SoC. 검증된 4가지 타겟과 Ultralytics Platform에서의 가용성은 지원되는 기기를 참조하세요.