Yolo Vision Shenzhen
Shenzhen
Jetzt beitreten

Wie Ultralytics bei Ultralytics YOLO auf Ihrem bevorzugten Chip schneller machen

Wie Ultralytics YOLO für Geschwindigkeit auf CPUs, GPUs und Edge-Geräten Ultralytics . Wir erklären Chips, Speicher und intelligente Techniken wie Quantisierung, Fusion und Pruning.

Bei Ultralytics erstellen wir Computer-Vision-Modelle; im Grunde bringen wir Computern das Sehen bei! Stellen Sie sich diese Modelle als riesige mathematische Rezepte vor. Sie bestehen aus Operationen (wir nennen sie „Layer“) und einer riesigen Menge von Zahlen, die wir „Gewichte“ nennen.

Unsere Ultralytics YOLO verarbeiten Bilder so, wie sie wirklich sind: als Zahlenreihen! Jedes Pixel besteht eigentlich nur aus Farbwerten, also der Menge an Rot, Grün und Blau (also RGB) für jeden einzelnen Punkt, aus dem das Bild besteht. Wir nennen diese Zahlenreihen „Tensoren”, weil das viel cooler klingt als „mehrdimensionale Matrizen”, was wiederum viel cooler klingt als „Zahlen auf Zahlen auf Zahlen gestapelt”.

Wenn Sie ein Bild in unser Modell einspeisen, begibt es sich auf eine epische Reise durch das Netzwerk. Stellen Sie sich vor, wie Ihr tensor durch eine Schicht nach der anderen tensor , transformiert, verwickelt und auf die schönstmögliche Weise mathematisch verzerrt wird. Stellen Sie sich das wie eine Tanzparty vor, auf der sich Zahlen vermischen und vermengen und dabei die Essenz dessen extrahieren, was eine Katze zu einer Katze oder ein Auto zu einem Auto macht. Wir nennen diesen Prozess Merkmalsextraktion.

Was kommt am anderen Ende heraus? Noch mehr Zahlen! Aussagekräftige Zahlen. Bei Erkennungsaufgaben sagen sie Ihnen genau, wo sich etwas in Ihrem Bild befindet und was dieses Etwas wahrscheinlich ist. „Hey, mit einer Wahrscheinlichkeit von 95 % handelt es sich bei den Koordinaten (x, y) um einen Hund!“ Wir nennen diesen magischen Prozess „Inferenz“.

Bevor unsere Modelle ihre Magie entfalten können, müssen sie erst einmal zur Schule gehen, sie müssen geschult werden. Der Schulungsteil ist der Teil, in dem es richtig intensiv wird.

Während des Trainings erhalten wir jedes Mal, wenn wir dem Netzwerk ein Bild präsentieren, nicht nur eine Antwort. Wir führen zwei besonders aufwendige Schritte durch. Zunächst berechnen wir, wie falsch das Netzwerk lag (wir bezeichnen dies als Verlust, im Grunde genommen die Entfernung vom Ziel). Zweitens, und das ist der wichtige Teil, aktualisieren wir jede einzelne Zahl (oder Gewichtung) im Netzwerk auf der Grundlage dieses Verlusts. Stellen Sie sich das so vor, als würden Sie Tausende von kleinen Knöpfen gleichzeitig einstellen, wobei jede Anpassung so berechnet wird, dass das Netzwerk jedes Mal genauer wird. Im Wesentlichen trainieren wir das Netzwerk durch Korrekturen: Jeder Fehler lehrt es, was es NICHT tun soll, und wir optimieren alle diese Gewichte, damit es, wenn es wieder ein ähnliches Bild sieht, näher an die richtige Antwort herankommt. Im Wesentlichen lernt das Netzwerk, indem es Fehler für Fehler in die richtige Richtung gelenkt wird, bis es beginnt, die Vorhersagen zu treffen.

Um wie viele Zahlen geht es dabei? Nun, unser süßes kleines YOLO11n hat ein paar Millionen Parameter. Aber YOLO11x? Dieser böse Junge hat über 50 Millionen Parameter! Mehr Parameter bedeuten mehr Details, die Sie kodieren können, wie zum Beispiel den Unterschied zwischen dem Malen mit Buntstiften und dem Malen mit einer vollständigen Künstlerpalette.

Während der Inferenz wird diese Parameteranzahl entscheidend. Ein Netzwerk mit 3 Millionen Parametern zu betreiben ist wie eine Runde um den Block zu joggen. Ein Netzwerk mit 50 Millionen Parametern zu betreiben? Das ist eher wie ein Marathonlauf, während man mit brennenden Fackeln jongliert.

 Was genau ist also Berechnung? Wie funktioniert diese Zahlenverarbeitung eigentlich? Wie können wir sie beschleunigen? Und was bedeutet „Berechnung optimieren“ überhaupt?

Wie Chips tatsächlich rechnen

Berechnungen werden mit Chips durchgeführt. Diese kleinen Siliziumquadrate sind im Grunde genommen die am besten organisierten Sandburgen des Universums. Jede einzelne Operation, die Ihr Computer ausführt, jede Addition, jeder Vergleich, jedes „Wenn dies, dann das“ ist physisch in das Silizium eingraviert. Es gibt tatsächliche physische Schaltkreise in bestimmten Bereichen des Chips, die für das Addieren von Zahlen zuständig sind, und andere für logische Operationen. Es ist, als hätte man eine winzige Stadt, in der verschiedene Stadtteile auf unterschiedliche Arten von Mathematik spezialisiert sind.

