Vitis AI ile Ultralytics YOLO için AMD Xilinx dışa aktarımı#
Ultralytics YOLO26 modellerini format="xilinx" ile dışa aktarmak, AMD Versal AI Edge Series Gen 2 uyarlanabilir SoC'lerdeki NPU için modelleri AMD Quark ile niceleyerek AMD'nin Vitis AI derleyicisinin .rai modeli oluşturmasına hazırlar. Aynı dışa aktarma, dağıtımdan önce INT8 doğruluğunu herhangi bir ana makinede doğrular.
Dışa aktarma, VEK385 değerlendirme kiti gibi Versal AI Edge Series Gen 2 aygıtları için etkin olarak bakımı yapılan Vitis AI NPU iş akışını hedefler. Zynq UltraScale+ ve Kria DPU'ları ile birinci nesil Versal AI Edge NPU (VEK280) başka Vitis AI iş akışlarını kullanır; bu iş akışları Diğer AMD Xilinx Hedeflerine Dağıtım bölümünde açıklanmıştır.
AMD Xilinx cihazları, dünyanın dört bir yanındaki birçok endüstriyel kameraya, otomotiv görüş sistemine, robota, drone'a ve tıbbi görüntüleme ürününe güç veriyor. Arm işlemcilerini programlanabilir mantıkla ve daha yeni cihazlarda özel AI Engine'lerle birleştirdikleri için tek bir çip video yakalayabilir, videoyu ön işleyebilir, nesne algılama gerçekleştirebilir ve sonucu düşük, öngörülebilir bir çıkarım gecikmesiyle işleyebilir.
Bu rehberde AMD Xilinx dışa aktarımı, bunu Versal kartında derleme ve çalıştırma, her AMD Xilinx aygıt ailesinin ne olduğu, bunlarda yapay zekânın nasıl çalıştığı ve her hızlandırıcının hangi Ultralytics YOLO operatörlerini desteklediği ele alınır.
AMD Xilinx nedir?#
Xilinx, 1980'lerde sahada programlanabilir kapı dizisi (FPGA) alanını ortaya çıkardı ve uyarlanabilir SoC'ler ve FPGA'ler konusunda lider tedarikçilerden biri oldu. AMD, Xilinx'i Şubat 2022'de satın aldı ve ürün serileri artık AMD markası altında AMD Zynq, AMD Kria, AMD Versal ve AMD Vitis olarak satılıyor.
Her iki ad da aynı ürünleri ifade eder. AMD bu ürünleri "uyarlanabilir SoC'ler ve FPGA'ler" olarak pazarlıyor, ancak mühendisler hâlâ yaygın biçimde "Xilinx" diyor. Parça numaralarında XC ön eki korunuyor (örneğin xczu7ev) ve eski Vitis AI deposu ile Docker görüntüleri GitHub ve Docker Hub'da hâlâ Xilinx adı altında bulunuyor. Bu kılavuz, her iki adla da bulabilmen için "AMD Xilinx" adını kullanıyor.
Temel Terimler ve Kavramlar#
AMD Xilinx dağıtımının kendine özgü bir terminolojisi vardır. Aşağıdaki tabloda bu kılavuzda kullanılan tüm terimler açıklanıyor.
| Terim | Ne anlama geliyor |
|---|---|
| FPGA | Sahada programlanabilir kapı dizisi: yüklenen ve bit akışı adı verilen bir tasarımla, üretimden sonra dijital mantığı yapılandırılabilen bir çip. Video işlem hatları veya sinir ağı hızlandırıcıları gibi özel donanımları uygulayabilir. |
| Programlanabilir mantık (PL) | AMD Xilinx SoC içindeki FPGA yapısı. Zynq ve Kria cihazlarında AI hızlandırıcı PL içinde oluşturulur. |
| İşlem sistemi (PS) | SoC'nin donanım tabanlı Arm CPU çekirdekleri, bellek denetleyicileri ve çevre birimleri. Linux'u, uygulamanı ve hızlandırıcının çalıştıramadığı model katmanlarını yürütür. |
| Uyarlanabilir SoC / MPSoC | Bir işlem sistemini programlanabilir mantıkla ve birçok Versal cihazında AI Engine'lerle birleştiren çip üzerinde sistem. MPSoC, çok işlemcili çip üzerinde sistem anlamına gelir. |
| AI Engine (AIE, AIE-ML, AIE-MLv2) | Burada ele alınan Versal AI Edge serisi de dahil olmak üzere birçok Versal cihazında bulunan, makine öğrenimi ve sinyal işleme için tasarlanmış donanım tabanlı vektör işlemci dizileri. |
| DPU | Derin Öğrenme İşlem Birimi: AMD'nin INT8 sinir ağı hızlandırıcısı. PL içine yerleştirilen bir IP olarak sunulur (örneğin Zynq UltraScale+ ve Kria'daki DPUCZDX8G). B512 ile B4096 arasındaki boyutlar, saat döngüsü başına en yüksek işlem sayısını belirtir. |
| NPU / NPU IP | Sinirsel İşlem Birimi: AMD'nin mevcut nesil çıkarım hızlandırıcısı; son Vitis AI sürümlerinde DPU'nun yerini almıştır. AMD, NPU IP'sini AI Engine'leri programlanabilir mantıkla birleştiren yazılım tabanlı bir hızlandırıcı olarak tanımlar; bu nedenle eşleşen bir donanım tasarımı da gerektirir. NPU sözlük maddesine bak. |
| Vitis AI | AMD Xilinx cihazlarında sinir ağlarını dağıtmak için AMD'nin sunduğu araç zinciri. Kuantizasyon, derleme, çalışma zamanları, örnekler ve Docker ortamlarını kapsar. |
| AMD Quark | Versal AI Edge Gen 2 iş akışının FP32 ONNX modelini INT8 modele dönüştürmek için kullandığı, AMD'nin güncel model kuantizasyonu kütüphanesi. |
| Kuantizasyon, PTQ ve QAT | FP32 ağırlıklarını ve aktivasyonlarını INT8'e dönüştürme. Eğitim sonrası kuantizasyon (PTQ), kalibrasyon görüntülerini kullanır. Kuantizasyon farkındalıklı eğitim (QAT), doğruluğu geri kazanmak için modeli ince ayardan geçirir. |
| Kalibrasyon görüntüleri | PTQ sırasında her tensör için INT8 ölçeğini belirlemek amacıyla modelden geçirilen küçük, temsili bir görüntü kümesi. |
| BF16 ve karma hassasiyet | BFloat16, FP32'nin aralığını koruyan 16 bitlik bir kayan nokta biçimidir. Karma hassasiyet, ağın büyük bölümünü INT8'de, hassas katmanları ise BF16'da çalıştırır. |
| XIR | Xilinx Ara Gösterimi: DPU derleyicisinin ürettiği ve çalışma zamanının okuduğu grafik biçimi. |
.xmodel | Serileştirilmiş bir XIR grafiği. Kuantizasyon aracı, kuantize edilmiş bir .xmodel yazar; DPU derleyicisi de bunu DPU komutları, kuantize edilmiş ağırlıklar ve varsa CPU alt grafikleri içeren derlenmiş bir .xmodel dosyasına dönüştürür. Derlenmiş model, eşleşen DPU yapılandırmasını gerektirir. |
arch.json / DPU parmak izi | Belirli bir DPU yapılandırmasını tanımlayan dosya. DPU derleyicisi bu dosyaya ihtiyaç duyar ve bir parmak izi için derlenen .xmodel başka bir parmak izinde çalışmaz. |
| Anlık görüntü | Versal AI Edge (VEK280) NPU iş akışının ürettiği derlenmiş model dizini. Tek bir NPU IP çeşidine bağlıdır. |
.rai | Versal AI Edge Gen 2 NPU iş akışının ürettiği derlenmiş model dosyası. |
| VART / VART-ML | Derlenmiş modelleri yükleyen ve kart üzerinde çalıştıran Vitis AI Runtime kütüphaneleri; C++ ve Python API'leri sunar. |
| ONNX Runtime Vitis AI EP | ONNX Runtime için VitisAIExecutionProvider; ONNX modellerini AMD NPU'larında derleyip çalıştırır. |
| CPU geri dönüşü / grafik bölümleme | Hızlandırıcı bir operatörü çalıştıramadığında derleyici genellikle modeli hızlandırıcı ve CPU alt grafiklerine ayırır; her bölme, gecikmeye hâkim olabilecek bir veri aktarımı ekler. Bazı operatörler ise tüm modelin CPU'ya alınmasına neden olur veya derlemenin başarısız olmasına yol açar. |
Uç AI için AMD Xilinx Cihaz Aileleri#
Uç AI için AMD Xilinx cihazları üç aileye ayrılır. Zynq ve Kria, programlanabilir mantıkta DPU kullanırken burada ele alınan Versal AI Edge cihazları AI Engine'lerde NPU kullanır.
| Aile | Tanım | Uygulama CPU'su | AI hızlandırıcısı | Örnek kartlar |
|---|---|---|---|---|
| Zynq UltraScale+ MPSoC | Tek çipte Arm CPU'ları ve FPGA mantığı; ZU1'den ZU19'a kadar farklı boyutlarda | Çift veya dört çekirdekli Arm Cortex-A53 | Programlanabilir mantıkta oluşturulan DPU | ZCU104, ZCU102, özel kartlar |
| Kria K26 sistem modülü | Zynq UltraScale+ MPSoC temel alınarak geliştirilmiş, üretime hazır modül | Dört çekirdekli Arm Cortex-A53 | Programlanabilir mantıkta oluşturulan DPU | KV260 Vision AI Starter Kit, KR260 Robotics Starter Kit |
| Versal AI Edge Serisi | Uyarlanabilir SoC'ler; VE2302 ve VE2802 gibi AIE-ML bileşenleri NPU'yu çalıştırır | Çift çekirdekli Arm Cortex-A72 | AIE-ML AI Engine'lerinde ve PL'de NPU | VEK280 |
| Versal AI Edge Serisi Gen 2 | AIE-MLv2 AI Engine'lere sahip yeni nesil uyarlanabilir SoC | Sekiz Arm Cortex-A78AE'ye kadar | AIE-MLv2 AI Engine'lerinde ve PL'de NPU | VEK385 |
Zynq UltraScale+ MPSoC#
Her Zynq UltraScale+ çipi; çift çekirdekli (CG) veya dört çekirdekli (EG ve EV) Cortex-A53 çekirdekleri ve gerçek zamanlı Cortex-R5F çekirdeklerine sahip Arm işlem sistemini FPGA mantığıyla birleştirir. EV cihazları, donanım tabanlı H.264/H.265 video kod çözücü ekler. Sinir ağlarını çalıştırmak için tasarımcılar, kamera ve video işleme hatlarının yanına mantık içinde bir DPU yerleştirir. Küçük cihazlarda DPU, tasarımın geri kalanıyla alan için rekabet eder.
Kria Sistem Modülleri#
Kria K26 modülü, Zynq UltraScale+ MPSoC'yi bellek ve güç bileşenleriyle üretime hazır bir modülde bir araya getirir; böylece işlemciyi, belleği ve güç alt sistemini kendin tasarlamak zorunda kalmazsın. Modül, ister başlangıç kiti kartı ister kendi tasarımın olsun, bir taşıyıcı karta takılır. Akıllı kameralar için KV260 Vision AI Starter Kit, robotik içinse KR260 Robotics Starter Kit kitine güç verir. K26, Zynq UltraScale+ temelinde geliştirildiğinden aynı DPU iş akışını kullanır. Kria ürün portföyünde başka modüller de bulunur; bu nedenle iş akışını seçmeden önce modülünün hangi işlemciyi kullandığını kontrol et.
Versal Uyarlanabilir SoC'ler#
Versal, AMD'nin uyarlanabilir SoC ailesidir. AI Edge ve AI Core serileri, Arm çekirdeklerinin ve programlanabilir mantığın yanına donanım tabanlı AI Engine'ler eklerken bazı diğer Versal serilerinde AI Engine bulunmaz. AMD'nin NPU IP'si AI Engine'lerde ve programlanabilir mantıkta birlikte çalışır; Vitis AI ise AI Edge serisinin VE2302 ve VE2802 gibi AIE-ML bileşenlerini hedefler. Versal AI Edge Serisi (VEK280 değerlendirme kiti) ve Versal AI Edge Serisi Gen 2 (VEK385 değerlendirme kiti), AMD'nin uç AI için mevcut hedefleri ve güncel Vitis AI sürümlerinin odak noktalarıdır.
AMD Xilinx Cihazlarında AI Nasıl Çalışır: DPU ve NPU#
Çoğu AMD Xilinx AI dağıtımı aynı düzeni izler. Hızlandırıcı, desteklediği katmanları çalıştırır; Arm CPU ön işleme, son işleme ve hızlandırıcının çalıştıramadığı katmanları yürütür; karttaki bir çalışma zamanı ise bu ikisini koordine eder.
AMD iki nesil hızlandırıcı sundu ve her birinin kendine ait araç zinciri ile derlenmiş model dosyası var. Bu kılavuz, DPU için Vitis AI 3.5'i ve NPU için Vitis AI 6.3'ü temel alıyor; daha sonraki sürümler için AMD'nin güncel belgelerini kontrol et.
| İş akışı | Donanım | Araç zinciri | Kuantizasyon aracı | Derlenmiş çıktı | Kart çalışma zamanı | Durum |
|---|---|---|---|---|---|---|
| DPU | Zynq UltraScale+, Kria | Vitis AI 3.5 (Docker) | vai_q_pytorch | .xmodel | VART | Dondurulmuş derleyici, model koleksiyonu ve DPU IP'si |
| NPU (Versal AI Edge) | VEK280 ve diğer Versal AI Edge parçaları | Vitis AI 6.3 (Docker) | Anlık görüntü akışına yerleşik | Anlık görüntü | VART-ML | Etkin |
| NPU (Versal AI Edge Gen 2) | VEK385 ve diğer Gen 2 parçaları | Vitis AI 6.3 (Docker) | AMD Quark | .rai | ONNX Runtime Vitis AI EP veya VART-ML | Etkin |
Vitis AI 3.5, DPU derleyicisi ve model zoo güncellemelerini içeren son sürümdür. Xilinx/Vitis-AI deposundaki sonraki sürümler, derleyiciyi, model zoo'yu ve Zynq UltraScale+ DPU IP'sini değiştirmeden korurken çalışma zamanını ve daha yeni AMD araç sürümleriyle uyumluluğu günceller (Vitis AI 5.0 sürüm notlarına bak). AMD'nin güncel Vitis AI belgeleri, kullanımdan kaldırılan DPU mimarisinin yerine NPU'nun geçtiğini belirtir. Mevcut Zynq UltraScale+ ve Kria ürünleri DPU'yla gönderilmeye devam edebilir, ancak DPU'nun operatör desteği genişlemeyeceğinden daha yeni model mimarileri YOLO Model Uyumluluğu bölümünde açıklanan uyarlamaları gerektirir.
Bilgisayarlardaki AMD Ryzen AI işlemciler de bir NPU içerir, ancak bu kılavuzdaki gömülü Vitis AI akışları yerine ayrı Ryzen AI Software yığınını kullanır. AMD Instinct ve Radeon GPU'lar için AMD GPU entegrasyonu bölümüne bak.
Hangi Vitis AI Akışına İhtiyacım Var?#
Kartındaki cihaza göre akışını seç:
AMD Xilinx'e dışa aktarma: YOLO modelini dönüştürme#
Desteklenen Görevler#
AMD Xilinx dışa aktarımı yedi Ultralytics görevinin tümünü destekler. Anlamsal segmentasyon ve derinlik tahmini yalnızca bu başlıkları içeren tek aile olan YOLO26'da kullanılabilir.
| Görev | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Algılama | ✅ | ✅ | ✅ |
| Segmentasyon | ✅ | ✅ | ✅ |
| Anlamsal | ❌ | ❌ | ✅ |
| Derinlik | ❌ | ❌ | ✅ |
| Sınıflandırma | ✅ | ✅ | ✅ |
| Poz | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Kurulum#
AMD Xilinx dışa aktarımı, AMD Quark'ın desteklediği Python 3.11–3.13 sürümleriyle Linux'ta (x86-64 veya ARM64) çalışır. İlk dışa aktarma sırasında Quark'ın özel operatörleri de derlenir; bunun için g++ gibi bir C++ derleyicisi gerekir.
# Install the required package for YOLO
pip install ultralyticsAMD Quark, ilk dışa aktarma sırasında PyPI üzerinden otomatik olarak yüklenir. Dışa aktarma bağımlılıklarını önceden yüklemek için:
pip install "ultralytics[export-xilinx]"Düzenlenebilir bir depo kurulumu için "ultralytics[export-xilinx]" yerine -e ".[export-base,export-xilinx]" kullan. CI tarafından kullanılan Python 3.12 ortamını ve hızlı dışa aktarma testini yeniden oluşturmak için mevcut ortam oluşturucuyu depo kök dizininden çalıştır:
ULTRALYTICS_ISOLATED_VENVS="$PWD/.venvs" python .github/scripts/create-export-env.py --env isolated-xilinxKullanım#
AMD Xilinx biçimi Dışa Aktar, Tahmin ve Doğrula modlarını destekler. AMD'nin Vitis AI Execution Provider'ı yoksa tahmin ve doğrulama, INT8 doğruluğunu herhangi bir ana makinede ölçmek için niceleştirilmiş modeli CPU'da ONNX Runtime ile çalıştırır. ONNX Runtime, Versal AI Edge Series Gen 2 kartında olduğu gibi VitisAIExecutionProvider sağladığında Ultralytics bunu otomatik olarak seçer.
from ultralytics import YOLO
# YOLO26 modelini yükle
model = YOLO("yolo26n.pt")
# VEK385 için AMD Xilinx biçimine dışa aktar (quantize=8 otomatik olarak zorunlu kılınır)
model.export(format="xilinx") # creates 'yolo26n_xilinx_model/'from ultralytics import YOLO
# Dışa aktarılan AMD Xilinx modelini yükle
model = YOLO("yolo26n_xilinx_model")
# Çıkarımı çalıştır
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Dışa aktarılan AMD Xilinx modelini yükle
model = YOLO("yolo26n_xilinx_model")
# COCO8 veri kümesinde INT8 doğruluğunu doğrula
metrics = model.val(data="coco8.yaml")vitis, vitisai ve versal biçim adları, xilinx için kullanılan diğer adlardır.
Dışa Aktarma Bağımsız Değişkenleri#
| Bağımsız değişken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
format | str | 'xilinx' | Dışa aktarılan modelin hedef biçimi; AMD Versal AI Edge Series Gen 2 NPU'larıyla uyumluluğu tanımlar. |
imgsz | int veya tuple | 640 | Model girdisi için istenen görüntü boyutu; kare görüntüler için tam sayı, aksi durumda (height, width) demeti olarak belirtilir. Dışa aktarılan modelin sabit batch boyutu 1'dir. |
quantize | int veya str | 8/otomatik | Niceleme hassasiyeti. 8 (Vitis AI INT8) gereklidir ve belirtilmemişse otomatik olarak etkinleştirilir. |
data | str | None | INT8 kalibrasyonu için kullanılan veri kümesi YAML dosyası; sınıflandırma için bunun yerine bir veri kümesi dizini veya yerleşik veri kümesi adı kullanılır. Belirtilmezse Ultralytics, algılama için coco128.yaml gibi göreve özel kalibrasyon veri kümesini kullanır. |
fraction | float | 1.0 | Kullanılacak kalibrasyon veri kümesi oranı. |
name | str | 've2-xc2ve3858' | Vitis AI derleyici aygıtı: 've2-xc2ve3858' (VEK385 değerlendirme kiti), 've2-xc2ve3804', 've2-xc2ve3558', 've2-xc2ve3504', 've2-xc2ve3358' veya 've2-xc2ve3304'. |
opset | int | None | Ara grafik için ONNX opset'i. Vitis AI'da YOLO için AMD'nin doğruladığı opset olan 17 varsayılan olarak kullanılır. |
simplify | bool | True | Ara ONNX grafiğini onnxslim ile sadeleştirir. |
device | str | None | Dışa aktarma cihazını belirtir: GPU (device=0) veya CPU (device=cpu). |
YOLO26 NMS içermeyen başlığını dışa aktarmak için nms=False değerini ayarla. AMD, NonMaxSuppression'ı modelin tamamını CPU'ya yönlendirebilecek operatörler arasında listelediği için gömülü NMS (nms=True) desteklenmez.
INT8 doğruluğu, kalibrasyon görüntülerinin dağıtım ortamını ne kadar iyi temsil ettiğine bağlıdır. Kendi kameralarından alınmış en az 300 temsili görüntü içeren bir veri kümesi YAML dosyasını data= parametresine ver; varsayılan kalibrasyon veri kümeleri küçük, herkese açık örneklerden oluşur.
Dışa aktarma süreci hakkında daha fazla bilgi için Ultralytics dışa aktarma belgeleri sayfasını ziyaret et.
Çıktı Yapısı#
Dışa aktarma başarıyla tamamlandıktan sonra aşağıdaki düzende bir model dizini oluşturulur:
yolo26n_xilinx_model/
├── yolo26n.onnx # AMD Quark VINT8 model with the Ultralytics metadata
└── vitisai_config.json # Vitis AI compiler configuration for the target deviceAşağıda açıklandığı şekilde modeli derlemek, aynı dizine yolo26n/ derleyici önbelleğini ekler; bu önbellek yolo26n.rai NPU modelini ve final-vaiml-pass-summary.txt gibi AMD derleme raporlarını içerir.
Dışa aktarma nasıl çalışır?#
Dışa aktarma, Versal AI Edge Series Gen 2 için AMD'nin belgelediği Vitis AI iş akışını izler:
- ONNX dışa aktarımı, statik batch boyutu 1 olacak şekilde opset 17 kullanır.
- AMD Quark nicelemesi,
VINT8yapılandırmasını (iki kuvveti ölçeklerine sahip simetrik INT8) ve AMD'nin NPU derlemesi için zorunlu tuttuğuInt32Bias=False,enable_npu_cnn=True,DedicatedQDQPair=TrueveQuantizeAllOpTypes=Trueseçeneklerini kullanır. Kalibrasyonda standart Ultralytics INT8 kalibrasyon yükleyicisi kullanılır; ön işleme, çıkarımdakiyle aynı letterbox, RGB ve 0–1 işlemlerini uygular. - Karma hassasiyet: model başlığı kayan nokta biçiminde kalır ve Vitis AI derleyicisi bunu NPU'da BF16 olarak çalıştırır. Başlığın INT8'e niceleştirilmesi doğruluk kaybının büyük bölümüne neden olur; AMD'nin YOLOv8m öğreticisi de aynı nedenle son işleme kuyruğunu INT8 dışında tutar.
- Derleyici yapılandırması:
vitisai_config.json,nameiçindeki aygıtı veVAIMLhedefini seçer.
Doğruluk#
Tabloda, dışa aktarılan INT8 model ile FP32 ONNX modelinin COCO val2017 (5.000 görüntü) veri kümesindeki 640 boyutunda sonuçları karşılaştırılır; her ikisi de ana makinenin CPU'sunda ONNX Runtime ile çalıştırılmıştır. INT8 modeller, varsayılan coco128.yaml veri kümesiyle kalibre edilmiştir; kendi dağıtım görüntülerinle kalibrasyon yapmak genellikle aradaki farkı azaltır.
Bu ana makine sonuçlarında niceleştirilmiş model, AMD'nin doğruluk metodolojisinin NPU sonuçlarını karşılaştırdığı temel değer olan CPU'da ONNX Runtime ile çalıştırılır. AMD'nin VEK385 üzerindeki yayımlanmış YOLOv8m sonuçları, NPU'da aynı karma hassasiyet yaklaşımını gösterir:
| YOLOv8m yapılandırması | Donanım | mAP50-95 (COCO) |
|---|---|---|
| FP32 ONNX | Ana makine CPU'su | 49.95 |
| BF16 | VEK385 NPU | 50.29 |
| VINT8 nicemlenmiş, FP32 son katman | Ana makine CPU'su | 48.75 |
| BF16 son katmanlı VINT8 | VEK385 NPU | 48.38 |
Kaynak: AMD'nin Versal AI Edge Gen 2 için YOLOv8m öğreticisi; öğretici ayrıca dp_size=1 değerinde 100 VART çalıştırması üzerinden ortalama 10.69 ms çıkarım süresi bildiriyor.
Versal AI Edge Gen 2'de derleme ve çalıştırma#
Dışa aktarılan dizin, NPU'da çalışan .rai modelini oluşturan AMD Vitis AI derleyicisiyle kullanıma hazırdır.
-
Ana makineyi ve kartı hazırla. AMD'nin Versal AI Edge Gen 2 için Vitis AI 6.3 Docker görüntüsünü ve AMD AI Engine derleyici lisansını (bkz. AMD lisans sayfası) kullanarak x86-64 Linux ana makinesinde derleme yap. VEK385'i AMD'nin kart kurulum rehberine göre hazırla.
-
Derle. Konteyner içinde, AMD'nin derleme rehberinde kullandığı çağrıyla Vitis AI Execution Provider'ı içeren bir ONNX Runtime oturumu oluştur. Bu işlem, dışa aktarma dizinine
yolo26n.raiiçerenyolo26n/önbelleğini yazar:import onnxruntime as ort d = "yolo26n_xilinx_model" options = {"config_file": f"{d}/vitisai_config.json", "cache_dir": d, "cache_key": "yolo26n", "target": "VAIML"} ort.InferenceSession(f"{d}/yolo26n.onnx", providers=["VitisAIExecutionProvider"], provider_options=[options])Modelin ne kadarının NPU'da çalıştığını görmek için
yolo26n_xilinx_model/yolo26n/final-vaiml-pass-summary.txtöğesini kontrol et. 640 boyutunda YOLO26n için AMD Vitis AI 6.3 derleyicisi, operatörlerin ve hesaplama miktarının %99,9'unu tek bir bölümde VEK385 NPU'suna yerleştirir. -
Kartta çalıştır. Dışa aktarma dizinini VEK385'e kopyala. Vitis AI Execution Provider içeren ONNX Runtime, derlenmiş
yolo26n.raiöğesini yükleyip NPU'da çalıştırır;YOLO("yolo26n_xilinx_model")bu sağlayıcı kullanılabilir olduğunda otomatik olarak seçer.
Derleme için yalnızca AMD'nin ONNX Runtime'ı gerekir; bu nedenle Ultralytics'i oraya yüklemek yerine dışa aktarmayı herhangi bir Linux makinesinde yapıp dizini konteynere kopyala; aksi hâlde konteynerin sabitlenmiş paketleri değişebilir. Ultralytics, kartta olduğu gibi AMD'nin onnxruntime-vitisai derlemesinin yanına yüklendiğinde, bu derlemeyi standart onnxruntime ile değiştirmek yerine olduğu gibi kullanır.
Dışa aktarma, ONNX Runtime için standart derlemeyi yapılandırır; bu yapılandırmada YOLO26'nın nms=False ile yaptığı top-k seçimi gibi NPU ile uyumsuz operatörler Arm CPU'da çalışır. VART-ML çalışma zamanı, AMD'nin CPU bölümleme geçişlerini vitisai_config.json öğesine eklemediğin sürece yalnızca tüm operatörleri NPU'da çalışan bir modeli çalıştırır; bu yapılar ONNX Runtime üzerinden çalıştırılamaz.
YOLO Model Uyumluluğu ve Desteklenen Operatörler#
Bir hızlandırıcı yalnızca donanımda uyguladığı operatörleri hızlandırır. Bir model desteklenmeyen bir operatör içerdiğinde derleyici genellikle ağın o bölümünü Arm CPU'ya gönderir ve hızlandırıcı ile CPU arasındaki her gidiş dönüş gecikmeyi artırır. Bazı operatörler bölümlere ayrılamaz: Versal AI Edge Gen 2 NPU'da AMD, NonZero ve NonMaxSuppression gibi tüm modeli CPU'ya yönlendirebilen operatörleri listeler. AMD Xilinx donanımında bir YOLO modelinin ne kadar iyi performans gösterdiğini belirleyen en önemli etken operatör desteğidir.
Tablo, YOLO26 modelindeki her operatörün nerede çalıştığını gösterir. Standart bir YOLO26n ONNX dışa aktarımı 87 SiLU aktivasyonu içerir; her biri Sigmoid ve Mul olarak dışa aktarılır. Ayrıca iki dikkat bloğundan 4 MatMul ve 2 Softmax operatörü içerir: omurganın sonundaki C2PSA bloğu (katman 10) ve P5 çıktısını üreten, dikkat etkin C3k2 bloğu (katman 22).
| Operatör | YOLO'da göründüğü yer | DPU (Zynq UltraScale+, Kria) | NPU (Versal AI Edge Gen 2) |
|---|---|---|---|
| Evrişim + toplu normalleştirme | Her Conv bloğu | ✅ | ✅ |
| SiLU aktivasyonu | Her Conv bloğu (varsayılan aktivasyon) | ❌ CPU'da çalışır; Hard-Swish ile değiştir | ✅ |
| Hard-Swish, ReLU, ReLU6, LeakyReLU | Model YAML dosyasında ayarlanan isteğe bağlı aktivasyonlar | ✅ Evrişime birleştirilir | ✅ |
| Sigmoid | Algılama başlığındaki sınıf skorları | ❌ CPU'da çalışır (genellikle son işlemenin bir parçasıdır) | ✅ |
| İki aktivasyon arasındaki MatMul | Dikkat blokları (C2PSA; YOLO26 C3k2) | ❌ CPU'da çalışır | ✅ |
| Softmax | Dikkat blokları; YOLOv8 ve YOLO11'de DFL | ❌ CPU'da çalışır | ✅ |
| Yeniden şekillendirme, Transpose | Dikkat blokları | ⚠️ Mümkünse birleştirilir, aksi durumda CPU'da çalışır | ✅ |
| Split, Slice | C3k2 ve C2f blokları | ⚠️ Dilimlere dönüştürülür; derleyici raporunu kontrol et | ✅ |
| Resize (en yakın komşuyla büyütme) | Boyun yukarı örneklemesi | ✅ | ✅ |
| MaxPool, Concat, Add | SPPF bloğu ve özellik birleştirme | ✅ | ✅ |
| TopK, GatherElements | YOLO26 NMS içermeyen başlık (nms=False) | ❌ CPU'da çalışır | ⚠️ Arm ana bilgisayarda CPU bölümlemesi |
| NonMaxSuppression | Yalnızca nms=True ile dışa aktarıldığında | ❌ CPU'da çalışır | ❌ Modeli CPU'ya yönlendirebilir |
Kaynaklar: AMD UG1414 desteklenen operatörler, PyTorch operatör desteği ve Versal AI Edge Gen 2 desteklenen, CPU bölümleme ve desteklenmeyen operatör listeleri. Destek ayrıca DPU yapılandırmana ve grafik örüntülerine bağlıdır; bu nedenle derleyicinin bölümleme raporunu mutlaka kontrol et.
YOLO26, Distribution Focal Loss'u (DFL) kaldırır; bu nedenle YOLO11 ve YOLOv8 modellerinden farklı olarak kutu çıktılarının softmax ile kodunun çözülmesi gerekmez. Ayrıca YOLO11'e kıyasla ikinci bir dikkat bloğu ekler; bu nedenle model seçmeden önce hedefe özgü derleyici raporlarını ve cihaz üzerindeki kıyaslama sonuçlarını karşılaştır. nms ayarlanmadan yapılan dışa aktarımlar, bire-çok başlığı korur ve diğer YOLO modelleri gibi CPU'da NMS gerektirir. Bunun yerine YOLO26'nın NMS içermeyen bire-bir başlığını kullanmak için nms=False ile dışa aktar; bu başlık NMS'nin yerini CPU'da çalışan hafif bir top-k seçimiyle değiştirir.
YOLO26'yı Hard-Swish ile DPU'ya Hazırla#
DPU, evrişimlerine yalnızca ReLU, ReLU6, LeakyReLU, Hard-Swish ve Hard-Sigmoid operatörlerini birleştirir. Hard-Swish, SiLU'nun donanım dostu bir yaklaşımıdır ve bu nedenle doğal bir alternatiftir. Ultralytics model YAML dosyaları, Conv bloklarının varsayılan aktivasyonunu değiştiren bir activation anahtarını kabul eder (Model YAML Yapılandırma Kılavuzu).
yolo26.yaml dosyasını yolo26-hswish.yaml konumuna kopyala ve parametrelerin altına bir satır ekle:
# Parameters
nc: 80 # number of classes
activation: nn.Hardswish() # default Conv activation, DPU-native
end2end: True # whether to use end-to-end modeArdından modeli oluştur, önceden eğitilmiş YOLO26 ağırlıklarını aktar ve veri kümen üzerinde ince ayar yap:
from ultralytics import YOLO
# # Hard-Swish aktivasyonlarıyla YOLO26n oluştur; addaki 'n' nano ölçeğini seçer
model = YOLO("yolo26n-hswish.yaml").load("yolo26n.pt") # # önceden eğitilmiş ağırlıkları aktar
# # Ağın Hard-Swish'e uyum sağlaması için ince ayar yap
model.train(data="coco8.yaml", epochs=100, imgsz=640)Aktivasyonların ağırlığı yoktur, bu nedenle önceden eğitilmiş tüm ağırlıklar aktarılır. Dışa aktarılan ONNX grafiği daha sonra 87 HardSwish operatörü içerir ve hiç SiLU içermez. coco8.yaml öğesini kendi veri kümenle değiştir ve dağıtımdan önce Val modu ile SiLU modeline kıyasla doğruluğu karşılaştır.
- Niceleme sırasında değiştir: Niceleme sırasında SiLU'yu değiştirmek için Vitis AI 3.5 PyTorch niceleyicisinin JSON yapılandırmasında
"convert_silu_to_hswish": trueöğesini ayarla. Böylece bir eğitim çalışması gerekmez, ancak genellikle doğruluk kaybı daha fazla olur; AMD'nin hızlı ince ayarı veya QAT bu kaybı kısmen telafi edebilir. vai_q_pytorch yapılandırma kılavuzuna bak. - LeakyReLU: DPU, LeakyReLU'yu 26/256 (yaklaşık 0,1) sabit negatif eğimle uygular. LeakyReLU kullanıyorsan, eğitim ve dağıtım eğimlerinin eşleşmesi için
activation: nn.LeakyReLU(0.1015625)ile eğit.
DPU'da Dikkat Bloklarını Ele Alma#
YOLO26, dikkati en düşük çözünürlükte (640 girişte 20×20 ızgara) iki yerde uygular: 10. katmandaki C2PSA bloğunda ve 22. katmandaki, dikkat etkin C3k2 bloğunda. YOLO11'de bir C2PSA bloğu bulunur. DPU'da bu blokların MatMul ve Softmax operatörleri CPU'da çalışır; bu da modeli dönüşümlü DPU ve CPU alt grafiklerine böler. Üç seçeneğin var:
-
CPU bloklarını kabul et. Derlenen
.xmodeldosyası CPU alt grafikleri içerir. Bu nedenle, her operatör için CPU uygulaması mevcutsa DPU ve CPU alt grafiklerini birlikte çalıştıran AMD Graph Runner ile çalıştır. Aksi takdirde eksik operatörleri kendin uygulayıp kaydetmelisin. 20×20 boyutunda dikkat hesaplaması küçüktür, ancak DPU ile CPU arasındaki her ek aktarım gecikmeyi artırır; bu nedenle kartında ölçüm yap. -
Dikkat içermeyen bir YAML kullan. Hard-Swish YAML dosyanda C2PSA katmanını
nn.Identityile değiştirerekConcatveDetecttarafından kullanılan katman dizinlerini geçerli tut; ayrıca 22. katmandaki dikkati devre dışı bırak:backbone: # ... layers 0-9 unchanged - [-1, 1, nn.Identity, []] # 10 C2PSA removed; keeps later layer indices valid head: # ... layers 11-21 unchanged - [-1, 1, C3k2, [1024, True, 0.5, False]] # 22 (P5/32-large), attention disabled - [[16, 19, 22], 1, Detect, [nc]] # Detect(P3, P4, P5)Dışa aktarılan ONNX grafiği artık MatMul veya Softmax operatörleri içermez. Dikkat ağırlıkları artık geçerli olmadığından (YOLO26n'deki 666 ağırlığın 624'ü aktarılır), daha uzun süre ince ayar yap ve doğruluğu Val modu ile karşılaştır.
-
AMD'nin kendi DPU örneklerinde kullandığı YOLOv8 gibi dikkat içermeyen bir model kullan.
Versal AI Edge Gen 2'de dikkat operatörleri NPU tarafından desteklenenler arasında listelenir; bu nedenle bu değişiklikler genellikle gerekli olmaz. Yerleşimi derleyici raporunda doğrula; çünkü AMD, yapılandırma veya bellek kısıtlamaları nedeniyle desteklenen operatörlerin yine de CPU'ya aktarılabileceğini belirtir.
Model Uyumluluğuna Genel Bakış#
| Model | DPU (Zynq UltraScale+, Kria) | NPU (Versal AI Edge Gen 2) |
|---|---|---|
| YOLO26 | Hard-Swish ile eğit; iki dikkat bloğu CPU alt grafiklerine dönüşür; DFL yok | Yerel format="xilinx" dışa aktarımı; başlık BF16'da çalışır |
| YOLO11 | Hard-Swish ile eğit; C2PSA ve DFL softmax CPU'da çalışır | Yerel format="xilinx" dışa aktarımı; başlık BF16'da çalışır |
| YOLOv8 | Hard-Swish ile eğit; DFL softmax CPU'da çalışır | Yerel format="xilinx" dışa aktarımı. AMD'nin YOLOv8m öğreticisi (Vitis AI 6.3, VEK385, son bölümü BF16 olan INT8): derleyici raporunda 1.181 operatörün (%99,915) ve GOP'ların %99,994'ünün modelde değişiklik yapılmadan NPU'da çalıştığı gösterilir. |
Diğer AMD Xilinx hedeflerine dağıtım#
Zynq UltraScale+ ve Kria DPU'ları ile birinci nesil Versal AI Edge NPU'su, format="xilinx" öğesinin üretmediği Vitis AI iş akışlarını kullanır. Ultralytics ile eğitim yap, ardından hedefe ait yapıyı AMD araçları ve AMD'nin x86-64 Linux Docker görüntüleriyle oluştur. Aygıtına uygun sekmeyi seç:
-
Versal AI Edge için AMD Vitis AI 6.3 Docker imajını başlat.
-
Kartındaki NPU IP'si için NPU ortamını etkinleştir;
settings.shdosyasını kaynakla. Kartının NPU IP adını bağımsız değişken olarak ver veya kullanılabilir IP'leri görmek içinLISTkullan. -
VAISW_SNAPSHOT_DIRECTORYortam değişkeni ayarlanmış halde temsili görüntülerde sıradan bir çıkarım betiği çalıştırarak anlık görüntü yakala. Kod değişikliği gerekmez:# Activate the NPU environment inside the Vitis AI Docker container source $VITIS_AI_REPO/npu_ip/settings.sh # Capture a mixed INT8/BF16 snapshot, calibrating on 100 images from your inference script VAISW_SNAPSHOT_DIRECTORY=snapshot.yolo26n VAISW_FE_PRECISION=MIXED VAISW_QUANTIZATION_NBIMAGES=100 python3 my_inference.py
VAISW_FE_PRECISION, INT8 (varsayılan), BF16 veya MIXED değerlerini kabul eder; VAISW_QUANTIZATION_NBIMAGES varsayılan olarak 4 görüntü kullanır, bu nedenle tespit modelleri için daha büyük ve temsili bir sayı ayarla. Anlık görüntü, kartındaki NPU IP varyantına bağlıdır. YOLO işlem sonrası son katmanları AI Engines üzerinde yalnızca BF16 veya MIXED duyarlıkta çalışır. AMD belgelerinde Softmax konusunda farklı bilgiler yer alıyor: örnekler sayfası Softmax'ın hızlandırılmadığını ve YOLOv8'in Softmax son katmanının CPU'ya eşlendiğini söylerken, Vitis AI 6.1 sürüm notları karma duyarlıkla YOLOv8'in tamamen hızlandırıldığını bildiriyor. YOLO11 ve YOLO26 attention dâhil modelinin hangi bölümlerinin NPU'da çalıştığını doğrulamak için anlık görüntünün içindeki wrp_network_iriz.onnx dosyasını incele. Kendi modelini getirme konusuna bak.
Kartı, derlediğin hızlandırıcı yapılandırmasını ve eşleşen Vitis AI çalışma zamanını içeren bir donanım tasarımı ve Linux görüntüsüyle hazırla. Zynq UltraScale+ ve Kria DPU hedefleri için AMD'nin kurulum rehberlerine, Versal AI Edge (VEK280) içinse ilgili rehbere bak; ardından çalışma zamanının gerektirdiği yapıları kopyala:
| İş akışı | Karta kopyalanacak yapıtlar | Kart çalışma zamanı |
|---|---|---|
| DPU (Zynq UltraScale+, Kria) | Derlenmiş .xmodel | VART; CPU alt grafikleri için Graph Runner |
| NPU (Versal AI Edge, VEK280) | Anlık görüntü dizini | VART-ML |
DPU'da VART arabellekleri sabit noktalı INT8 değerleri tutar: her tensörün şeklini ve fix_point ölçeğini sorgula; son işleme öncesinde girdileri nicele ve çıktıları nicelemeden çıkar. Graph Runner, grafiğin tamamının çıktılarını döndürürken yalnızca DPU kullanan çalıştırıcı, kodunun hesaplamayı tamamlaması gereken ara DPU alt grafiği çıktılarını döndürür. VEK280'deki VART-ML, şekli, veri türü ve bellek düzeni ONNX düzenlerinden farklı olabilen donanım tensör görünümlerini varsayılan olarak kullanır; bu nedenle çalıştırıcının girdi ve çıktı tensör türlerini CPU görünümleri olarak yapılandır veya donanım biçimini kendin dönüştür (AMD'nin VART-ML mimarisine genel bakışına bak).
Ultralytics YOLO'yu ticari bir AMD Xilinx ürününde sunmak için AGPL-3.0 lisansına veya bir Ultralytics Enterprise Lisansına uygun hareket etmen gerekir.
Gerçek Dünya Uygulamaları#
AMD Xilinx cihazları, görüntü yapay zekâsının gerçek zamanlı, düşük güç tüketimiyle ve sensöre yakın çalışması gereken yerlerde yaygın olarak kullanılır:
- Endüstriyel ve inşaat güvenliği: Ağır ekipmanların çevresindeki insanları ve makineleri tespit et, çalışma alanlarını nesne tespiti ve nesne sayımı ile izle.
- Otomotiv ve karayolu dışı araçlarda görüntü işleme: Nitelikli otomotiv sınıfı parçalarda kamera tabanlı algılamayı çalıştırarak otonom araçları ve sürücü destek sistemlerini destekle.
- Akıllı kameralar ve video analitiği: Güvenlik sistemleri ve video analitiği için video yakalamayı, kodlamayı ve YOLO çıkarımını tek bir çipte birleştir.
- Makine görüşü ve kalite denetimi: Hat içi kusur tespiti için FPGA tabanlı yüksek hızlı görüntü yakalamayı YOLO örnek segmentasyonu veya sınıflandırma ile birleştir.
- Robotik ve dronlar: Belirleyici gecikmeyle poz tahmini, yönelimli nesne tespiti ve navigasyon için Kria KR260 veya Versal modüllerini kullan.
Özet#
format="xilinx" ile dışa aktarma, Ultralytics YOLO modellerini AMD Quark ile Versal AI Edge Series Gen 2 NPU'ları için niceleyerek başlığı BF16'da tutar ve Vitis AI derleyici yapılandırmasını modelin yanına yazar. INT8 doğruluğunu herhangi bir ana makinede doğrula, .rai modelini AMD Vitis AI Docker görüntüsünde derle ve ONNX Runtime ile Vitis AI Execution Provider kullanarak kartta çalıştır.
Eski AMD Xilinx aygıtları başka iş akışları kullanır. Zynq UltraScale+ ve Kria üzerindeki DPU, dondurulmuş Vitis AI 3.5 araç zincirini ve .xmodel dosyalarını kullanır; Hard-Swish gibi DPU yerel etkinleştirme işlevlerini gerektirir ve attention işlemini CPU'da çalıştırır. Birinci nesil Versal AI Edge NPU'su, operatör kapsamı Vitis AI sürümüne ve hassasiyete bağlı olan snapshot iş akışını kullanır.
Diğer dağıtım hedefleri için model dağıtım seçenekleri rehberine, dağıtım için en iyi uygulamalara ve Hailo, Rockchip RKNN ve Axelera gibi hızlandırıcı entegrasyonlarına bak.
Sık Sorulan Sorular#
Evet. AMD, Xilinx'i Şubat 2022'de satın alma işlemini tamamladı ve Xilinx ürünleri artık AMD uyarlanabilir SoC'leri ve FPGA'leri olarak satılıyor: AMD Zynq, AMD Kria, AMD Versal ve AMD Vitis. Mühendisler Xilinx adını hâlâ yaygın olarak kullanıyor ve parça numaraları
XCönekini koruyor.Evet.
model.export(format="xilinx"), modeli AMD Quark ile Versal AI Edge Series Gen 2 NPU'ları için niceleyerek niceleştirilmiş ONNX modelini ve Vitis AI derleyici yapılandırmasını içeren bir dizin oluşturur. Versal AI Edge Gen 2'de derleme ve çalıştırma bölümünde gösterildiği gibi AMD Vitis AI araçlarıyla modeli.raibiçimine derle. Zynq UltraScale+, Kria ve VEK280 hedefleri için Diğer AMD Xilinx hedeflerine dağıtım bölümündeki iş akışlarını kullan.DPU (Derin Öğrenme İşlem Birimi), AMD'nin önceki INT8 hızlandırıcısıdır. Zynq UltraScale+ ve Kria cihazlarının programlanabilir mantık bölümünde yerleşiktir, Vitis AI 3.5 ile derlenir ve
.xmodeldosyaları üretir. Güncel Vitis AI sürümlerinde yerini NPU almıştır. Versal AI Edge cihazlarında NPU, güçlendirilmiş AI Engines'ı programlanabilir mantıkla birleştirir; INT8, BF16 ve karma duyarlığı destekler ve SiLU ile Versal AI Edge Gen 2'de attention dâhil daha fazla operatörü destekler..xmodel, AMD DPU araç zincirinin kullandığı serileştirilmiş bir XIR grafiğidir. Nicemleyici, nicemlenmiş bir.xmodelyazar;vai_c_xirderleyicisi bunu DPU komut akışını, nicemlenmiş INT8 ağırlıklarını ve CPU'da çalışması gereken alt grafikleri içeren derlenmiş bir.xmodelbiçimine dönüştürür. Derlenmiş dosya,arch.jsonparmak iziyle tanımlanan belirli bir DPU yapılandırmasını hedefler ve kartta Vitis AI Runtime (VART) üzerinden veya CPU alt grafikleri içeriyorsa Graph Runner üzerinden çalışır.Hayır. DPU yalnızca ReLU, ReLU6, LeakyReLU, Hard-Swish ve Hard-Sigmoid aktivasyonlarını hızlandırır; iki aktivasyon arasındaki Sigmoid, Softmax ve MatMul işlemlerini CPU'da çalıştırır. Evrişimleri DPU'da tutmak için model YAML'ında
activation: nn.Hardswish()ile YOLO'yu eğit ve attention seçenekleri için DPU'da Attention Bloklarını Ele Alma bölümüne bak. Versal AI Edge Gen 2 NPU'ları SiLU, Softmax ve MatMul işlemlerini yerel olarak destekler.KV260, DPU'lu bir Zynq UltraScale+ MPSoC kullanır; bu nedenle DPU akışını izle. Hard-Swish kullanan bir YOLO26 modelini eğit, Vitis AI 3.5 Docker imajındaki
vai_q_pytorchile nicemle, KV260'ınarch.jsonyapılandırmasını kullananvai_c_xirile derle ve ortaya çıkan.xmodeldosyasını kartta VART ile veya CPU alt grafikleri içeriyorsa Graph Runner ile çalıştır.Hayır. Dışa aktarma Python 3.11–3.13 yüklü herhangi bir Linux ana makinesinde çalışır ve AMD hesabı gerektirmez; dışa aktarılan model, doğruluk kontrolleri için herhangi bir ana makinede CPU'da çalıştırılabilir.
.raimodelini derlemek için AMD Vitis AI Docker görüntüsü ve AI Engine derleyici lisansı gerekir; modeli NPU'da çalıştırmak içinse Versal AI Edge Series Gen 2 kartı gerekir.Ultralytics, Vitis AI Execution Provider'ı yalnızca ONNX Runtime bu sağlayıcıyı sunduğunda kullanır; örneğin Versal kartında veya AMD Docker görüntüsündeki AMD
onnxruntime-vitisaiderlemesinde. Diğer ortamlarda niceleştirilmiş model, dağıtımdan önce INT8 doğruluğunu ölçmenin yolu olan standart ONNX Runtime ile CPU'da çalışır.Operatörleri hızlandırıcın için derlenebildiği sürece her görev çalışabilir. Desteklenmeyen operatörler genellikle CPU'da çalışır, ancak bazıları tüm modelin CPU'ya yönlendirilmesine veya derlemenin başarısız olmasına neden olabilir. Nesne tespiti en yaygın iş yüküdür ve AMD'nin kendi örneklerinde kullandığı görevdir. Segmentasyon, poz tahmini ve diğer görevler için ağır katmanların hızlandırıcıda çalıştığını doğrulamak üzere derleyicinin bölümleme raporunu kontrol et.