Bu sayfa resmî TI dokümantasyonundan türetilmiş bir başvuru sayfasıdır. İçindeki sürüm eşleşmeleri, operatör kısıtları ve komut akışı edgeai-tidl-tools deposunun ve Processor SDK dokümantasyonunun 5 Eylül 2026'daki hâlinden çıkarılmıştır. Spikedge bu akışı AM67A donanımı üzerinde çalıştırmamıştır; sayfada hiçbir ölçüm, kare hızı, gecikme veya doğruluk sonucu yoktur ve olmayacaktır. Neyin ölçülmesi gerektiği en sonda ayrı bir başlık altında listelenmiştir.

AM67A'ya model taşırken zaman kaybettiren şey genellikle TIDL'in kendisi değil, etrafındaki üç şeydir: derlemenin nerede yapıldığı, hangi araç sürümünün hangi SDK ile eşleştiği ve modelin hangi katmanının sessizce Arm'a düştüğü.

Derleme ve çıkarım aynı makinede olmaz

TIDL akışının en sık atlanan yapısal kuralı budur ve deponun kendi tablosunda açıkça yazılıdır:

İşlem x86 PC TI SoC
Model derleme
Model çıkarımı
İşlem Python API C++ API
Model derleme
Model çıkarımı

Yani: derleme yalnızca x86 host'ta ve yalnızca Python ile yapılır. Kart üzerinde derleme yoktur; C++ tarafında derleme yoktur. Kart, host'ta üretilmiş artifact'leri yükleyip çalıştırır. Bir kartta "TIDL derleyicisi bulunamadı" hatasıyla karşılaşan ekiplerin çoğu aslında desteklenmeyen bir şeyi denemektedir.

Bunun pratik sonucu: geliştirme ortamınız iki parçalıdır ve iki parçanın sürümleri birbirini tutmak zorundadır. Asıl tuzak burada.

Sürüm eşleşmesi: bu sayfanın en önemli tablosu

edgeai-tidl-tools sürümü ile karttaki Processor SDK sürümü birbirine bağlıdır. Depo, hangi etiketin hangi SDK ile doğrulandığını açıkça yayımlar. AM67A / J722S / TDA4AEN satırı için:

edgeai-tidl-tools etiketi Doğrulandığı Processor SDK (Linux / RTOS)
11_02_16_00 11.02.01.03 / 11.02.01.03
11_02_12_00 11.02.00.06 / 11.02.00.10
11_02_04_00 AM67A için doğrulanmamış (N/A)
11_01_06_00 11.01.00.03 / 11.01.00.04
11_00_06_00, 11_00_08_00 11.00.00.08 / 11.00.00.06
10_01_00_02 10.01.00.04 / 10.01.00.04
10_00_02_00 10.00.00.08 / 10.00.00.05
09_02_06_00 09.02.00.05 / 09.02.00.05

Bu tablodan üç şey okunur:

1. 11_02_04_00 bir tuzaktır. Depo onu J721E, J721S2 ve J784S4 için "default" ilan eder ama AM67A/J722S satırında N/A yazar. Yani ailenin varsayılan sürümü bu parça için doğrulanmış değildir; AM67A için o dalın karşılığı 11_02_12_00'dır.

2. AM67A desteği 09.02'de başlar. Tablonun 09.01 ve öncesi bölümlerinde J722S/AM67A satırı hiç yoktur — AM62A, TDA4VM, AM68A ve AM69A vardır. Daha eski bir araç sürümüyle AM67A hedefleyen bir plan, dokümantasyonda karşılığı olmayan bir şey varsayıyor demektir.

3. En kritik nokta doküman haritasıyla birleşince ortaya çıkıyor. Deponun güncel dalı AM67A için Processor SDK Linux/RTOS 11.02.01.03'e işaret ediyor. Ama bu sürüm yalnızca J722S markalı SDK sayfasında yayımlanıyor; AM67A markalı sayfadaki Linux SDK 11.00.00.08'de duruyor. Yani ti.com/tool/PROCESSOR-SDK-AM67A sayfasını takip eden bir ekip, güncel edgeai-tidl-tools dalıyla eşleşmeyen bir SDK üzerinde çalışıyor ve doğru eşleşme için 11_00_06_00 veya 11_00_08_00 etiketine geri dönmek zorunda. Bu isim karmaşasının nereden geldiği AM67A / J722S doküman haritası sayfasında ayrıntılı.

Depo ayrıca "patch" sürümleri için firmware ve kütüphanelerin kart üzerinde de güncellenmesi gerektiğini not düşüyor; yalnızca host tarafındaki etiketi değiştirmek yetmiyor.