Das klingt wahrscheinlich bizarr, selbst wenn Sie Informatiker sind. Das liegt daran, dass wir in den letzten 40 Jahren Schicht um Schicht Abstraktion aufgebaut haben, wie eine technologische Lasagne, die so hoch geworden ist, dass wir die unterste Schicht gar nicht mehr sehen können. Wir haben die Dinge so sehr vereinfacht, dass die meisten Programmierer heute keine Ahnung haben, wie Berechnungen in Silizium tatsächlich ablaufen. Das ist nicht ihre Schuld, sondern liegt in der Natur der Sache!

Lassen Sie uns diese Schichten abtragen. Nehmen Sie diesen kinderleichten Python :

x = 1
if x == 1:
    y = x + 1

Wir erstellen eine Variable x, setzen sie auf 1, und wenn x gleich 1 ist (Spoiler: das ist es), erstellen wir y mit dem Wert von x plus 1. Drei Zeilen. Ganz einfach.

Aber hier wird es interessant. Zwischen diesen drei unschuldigen Zeilen und den tatsächlichen Elektronen, die sich durch Silizium bewegen, finden MINDESTENS vier massive Übersetzungsschichten statt (es sind sogar noch mehr, aber unsere Digital Content Managerin sagt, dass meine Wortzahl ihr bereits Angst macht). Lassen Sie mich Sie durch diese verwirrende Reise führen:

Schicht 1: Python Bytecode Zunächst Python Ihren Code und kompiliert ihn zu etwas, das als Bytecode bezeichnet wird, einer Zwischensprache, die für Computer leichter zu verarbeiten ist, Ihnen aber beim Lesen die Augen bluten lassen würde.

Schicht 2: Bytecode → Maschinencode Der Python (wie CPython) nimmt diesen Bytecode und übersetzt ihn in Maschinencode, also die tatsächlichen Befehle, die Ihr Prozessor versteht. Hier wird Ihr elegantes „if x == 1” zu etwas wie „LOAD register, COMPARE register, JUMP if zero flag set”.

Schicht 3: Maschinencode → Mikrocode Überraschung! Moderne Prozessoren führen Maschinencode nicht einmal direkt aus. Sie zerlegen ihn weiter in Mikrocode, also noch kleinere Operationen, die die internen Komponenten des Chips verarbeiten können. Ihre einzelne „ADD”-Anweisung kann zu mehreren Mikrooperationen werden.

Schicht 4: Mikrocode → Physikalische Elektronik Schließlich kommen wir zum Silizium. Diese Mikrooperationen lösen tatsächliche elektrische Signale aus, die durch Transistoren fließen. Milliarden winziger Schalter schalten sich ein und aus, Elektronen tanzen durch sorgfältig entworfene Bahnen, und irgendwie, auf magische Weise, wird aus 1 + 1 die Zahl 2.

Jede Schicht dient dazu, die wahnsinnige Komplexität der darunter liegenden Schicht zu verbergen. Es ist wie bei diesen russischen Matroschka-Puppen, nur dass jede Puppe eine völlig andere Sprache spricht und die kleinste Puppe buchstäblich aus in Sand eingeschlossenem Blitzlicht besteht.

Die Ironie dabei? Diese drei Zeilen Python lösen Python MILLIONEN von Transistorschaltungen aus. Aber dank dieser Abstraktionen müssen Sie sich darüber keine Gedanken machen. Sie schreiben einfach „y = x + 1” und vertrauen darauf, dass irgendwo tief im Silizium die Magie geschieht.

Die Architektur

Jede einzelne Operation wird physisch im Silizium implementiert, und WO sie auf dem Chip stattfindet, hängt vollständig von der Topologie des Chips ab. Es ist wie Stadtplanung, nur für Elektronen. Der Addierer befindet sich hier, der Multiplikator dort, und sie alle müssen effizient miteinander kommunizieren.

Es gibt Hunderte verschiedener Chips auf dem Markt, die jeweils für unterschiedliche Zwecke entwickelt wurden. Was unterscheidet sie voneinander? Die Topologie, also wie Operationen im physikalischen Bereich positioniert und implementiert sind. Das bezeichnen wir als Architektur, und davon gibt es eine ganze Menge:

  • x86 (Intel AMD) – Der Urvater der Desktop-Computer, komplex, aber leistungsstark
  • ARM – Antreibt Ihr Smartphone und zunehmend auch Ihren Laptop, entwickelt für Effizienz
  • RISC-V – Der Open-Source-Rebell, der überall an Boden gewinnt
  • PowerPC – IBMs Kraftpaket, das nach wie vor in Spielkonsolen und Servern zum Einsatz kommt
  • MIPS – Der akademische Favorit, einfach und elegant
  • SPARC – Der Beitrag von Sun Microsystems (jetzt Oracle) zum Hochleistungsrechnen
  • GPU (NVIDIA CUDA , AMDs RDNA) – Monster der Parallelverarbeitung

Jede Architektur ordnet ihre Transistoren nicht nur anders an, sondern spricht auch eine andere Sprache. Die Abstraktionen, die wir verwenden, um Anweisungen an diese Maschinen zu senden, sind völlig unterschiedlich. Es ist, als müsste man jemandem eine Wegbeschreibung schreiben, aber je nach dessen Auto muss man diese möglicherweise auf Französisch, Mandarin oder in Form eines interpretativen Tanzes verfassen.

Der Herzschlag von Silicon

