Beherrschen Sie die YOLO-und ResNet-Optimierung auf HiSilicon-NPUs
Sie möchten die beste Leistung Ihrer Modelle auf HiSilicon NPUs erzielen. Dies kann eine schwierige Aufgabe sein. Sie können performan sehen
Sie möchten die beste Leistung Ihrer Modelle auf HiSilicon NPUs erzielen. Dies kann eine schwierige Aufgabe sein. Möglicher weise sehen Sie Leistungs engpässe oder eine schlechte Hardware nutzung. Die Ascend NPU-Architektur stellt einzigartige Herausforderungen. Zum Beispiel,Es wird keine massive Parallelität auf Thread ebene verwendet, um Verzögerungen beim Speicher zugriff zu verbergen.
Ziel: Diese Anleitung bietet Ihnen einen vollständigen Workflow zur Optimierung von YOLO/ResNet. Sie lernen, Modelle vor zubereiten, sie mit dem Ascend Tensor Compiler zu konvertieren, die INT8-Quantisierung anzuwenden und sie mit AscendCL für Spitzen effizienz bereit zustellen.🚀
Wichtige Imbiss buden
- Bereiten Sie Ihr Modell vorHiSilicon-NPUs. Konvertieren Sie es in das ONNX-Format. Beschneiden Sie es, um es kleiner und schneller zu machen.
- Verwenden Sie den Ascend Tensor Compiler (ATC), um Ihr ONNX-Modell zu konvertieren. Dadurch wird eine optimierte '.om'-Datei für die NPU erstellt.
- Wenden Sie die INT8-Quantisierung an, um die Leistung zu steigern. Verwenden Sie Post-Training Quantisierung (PTQ) oder Quantisierung-Aware Training (QAT).
- Verwenden Sie den Ascend Profiler, um langsame Teile Ihres Modells zu finden. Dies hilft Ihnen, Leistungs probleme zu beheben.
- Stellen Sie IhreOptimiertes ModellMit AscendCL. Messen Sie seine Latenz und FPS, um seine Geschwindigkeit zu überprüfen.
VORBEREITUNG UND OPTIMIERUNG VON YOLO/RESNET FÜR DIE UMWANDLUNG
Ihr erster Schritt ist die Vorbereitung des Modells für die HiSilicon NPU. Ein gut vorbereitetes Modell wandelt reibungslos um und führt besser durch. Diese Vorbereitung umfasst mehrere Schlüssels tufen.
- Modell konvertierung: Sie konvertieren Ihr trainiertes Modell in ein NPU-kompatibles Format. Der Ascend Tensor Compiler (ATC) hilft bei diesem Prozess.
- Betreiber anpassung: Ihr Modell hat möglicher weise benutzer definierte Operatoren. Sie müssen diese für die NPU anpassen, wenn sie nicht nativ unterstützt werden.
- Modell Inferenz: Sie werden das konvertierte Modell auf der NPU bereitstellen. Dies beinhaltet das Laden des Modells und das Einspeisen von Daten, um Vorhersagen zu erhalten.
- Leistungs optimierung: Mit Techniken wie Quantisierung und Operator fusion können Sie die Leistung weiter verbessern.
Verwendung von ResNet als YOLO-Rückgrat
Sie können eine ResNet-Architektur als Backbone für Ihr YOLO-Modell verwenden. ResNet ist hervorragend darin, komplexe Funktionen aus Bildern zu extrahieren. Diese Kraft ist mit Kosten verbunden. ResNet fügt ein signifikantes Rechen gewicht hinzu. Dies macht den nächsten Schritt, das Beschneiden, sehr wichtig für die Optimierung von YOLO/ResNet auf Geräten mit einges chränkten Ressourcen.
Beschneiden für NPU-Kompatibilität
Durch das Beschneiden werden unnötige Verbindungen oder Neuronen aus Ihrem neuronalen Netzwerk entfernt. Dieser Prozess erzeugt ein kleineres, schnelleres Modell ohne großen Genauigkeit verlust. Ein beschnitttes Modell hat weniger Parameter und Operationen. Dies macht es ideal für die NPU und reduziertErinnerungNutzung und Beschleunigung der Schluss folgerung. Dies ist eine kritische Technik zur Optimierung von YOLO/ResNet.
Modelle nach ONNX exportieren
Sie müssen Ihr Modell in das ONNX-Format (Open Neural Network Exchange) exportieren. ONNX ist ein Zwischen format, das das ATC-Tool versteht. Sie können ein PyTorch-Modell einfach mit einem einfachen Befehl exportieren.
Beispiel: Exportieren eines YOLOv8n-Modells in ONNX.
# Dieser Befehl erstellt 'yolov8n.onnx' aus Ihrem PyTorch-Modell Yolo export modell = yolov8n.pt format = onnxHinweis: Möglicher weise treten beim Export Fehler auf. Themen wie
Nicht unterstützter ONNX-Datentyp: INT64Oder Form fehl paarungen inFusedMatMulSind üblich. Sie können diese häufig beheben, indem Sie sicherstellen, dass Ihre Eingangs tensor größe korrekt ist, oder indem Sie Datentypen vor dem Export konvertieren.
Überprüfung des ONNX-Diagramms
Sie sollten immer die exportierte ONNX-Datei überprüfen. Diese Überprüfung stellt sicher, dass die Modells truktur korrekt ist, bevor Sie mit der Konvertierung fortfahren. Mehrere Werkzeuge können Ihnen bei diesem letzten Vorbereitung schritt helfen.⚙️
- Netron: Dies ist ein visuelles Werkzeug. Sie können Ihre hochladen
. OnnxDatei, um das gesamte Modell diagramm zu sehen. Sie können die Eigenschaften, Eingaben und Ausgänge jedes Layers überprüfen. - ONNX Checker: Dies ist eine Python-Bibliothek. Sie können die
Onnx. checker.check_model()Funktion in einem Skript. Es bestätigt programma tisch, dass die Struktur Ihres Modells gültig ist, und wird einen Fehler verursachen, wenn es Probleme findet.
MODELL UMWANDLUNG MIT ATC
Nachdem Sie Ihr ONNX-Modell vorbereitet haben, besteht Ihre nächste Aufgabe darin, es in ein Format zu konvertieren, das die HiSilicon NPU verstehen kann. Sie werden dieAscend Tensor Compiler (ATC)Für diesen kritischen Schritt. ATC ist ein leistungs fähiges Werkzeug innerhalb der CANN-Werkzeug kette (Compute Architecture for Neural Networks).
Seine Hauptaufgabe besteht darin, Ihr Modell in ein hoch optimiertes Offline-Modell umzuwandeln.
- ATC ist ein zentrales Konvertierungs werkzeug in der Huawei CANN-Werkzeug kette.
- Sie verwenden es, um Modelle aus beliebten Frameworks in ein Ascend-kompatibles Format anzupassen.
- Es hilft Ihnen, geschulte KI-Modelle effizient auf Huawei Ascend-Hardware bereit zustellen.
Dieser Konvertierungs prozess schafft eine. OmDatei, die das endgültige ausführbare Modell ist, das Sie auf der NPU bereitstellen.
Grundlegende ATC-Konvertierung
Sie können mit einem Basis befehl beginnen, um Ihre verifizierten zu konvertieren. OnnxDatei. Dieser Befehl teilt ATC das Eingabe modell, das ursprüngliche Framework, den gewünschten Ausgabe dateinamen und die Ziel version des Ascend-Chips mit.
💡Was ist ein Offline-Modell (
. Om)? Ein Offline-Modell ist eine Datei, die für ein bestimmtes Hardware-Ziel vor verarbeitet und optimiert wurde. Es enthält Aufgaben wie Operator fusion und Speicher optimierung, was bedeutet, dass die NPU sie während der Inferenz mit minimaler Einrichtungs zeit ausführen kann.
Hier ist eine grundlegendeAtcBefehlszeile beispiel:
Atc -- model = yolov8n.onnx \
-- Framework = 5 \
-- Ausgang = yolov8n \
-- Soc_version = Ascend310
Lassen Sie uns aufbrechen, was jeder Teil dieses Befehls tut:
| Flagge | Beschreibung |
|---|---|
-- Modell | Gibt den Pfad zu Ihrer Eingabe an. OnnxDatei. |
-- Framework = 5 | Sagt ATC, dass das Modell im ONNX-Format ist. (Andere Werte sind für Caffe usw.) |
-Ausgabe | Definiert den Basis namen für Ihre Ausgabe. OmDatei (keine Erweiterung erforderlich). |
-- Soc_version | Gibt den Ziel-Ascend-Prozessor an, wieAscend310OderAscend710. |
Eingänge konfigurieren
Ihr Modell muss die genaue Größe und das Format der Daten kennen, die Sie senden. Sie konfigurieren dies während der ATC-Konvertierung mit bestimmten Flags. Dieser Schritt ist entscheidend für die Leistung und die Vermeidung von Laufzeit fehlern.
Du benutzt die-- Input_shapeFlag, um die Abmessungen Ihres Eingabe tensors zu definieren. Sie können eine feste Chargen größe für eine konsistente Leistung oder eine dynamische Chargen größe für Flexibilität festlegen.
- Statische Chargen größe:
"-- Input_shape = images:1,3,640,640"(Charge von 1) - Dynamische Chargen größe:
"-- Input_shape = images:-1,3,640,640"(Variable Chargen größe)
Sie müssen auch das Daten layout angeben. Die meisten in PyTorch trainierten Computer-Vision-Modelle verwenden dieNCHWFormat. Dieses Layout organisiert Tensor daten als (Anzahl der Samples, Kanäle, Höhe, Breite). Dies richtig zu machen ist für die Rechen effizienz von entscheidender Bedeutung, da es sich darauf auswirkt, wie die NPU auf Daten im Speicher zugreift. Sie können die-- Input_formatFlagge, um dies zu setzen.
Hier ist der erweiterte Befehl mit Eingabe konfiguration:
Atc -- model = yolov8n.onnx \
-- Framework = 5 \
-- Ausgang = yolov8n \
-- Input_format = NCHW \
-- Input_shape = "images:1,3,640,640" \
-- Soc_version = Ascend310
Umgang mit nicht unterstützten Ops
Manchmal enthält Ihr Modell möglicher weise spezielle Ebenen oder Operationen ("ops"), die ATC nativ nicht unterstützt. Wenn dies geschieht, schlägt die Konvertierung fehl. Sie haben ein mächtiges Werkzeug, um dies zu lösen: dieTensor Boost Motor (FSME). Mit TBE können Sie benutzer definierte Operatoren so definieren und implemen tieren, wie es die Ascend-NPU ausführen kann.⚙️
- DSL-Modul: Sie schreiben zuerst die mathematische Kern logik des Operators. Sie verwenden eine domänen spezifische Sprache, um die Berechnungs schritte und den Datenfluss zu definieren.
- Planungs modul: Als Nächstes erklären Sie der Hardware, wie Sie Ihre Logik effizient ausführen können. Dies beinhaltet die Planung der Segment ierung von Daten (Tiling), um den Speicher zugriff und die Leistung zu optimieren.
- IR-Modul: TBE generiert dann eine Zwischen darstellung (IR) Ihres Operators. Dies ist ein standard isiertes Format, das der Compiler verstehen und zu optimieren beginnen kann.
- Compiler-Transfer modul: Der Compiler nimmt den IR und wendet weitere Optimierungen an. Es verwendet Techniken wie Doppel pufferung und intelligente Speicher zuweisung, um den Operator auf die spezifische NPU-Hardware vor zubereiten.
- CodeGen-Modul: Schließlich erzeugt das CodeGen-Modul eine C-ähnliche Code datei. Diese Datei wird zu einem ausführbaren Operator kompiliert, den das CANN-Framework direkt auf der NPU laden und ausführen kann.
⚠️ Hinweis: Das Erstellen benutzer definierter Operatoren erfordert ein tiefes Verständnis sowohl der Funktion des Bedieners als auch der zugrunde liegenden NPU-Architektur. Sie sollten immer zuerst die offizielle CANN-Betreiber liste überprüfen. Erstellen Sie einen benutzer definierten Operator nur, wenn Sie keine unterstützte Alternative finden.
ADVANCED OPTIMIERUNG UND TUNING
Sie haben Ihr Modell umgebaut. Jetzt können Sie die wahre Kraft der HiSilicon NPU freischalten. Fort geschrittene Optimierung stech niken bringen die Leistung Ihres Modells auf den Höhepunkt. Diese Phase konzentriert sich darauf, die Präzision des Modells zu reduzieren und sein Laufzeit verhalten zu analysieren, um Engpässe zu finden und zu beheben.
NPUs wie die Da Vinci-Architektur von HiSilicon sollen bestimmte mathematische Operationen beschleunigen. Ihr Modell muss diese "NPU-freundlichen" Operatoren für Faltung, Pooling und Aktivierung verwenden, um maximale Geschwindigkeit zu erreichen. Jeder von der NPU nicht unterstützte Vorgang wird auf der langsameren CPU ausgeführt, wodurch ein Leistungs engpass entsteht.Quantisierung ist eine Schlüssel technik, die Ihr Modell NPU-freundlicher macht. Es reduziert die Genauigkeit der Zahlen Ihres Modells, zum Beispiel von 32-Bit-Gleitkomma (FP32) auf 8-Bit-Ganzzahl (INT8). Diese Änderung macht das Modell kleiner und schneller.EinKI-Benchmark-TestZeigt diese Auswirkungen deutlich.Ein Modell, das mit 12 Bildern pro Sekunde mit FP32 läuft, kann 30 Bilder pro Sekunde erreichen, wenn es mit der INT8-Quantisierung optimiert wird.
Quantisierung nach dem Training (PTQ)
Post-Training Quantisierung (PTQ) ist eine leistungs starke Technik zur Optimierung von YOLO/ResNet. Sie wenden es auf ein bereits ausgebildetes FP32-Modell an. Das Hauptwerk zeug, das Sie dafür verwenden werden, ist das Ascend Model Compression Toolkit (AMCT). PTQ ist beliebt, weil es eine schnelle und unkomplizierte Möglichkeit ist, einen signifikanten Leistungs schub zu erzielen, ohne Ihr Modell neu zu trainieren.
PTQ kann jedoch manchmal dazu führen, dass die Genauigkeit Ihres Modells abfällt.Bei einem Modell wie YOLOv8 Nano kann es zu einer leichten Abnahme der Inferenz genauigkeit kommen. In einigen Fällen, insbesondere bei kleineren Modellen, kann dieser Genauigkeit verlust signifikanter sein. Die statische INT8-Quantisierung kann zu einem moderaten Genauigkeit abfall der absoluten mAP50-95 um etwa 3-7% führen.
Wenn der Genauigkeit verlust von PTQ zu hoch ist, haben Sie eine andere Option:Quantisierung-Aware-Training (QAT). QAT führt die Simulation der Quantisierung während des Trainings prozesses selbst ein. Auf diese Weise kann das Modell lernen, wie der Präzisions verlust ausgeglichen werden kann, was häufig zu einer besseren End genauigkeit führt.
Hier ist ein Vergleich, der Ihnen bei der Entscheidung hilft, welche Methode Sie verwenden möchten:
| Feature | Quantisierung nach dem Training (PTQ) | Quantisierung-Aware-Training (QAT) |
|---|---|---|
| Anwendungs phase | Auf ein vor trainiertes Modell angewendet | Direkt in den Modell trainings prozess integriert |
| Umschulung erforderlich | Nein, Sie müssen nicht umschulen | Ja, es erfordert eine längere Trainings zeit, um sich an die Quantisierung anzupassen |
| Komplexität | Einfacher und schneller zu implemen tieren | Komplexer, da es die Quantisierung während des Trainings simuliert |
| Auswirkungen auf die Genauigkeit | Kann zu einem spürbaren Genauigkeit abfall führen | Erreicht oft eine bessere Genauigkeit durch Optimierung für quantisierte Inferenz |
Wann sollte man eins über das andere wählen?
- Wählen Sie PTQWenn Sie Ihr Modell nicht umschulen können oder wenn ein leichter Genauigkeit abfall für einen großen Geschwindigkeit gewinn akzeptabel ist.
- Wählen Sie QATWenn Genauigkeit Ihre oberste Priorität hat und Sie über die Ressourcen für einen längeren, komplexeren Trainings zyklus verfügen.
Vorbereitung eines Kalibrierung datasets
Um PTQ durch zuführen, benötigen Sie eineKalibrierung datensatz. Dies ist eine kleine, repräsent ative Sammlung von Eingabedaten (z. B. Bildern), die das AMCT verwendet. Es führt diese Daten durch Ihr Modell, um den Bereich der Aktivierung werte zu analysieren. Diese Informationen helfen dabei, die optimalen Skalierung faktoren für die Konvertierung von FP32-Werten in INT8 zu berechnen, ohne zu viele Informationen zu verlieren.
Das Erstellen eines guten Kalibrierung datensatzes ist entscheidend für eine erfolgreiche Quantisierung.
- Qualität über Menge: Sie benötigen keinen massiven Datensatz. Eine Reihe von herum1024 vielfältige und gut vorbereitete BilderIst oft genug. Einfach mehr Bilder zu verwenden ist nicht immer besser. Ein unausgeglichener oder redundanter Datensatz kann die Kalibrierung statistik verzerren. Dies kann dazu führen, dass das quantisierte Modell während der realen Inferenz schlecht abschneidet.
- Repräsentation ist der Schlüssel: Ihre Kalibrierung bilder sollten die Vielfalt der Daten widerspiegeln, die Ihr Modell in der Produktion sehen wird. Fügen Sie Bilder mit unterschied lichen Licht verhältnissen, Objekt größen und Hintergründen ein, um sicher zustellen, dass der Kalibrierung prozess robust ist.
Ein gut ausgewählter Kalibrierung satz ist ein Eckpfeiler der effektiven Quantisierung bei der Optimierung von YOLO/ResNet.
Profilierung mit Ascend Profiler
Nachdem Sie Ihr Modell konvertiert und quant ifi ziert haben, müssen Sie seine Leistung messen. DieAscend ProfilerIst das Tool, mit dem Sie verbleibende Leistungs engpässe finden. Sie erhalten eine detaillierte Aufschlüsse lung der Ausführung Ihres Modells auf der NPU.
Sie können die Daten des Profilers verwenden, um kritische Fragen zu beantworten:
- Welche Betreiber nehmen sich die meiste Zeit?
- Laufen Betreiber unerwartet auf der CPU anstelle der NPU?
- Gibt es eine ineffiziente Daten bewegung zwischen dem Host und dem Gerät?
Der Ascend Profiler verfügt über zwei Schlüssel komponenten für diese Analyse:
-
Zeitleiste analyze: Diese Ansicht bietet Ihnen eine visuelle Darstellung der Ausführung Ihres Modells auf niedriger Ebene. Jeder farbige Block auf der Timeline zeigt die Startzeit und Dauer eines Operators. Sie sehen genau, welche Operatoren auf dem laufenAICORE(Die Haupt-NPU), dieAICPU, Oder dieHOSTCPU. Dies hilft Ihnen, Operatoren mit langen Ausführungs zeiten zu lokalisieren. Sie können diese Timeline-Daten als JSON-Datei herunter laden und in Tools wie
Chrome: // TracingFür einen tieferen Blick. -
Analyse der Betreiber leistung: Diese Komponente bietet Statistiken auf hoher Ebene. Es zeigt die Ausführungs zeiten des Operators in Tabellen und Diagrammen an, sortiert nach Dauer. Sie können schnell sehen, welche Operator typen (z. B. AICORE vs. AICPU) und welche spezifischen Operatoren die meiste Zeit in Anspruch nehmen. Dies ist perfekt, um fest zustellen, ob ein erheblicher Teil der Laufzeit Ihres Modells für einige langsame Operationen aufgewendet wird.
Indem Sie diese beiden Ansichten zusammen verwenden, können Sie Leistungs probleme effektiv diagnostizieren. Wenn der Profiler beispiels weise anzeigt, dass ein benutzer definierter oder nicht unterstützter Operator auf der HOSTCPU ausgeführt wird, wissen Sie, dass das Erstellen eines benutzer definierten FSME-Operators wahr schein lich eine erhebliche Beschleunigung darstellt.
ENTWICKLUNG UND INFERENZ
Sie haben Ihr Modell optimiert. Jetzt werden Sie es auf der HiSilicon NPU bereitstellen. In dieser letzten Phase führen Sie Ihr Modell aus, um reale Vorhersagen zu treffen. Sie werden dieAscend Compute Sprache(AscendCL), um mit der Hardware zu kommunizieren und die endgültige Leistung Ihres Modells zu messen.
Initial isieren des Geräts mit AscendCL
Sie müssen zuerst die NPU für die Inferenz einrichten. Sie werden AscendCL verwenden, um dies zu tun. Die Python Ascend Computing Language (pyACL) ist eine Python-API-Bibliothek, die diesen Prozess einfach macht. Damit können Sie den Ascend AI-Prozessor direkt von Ihrem Python-Code aus steuern.
Der Standard-Workflow zum Ausführen eines Modells folgt einer klaren Reihenfolge:
- PyACL initial isieren: Sie starten die pyACL-Bibliothek, um System ressourcen vor zubereiten.
- Ressourcen zuteilen: Sie legen die Laufzeit ressourcen beiseite, die Ihre Anwendung benötigt.
- Daten übertragen: Sie verschieben Ihre Eingabedaten wie Bilder in den Speicher des Geräts.
- Prozess daten: Sie können Bild änderungen in letzter Minute durchführen, z. B. die Größen änderung.
- Modell ausführen: Sie laden Ihre
. OmModellieren und führen Sie den Inferenz prozess aus. - Zuweisungen zerstören: Sie geben die Laufzeit ressourcen frei, nachdem die Inferenz abgeschlossen ist.
- PyACL entinitial isieren: Sie schließen die Bibliothek, um alle Ressourcen freizugeben.
Inferenz code schreiben
Ihr Inferenz skript bringt all diese Schritte zusammen. Dieser Code ist die Engine, die Ihr Modell lädt, ihm Daten zuführt und die Vorhersagen abruft.
💡Verwendung von PyACL für Inferenz Die
PyACLBibliothek ist Ihr Haupt werkzeug für diese Aufgabe. Sie verwenden seine Funktionen, um das Gerät zu verwalten, Speicher zu verarbeiten, laden Sie Ihre. OmModell, und führen Sie es aus. Es gibt Ihnen die volle Kontrolle über die gesamte Inferenz pipeline innerhalb einer Python-Umgebung.
Ihr Skript lädt die vor verarbeiteten Eingabedaten, sendet sie an die NPU, löst die Modell ausführung aus und verarbeitet dann die Ausgabe aus dem Modell.
Benchmarking-Leistung
Nach der Bereitstellung müssen Sie die Leistung Ihres Modells messen. Dies zeigt Ihnen, wie schnell Ihr Modell läuft. Für diese Bewertung sind zwei Schlüssel metriken unerlässlich:
- Latenz: Dies ist die Zeit, die Ihr Modell benötigt, um eine Eingabe zu verarbeiten, gemessen in Millisekunden (ms). Eine geringere Latenz ist besser.
- Rahmen pro Sekunde (FPS): Dies misst, wie viele Eingaben Ihr Modell in einer Sekunde verarbeiten kann. Höhere FPS ist besser.
Diese beiden Metriken stehen in direktem Zusammenhang.Bei einer Echtzeit-Video anwendung mit 30 FPS muss die Latenz Ihres Modells weniger als 33,3 ms betragen.Andere wichtige Latenz metriken können Ihnen auch tiefere Einblicke geben.
- Zeit zum ersten Token: Die Zeit, die benötigt wird, um die allererste Ausgabe zu erhalten.
- Gesamter zeugung szeit: Die End-to-End-Zeit von der Eingabe bis zur vollständigen Ausgabe.
Wenn Sie diese Zahlen messen, können Sie bestätigen, dass Ihre Optimierung arbeit erfolgreich war.🚀
Sie haben jetzt einen kompletten Workflow für die NPU-Optimierung gemeistert. Dieser Leitfaden führte Sie durch vier wesentliche Phasen:
- Modell vorbereitung
- ATC-Konvertierung
- Quantisierung Tuning
- AscendCL-Bereitstellung
Das Befolgen dieses strukturierten Prozesses ist der Schlüssel, um die volle Leistung Ihrer Computer-Vision-Modelle auf frei zuschaltenHiSilicon-Hardware.
Wenden Sie diese Techniken nun auf Ihre eigenen Projekte an! Weitere Hilfe finden Sie in der offiziellen CANN-Dokumentation oder in den Community-Foren. Viel Glück!🚀
FAQ
Was ist der Haupt unterschied zwischen PTQ und QAT?
Sie wenden Post-Training Quantisierung (PTQ) auf ein bereits ausgebildetes Modell an. Es ist schnell, kann aber die Genauigkeit verringern. Sie verwenden Quant ization-Aware Training (QAT) während des Trainings prozesses. Diese Methode braucht mehr Zeit, hält aber oft die Genauigkeit hoch.
Warum ist ONNX das bevorzugte Format für die Konvertierung?
Sie verwenden ONNX als Universal format. Der Ascend Tensor Compiler (ATC) versteht ONNX-Dateien. Auf diese Weise können Sie problemlos Modelle aus Frameworks wie PyTorch in die. OmFormat, das die NPU ausführen kann.
Was soll ich tun, wenn meine ATC-Konvertierung fehlschlägt?
Ein ATC-Fehler bedeutet häufig, dass Ihr Modell über einen nicht unterstützten Operator verfügt. Überprüfen Sie zunächst die Fehler protokolle auf Hinweise. Möglicher weise müssen Sie einen benutzer definierten Operator mit der Tensor Boost Engine (TBE) erstellen, um das Problem zu lösen.⚙️
Wie viele Bilder brauche ich für einen Kalibrierung datensatz?
Sie brauchen nicht Tausende von Bildern. Ein vielfältiger Satz von etwa 1024 Bildern reicht oft aus. Der Schlüssel ist Qualität, nicht Quantität. Ihre Kalibrierung daten müssen darstellen, was Ihr Modell in der Produktion sehen wird.







