Huawei Ascend Entegrasyonu for Ultralytics YOLO#
Huawei Ascend AI İşlemcileri üzerinde bilgisayarlı görü modelleri dağıtmak, bunları Ascend AI Core tarafından çalıştırılan .om çevrimdışı model formatında derlemeyi gerektirir. Ultralytics YOLO modellerini Ascend'e dışarı aktarmak; robotik, endüstriyel denetim ve akıllı kamera dağıtımlarında kullanılan Atlas geliştirici kartları ve OrangePi AIPro cihazları üzerinde hızlı, düşük güç tüketimli çıkarım çalıştırmanı sağlar.
Huawei Ascend Nedir?#
Huawei Ascend, Huawei'nin heterojen bilişim yığını olan CANN (Compute Architecture for Neural Networks) ile eşleştirilmiş bir AI İşlemcileri ailesidir. CANN, standart bir ONNX grafiğini Ascend AI Core'u hedefleyen donanıma özel bir .om çevrimdışı modeline dönüştüren ana bilgisayar tabanlı bir araç olan ATC'yi (Ascend Tensor Compiler) barındırır.
ATC tamamen ana bilgisayarda çalıştığından, herhangi bir Ascend donanımı bağlı olmadan normal bir x86-64 veya ARM64 Linux makinesinde modelleri derleyebilir, ardından çıkarım için ortaya çıkan .om dosyasını hedef cihaza kopyalayabilirsin.
Ascend NPU'larında Eğit#
Ultralytics, AMP, doğrulama, kontrol noktası oluşturma, kaldığı yerden devam etme ve AutoBatch dahil olmak üzere torch_npu ile tekli ve çoklu NPU eğitimini destekler. device=npu:0 ile tek bir NPU veya device=npu:0,1 ile birden fazla NPU seç; dağıtık eğitim HCCL kullanır.
Uyumlu CANN, PyTorch ve torch_npu sürümlerini yükle ve önce CANN ortamını kaynak koduna dahil et.
Kurulum ve kullanım örnekleri için Ascend NPU eğitim bölümüne göz at.
Ascend Dışa Aktarma Formatı#
Ultralytics dışarı aktarıcısı önce ara bir ONNX grafiği yazar, ardından bunu name argümanı ile hedeflediğin SoC için derlemek üzere ATC'yi çağırır. Sonuç, .om ikilisini ve Ultralytics meta verilerini içeren kendi kendine yeterli bir model dizinidir.
Ascend Modellerinin Temel Özellikleri#
- Özel AI Core: Derlenen modeller, ana bilgisayar CPU'su yerine Ascend AI Core üzerinde yürütülerek gerçek zamanlı kamera boru hatları için çok daha yüksek iş hacmi sunar.
- Ana bilgisayar tabanlı derleme: ATC takılı bir NPU gerektirmez; bu nedenle dışa aktarma CI'da, kapsayıcılarda veya bir dizüstü bilgisayarda çalışır.
- ONNX öncelikli: Standart Ultralytics ONNX dışa aktarımı, hiçbir tescilli ara format olmaksızın doğrudan CANN araç zincirine beslenir.
- Statik şekiller: Giriş şekli, derleme zamanında
.omiçine işlenir, böylece çalışma zamanı şekil müzakeresi yükü ortadan kalkar. - Çoklu cihaz hedefleme: Aynı ONNX grafiği,
namedeğiştirilerek desteklenen herhangi bir SoC için derlenir.
Desteklenen Görevler#
Huawei Ascend dışa aktarımı, yedi Ultralytics görevini de destekler. Anlamsal segmentasyon ve derinlik tahmini yalnızca bu başlıkları içeren tek aile olan YOLO26 ile kullanılabilir.
| Görev | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Algıla | ✅ | ✅ | ✅ |
| Segmentlere Ayır | ✅ | ✅ | ✅ |
| Anlamsal | ❌ | ❌ | ✅ |
| Derinlik | ❌ | ❌ | ✅ |
| Sınıflandır | ✅ | ✅ | ✅ |
| Poz | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Desteklenen Cihazlar#
Hedef SoC'yi name ile ilet; ATC bunu .om içine --soc_version olarak işler, bu nedenle dağıtım yapacağın kartla eşleşmesi gerekir. Yerel olarak, CANN kurulumunun çekirdek sağladığı herhangi bir SoC için derleme yapabilirsin. Ultralytics Platform Ascend310P1, Ascend310P3, Ascend310B1 ve Ascend310B4 hedeflerini destekler.
name | Cihazlar | Yerel dışa aktarma | Platform |
|---|---|---|---|
Ascend310P3 | Atlas 300I Pro, Atlas 300V Pro | ✅ | ✅ |
Ascend310P1 | Atlas 300I | ✅ | ✅ |
Ascend310B4 | OrangePi AIPro 20T, Atlas 200I A2 | ✅ | ✅ |
Ascend310B1 | OrangePi AIPro 8T | ✅ | ✅ |
Ascend'e Dışa Aktar: YOLO Modelinizi Dönüştürme#
Ascend dışa aktarımı, yalnızca Linux olan CANN araç setini gerektirir. atc derleyicisi PATH üzerinde olmalıdır — dışa aktarmadan önce CANN ortam betiğini kaynak olarak çalıştır, örneğin source /usr/local/Ascend/ascend-toolkit/set_env.sh.
Kurulum#
Ultralytics'i yükleyin, ardından Huawei'den CANN'ı ayrı olarak kurun.
# Install the required package for YOLO
pip install ultralyticsCANN araç seti Huawei tarafından dağıtılır ve otomatik olarak yüklenmez. Bunu Ascend topluluk indirme sayfasından indir veya ATC ile bağımlılıklarını içeren resmi ascendai/cann konteyner görüntü çalışmalarından birini kullan.
ATC, yalnızca operatör çekirdekleri kurulu olan SoC aileleri için derleme yapabilir. Yalnızca ascend310p çekirdeklerini içeren bir araç seti, Ascend310B4 hedefi istendiğinde No supported Ops kernel and engine are found for ... Conv2D hatası verir. Dağıtım yaptığın cihaz için eşleşen Ascend-cann-kernels-<soc> paketini kur.
Kullanım#
Ascend formatı Dışa Aktar, Tahmin Et ve Doğrula modlarını destekler. Çıkarım ve doğrulama Ascend donanımında çalışır. Modelini dışa aktar, ardından çıkarım çalıştırmak veya doğruluğunu test etmek için dışa aktarılan modeli yükle.
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")Dışa Aktarma Argümanları#
| Argüman | Tip | Varsayılan | Açıklama |
|---|---|---|---|
format | str | 'ascend' | Ascend Yapay Zeka İşlemcileri ile uyumluluğu tanımlayan, dışa aktarılan model için hedef format. |
name | str | 'Ascend310B4' | ATC'ye --soc_version olarak iletilen hedef SoC, örneğin Ascend310P3. CANN kurulumunun çekirdeklere sahip olduğu herhangi bir SoC geçerlidir; bkz. Desteklenen Cihazlar. Dağıtım cihazınla eşleşmelidir. |
imgsz | int veya tuple | 640 | Model girdisi için istenen görüntü boyutu, statik bir şekil olarak .om içine işlenir. |
batch | int | 1 | Çevrimdışı model içine derlenen statik toplu iş boyutu. |
quantize | int | 16 | Niceleme hassasiyeti. Ascend dışa aktarımı yalnızca FP16 destekler ve belirtilmezse otomatik olarak 16 değerini etkinleştirir. Kullanımdan kaldırılan half/int8 bayraklarının yerini alır. |
opset | int | 17 | Ara grafik için ONNX opset. CANN ONNX ayrıştırıcısının kabul ettiği en yüksek sürüm olan 17 ile sınırlıdır. |
simplify | bool | True | Ara ONNX grafiğini onnxslim ile basitleştirir. |
nms | bool | False | Desteklenen algılama, bölütleme, poz ve OBB modellerine Non-Maximum Suppression ekler. |
Ascend AI Core, evrişimler için yalnızca DT_FLOAT16 ve DT_INT8 girdilerini kabul eder, bu nedenle FP32 çevrimdışı bir model donanımda çalıştırılamaz. quantize=32 istemek, çalışmayacak bir modeli sessizce üretmek yerine bir hata tetikler.
Dışa aktarım süreci hakkında daha fazla ayrıntı için Ultralytics documentation page on exporting sayfasını ziyaret edin.
Çıktı Yapısı#
Başarılı bir dışa aktarmadan sonra, şu düzenle bir model dizini oluşturulur:
yolo26n_ascend_model/
├── yolo26n_Ascend310B4.om # Compiled Ascend offline model (AI Core executable)
└── metadata.yaml # Model metadata (classes, image size, task, etc.).om dosyası, CANN çalışma zamanının cihazda yüklediği derlenmiş çevrimdışı modeldir. Yapıtın kendi kendini tanımlayabilmesi için adı hedef SoC'yi taşır; yükleyici orada bulduğu tek modeli seçtiği için dizin başına bir .om tut. metadata.yaml, Ultralytics çıkarım hattı tarafından kullanılan sınıf adlarını, görüntü boyutunu ve diğer bilgileri içerir.
Dışa Aktarılan YOLO Ascend Modellerini Dağıtma#
Ultralytics YOLO modelinizi Ascend formatına başarıyla aktardıktan sonraki adım, onu Ascend donanımında dağıtmaktır.
Çalışma Zamanı Kurulumu#
Çıkarım, cihaz üzerinde CANN çalışma zamanının yanı sıra CANN'in pyACL bağlamalarını sarmalayan ais_bench Python paketini gerektirir. Bunu Huawei Ascend araçları deposundan derle ve yükle:
# 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-*.whlDışa aktarılan yolo26n_ascend_model dizinini cihaza kopyala, ardından çıkarımı diğer herhangi bir Ultralytics formatında yapacağın gibi çalıştır.
Önerilen İş Akışı#
- Ultralytics Eğitim Modunu kullanarak modelini Eğit veya önceden eğitilmiş bir kontrol noktasından başla.
- CANN kurulu olan herhangi bir Linux ana bilgisayarında Ascend'e Dışa Aktar ve hedef SoC'nizle eşleşen
namedeğerini ilet. - Dışa aktarılan model dizinini Ascend cihazına kopyalayın.
- Cihaz üzerinde çıkarım için CANN çalışma zamanı ve
ais_benchile Dağıt.
Gerçek Dünya Uygulamaları#
Ascend donanımında çalışan YOLO modelleri, çok çeşitli gömülü ve endüstriyel görü uygulamalarına uygundur:
- Endüstriyel Otomasyon: Üretim hatlarında yüksek hızlı kalite kontrolü ve kusur tespiti.
- Akıllı Gözetim: Merkezi bir sunucu olmadan uç ağ geçitlerinde gerçek zamanlı çoklu kamera nesne tespiti.
- Robotik: Otonom mobil robotlar ve iş birliği yapan kollar için yerleşik algılama.
- Akıllı Şehirler: Düşük güç tüketimli yol kenarı birimlerinde trafik izleme ve yaya analitiği.
Özet#
Bu kılavuzda, Huawei Ascend NPU'larında Ultralytics YOLO'yu nasıl eğiteceğini ve CANN ATC derleyicisini kullanarak modelleri Ascend .om formatına nasıl aktaracağını öğrendin. Dışa aktarma işlemi tamamen ana bilgisayarda çalışır, bağımsız bir model dizini üretir ve tek bir name argümanı aracılığıyla desteklenen herhangi bir Ascend SoC'yi hedefler.
Kullanım hakkında daha fazla ayrıntı için resmi CANN belgelendirmesini ziyaret et.
Ayrıca, diğer Ultralytics YOLO entegrasyonları hakkında daha fazla bilgi edinmek istersen, bol miktarda faydalı kaynak bulmak için entegrasyon kılavuzu sayfamızı ziyaret et.
SSS#
Ultralytics ve CANN araç setini yükle,
atcdosyasınınPATHüzerinde olması için CANN ortamını kaynak koduna dahil et, ardından Python'damodel.export(format="ascend", name="Ascend310B4")ile veya CLI'danyolo export model=yolo26n.pt format=ascend name=Ascend310B4ile dışa aktar.namedeğerini dağıtım cihazının SoC'sine ayarla.Hayır. ATC derleyicisi tamamen ana bilgisayarda çalışır, bu nedenle derleme, bağlı NPU'su olmayan standart bir x86-64 veya ARM64 Linux makinesinde çalışır. Dışa aktarılan
.omüzerinde çıkarım çalıştırmak için yalnızca Ascend donanımına ihtiyacın vardır.CANN kurulumun, istediğin SoC için operatör çekirdekleri barındırmıyor. Her araç seti belirli SoC aileleri için çekirdekler içerir, bu nedenle hedefinle eşleşen
Ascend-cann-kernels-<soc>paketini yükle veya söz konusu cihaz ailesi için oluşturulmuş bir konteyner görüntüsü kullan.Ascend AI Core evrişimleri yalnızca
DT_FLOAT16veDT_INT8tensörlerini kabul eder. FP32 çevrimdışı bir model donanımda yürütülemez, bu nedenle dışa aktarıcı--precision_mode=force_fp16ile derleme yapar ve açık birquantize=32isteğini reddeder.nameargümanı aracılığıyla seçilen, kurulu CANN araç setinin çekirdek sağladığı herhangi bir SoC. Dört onaylanmış hedef ve bunların Ultralytics Platform üzerindeki kullanılabilirliği için Desteklenen Cihazlar bölümüne göz at.