Der Treibstoff unserer Chips sind Elektronen, also Strom, der in den Chip fließt und die Energie für die Rechenleistung liefert. Aber Energie allein reicht nicht aus. Damit ein Chip tatsächlich funktioniert und Daten durch seine komplexe Topologie transportiert, hängt alles von einer entscheidenden Komponente ab: dem Taktgeber. Dieser sorgt dafür, dass Elektronen zu bestimmten Zeiten bestimmte Pfade durchlaufen. Ohne ihn hätten Sie nur mit Strom versorgtes Silizium, das nichts tut.

Stellen Sie sich vor, Sie müssten eine riesige Aufführung koordinieren, bei der Milliarden von Komponenten perfekt synchron bewegt werden müssen. Ohne einen Taktgeber würde Chaos herrschen. Genau das ist die Aufgabe des Taktgebers für Ihren Prozessor. Es handelt sich um einen Quarz, der mit einer unglaublich konstanten Frequenz schwingt und Milliarden Mal pro Sekunde elektrische Impulse aussendet.

Wenn Sie „3,5-GHz-Prozessor“ hören, bezeichnet „GHz“ (Gigahertz) die Taktrate, also 3,5 Milliarden Takte pro Sekunde. Jeder Takt wird als Taktzyklus bezeichnet und ist die grundlegende Zeiteinheit in der Informatik.

Zwischen den Taktzyklen passiert NICHTS. Der gesamte Computer friert ein und wartet auf den nächsten Takt. Es ist wie das extremste Spiel von „Rot, grün, blau“ im Universum. Bei jedem „grünen Licht“ (Taktimpuls):

  • Daten werden zwischen Komponenten übertragen
  • Berechnungen werden ausgeführt
  • Logische Entscheidungen werden getroffen
  • Der Speicher wird gelesen oder beschrieben.

Einige Vorgänge dauern einen Zyklus (eine einfache Addition), während andere viele Zyklen benötigen (eine Division oder das Abrufen von Daten aus dem RAM). Es ist präzise choreografiert: Milliarden von Komponenten führen ihre spezifischen Vorgänge aus, alle synchronisiert zu diesem unerbittlichen Takt. 

Sie können Ihren Prozessor übertakten, indem Sie den Quarz schneller schwingen lassen. Dadurch läuft alles schneller, aber es entsteht auch mehr Wärme, wodurch die Stabilität abnimmt. Wenn Sie es übertreiben, stürzt Ihr Computer ab, weil die Elektronen buchstäblich nicht mehr mit dem Takt mithalten können.

Früher wurden diese Vorgänge mit Maschinen durchgeführt, die so groß wie ganze Räume waren. Aber die Komponenten, die all diese Berechnungen durchführen, sind bemerkenswert einfach: Es handelt sich lediglich um Schalter. Ein-Aus-Schalter.

Verbinden Sie genügend dieser Schalter im richtigen Muster miteinander, und schon haben Sie eine Rechenleistung. Die gesamte digitale Revolution lässt sich auf eine ausgeklügelte Schalteranordnung zurückführen.

Diese Einfachheit bedeutet, dass man mit Schaltern, egal welchen, einen Computer bauen kann. Es gibt Leute, die funktionierende Computer aus Wasserrohren und Ventilen, Dominosteinen, LEGO-Steinen, Murmeln und sogar mit Redstone in Minecraft gebaut haben.

Die Prinzipien haben sich seit den 1940er Jahren nicht geändert. Wir sind nur unglaublich gut darin geworden, Schalter extrem klein zu bauen. Ihr Smartphone hat mehr Rechenleistung als alle Computer, die Menschen zum Mond gebracht haben, und es passt in Ihre Hosentasche, weil wir herausgefunden haben, wie man Schalter im atomaren Maßstab herstellt.

Wenn wir neuronale Netze mit Millionen von Parametern betreiben, schalten wir diese winzigen Schalter milliardenfach pro Sekunde um, alles perfekt synchronisiert mit diesem kristallklaren Herzschlag. Jede Gewichtsaktualisierung, jede Matrixmultiplikation, jede Aktivierungsfunktion – sie alle marschieren im Takt der Uhr.

Kein Wunder, dass Trainingsmodelle Ihren Computer so klingen lassen, als würde er versuchen, abzuheben!

Neuronale Netze zum BRRRRR bringen

Okay, wir haben also diese Chips mit Milliarden von Schaltern, die im Takt eines Kristalls tanzen, und wir wollen neuronale Netze mit Millionen von Parametern darauf ausführen. Das sollte doch einfach sein, oder? Einfach die Zahlen auf den Chip werfen und loslegen!

Neuronale Netze schnell auszuführen ist wie der Versuch, ein Fünf-Gänge-Menü in einer Küche zuzubereiten, in der der Kühlschrank drei Blocks entfernt ist, man nur eine Pfanne hat und jede Zutat 500 Pfund wiegt. Die Mathematik selbst ist nicht das größte Problem, sondern alles andere.

Die architektonische Diskrepanz

Die meisten Chips wurden für die Ausführung von Microsoft entwickelt, nicht für neuronale Netzwerke. Ihre CPU mit dem Gedanken gebaut, dass sie ihr Leben lang if-Anweisungen und Schleifen ausführen und gelegentlich Ihre Steuern berechnen würde (die einzige Berechnung, die selbst Supercomputer emotional anstrengend finden). Sie ist für sequenzielle Operationen optimiert: erst dies, dann das, dann das andere.

