Ultralytics YOLO를 위한 Huawei Ascend 통합#
Huawei Ascend AI 프로세서에 컴퓨터 비전 모델을 배포하려면 Ascend AI Core에서 실행되는 .om 오프라인 모델 형식으로 컴파일해야 합니다. Ultralytics YOLO 모델을 Ascend로 내보내면 로보틱스, 산업 검사, 스마트 카메라 배포 전반에서 사용되는 Atlas 개발 보드와 OrangePi AIPro 디바이스에서 빠르고 저전력으로 추론을 실행할 수 있습니다.
Huawei Ascend란 무엇입니까?#
Huawei Ascend는 CANN(신경망용 컴퓨팅 아키텍처)과 함께 사용되는 AI 프로세서 제품군으로, Huawei의 이기종 컴퓨팅 스택입니다. CANN에는 표준 ONNX 그래프를 Ascend AI Core를 대상으로 하는 하드웨어별 .om 오프라인 모델로 변환하는 호스트 측 도구인 ATC(Ascend Tensor Compiler)가 포함되어 있습니다.
ATC는 호스트에서 전적으로 실행되므로 Ascend 하드웨어를 연결하지 않은 일반 x86-64 또는 ARM64 Linux 머신에서 모델을 컴파일한 다음, 생성된 .om을 대상 디바이스에 복사하여 추론을 실행할 수 있습니다.
Ascend NPU에서 학습#
Ultralytics는 torch_npu을 사용한 단일 및 다중 NPU 학습을 지원하며, AMP, 검증, 체크포인트 저장, 재개, AutoBatch를 포함합니다. device=npu:0로 NPU 하나를 선택하거나 device=npu:0,1로 여러 NPU를 선택할 수 있으며, 분산 학습에는 HCCL을 사용합니다.
호환되는 CANN, PyTorch 및 torch_npu 버전을 설치하고 먼저 CANN 환경을 source하십시오. 설치 및 사용 예제는 Ascend NPU 학습 섹션을 참조하십시오.
Ascend 내보내기 형식#
Ultralytics exporter는 먼저 중간 ONNX 그래프를 작성한 다음 ATC를 호출하여 name 인수로 지정한 대상 SoC에 맞게 컴파일합니다. 결과는 .om 바이너리와 Ultralytics 메타데이터를 포함하는 독립형 모델 디렉터리입니다.
Ascend 모델의 주요 기능#
- 전용 AI Core: 컴파일된 모델은 호스트 CPU가 아닌 Ascend AI Core에서 실행되므로 실시간 카메라 파이프라인에서 훨씬 높은 처리량을 제공합니다.
- 호스트 측 컴파일: ATC에는 연결된 NPU가 필요하지 않으므로 CI, 컨테이너 또는 노트북에서 내보내기를 실행할 수 있습니다.
- ONNX 우선: 표준 Ultralytics ONNX 내보내기는 독점적인 중간 형식 없이 CANN 툴체인으로 직접 전달됩니다.
- 정적 shape: 입력 shape가 컴파일 시
.om에 포함되므로 런타임 shape 협상 오버헤드가 제거됩니다. - 다중 디바이스 대상 지정:
name만 변경하면 동일한 ONNX 그래프를 지원되는 모든 SoC용으로 컴파일할 수 있습니다.
지원되는 작업#
Huawei Ascend 내보내기는 Ultralytics의 7가지 모든 작업을 지원합니다. 의미론적 세그멘테이션과 깊이 추정은 이러한 헤드를 제공하는 유일한 제품군인 YOLO26에서만 사용할 수 있습니다.
지원 디바이스#
name으로 대상 SoC를 전달하면 ATC가 이를 .om에 --soc_version로 포함하므로 배포하는 보드와 일치해야 합니다. 로컬에서는 CANN 설치에 커널이 제공되는 모든 SoC용으로 컴파일할 수 있습니다. Ultralytics Platform은 Ascend310P1, Ascend310P3, Ascend310B1 및 Ascend310B4 대상을 지원합니다.
name | 디바이스 | 로컬 내보내기 | 플랫폼 |
|---|---|---|---|
Ascend310P3 | Atlas 300I Pro, Atlas 300V Pro | ✅ | ✅ |
Ascend310P1 | Atlas 300I | ✅ | ✅ |
Ascend310B4 | OrangePi AIPro 20T, Atlas 200I A2 | ✅ | ✅ |
Ascend310B1 | OrangePi 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 ultralyticsCANN 툴킷은 Huawei에서 배포하며 자동으로 설치되지 않습니다. Ascend 커뮤니티 다운로드 페이지에서 다운로드하거나, ATC와 해당 종속 항목이 포함된 공식 ascendai/cann 컨테이너 이미지 중 하나를 사용하십시오.
ATC는 연산자 커널이 설치된 SoC 제품군에 대해서만 컴파일할 수 있습니다. ascend310p 커널만 포함된 툴킷은 Ascend310B4 대상을 요청하면 No supported Ops kernel and engine are found for ... Conv2D 오류와 함께 실패합니다. 배포할 디바이스에 맞는 Ascend-cann-kernels-<soc> 패키지를 설치하십시오.
사용법#
Ascend 형식은 내보내기, 예측 및 검증 모드를 지원합니다. 추론과 검증은 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")내보내기 인수#
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
format | str | 'ascend' | 내보낸 모델의 대상 형식으로, Ascend AI 프로세서와의 호환성을 정의합니다. |
name | str | 'Ascend310B4' | ATC에 --soc_version으로 전달되는 대상 SoC입니다(예: Ascend310P3). CANN 설치에 커널이 있는 모든 SoC가 유효합니다. 지원 디바이스를 참조하십시오. 배포 디바이스와 일치해야 합니다. |
imgsz | int 또는 tuple | 640 | 모델 입력에 사용할 이미지 크기로, 정적 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 graph를 단순화합니다. |
nms | bool | False | 지원되는 detection, segmentation, pose 및 OBB 모델에 Non-Maximum Suppression을 추가합니다. |
Ascend AI Core는 convolution 입력에 DT_FLOAT16과 DT_INT8만 허용하므로 FP32 오프라인 모델은 하드웨어에서 실행할 수 없습니다. quantize=32를 요청하면 실행되지 않는 모델을 자동으로 생성하는 대신 오류가 발생합니다.
내보내기 프로세스에 대한 자세한 내용은 Ultralytics 내보내기 문서 페이지를 참조하십시오.
출력 구조#
Export가 성공적으로 완료되면 다음과 같은 구조의 모델 디렉터리가 생성됩니다:
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 하드웨어에 배포하는 것입니다.
Runtime 설치#
추론을 실행하려면 디바이스에 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 형식과 동일한 방식으로 추론을 실행하십시오.
권장 워크플로#
- Ultralytics 학습 모드를 사용하여 모델을 학습하거나 사전 학습된 체크포인트에서 시작하십시오.
- CANN이 설치된 모든 Linux 호스트에서 대상 SoC에 맞는
name을 전달하여 Ascend로 내보내기하십시오. - 내보낸 모델 디렉터리를 Ascend 디바이스에 복사하십시오.
- CANN 런타임과
ais_bench을 사용하여 디바이스에서 추론을 배포하십시오.
실제 애플리케이션#
Ascend 하드웨어에서 실행되는 YOLO 모델은 다양한 임베디드 및 산업 비전 애플리케이션에 적합합니다.
- 산업 자동화: 생산 라인에서 고속 품질 검사와 결함을 탐지합니다.
- 스마트 감시: 중앙 서버 없이 엣지 게이트웨이에서 실시간으로 여러 카메라의 객체를 탐지합니다.
- 로보틱스: 자율 이동 로봇과 협동 로봇 팔을 위한 온보드 인식을 제공합니다.
- 스마트 시티: 저전력 도로변 장치에서 교통 모니터링과 보행자 분석을 수행합니다.
요약#
이 가이드에서는 Huawei Ascend NPU에서 Ultralytics YOLO를 학습하고 CANN ATC 컴파일러를 사용하여 모델을 Ascend .om 형식으로 내보내는 방법을 알아보았습니다. 내보내기는 호스트에서 전적으로 실행되고 독립형 모델 디렉터리를 생성하며, 단일 name 인수를 통해 지원되는 모든 Ascend SoC를 대상으로 지정합니다.
사용법에 대한 자세한 내용은 공식 CANN 문서를 참조하십시오.
또한 다른 Ultralytics YOLO 통합에 대해 자세히 알아보려면 통합 가이드 페이지를 방문하여 다양한 유용한 리소스를 확인하십시오.
FAQ#
Ultralytics와 CANN 툴킷을 설치하고 CANN 환경을 source하여
atc이PATH에 있도록 한 다음 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 convolution은
DT_FLOAT16및DT_INT8텐서만 허용합니다. FP32 오프라인 모델은 하드웨어에서 실행되지 않으므로 exporter는--precision_mode=force_fp16로 컴파일하고 명시적인quantize=32요청을 거부합니다.설치된 CANN 툴킷에서 커널을 제공하는 모든 SoC를
name인수로 선택할 수 있습니다. 검증된 4가지 대상과 Ultralytics Platform에서의 사용 가능 여부는 지원 디바이스를 참조하십시오.