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:
onnxrtile derlenen artifact yalnızcaonnxrtvetidlrtaltında çalışır.tflitertile derlenen artifact yalnızcatflitertvetidlrtaltında çalışır.tidlrtiç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ünseResize/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ç) veTIDL_EltWiseLayer. Diğer katmanların giriş, çıkış ve parametre hassasiyeti üreticisine veya tüketicisine göre otomatik belirlenir — örneğin birConcat'in çıkışı 16 bite çıkarsa bütün girişleri de 16 bite çıkar. - Çıkışı zaten kayan noktalı olan katmanlarda (
Softmax,DetectionOutputgibi) 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_levelseç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ı
- AM67A / J722S doküman haritası — SDK sürüm farkının kaynağı
- AM67A görü hattı — C7x'e gelmeden önce karenin geçtiği yol
- TI AM67A SoC mimarisi — C7x + MMA'nın çip içindeki yeri
- AM67A ve AM62A seçim rehberi — hangi parça hangi sisteme uyar
Kaynaklar
edgeai-tidl-toolsREADME vedocs/sdk_version_compatibility_table.md: https://github.com/TexasInstruments/edgeai-tidl-tools- Desteklenen operatörler ve kısıtları:
docs/supported_ops_rts_versions.md - Nicemleme seçenekleri:
docs/tidl_fsg_quantization.md - Memory allocation for TIDL usage, SDAA177: https://www.ti.com/lit/pdf/sdaa177
- C7x/MMA'da TIDL başarımını bellek üzerinden iyileştirme, SDAA175: https://www.ti.com/lit/pdf/sdaa175
- TIDLRunner "Bring Your Own Model" akışı, SPRT832: https://www.ti.com/lit/pdf/sprt832