Neuronale Netze sind jedoch völlig anders. Sie wollen ALLES AUF EINMAL erledigen. Während des Trainings aktualisieren Sie Millionen von Gewichten basierend darauf, wie falsch Ihre Vorhersagen waren. Während der Inferenz (der tatsächlichen Verwendung des trainierten Modells) schieben Sie Daten durch Millionen von Berechnungen gleichzeitig. Stellen Sie sich vor, Sie müssen eine Million Zahlen mit einer weiteren Million Zahlen multiplizieren. Ihre CPU, Gott segne sie, möchte dies einzeln erledigen, wie ein sehr schneller, aber sehr methodischer Buchhalter.

Aus diesem Grund wurden GPUs zum Rückgrat der KI-Datenverarbeitung. GPUs wurden für Videospiele entwickelt, bei denen die Farbe von Millionen von Pixeln gleichzeitig berechnet werden muss. Es hat sich herausgestellt, dass die Berechnung von Pixelfarben und die Mathematik neuronaler Netze überraschend ähnlich sind: Bei beiden Verfahren werden parallel dieselben Operationen auf riesigen Datenmengen durchgeführt.

Aber auch GPUs sind nicht perfekt für neuronale Netze geeignet. Deshalb entwickeln Unternehmen derzeit spezielle KI-Chips (TPUs, NPUs und alle anderen Abkürzungen, die auf PU enden). Diese Chips wurden von Grund auf für eine einzige Aufgabe entwickelt: neuronale Netze schneller zu machen. Das ist so, als würde man einen Koch einstellen, der nur ein einziges Gericht zubereiten kann, dieses aber mit übermenschlicher Geschwindigkeit. Während Ihre CPU durch sequenzielle Matrixoperationen CPU und Ihre GPU diese parallel recht gut GPU , sind diese speziellen Chips ein wahres Matrix-Ass.

Die Speicherwand (oder: Warum das Verschieben von Bits schwieriger ist als Mathematik)

Bei modernen neuronalen Netzwerken verbringen wir mehr Zeit und Energie damit, Daten zu verschieben, als tatsächlich mit ihnen zu rechnen.

Stellen Sie sich Ihren Computerchip wie einen brillanten Mathematiker vor, der blitzschnell arbeitet, dessen Nachschlagewerke jedoch in verschiedenen Gebäuden in der ganzen Stadt gelagert sind. Er kann jede Gleichung sofort lösen, muss aber zuerst die Zahlen beschaffen, und dieser Weg dauert ewig.

Ihr Chip kann zwei Zahlen in einem Taktzyklus multiplizieren (denken Sie daran, das ist einer von Milliarden Takten pro Sekunde). Blitzschnell! Aber diese Zahlen aus dem Speicher auf den Chip zu übertragen? Das kann HUNDERTE von Zyklen dauern. Das ist so, als könnte Ihr Mathematiker ein Problem in einer Sekunde lösen, aber fünf Minuten brauchen, um zur Bibliothek und zurück zu laufen.

Der Grund dafür ist die Entfernung (und der Raum). Elektrizität bewegt sich schnell, aber nicht unendlich schnell. Je weiter die Daten auf dem Chip zurücklegen müssen, desto länger dauert es. Computerentwickler haben dieses Problem gelöst, indem sie eine Speicherhierarchie geschaffen haben, ähnlich wie mehrere Speicherorte in unterschiedlichen Entfernungen:

  • Register (direkt in die Recheneinheiten integriert): Der Schreibtisch Ihres Mathematikers. Sofortiger Zugriff! Aber er ist winzig, Sie können hier nur etwa 32 Zahlen speichern. Es ist, als hätten Sie Haftnotizen direkt vor sich liegen.
  • L1-Cache (Mikrometer entfernt): Das Bücherregal im Büro. Es dauert 3-4 Zyklen, um etwas herauszuholen. Hier finden einige tausend Zahlen Platz.
  • L2-Cache (Millimeter entfernt): Der Aktenschrank am Ende des Flurs. Benötigt 10–15 Zyklen und kann einige Millionen Zahlen aufnehmen.
  • L3-Cache (chipübergreifend): Der Lagerraum im Untergeschoss. Benötigt 30–50 Zyklen und fasst mehrere zehn Millionen Zahlen.
  • RAM (auf einem völlig anderen Chip): Das Lagerhaus auf der anderen Seite der Stadt. Es benötigt 100 bis 300 Zyklen. Hier befinden sich Ihre Milliarden von Zahlen.
  • SSD/Festplatte (über Kabel angeschlossen): Eine ganz andere Welt. Benötigt Millionen von Zyklen. Riesiger Speicherplatz, extrem langsame Geschwindigkeit.

Die genauen Strukturen variieren, der Chip Ihres Telefons überspringt möglicherweise den L3-Cache, während eine CPU über enorme Mengen davon verfügen CPU . Das Prinzip bleibt jedoch dasselbe: Näherer Speicher ist schneller, aber kleiner.

An dieser Stelle wird es für neuronale Netze schwierig. Stellen Sie sich vor, Ihr Ultralytics YOLO hat 50 Millionen Parameter (ChatGPT übrigens Milliarden). Das sind 50 Millionen Zahlen, die vom Speicher zu den Recheneinheiten und zurück übertragen werden müssen. Selbst wenn jede Zahl nur 4 Byte groß ist, sind das 200 Megabyte an Daten, die durch Ihr System übertragen werden müssen.

Der Chip verarbeitet zwar jede Zahl in einem einzigen Zyklus, aber wenn es 100 Zyklen dauert, um diese Zahl aus dem RAM abzurufen, verbringen Sie 99 % Ihrer Zeit damit, auf die Lieferung zu warten. Das ist so, als hätte man einen Formel-1-Rennwagen im Stau stehen. All diese Rechenleistung sitzt einfach da und wartet darauf, dass Daten eintreffen.

