Skip to content

Portierung von ML-Modellen auf TI Jacinto-Prozessoren

Texas Instruments stellt mit seiner Jacinto-Reihe eine speziell für anspruchsvolle Anwendungen in den Bereichen KI und Computer Vision zur Verfügung. In der Kombination aus hochoptimierten Hardware-Beschleunigern und leistungsstarken Digital Signal Prozessoren stellen sie eine ideale Familie für Edge- und ADAS-Anwendungen, bei denen hohe Rechenleistung und geringer Stromverbrauch entscheidend ist.

Das Herzstück der Jacinto Reihe im Kontext von Computer-Vision- und Edge-Anwendungen bilden der VPAC Vision Accelerator und die embedded DSP mit TOPS-MMA. Beide sind im folgenden architektonisch zusammengefasst:

 

Vision Processing Accelerator V3 (VPAC3)

Der VPAC3 ist ein Hardware-Beschleuniger, der in den Bildverarbeitungs-Subsystemen des Jacinto-Prozessors zum Einsatz kommt. Seine Hauptaufgabe besteht darin, Bildvorverarbeitung für Rohbildsensoren durchzuführen.

Einzelne Features werden jeweils in Teil-Kernen der IP umgesetzt, um Videodaten echtzeitfähig den Applikationskernen zur Verfügung zu stellen:

Dazu gehören:

  • De-Mosaicing: wandelt Rohbilder in RGB-Bilder um, indem es Farbinformationen von Bildsensoren interpoliert.
  • Defective Pixel Correction: Korrigiert fehlerhafte Pixel, die durch Sensorfehler entstehen können.
  • Auto Exposure & White Balance: optimiert automatisch die Belichtung und den Weißabgleich für Bildsensoren.
  • Chromatic Aberration Correction (CAC): korrigiert Farbfehler, die durch Objektivverzerrungen entstehen.
  • Lens Distortion Correction (LDC): korrigiert Verzerrungen durch die Kameraoptik.
  • Multi-Scalar (MSC): ermöglicht die Skalierung von Bildern in mehreren Auflösungen.
  • Bilateral Noise Filter (BNF): entfernt Rauschen in Bildern, um die Bildqualität zu verbessern.
Digital Signal Processing (DSP) & Matrix Multiplication Accelerator (MMA)

Die Jacinto-Reihe hat praktisch durch alle Prozessoren gemeinsam, dass ein oder mehrere 512-Bit C7x DSPs verbaut sind. Die jeweils mit 1 GHz getakteten High-Performance-DSP dienen dazu Computer-Vision-Aufgaben und DL-Inferenzen zu beschleunigen. Für einen oder mehrere dieser DSPs wurde zudem eine MMA-Anbindung umgesetzt, damit KI-Workloads bestanden werden können. Diese Kombination aus DSP und MMA ermöglicht eine Rechenleistung von mehreren TOPS, sodass sowohl die Verarbeitung rechenintensiver ML-Anwendungen als auch die Verarbeitung von KNNs in Echtzeit mit x86-basierten Systemen in jedem Fall mithalten kann.

 

TIDL

TIDL ermöglicht es Entwicklern, bereits trainierte neuronale Netze, die in Frameworks wie PyTorch oder TensorFlow erstellt wurden, für den Einsatz auf Jacinto-Prozessoren zu optimieren und zu portieren. Dazu stellt TIDL Werkzeuge bereit, die die Modelle quantisieren und an die Hardware anpassen, sodass diese in ressourcenbeschränkten Umgebungen performant laufen.

tidl

TIDL-Environment von Texas Instruments

 

Portierung TIDL-optimierter Modelle auf einem Jacinto-Prozessor

Um ein vortrainiertes neuronales Netz von PyTorch auf ein Jacinto-Board zu portieren, müssen mehrere Schritte durchlaufen werden. Zunächst die Konvertierung des Modells in ein Format, das von der Jacinto-Hardware unterstützt wird, sowie die Optimierung und Quantisierung des Modells für Embedded-Systeme. Voraussetzung dafür ist, dass das neuronale Netz in PyTorch trainiert wurde. Dies kann durch ein bereits trainiertes Modell wie ResNet, MobileNet oder ein spezifisch entwickeltes Modell geschehen. Die Export-Fähigkeit von PyTorch erlaubt es, das Modell in ein ONNX (Open Neural Network Exchange) Format zu konvertieren, das von TIDL unterstützt wird.

 

import torch
import torchvision.models as models

# Beispiel eines vortrainierten ResNet-Modells
model = models.resnet18(pretrained=True)
model.eval()

# Exportiere das PyTorch-Modell in das ONNX-Format
dummy_input = torch.randn(1, 3, 224, 224)
torch.onnx.export(model, dummy_input, "resnet18.onnx")

 

Nachdem das Modell im ONNX-Format vorliegt, muss es mit den TIDL-Import-Tools in ein von der Jacinto-Hardware lesbares Format umgewandelt werden. TIDL unterstützt die Konvertierung und Optimierung von ONNX-Modellen, indem es diese für die Ausführung auf der Jacinto-Hardware quantisiert. Die TIDL-Konvertierungstools sind Teil des TIDL-Toolkits, das von Texas Instruments zur Verfügung gestellt wird.

 

./tidl_model_import.out onnx resnet18.onnx -o ./output_folder

 

Dieser Schritt führt die Quantisierung und Optimierung des Modells durch, indem es die numerische Präzision von Float32 auf Int8 reduziert, um Speicherbedarf und Rechenanforderungen zu minimieren. Die TIDL-Tools verwenden dazu quantisierte Versionen der Modellgewichte und können automatische Kalibrierungsfunktionen verwenden, die auf Testdatensätzen basieren.

 

Deployment auf dem Jacinto-Board

Das konvertierte und quantisierte Modell wird dann auf das Jacinto-Board übertragen. Hierfür kann das Jacinto TDA4VM SDK verwendet werden, das die TIDL-Runtime beinhaltet. Die SDKs sind abrufbar und stehen frei zur Verfügung. Die SDK ist für die C7x-DSPs optimiert und sorgt bei korrekter Programmierung dafür, dass die Inferenz auf den DSPs und den Hardware-Beschleunigern der Jacinto-Plattform berechnet wird.

Zunächst wird das Modell auf das Jacinto-Board kopiert. Dann wird die TIDL-Runtime verwendet, um das Modell zu laden und die Inferenz durchzuführen.

 

#include "tidl_api.h"

// Modell laden und Inferenz ausführen
tidl_model_handle model = tidl_load_model("path_to_converted_model.bin");

tidl_inference_result result;
tidl_inference(model, input_data, &result);

// Ergebnisse anzeigen

 

Die TIDL-Runtime übernimmt die Ausführung des quantisierten Modells auf den DSPs, die speziell für die Ausführung von neuronalen Netzen optimiert sind. Sie unterstützt mehrere Eingabe- und Ausgabedatenformate und ermöglicht es, die Ergebnisse direkt in die Anwendung zu integrieren.

Ein entscheidender Schritt beim Deployment ist die Analyse der Performance des neuronalen Netzes auf der Zielhardware. TIDL-Tools bieten umfangreiche Profiler-Werkzeuge, mit denen die Ausführungszeiten, Speichernutzung und Hardware-Auslastung des Modells gemessen werden können. Auf Basis dieser Informationen können weitere Optimierungen durchgeführt werden, beispielsweise durch Architekturänderungen oder Anpassungen der Quantisierungseinstellungen.

 

Kommentieren