Çalışma zamanı sürümleri sabittir

Bir dal/etiket seçtiğinizde çalışma zamanı sürümlerini de seçmiş olursunuz; bunlar bağımsız olarak yükseltilemez. Güncel dalda:

Çalışma zamanı Sürüm
ONNX Runtime 1.23.0
TFLite Runtime 2.12.0
TVM Runtime 0.18.0
ONNX 1.14.0 (OPSET-21, IR-10)

Artifact'ler her çalışma zamanına takılmaz

Derleme sırasında seçtiğiniz çalışma zamanı, artifact'in nerede çalışabileceğini kısıtlar:

  • onnxrt ile derlenen artifact yalnızca onnxrt ve tidlrt altında çalışır.
  • tflitert ile derlenen artifact yalnızca tflitert ve tidlrt altında çalışır.
  • tidlrt için artifact'ler derlemede kullanılan çalışma zamanından bağımsızdır — ancak yalnızca modelin bütün düğümleri hızlandırıcıya devredilmişse.

Son maddedeki koşul önemlidir ve bir sonraki başlığa bağlanır: modelinizde devredilmeyen tek bir katman varsa, o artifact çalışma zamanı bağımsız değildir.

AM67A'nın kendi operatör kısıtları

TIDL, desteklemediği bir operatörü hata vermeden Cortex-A çekirdeğine düşürür. Depo bunu açıkça söyler: "desteklenmeyen her operatör, ilgili çalışma zamanının parçası olarak Cortex-A çekirdeğinde çalışır." Model çalışır, sonuç doğrudur, sadece beklediğinizden yavaştır — ve nedeni görünmez.

Operatör tablosundaki kısıtların çoğu bütün cihazlar için ortaktır. Ama dört tanesi AM67A'yı (ve AM62A'yı) adıyla anar — yani bu parçada, ailenin diğer üyelerinde olmayan bir sınır vardır:

Operatör AM62A ve AM67A'ya özel kısıt
Conv 3×3 çekirdek, stride 3 desteklenmiyor
Conv Girdi genişliğinden büyük padding desteklenmiyor
Conv Girdi genişliği MAX(PadL, PadR) değerinden küçükse desteklenmiyor
ConvTranspose 16-bit deconvolution desteklenmiyor

Bunlar mimari tasarım kararlarıdır, derleme bayrağıyla çözülmez. Özellikle sonuncusu, karma hassasiyet planı yapan ekipler için doğrudan bağlayıcıdır: bir ConvTranspose katmanını doğruluk için 16 bite çekmek AM67A'da bir seçenek değildir.

Bütün cihazlarda geçerli olan ve pratikte en sık ısıran birkaç kısıt:

  • Conv: derinlik yönlü (fully grouped) konvolüsyon yalnızca 1×3s1, 3×3s1, 3×3s2, 5×5s1, 5×5s2, 7×7s1 ve 7×7s2 filtrelerinde destekleniyor.
  • ConvTranspose: yalnızca 2×2 stride ile 4×4, 3×3 ve 2×2 çekirdekler destekleniyor. Doküman, mümkünse Resize/Upsample'a geçmeyi öneriyor.
  • Resize: yalnızca 2'nin kuvveti ölçekler, yalnızca genişlik ve yükseklik ekseninde, 1'den küçük ölçek yok.
  • GlobalAveragePool: düzlem boyutu (yükseklik × genişlik) 1024'ten büyük olamaz.
  • Softmax: yalnızca genişlik ve yükseklik ekseninde.
  • Slice/Split: yalnızca batch = 1.

Bir modeli AM67A'ya taşımadan önce yapılacak ilk iş, mimarinin bu listeyle çakışıp çakışmadığını grafik seviyesinde kontrol etmektir; derleme sonrası düşen katmanları saymak çok daha pahalıdır.

Nicemleme kararları

TIDL 8-bit, 16-bit ve karma hassasiyeti destekliyor. Karar noktaları ve dokümantasyondaki karşılıkları:

Karar Ayar Not
Basit kalibrasyon accuracy_level = 0 Katman başına min/max. Depo, derinlik yönlü konvolüsyon içermeyen ağlarda (ResNet, SqueezeNet, VGG gibi) genellikle %1'in altında doğruluk kaybı bildiriyor
Gelişmiş bias kalibrasyonu accuracy_level = 1 Ağırlıklara kırpma uygular, bias'ı düzeltir. Depo 50 ve üzeri görüntüyle kayda değer iyileşme gözlendiğini söylüyor
Histogram tabanlı aktivasyon aralığı accuracy_level = 9 + activation_clipping = 1 Aykırı değerleri ayıklar; çarpık aktivasyon dağılımı olan ağlarda yardımcı
Asimetrik nicemleme advanced_options:quantization_scale_type = 4 Destekleyen cihazlarda öneriliyor. J721E / TDA4VM dışındaki bütün SoC'lerde destekleniyor — yani AM67A'da kullanılabilir
Hazır nicemlenmiş ONNX QDQ modeli advanced_options:prequantized_model = 1 TIDL'in kendi kalibrasyonunu atlar
TFLite tam tamsayı modeli quantization_scale_type = 3
Elle karma hassasiyet params_16bit_names_list, output_feature_16bit_names_list

Karma hassasiyette dikkat edilecek iki nokta doküman tarafından açıkça belirtiliyor:

  • Her katman hassasiyet değiştiremez. Değiştirebilenler: TIDL_ConvolutionLayer, TIDL_BatchNormLayer (yalnızca Clip, Relu ve aktivasyonsuz), TIDL_PoolingLayer (max pooling hariç) ve TIDL_EltWiseLayer. Diğer katmanların giriş, çıkış ve parametre hassasiyeti üreticisine veya tüketicisine göre otomatik belirlenir — örneğin bir Concat'in çıkışı 16 bite çıkarsa bütün girişleri de 16 bite çıkar.
  • Çıkışı zaten kayan noktalı olan katmanlarda (Softmax, DetectionOutput gibi) aktivasyon hassasiyetini artırmanın etkisi yoktur.

Dokümante edilmiş komut akışı

Aşağıdaki adımlar edgeai-tidl-tools deposunun kendi README'sinde yayımlanan akıştır. Spikedge bu komutları AM67A donanımında çalıştırmamıştır; buraya, akışın şeklini göstermek ve sürüm/ortam değişkeni bağımlılığının nereye düştüğünü işaret etmek için alınmıştır. Uygulamadan önce kendi SDK sürümünüze karşılık gelen etiketin README'sinden teyit edin.

Host tarafında (x86, Python 3.10):

git clone https://github.com/TexasInstruments/edgeai-tidl-tools.git
cd edgeai-tidl-tools
git checkout <SDK sürümünüzle uyumlu ETİKET>
./scripts/setup/setup.sh
source ./scripts/setup/setup_env.sh <SOC>

<SOC> değeri "Supported Devices" tablosundaki cihaz ailesi adıdır — AM67A için bu J722S ailesidir, aynı isim karmaşasının bir başka görünümü. Depo, ortam değişkenlerinin ayarlanmamış olmasının en sık hata kaynağı olduğunu ayrıca uyarıyor.

Derleme ve çıkarım aynı örnek betiğin iki ayrı bayrağıyla yürütülüyor:

python3 basic_example.py --config ./config.yaml -r onnxrt --compile
python3 basic_example.py --config ./config.yaml -r onnxrt --infer

Üretilen artifact'ler ./runtimes/examples/model-artifacts/ altına yazılıyor; kart tarafına taşınacak olan budur. C++ tarafında yalnızca çıkarım örneği var, derleme yok.

Bu sayfanın söyleyemedikleri

Aşağıdaki soruların hiçbirinin cevabı resmî dokümantasyondan okunamaz; hepsi donanım üzerinde ölçüm ister. Spikedge bu ölçümleri yapmadığı için burada tahmin de verilmiyor:

  • AM67A'da adlandırılmış bir model (örneğin belirli bir girdi çözünürlüğünde bir nesne tespiti ağı) kaç kare/saniye çalışıyor.
  • 4 TOPS tepe değerinin gerçek bir ağda karşılığı ne.
  • Hangi katmanların Arm'a düştüğü ve bunun uçtan uca gecikmeye maliyeti.
  • ISP ve C7x aynı anda çalışırken bellek bant genişliği üzerindeki çekişmenin etkisi.
  • accuracy_level seçeneklerinin belirli bir ağdaki gerçek doğruluk farkı.

Bunlar ölçüldüğünde, sonuçlar ölçüm koşullarıyla birlikte (model, girdi çözünürlüğü, SDK sürümü, termal durum, ISP'nin çalışıp çalışmadığı) teknik kanıtlar bölümünde yayımlanır. Koşulsuz bir kare hızı sayısı, TOPS pazarlamasından daha bilgilendirici değildir.

İlgili Spikedge sayfaları

Kaynaklar