Hier ist die entscheidende Erkenntnis: Dies ist DER Engpass in der modernen Datenverarbeitung. Er wird als von-Neumann-Engpass bezeichnet. Chips für mathematische Berechnungen schneller zu machen, ist relativ einfach. Die Geschwindigkeit des Speichers zu erhöhen, stößt jedoch an physikalische Grenzen. Aus diesem Grund findet fast die gesamte Leistungsoptimierung in der KI auf der Ebene des Speichers statt. Wenn Ingenieure neuronale Netze beschleunigen, machen sie selten die mathematischen Berechnungen schneller, sondern finden clevere Wege, um Daten weniger zu verschieben, besser zwischenzuspeichern oder intelligenter darauf zuzugreifen.

Moderne KI-Chips konzentrieren sich nicht nur auf die Rechengeschwindigkeit, sondern legen auch großen Wert auf Speicherbandbreite und Datenbewegungsstrategien. Sie laden Daten vorab, verwenden bereits im Cache gespeicherte Werte wieder und organisieren Berechnungen so, dass Speicherzugriffe minimiert werden. Die Gewinner im Wettlauf um KI-Hardware sind nicht diejenigen mit den schnellsten Rechnern, sondern diejenigen, die herausgefunden haben, wie diese Rechner mit Daten versorgt werden können. Es geht darum, die Speicherzugriffsmuster zu optimieren. 

Jedes Mal, wenn Sie Daten übertragen, verbrauchen Sie Energie. Nicht viel, wir sprechen hier von Picojoule, aber wenn Sie Terabytes pro Sekunde übertragen, summiert sich das SCHNELL. Tatsächlich verbraucht die Übertragung von Daten über 1 mm auf einem Chip mehr Energie als die eigentliche Berechnung!

Deshalb klingt Ihr Laptop beim Training neuronaler Netze wie ein Düsentriebwerk. Es ist nicht die Mathematik, die Wärme erzeugt, sondern die Datenbewegung. Jede Parameteraktualisierung, jede Gradientenberechnung, jeder Vorwärtsdurchlauf heizt buchstäblich Ihren Raum auf.

Moderne KI-Beschleuniger sind im Grunde genommen Übungen in Thermodynamik. Wie viel Rechenleistung können wir unterbringen, bevor der Chip schmilzt? Wie schnell können wir die Wärme abführen? Es ist wie beim Übertakten, nur dass die Taktfrequenz immer bei 11 liegt und wir lediglich versuchen, keinen Brand zu verursachen.

Die Lösung? Architekturorientiertes Design

Die schnellsten neuronalen Netze sind nicht unbedingt die intelligentesten, sondern diejenigen, die mit Blick auf Chips entwickelt wurden. Sie:

  • Daten so weit wie möglich lokal speichern
  • Berechnungen obsessiv wiederverwenden
  • Perfekt auf die Hardware-Fähigkeiten abgestimmt
  • Minimieren Sie Speicherbewegungen um jeden Preis.

Es ist wie der Unterschied zwischen einem Rezept, in dem steht „Verwenden Sie Zutaten aus Ihrem örtlichen Supermarkt“, und einem, für das Sie Gewürze aus Tibet, Käse aus Frankreich und Wasser aus der Antarktis importieren müssen. Beide mögen gut schmecken, aber eines ist definitiv praktischer.

Und genau deshalb ist es eine Kunst, neuronale Netze schnell zu machen. Gute Mathematikkenntnisse reichen nicht aus; man muss die Hardware verstehen, die Speicherhierarchie respektieren und perfekt mit der Architektur harmonieren.

Willkommen in einer Welt, in der Informatik auf Physik trifft, Ingenieurwesen auf pure Zauberei. Wo das Verschieben einer Zahl mehr kostet als das Rechnen damit. Wo Parallelität schnell ist, aber Synchronisation den Tod bedeutet. Wo Ihr größter Feind nicht die Komplexität ist, sondern die Entfernung.

Wie wir YOLO machen

Wenn Sie ein YOLO trainieren, erhalten Sie ein neuronales Netzwerk, das auf Ihrer Trainingsumgebung hervorragend funktioniert. Aber hier ist das Problem: Ihre GPU, Ihr iPhone und der winzige Chip in einer Überwachungskamera sprechen alle völlig unterschiedliche Sprachen. Sie haben unterschiedliche Stärken, unterschiedliche Schwächen und sehr unterschiedliche Vorstellungen davon, wie Daten verarbeitet werden sollten.

Stellen Sie sich das so vor: Eine GPU Tausende von Kernen, die alle gleichzeitig arbeiten können – sie ist für die parallele Verarbeitung ausgelegt. Ein Mobilchip hingegen verfügt zwar über spezielle Schaltkreise, die speziell für KI-Operationen entwickelt wurden, kann aber nur bestimmte Arten von Berechnungen ausführen. Und das Edge-Gerät in Ihrer Türklingelkamera? Es versucht, KI mit einem Stromverbrauch zu betreiben, der geringer ist als der einer LED-Glühbirne.

Bei Ultralytics unterstützen wir über ein Dutzend verschiedene Exportformate, da jedes einzelne für unterschiedliche Hardware optimiert ist. Es geht nicht darum, zu viele Optionen zu haben. Es geht darum, die richtige Option für IHRE spezifischen Anforderungen zu haben.

Fusionsvorgänge: Mit weniger mehr erreichen

