Beheben von Ambarella-Fehlern - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beheben von Ambarella-Fehlern

SageMaker Neo erfordert, dass Modelle in einer komprimierten TAR-Datei (*.tar.gz) gepackt werden. Bei Ambarella-Geräten müssen zusätzliche Dateien in die komprimierte TAR-Datei aufgenommen werden, bevor sie zur Kompilierung gesendet wird. Fügen Sie die folgenden Dateien in Ihre komprimierte TAR-Datei ein, wenn Sie ein Modell für Ambarella-Ziele mit SageMaker Neo kompilieren möchten:

  • Ein trainiertes Modell, das ein von Neo unterstütztes Framework verwendet SageMaker

  • Eine JSON-Konfigurationsdatei

  • Kalibrierungsbilder

Der Inhalt Ihrer komprimierten TAR-Datei sollte beispielsweise dem folgenden Beispiel gleichen:

├──amba_config.json ├──calib_data | ├── data1 | ├── data2 | ├── . | ├── . | ├── . | └── data500 └──mobilenet_v1_1.0_0224_frozen.pb

Das Verzeichnis ist wie folgt konfiguriert:

  • amba_config.json : Konfigurationsdatei

  • calib_data : Ordner mit Kalibrierungsbildern

  • mobilenet_v1_1.0_0224_frozen.pb: TensorFlow Modell wurde als eingefrorenes Diagramm gespeichert

Informationen zu den von SageMaker Neo unterstützten Frameworks finden Sie unterUnterstützte Frameworks.

Die Konfigurationsdatei einrichten

Die Konfigurationsdatei enthält Informationen, die die Ambarella-Toolchain benötigt, um das Modell zu kompilieren. Die Konfigurationsdatei muss als JSON-Datei gespeichert werden und der Name der Datei muss mit enden *config.json. Die folgende Tabelle zeigt den Inhalt der Konfigurationsdatei.

Schlüssel Beschreibung Beispiel

inputs

Wörterbuch, das Eingabeebenen einem Attribut zuordnet.

{inputs:{"data":{...},"data1":{...}}}

"data"

Name der Eingabeebene. Hinweis: "data" ist ein Beispiel für den Namen, den Sie verwenden können, um die Eingabeebene zu beschriften.

"data"

shape

Beschreibt die Form der Eingabe für das Modell. Dies folgt den gleichen Konventionen, die SageMaker Neo verwendet.

"shape": "1,3,224,224"

filePath

Relativer Pfad zu dem Verzeichnis, das die Kalibrierungsbilder enthält. Dies können Binär- oder Bilddateien wie JPG oder PNG sein.

"filepath": "calib_data/"

colorformat

Farbformat, dass das Modell erwartet. Dies wird bei der Konvertierung von Bildern in Binärdateien verwendet. Unterstützte Werte: [RGB, BGR]. Der Standardwert ist RGB.

"colorformat":"RGB"

mean

Mittelwert, der von der Eingabe subtrahiert werden soll. Kann ein einzelner Wert oder eine Liste von Werten sein. Wenn der Mittelwert als Liste angegeben wird, muss die Anzahl der Einträge der Kanaldimension der Eingabe entsprechen.

"mean":128.0

scale

Skalenwert, der für die Normalisierung der Eingabe verwendet werden soll. Kann ein einzelner Wert oder eine Liste von Werten sein. Wenn die Skala als Liste angegeben wird, muss die Anzahl der Einträge der Kanaldimension der Eingabe entsprechen.

"scale": 255.0

Im Folgenden finden Sie eine Beispiel-Konfigurationsdatei:

{ "inputs": { "data": { "shape": "1, 3, 224, 224", "filepath": "calib_data/", "colorformat": "RGB", "mean":[128,128,128], "scale":[128.0,128.0,128.0] } } }

Bilder zur Kalibrierung

Quantisieren Sie Ihr trainiertes Modell, indem Sie Kalibrierungsbilder bereitstellen. Die Quantisierung Ihres Modells verbessert die Leistung der CVFlow-Engine auf einem Ambarella-System auf einem Chip (SoC). Die Ambarella-Toolchain verwendet die Kalibrierungsbilder, um zu bestimmen, wie jede Schicht im Modell quantisiert werden sollte, um eine optimale Leistung und Genauigkeit zu erreichen. Jede Schicht wird unabhängig in die Formate INT8 oder INT16 quantisiert. Das endgültige Modell besteht nach der Quantisierung aus einer Mischung aus INT8- und INT16-Schichten.

Wie viele Bilder sollten Sie verwenden?

Es wird empfohlen, zwischen 100 und 200 Bilder einzufügen, die repräsentativ für die Art von Szenen sind, die das Modell voraussichtlich verarbeiten wird. Die Zeit für die Modellkompilierung nimmt linear mit der Anzahl der Kalibrierungsbilder in der Eingabedatei zu.

Was sind die empfohlenen Bildformate?

Kalibrierungsbilder können in einem rohen Binärformat oder in Bildformaten wie JPG und PNG vorliegen.

Ihr Kalibrierungsordner kann eine Mischung aus Bildern und Binärdateien enthalten. Wenn der Kalibrierungsordner sowohl Bilder als auch Binärdateien enthält, konvertiert die Toolchain die Bilder zunächst in Binärdateien. Sobald die Konvertierung abgeschlossen ist, werden die neu generierten Binärdateien zusammen mit den Binärdateien verwendet, die sich ursprünglich im Ordner befanden.

Kann ich die Bilder zuerst in das Binärformat konvertieren?

Ja. Sie können die Bilder mit Open-Source-Paketen wie OpenCV oder PIL in das Binärformat konvertieren. Schneiden Sie die Bilder zu und ändern Sie ihre Größe so, dass sie der Eingabeebene Ihres trainierten Modells entsprechen.

Mittelwert und Skala

Sie können für die Amberalla-Toolchain Optionen für die Vorverarbeitung von Mittelwert und Skalierung angeben. Diese Operationen sind in das Netzwerk eingebettet und werden während der Inferenz auf jede Eingabe angewendet. Geben Sie keine verarbeiteten Daten an, wenn Sie den Mittelwert oder die Skala angeben. Geben Sie insbesondere keine Daten an, von denen Sie den Mittelwert subtrahiert haben oder auf die Sie eine Skalierung angewendet haben.

Prüfen Sie Ihr Kompilierungsprotokoll

Hinweise zur Überprüfung des Kompilierungsprotokolls für Ambarella-Geräte finden Sie unter Überprüfen Sie Ihr Kompilierungsprotokoll.