Im ursprünglichen YOLO erfolgen viele Operationen nacheinander. Beispielsweise führen wir möglicherweise eine Faltung durch, normalisieren dann die Ergebnisse und wenden anschließend eine Aktivierungsfunktion an. Das sind drei separate Schritte, die jeweils eigene Speicherlese- und -schreibvorgänge erfordern.

Aber hier kommt der clevere Teil: Wir können diese Vorgänge in einem einzigen Schritt zusammenfassen. Wenn wir YOLO die Bereitstellung exportieren, führen wir diese Vorgänge zusammen. Anstelle von:

  1. Faltung berechnen → Im Speicher speichern
  2. Aus Speicher laden → Normalisieren → Im Speicher speichern
  3. Aus Speicher laden → Aktivierung anwenden → Im Speicher speichern

Wir tun Folgendes:

  1. Faltung + Normalisierung + Aktivierung berechnen → Im Speicher speichern

Bei einem typischen YOLO , das ein Bild mit einer Auflösung von 640 × 640 verarbeitet, lassen sich mit diesem einfachen Trick Gigabytes an unnötigen Speicherübertragungen einsparen. Auf einem Mobiltelefon macht dies den Unterschied zwischen einer reibungslosen Echtzeit-Erkennung und frustrierenden Verzögerungen aus.

Mit kleineren Zahlen arbeiten: Die Magie der Quantisierung

YOLO benötigt YOLO hochpräzisen Zahlen, um detect genau detect . Während des Trainings verwenden wir 32 Bit, um jedes Gewicht darzustellen – das ist so, als würde man einen wissenschaftlichen Taschenrechner verwenden, um die Zutaten für ein Sandwich zu messen. Für den tatsächlichen Einsatz? 8 Bit reichen völlig aus.

Dies wird als Quantisierung bezeichnet und ist eine unserer leistungsstärksten Optimierungstechniken. Durch die Verwendung kleinerer Zahlen:

  • Das Modell schrumpft um 75 % (von 200 MB auf 50 MB für Ultrakytics YOLO11x).
  • Es läuft auf den meisten Geräten 2-4x schneller.
  • Es verbraucht viel weniger Strom (Ihr Handy-Akku wird es Ihnen danken).

Nicht alle Schichten in YOLO gleich empfindlich auf diese Reduzierung. Die frühen Schichten, die detect Kanten und Formen detect ? Sie sind robust – wir können ohne Probleme 8-Bit-Zahlen verwenden. Die letzten Erkennungsschichten, die entscheiden, ob es sich um eine Katze oder einen Hund handelt, benötigen etwas mehr Präzision. Daher passen wir die Präzision Schicht für Schicht an und verwenden gerade so viele Bits, wie nötig sind, um die Genauigkeit zu gewährleisten und gleichzeitig die Geschwindigkeit zu maximieren.

Wir haben festgestellt, dass Ultralytics YOLO bei sorgfältiger Quantisierung 99,5 % seiner ursprünglichen GenauigkeitYOLO und gleichzeitig dreimal schneller auf Smartphones läuft. Das ist der Unterschied zwischen einem Forschungsmodell und etwas, das Sie tatsächlich in der Praxis einsetzen können.

Auswahl des besten Algorithmus

Es gibt Dutzende verschiedener Möglichkeiten, dieselbe mathematische Operation durchzuführen. Eine einfache Faltung (die Kernoperation in YOLO) kann mit völlig unterschiedlichen Algorithmen berechnet werden, wobei die beste Wahl von Ihrer spezifischen Hardware und der Eingabegröße abhängt.

Wenn wir YOLO exportieren, testet unser Optimierungsframework verschiedene Algorithmen und wählt den schnellsten für Ihren speziellen Fall aus. Das ist so, als hätte man mehrere Routen zum gleichen Ziel und würde sich je nach aktueller Verkehrslage für eine entscheiden. Auf einer GPU verwenden wir möglicherweise einen Algorithmus, der viele Pixel gleichzeitig verarbeitet. Auf einer CPU verwenden wir möglicherweise einen Algorithmus, der für die sequenzielle Verarbeitung optimiert ist. Die Mathematik ist dieselbe, aber die Ausführungsstrategie ist völlig unterschiedlich.

Speicher: Der versteckte Engpass

Erinnern Sie sich daran, dass wir darüber gesprochen haben, dass der Speicher der eigentliche Engpass in der modernen Datenverarbeitung ist? Dies gilt insbesondere für YOLO. Das Modell kann 50 Millionen Parameter haben und während der Inferenz Gigabytes an Zwischenergebnissen erzeugen. Das Verschieben all dieser Daten ist oft langsamer als die eigentliche Berechnung.

Wir verwenden mehrere Tricks, um Speicherbewegungen zu minimieren:

Intelligente Planung: Wir organisieren die Abläufe so, dass Daten sofort verwendet werden, solange sie sich noch im schnellen Cache-Speicher befinden. Für das Feature-Pyramiden-Netzwerk YOLO reduziert dies den Speicherverkehr um 40 %.

Kachelung: Anstatt ein gesamtes Bild auf einmal zu verarbeiten, zerlegen wir es in kleinere Kacheln, die in den Cache passen. Das bedeutet, dass der Prozessor mit schnellem, lokalem Speicher arbeiten kann, anstatt ständig Daten aus dem langsamen Hauptspeicher abzurufen.

Wiederverwendung von Puffern: Anstatt ständig neuen Speicher für Zwischenergebnisse zu erstellen, verwenden wir dieselben Speicherpuffer wieder. Das ist unglaublich effizient – das gesamte Backbone YOLO kann mit nur einer Reihe wiederverwendbarer Puffer betrieben werden.

Beschneiden: Weniger ist mehr

Hier ist eine überraschende Tatsache: YOLO sind oft überdimensioniert. Wir können 30 % der Kanäle in vielen Schichten entfernen, ohne dass dies Auswirkungen auf die Genauigkeit hat. Dadurch wird das Modell nicht nur kleiner, sondern auch schneller, da buchstäblich weniger Berechnungen durchgeführt werden müssen.

Der Prozess ist elegant: Wir analysieren, welche Teile des Netzwerks am wenigsten zu den endgültigen Erkennungsergebnissen beitragen, entfernen sie und nehmen dann eine Feinabstimmung des Modells vor, um dies auszugleichen. Ein beschnittenes YOLO11m-Modell kann 30 % schneller sein und dabei 99 % seiner ursprünglichen Genauigkeit beibehalten. Bei batteriebetriebenen Geräten kann diese Effizienzsteigerung mehrere Stunden zusätzliche Betriebszeit bedeuten.

Hardwarebeschleunigung: Die Stärken jedes Chips ausspielen

Verschiedene Prozessoren sind für unterschiedliche Aufgaben geeignet, und die Leistungsunterschiede sind enorm. Das gleiche YOLO11n-Modell benötigt:

  • 45 Millisekunden pro Frame auf einer modernenCPU
  • 4 Millisekunden auf einer NVIDIA GPU
  • 22 Millisekunden auf einem High-End-Telefonprozessor
  • 15 Millisekunden auf einer Google Edge TPU

Dies sind nicht nur Geschwindigkeitsunterschiede aufgrund der Taktraten – sie spiegeln grundlegende architektonische Unterschiede wider. GPUs verfügen über Tausende von Kernen, die parallel arbeiten und sich perfekt für die Faltungen YOLO eignen. Mobile NPUs verfügen über spezielle Schaltkreise, die speziell für neuronale Netze entwickelt wurden. CPUs sind Alleskönner, flexibel, aber nicht spezialisiert.

Der Schlüssel zur Optimierung liegt darin, die Operationen YOLO an die jeweiligen Stärken der einzelnen Chips anzupassen. Eine GPU , dieselbe Operation gleichzeitig auf vielen Daten durchzuführen. Eine mobile NPU unterstützt möglicherweise nur bestimmte Operationen, führt diese jedoch unglaublich effizient aus. Eine TPU arbeitet TPU mit 8-Bit-Ganzzahlen, erreicht aber innerhalb dieser Einschränkung eine bemerkenswerte Geschwindigkeit.

Die Magie der Zusammenstellung

Wenn Sie ein YOLO exportieren, geschieht hinter den Kulissen etwas Bemerkenswertes. Wir konvertieren nicht nur das Dateiformat, sondern kompilieren das Modell speziell für Ihre Zielhardware. Das ist in etwa so wie der Unterschied zwischen Google und einem Muttersprachler. Der Kompilierungsprozess:

  1. Analysiert Ihr Modell, um dessen Struktur und Anforderungen zu verstehen.
  2. Berücksichtigt die Fähigkeiten Ihrer Hardware – was sie gut kann, womit sie Schwierigkeiten hat
  3. Generiert optimierten Code, der die native Sprache Ihrer Hardware spricht.

Der Compiler kann Operationen neu organisieren, um den Cache Ihres Prozessors besser zu nutzen, spezielle Befehle auswählen, die Ihr Chip unterstützt, oder sogar maschinelles Lernen einsetzen, um die beste Optimierungsstrategie zu finden. Ja, wir nutzen KI, um KI zu optimieren – die Zukunft ist da!

Dieser Kompilierungsschritt kann die Leistung um das Zehnfache verbessern. Dasselbe YOLO kann mit generischem Code nur langsam laufen, mit richtig optimierten Anweisungen jedoch sehr schnell.

Einsatz an der Peripherie in der realen Welt

Lassen Sie uns darüber sprechen, was passiert, wenn YOLO die reale Welt YOLO – insbesondere auf die herausfordernde Welt der Edge-Geräte. Stellen Sie sich eine Überwachungskamera vor, die YOLO für die Objekterkennung laufen lassen muss. Sie steht vor brutalen Einschränkungen:

  • Arbeitsspeicher: Insgesamt vielleicht nur 512 MB bis 2 GB RAM
  • Leistung: Oft nur 2–5 Watt (weniger als ein Handy-Ladegerät)
  • Kühlung: Keine Lüfter, nur passive Wärmeableitung
  • Zuverlässigkeit: Muss ohne Abstürze kontinuierlich laufen

Hier sehen Sie, was Optimierung in der Praxis bewirkt. Eine Überwachungskamera mit YOLO11s:

  • Originalmodell: 15 Watt, läuft heiß bei 85 °C, erreicht 20 FPS
  • Optimiert durch Quantisierung und Pruning: 3 Watt, angenehme 45 °C, erreicht 25 FPS

Wir haben den Stromverbrauch um 80 % reduziert und gleichzeitig die Leistung verbessert! Das ist der Unterschied zwischen einem Gerät, das überhitzt und den Akku leert, und einem Gerät, das jahrelang zuverlässig funktioniert.

Der Schlüssel liegt darin, die richtigen Kompromisse zu finden. Bei Edge-Geräten gehen wir häufig wie folgt vor:

  • INT8-Quantisierung verwenden (geringere Genauigkeit, deutlich weniger Stromverbrauch)
  • Bei geringer Aktivität weniger Frames verarbeiten
  • Verteilen Sie die Arbeit auf verschiedene Prozessoren, um die Wärmeentwicklung zu steuern.
  • Halten Sie Modelle klein genug, damit sie vollständig in den schnellen Speicher passen.

Der Optimierungsprozess

Bei Ultralytics verfolgen wir einen systematischen Ansatz zur Optimierung. Zunächst erstellen wir ein Profil des Modells, um zu verstehen, wo tatsächlich Zeit verbraucht wird. Oftmals liegen die Engpässe nicht dort, wo man sie erwarten würde. Möglicherweise werden 80 % der Zeit in nur wenigen Schichten verbraucht oder Speicherübertragungen dominieren die Rechenzeit.

Als Nächstes wenden wir Optimierungen iterativ an:

  1. Beginnen Sie mit den größten Engpässen.
  2. Wenden Sie jeweils nur eine Optimierung an.
  3. Messen Sie sowohl die Geschwindigkeitsverbesserung als auch die Auswirkungen auf die Genauigkeit.
  4. Behalten Sie Optimierungen bei, die einen guten Kompromiss bieten.
  5. Wiederholen, bis wir unsere Ziele erreichen

Beispielsweise bei der Bereitstellung von YOLO11m auf einem Smartphone:

  • Basiswert: 200 ms pro Frame, 200 MB Modell
  • Nach der Quantisierung: 80 ms pro Frame, 50 MB Modell
  • Nach dem Beschneiden: 60 ms pro Frame, 35 MB Modell
  • Nach der Fusion: 45 ms pro Frame, 35 MB Modell

Jeder Schritt verbessert die Leistung und behält dabei über 99 % der ursprünglichen Genauigkeit bei. Das Ergebnis? Echtzeit-Objekterkennung auf einem Gerät, das in Ihre Hosentasche passt.

Die Zukunft: Heterogenes Computing

Moderne Geräte werden immer intelligenter, wenn es darum geht, mehrere Prozessoren zusammen zu nutzen. Ihr Smartphone verfügt nicht nur über einen Prozessor, sondern über mehrere, die jeweils auf unterschiedliche Aufgaben spezialisiert sind:

  • Der Kamerasensor verfügt über einen ISP (Bildsignalprozessor) zur Vorverarbeitung.
  • Die NPU (Neural Processing Unit) führt YOLO durch.
  • Die CPU komplexe Logik und Koordination.
  • Die GPU die Ergebnisse auf dem Bildschirm.

Die Zukunft der YOLO liegt in der intelligenten Aufteilung des Modells auf diese Prozessoren. Vielleicht übernimmt die NPU die Hauptkonvolutionen, die CPU die endgültige Erkennungslogik und die GPU der Ergebnisse. Jeder Prozessor tut das, was er am besten kann, und schafft so eine Pipeline, die effizienter ist, als es ein einzelner Prozessor jemals sein könnte.

Wir entwickeln intelligente Partitionierungsalgorithmen, die automatisch die beste Methode zur Aufteilung YOLO die verfügbaren Prozessoren ermitteln, wobei nicht nur deren Leistungsfähigkeit, sondern auch die Kosten für die Datenübertragung zwischen ihnen berücksichtigt werden.

Das Fazit

Bei der Optimierung YOLO geht es nicht nur um die Konvertierung von Dateiformaten, sondern darum, modernste KI in etwas zu verwandeln, das in der realen Welt tatsächlich funktioniert. Durch Techniken wie Quantisierung (Verwendung kleinerer Zahlen), Pruning (Entfernen unnötiger Teile), Operationsfusion (Kombinieren von Schritten) und intelligentes Speichermanagement erzielen wir eine 10- bis 100-fache Leistungssteigerung bei gleichbleibender Genauigkeit.

Das Bemerkenswerte daran? Es gibt keine universelle „beste“ Optimierung. Ein Cloud-Server mit unbegrenzter Leistung erfordert andere Optimierungen als eine batteriebetriebene Drohne. Ein Smartphone mit einem dedizierten KI-Chip muss anders behandelt werden als ein Raspberry Pi. Aus diesem Grund Ultralytics so viele Exportoptionen – jede davon ist für unterschiedliche Szenarien optimiert.

Jede der von uns besprochenen Optimierungen dient einem Ziel: Computer Vision überall zugänglich zu machen. Ganz gleich, ob Sie eine intelligente Türklingel, eine Drohnenanwendung oder einen umfangreichen Cloud-Dienst entwickeln – wir bieten Ihnen die Tools, mit denen YOLO innerhalb Ihrer Vorgaben YOLO .

Wenn Sie ein YOLO mit Ultralytics exportieren, speichern Sie nicht nur eine Datei. Sie nutzen jahrelange Forschungsergebnisse, um neuronale Netze praxistauglich zu machen. Sie verwandeln ein hochmodernes KI-Modell in etwas, das auf realer Hardware mit realen Einschränkungen ausgeführt werden kann und reale Probleme löst.

Das ist es, was wir bei Ultralytics tun. Wir schließen die Lücke zwischen KI-Forschung und praktischer Anwendung. Wir sorgen dafür, dass Computer Vision überall funktioniert, denn die Zukunft der KI besteht nicht nur darin, die besten Modelle zu haben – es geht darum, diese Modelle in der realen Welt nutzbar zu machen.

Lasst uns gemeinsam die Zukunft
der KI gestalten!

Beginnen Sie Ihre Reise mit der Zukunft des maschinellen Lernens

Kostenlos starten