DE102017124573A1 - Systeme und verfahren zum beschneiden von neuronalen netzen für eine betriebsmitteleffiziente folgerung - Google Patents

Systeme und verfahren zum beschneiden von neuronalen netzen für eine betriebsmitteleffiziente folgerung Download PDF

Info

Publication number
DE102017124573A1
DE102017124573A1 DE102017124573.1A DE102017124573A DE102017124573A1 DE 102017124573 A1 DE102017124573 A1 DE 102017124573A1 DE 102017124573 A DE102017124573 A DE 102017124573A DE 102017124573 A1 DE102017124573 A1 DE 102017124573A1
Authority
DE
Germany
Prior art keywords
neural network
trained
neuron
slice parameter
parameter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102017124573.1A
Other languages
English (en)
Inventor
Stephen Walter Tyree
Pavlo Molchanov
Tero Tapani KARRAS
Timo Oskari Aila
Jan Kautz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102017124573A1 publication Critical patent/DE102017124573A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Image Analysis (AREA)

Abstract

Ein Verfahren, ein von einem Computer lesbares Medium und ein System werden offenbart, um ein neuronales Netz zu beschneiden. Das Verfahren weist die Schritte auf Erfassen von Gradienten erster Ordnung einer Kostenfunktion relativ zu Schichtparametern für ein trainiertes neuronales Netz und Berechnen eines Beschneidungskriteriums für jeden Schichtparameter abhängig von dem Gradienten erster Ordnung, welcher mit dem Schichtparameter korrespondiert, wobei das Beschneidungskriterium eine Wichtigkeit von jedem Neuron anzeigt, welches in dem trainierten neuronalen Netz enthalten und dem Schichtparameter zugeordnet ist. Das Verfahren weist die zusätzlichen Schritte eines Identifizierens mindestens eines Neurons, welches eine niedrigste Wichtigkeit aufweist, und eines Entfernens des mindestens einen Neurons von dem trainierten neuronalen Netz, um ein beschnittenes neuronales Netz zu erzeugen, auf.

Description

  • Bereich der Erfindung
  • Die vorliegende Erfindung betrifft neuronale Netze und insbesondere ein Beschneiden von neuronalen Netzen.
  • Hintergrund
  • Faltende neuronale Netze (CNN („Convolutional Neural Networks“)) werden extensiv bei computergestützten Bilderkennungsanwendungen eingesetzt, was eine Objekt-Klassifizierung und Lokalisierung, eine Fußgänger- und Fahrzeug-Erkennung und eine Video-Klassifizierung einschließt. Viele Probleme, wie diese, sind auf spezialisierte Bereiche gerichtet, für welche es nur einen geringen Umfang an sorgfältig kuratierten Trainingsdaten gibt. In diesen Fällen kann die Genauigkeit verbessert werden, indem ein existierendes tiefes Netz, welches vorher auf einem viel größeren gekennzeichneten Bilderkennungsdatensatz trainiert wurde, fein abgestimmt wird. Während die Übertragung von Gelerntem in dieser Form den Stand der Technik bezüglich Genauigkeit unterstützt, ist die Folgerung bzw. die Deduktion oder die logische Schussfolgerung teuer aufgrund der Zeit, der Energie und des Speicherbedarfs, welche von der schwergewichtigen Architektur des fein abgestimmten Netzes gefordert werden. Daher gibt es einen Bedarf, diese Probleme und/oder andere Probleme, welche dem Stand der Technik zugeordnet sind, zu lösen.
  • Zusammenfassung
  • Ein Verfahren, ein von einem Computer lesbares Medium und ein System werden offenbart, um ein neuronales Netz zu beschneiden. Das Verfahren weist die Schritte auf Gradienten erster Ordnung einer Kostenfunktion relativ zu Schichtparametern für ein trainiertes neuronales Netz aufzunehmen und ein Beschneidungskriterium für jeden Schichtparameter abhängig von dem Gradienten erster Ordnung, welcher mit dem Schichtparameter korrespondiert, zu berechnen, wobei das Beschneidungskriterium eine Wichtigkeit von jedem Neuron anzeigt, welches in dem trainierten neuronalen Netz vorhanden und dem Schichtparameter zugeordnet ist. Das Verfahren weist die zusätzlichen Schritte auf, mindestens ein Neuron, welches die geringste Wichtigkeit aufweist, zu identifizieren, und das mindestens eine Neuron von dem trainierten neuronalen Netz zu entfernen, um ein beschnittenes neuronales Netz zu erzeugen.
  • Figurenliste
    • 1A stellt einen Flussplan eines Verfahrens zum Beschneiden eines neuronalen Netzes gemäß einer Ausführungsform dar;
    • 1B und 1C stellen Graphen einer Änderung einer Verlustfunktion als Ergebnis von einem Entfernen eines bestimmten Neurons gemäß einer Ausführungsform dar;
    • 1D stellt eine konzeptionelle Darstellung eines Entfernens von Neuronen von einem neuronalen Netz gemäß einer Ausführungsform dar;
    • 2A stellt einen Graph der Kostenfunktion C und der Parameter h für den Trainingsdatensatz D gemäß einer Ausführungsform dar;
    • 2B stellt ein Blockdiagramm eines Beschneidungssystems eines neuronalen Netzes gemäß einer Ausführungsform dar;
    • 2C stellt gemäß einer Ausführungsform einen Flussplan eines anderen Verfahrens zum Beschneiden eines neuronalen Netzes dar, welches die Schritte aufweist, welche in 1A dargestellt sind;
    • 3 stellt eine Parallelverarbeitungseinheit gemäß einer Ausführungsform dar;
    • 4A stellt ein allgemeines Verarbeitungscluster in der Parallelverarbeitungseinheit der 3 gemäß einer Ausführungsform dar;
    • 4B stellt eine Speicherpartitionseinheit der Parallelverarbeitungseinheit der 3 gemäß einer Ausführungsform dar;
    • 5 stellt den Streaming-Multiprozessor der 4A gemäß einer Ausführungsform dar;
    • 6 stellt ein beispielhaftes System dar, in welchem die unterschiedlichen Architekturen und/oder Funktionalitäten der verschiedenen vorherigen Ausführungsformen implementiert sein können.
  • Detaillierte Beschreibung
  • Während moderne tiefe CNNs aus einer Vielzahl von Schichttypen zusammengesetzt sind, wird die Laufzeit während einer Vorhersage durch die Auswertung der Faltungsschichten bzw. faltenden Schichten dominiert. Mit dem Ziel einer Beschleunigung der Folgerung können gesamte Merkmalsabbildungen beschnitten werden, so dass die sich ergebenden Netze sogar auf eingebetteten Vorrichtungen effizient laufen. Bei einer Ausführungsform ist ein gieriges kriterienbasiertes Beschneiden mit einer feinen Anpassung verschachtelt, woraus sich ein recheneffizientes Verfahren ergibt, was eine gute Verallgemeinerung in dem beschnitten Netz aufrechterhält. Ein Beschneidungskriterium wird berechnet, um die Wichtigkeit von Neuronen in dem Netz zu bewerten, und mindestens ein „am wenigsten wichtiges“ Neuron wird entfernt, um das Netz zu beschneiden. Das „am wenigsten wichtige“ Neuron ist das Neuron, welches den kleinsten Beitrag zu der endgültigen Vorhersage liefert.
  • 1A stellt einen Flussplan 100 eines Verfahrens zum Beschneiden eines neuronalen Netzes gemäß einer Ausführungsform dar. Obwohl das Verfahren 100 im Zusammenhang mit einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 100 auch durch ein Programm, eine kundenspezifische Schaltung oder durch eine Kombination einer kundenspezifischen Schaltung und ein Programm ausgeführt werden. Zum Beispiel kann das Verfahren 100 durch eine GPU (Grafikverarbeitungseinheit), eine CPU (zentrale Verarbeitungseinheit), ein neuronales Netz oder irgendeinen Prozessor, welcher in der Lage ist, ein neuronales Netz zu implementieren, ausgeführt werden. Darüber hinaus versteht der Fachmann, dass jedes System, welches das Verfahren 100 ausführt, innerhalb des Umfangs und des Geistes der Ausführungsformen der vorliegenden Erfindung liegt.
  • Im Schritt 110 werden Gradienten erster Ordnung einer Kostenfunktion bezüglich Schichtparametern für ein trainiertes neuronales Netz erfasst. Ein Kostenwert ist der Wert der Kostenfunktion für den aktuellen Zustand des Netzes, welcher die Genauigkeit des neuronalen Netzes anzeigt. Bei einer Ausführungsform ist der Schichteingangsparameter ein Gewicht oder eine Aktivierung. Es sei angemerkt, dass ein Schichteingangsparameter für eine Schicht in einem neuronalen Netz durch eine vorherige Schicht ausgegeben wird, so dass ein „Schichtparameter“ entweder einen Schichteingangsparameter oder einen Schichtausgangsparameter bezeichnet. Bei einer Ausführungsform wurde das trainierte neuronale Netz vorher mit einem großen Datensatz trainiert und die Gradienten erster Ordnung werden während eines Übertragungs-Lern-Trainings-Prozesses mit einem kleineren, spezielleren Datensatz erzeugt.
  • Im Schritt 120 wird ein Beschneidungskriterium für jeden Schichtparameter abhängig von einem Gradienten erster Ordnung, welcher mit dem Schichtparameter korrespondiert, berechnet, wobei das Beschneidungskriterium die Wichtigkeit von dem jeweiligen Neuron angibt, welches in dem trainierten neuronalen Netz vorhanden ist und dem Schichtparameter zugeordnet ist. Bei einer Ausführungsform hängt ein erstes Beschneidungskriterium von einer Taylor-Erweiterung erster Ordnung, welche den Gradienten erster Ordnung einschließt, (d.h. der ersten Ableitung) ab, die eine Änderung in der Kostenfunktion, welche durch ein Beschneiden von Netzparametern verursacht wird, abschätzt. Die Veränderung bei dem Kostenwert zeigt die Genauigkeit des neuronalen Netzes mit und ohne einen Schichteingangsparameter an, und die Änderung kann minimiert werden. Bei einer anderen Ausführungsform hängt ein zweites Kriterium von einer Summe von Quadraten, welche den Gradienten erster Ordnung der Kostenfunktion relativ zu dem Schichteingangsparameter beinhalten, ab.
  • Bei Schritt 130 wird mindestens ein Neuron, welches die geringste Wichtigkeit aufweist, identifiziert. Bei einer Ausführungsform korrespondiert das mindestens eine Neuron mit einer Merkmalsabbildung in einer Faltungsschicht. Bei einer Ausführungsform umfasst das mindestens eine Neuron Neuronen, welche eine Wichtigkeit unterhalb eines Schwellenwerts aufweisen. Bei einer Ausführungsform umfasst das mindestens eine Neuron einen vorbestimmten Prozentsatz von allen Neuronen in dem trainierten neuronalen Netz.
  • Bei Schritt 140 wird das mindestens eine Neuron von dem trainierten neuronalen Netz entfernt, um ein beschnittenes neuronales Netz zu erzeugen. Bei einer Ausführungsform kann ein Neuron entfernt werden, indem ein Schichtparameter auf Null gesetzt wird. Bei einer Ausführungsform kann ein Neuron entfernt werden, indem ein entsprechendes Beschneidungsgatter auf Null gesetzt wird. Bei einer Ausführungsform kann ein auf gierigen Kriterien basierendes Beschneiden mit einem feinen Anpassen verschachtelt sein, um iterativ Neuronen von dem trainierten neuronalen Netz zu entfernen.
  • Nun wird anschaulichere Information bezüglich verschiedenen optionalen Architekturen und Merkmalen dargelegt, mit welchen der vorab beschriebene Rahmen entsprechend den Wünschen des Benutzers implementiert oder nicht implementiert werden kann. Es sei speziell darauf hingewiesen, dass die folgende Information für erläuternde Zwecke dargelegt wird und in keiner Weise irgendwie einschränkend anzusehen ist. Jedes der folgenden Merkmale kann optional mit oder ohne den Ausschluss von anderen beschriebenen Merkmalen enthalten sein.
  • Idealerweise berücksichtigt das Beschneiden ein Entfernen von jedem Neuron individuell, indem die Kostenfunktion des neuronalen Netzes mit und ohne das jeweilige Neuron berechnet wird, wobei der Prozess jedes Mal wiederholt wird, wenn ein Neuron von dem neuronalen Netz entfernt wird. Während das ideale Beschneiden nicht praktikabel berechnet werden kann, kann das ideale Beschneiden als Vergleich eingesetzt werden, um die Leistungsfähigkeit der verschiedenen Beschneidungstechniken zu bewerten.
  • Für ein faltendes neuronales Netz (CNN) wird eine Gruppe von Bildmerkmalsabbildungen durch zl ∈ RH lxW lxC l mit den Dimensionen Hl x Wlund Cl individuellen Abbildungen (oder Kanälen) bezeichnet. Die Merkmalsabbildungen können entweder die Eingabe für das neuronale Netz zo oder die Ausgabe von der Faltungsschicht zl mit I ε [1, 2, ... , L] sein. Individuelle Merkmalsabbildungen werden mit zl (k) für k ε [1, 2, ... , Cl] bezeichnet. Eine Faltungsschicht I wendet die Faltungsoperation (*) auf eine Gruppe von Eingabemerkmalsabbildungen zl-1 an, wobei die Kerne mit wl (k)ε RC l-1 xpxp parametrisiert sind: z ι ( k ) = g ι ( k ) R ( z ι 1 w ι ( k ) + b ι ( k ) )
    Figure DE102017124573A1_0001
    wobei zl (k) ∈ RH l×W l das Ergebnis eines Faltens jedes der Cl-1-Kerne der Größe p × p mit der entsprechenden Merkmalsabbildung und eines Addierens mit dem Bias bl (k) ist. Es wird angenommen, dass die nichtlineare Aktivierung R der gleich gerichteten linearen Einheit entspricht. Obwohl die Techniken im Zusammenhang mit zweidimensionalen (2D) Faltungen beschrieben werden, können die Techniken auch auf dreidimensionale (3D) Faltungen angewendet werden.
  • Ein Trainingsdatensatz wird während der Beschneidung eingesetzt, um Neuronen von einem vorher trainierten neuronalen Netz zu entfernen. Der Trainingsdatensatz entspricht D = {X = {x0, x1, ..., xN}, Y = {y0, y1, ..., yN}}, wobei x bzw. y einer Eingabe bzw. Sollausgabe entsprechen. Die Parameter des neuronalen Netzes W = { ( w 1 1 , b 1 1 ) , ( w 1 2 , b 1 2 ) ,... ( w L C ι , b L C ι ) }
    Figure DE102017124573A1_0002
    werden optimiert, um einen Kostenwert C(W) zu minimieren. Bei einer Ausführungsform kann ein Parameter (w, b) ε W ein individuelles Gewicht, einen Faltungskern oder eine gesamte Gruppe von Kernen, welche eine Merkmalsabbildung berechnen, repräsentieren. Die häufigste Wahl für eine Kostenfunktion C(·) ist eine negative logarithmische Likelihood-Funktion. Eine Kostenfunktion wird unabhängig von dem Beschneiden ausgewählt und hängt nur von der Aufgabe ab, welche durch das ursprüngliche neuronale Netz zu lösen ist. In dem Fall einer Übertragung des Gelernten wird ein großes trainiertes neuronales Netz eingesetzt, welches mit den Parametern Wo initialisiert ist, welche während eines Trainings mit einem damit in Verbindung stehenden, aber eindeutigen Datensatz erzeugt wurden.
  • Während des Beschneidens wird eine Teilmenge der Parameter neu definiert. Während des Beschneidens wird die Genauigkeit des angepassten neuronalen Netzes, C(W') ≈ C(W), erhalten. Die Genauigkeit korrespondiert mit einer kombinatorischen Optimierung: min W' | C ( W' ) C ( W ) |  mit  W' 0 B ,
    Figure DE102017124573A1_0003
    wobei die I0-Norm bei ||W'||0 die Anzahl der Parameter B ungleich Null in W' beschränkt. Intuitiv wird, wenn W' = W gilt, das globale Minimum einer Fehlerfunktion Ω erreicht. Jedoch befindet sich ||W'||0 auch an einem Maximum. Die Fehlerfunktion Ω misst eine Veränderung der Kostenfunktion nach dem Beschneiden, wobei Ω(C(W') - C(W)) in Abhängigkeit von ||W'|0 minimiert wird. Bei einer Ausführungsform entspricht die Fehlerfunktion einer absoluten Differenz oder einem euklidischen Abstand.
  • Ein Finden einer guten Teilmenge von Parametern, während ein Kostenwert so dicht wie möglich an dem ursprünglichen gehalten wird (d.h. ein Minimieren der Fehlerfunktion), ist ein kombinatorisches Problem, welches 2|W| Bewertungen der Kostenfunktion für eine ausgewählte Teilmenge von Daten erfordert. Unter Verwendung von eingebetteten Rechensystemen, welche heute verfügbar sind, ist es nicht möglich, ein optimales Beschneiden in Echtzeit zu erzielen, indem das kombinatorische Problem für neuronale Netze einer angemessenen Größe exakt optimiert wird. Daher wird eine auf Kriterien basierende Beschneidungstechnik bevorzugt, welche mit einem vollständigen Satz der Parameter W beginnt und ein Beschneiden als ein rückwärtiges Filter stattfindet, indem iterativ zumindest ein unwichtigster Schichtparameter identifiziert und entfernt wird, um der lo-Grenze bezüglich W' zu genügen. Indem Parameter bei jeder Iteration entfernt werden, kann die lo-Norm von W' minimiert werden. Ein Entfernen von einem Schichtparameter in jeder Iteration garantiert eine Minimierung des Unterschieds zwischen dem ursprünglichen neuronalen Netzmodell und dem beschnittenen neuronalen Netzmodell. Wenn einmal ein Parameter entfernt ist, wird das Kriterium erneut bewertet, da die Parameter Überkreuz-Abhängigkeiten aufweisen. Der empfindlichste Aspekt bei einem auf einem rückwärtigen Filter basierenden Beschneiden eines neuronalen Netzes ist die Schätzung der Schichtparameterwichtigkeit.
  • 1B stellt einen Graph einer Änderung bei einer Verlustfunktion dar, welcher sich aus einem Entfernen eines bestimmten Neurons für eine dritte Schicht eines neuronalen Netzes gemäß einer Ausführungsform ergibt. Der Beitrag von jedem Neuron zu der Änderung bei dem Verlust reicht von leicht negativ bis positiv. Daher existieren einige Neuronen, welche, wenn sie entfernt werden, die Kostenfunktion verringern. Wie es in 1B dargestellt ist, befinden sich Neuronen, deren Entfernung zu einer Verringerung des Verlustes führt, unterhalb der x-Achse. Viele Neuronen können einen Beitrag aufweisen, welcher dicht an Null liegt, und können für eine Entfernung in Betracht gezogen werden. Eine kleine Anzahl von Neuronen erzeugt einen großen Anstieg bei dem Verlust, wenn sie entfernt werden.
  • 1C stellt einen anderen Graph einer Änderung bei einer Verlustfunktion dar, welcher sich aus einem Entfernen eines bestimmten Neurons für eine achte Schicht eines neuronalen Netzes gemäß einer Ausführungsform ergibt. In ähnlicher Weise wie bei dem Graph, welcher in 1B dargestellt ist, weisen einige Neuronen einen negativen Beitrag auf, wenn sie entfernt werden, die meisten Neuronen weisen einen Beitrag in der Nähe von Null auf, und eine kleine Anzahl von Neuronen erzeugt einen großen Anstieg bei dem Verlust, wenn sie entfernt werden. Zusammengefasst weist jede Schicht des neuronalen Netzes typischerweise eine kleine Anzahl von Neuronen auf, welche, wenn sie entfernt werden, zu einem wesentlichen Anstieg des Verlustes führen. Jede Schicht weist typischerweise wenige wertvolle Neuronen auf. Daher sollte das Beschneiden über alle Schichten durchgeführt werden, anstatt sich auf bestimmte Schichten zu konzentrieren.
  • 1D stellt eine Konzeptdarstellung für ein Entfernen von Neuronen von einem neuronalen Netz gemäß einer Ausführungsform dar. Neuronen (oder Merkmalsabbildungen) für eine bestimmte Schicht werden als Kreise dargestellt, und Verbindungen zwischen den Neuronen werden jeweils ein Gewicht zugeordnet. Nach einem feinen Beschneiden werden Verbindungen zwischen den Neuronen (oder Merkmalsabbildungen) entfernt. Zum Beispiel können Verbindungen, welche mit kleinen Gewichtswerten korrespondieren, entfernt werden. Jedoch kann, um eine Verarbeitung zu beschleunigen, eine bestimmte Schaltung erforderlich sein, welche eine Verarbeitung neu verteilen kann, wenn die Gewichte für eine Schicht spärlich verteilt sind. Bei einem groben Beschneiden werden ganze Neuronen (oder Merkmalsabbildungen) entfernt. Wie in 1D dargestellt ist, ist das markierte Neuron während eines groben Beschneidens entfernt worden. Wenn ein Neuron entfernt wird, werden alle Verbindungen zu und von dem Neuron entfernt.
  • Um das Lösen des kombinatorischen Problems zu vermeiden, welches 2|W| Bewertungen der Kostenfunktion erfordert, kann ein Beschneiden als ein Optimierungsproblem betrachtet werden, um W' mit einer beschränkten Anzahl von Elementen ungleich Null zu finden zu versuchen, welche |ΔC(hi)| = |C(W') - C(W)| minimieren. Eine Taylor-Erweiterung kann eingesetzt werden, um das Optimierungsproblem zu lösen. Eine Veränderung in der Verlustfunktion kann für ein Entfernen eines bestimmten Parameters geschätzt werden. Es sei hi die Ausgabe, welche von einem Parameter i erzeugt wird. Für den Fall von Merkmalsabbildungen, h = { z 0 ( 1 ) , z 0 ( 2 ) ,..., z L ( C ι ) }
    Figure DE102017124573A1_0004
    Zur Vereinfachung der Schreibweise wird die Kostenfunktion als gleichmäßig abhängig von den Parametern betrachtet, und die Ausgaben werden von den Parametern berechnet: C(hi) = C((w,b)i). Unter Annahme einer Unabhängigkeit der Parameter: | Δ C ( h i ) | = | C ( D , h i = 0 ) C ( D , h i ) |
    Figure DE102017124573A1_0005
    wobei C(D, hi = 0) ein Kostenwert ist, wenn der Schichtparameter hi beschnitten wird, und C(D, hi) der Kostenwert ist, wenn der Schichtparameter hi nicht beschnitten ist. Während die Parameter in der Realität voneinander abhängen, wird eine Annahme der Unabhängigkeit bereits bei dem Berechnungsschritt jedes Gradienten während Trainingstechniken erster Ordnung vorgenommen.
  • Um ΔC(hi) anzunähern, wird das Taylor-Polynom erster Ordnung eingesetzt. Für eine Funktion f(x) entspricht die Taylor-Erweiterung bei einem Punkt x=a: ƒ ( x ) = p = 0 P ƒ ( p ) ( a ) p ! ( x a ) p + R p ( x ) ,
    Figure DE102017124573A1_0006
    wobei f(p)(a) die p-te Ableitung von f beim Punkt a und Rp(x) der Rest p-ter Ordnung ist. Eine Näherung C(D, hi = 0) mit einem Taylor-Polynom erster Ordnung in der Nähe von hi = 0 für den Trainingsdatensatz D ergibt: C ( D , h i = 0 ) = C ( D , h i ) δ C δ h i h i + R 1 ( h i = 0 ) ,
    Figure DE102017124573A1_0007
  • Der Rest R1(hi = 0) kann durch die Lagrange-Form berechnet werden: R 1 ( h i = 0 ) = δ 2 C δ ( h i 2 ξ ) h i 2 2
    Figure DE102017124573A1_0008
    wobei ξ eine reelle Zahl zwischen 0 und hi ist. Das erste Kriterium, welches für das Beschneiden eingesetzt wird, ist eine Näherung von C(D, hi = 0), wobei der Rest R1(hi = 0) ignoriert wird (d.h. auf Null gesetzt wird), was zu der Berechnung führt: C ( D , h i = 0 ) = C ( D , h i ) δ C δ h i h i .
    Figure DE102017124573A1_0009
  • Indem Gleichung (5) in Gleichung (3) eingesetzt wird und der Rest ignoriert wird, kann die Differenz ΔC(hi) zwischen den Kostenwerten, um einen bestimmten Schichtparameter von einem neuronalen Netz zu entfernen, minimiert werden. Die Näherung wird verwendet, um das erste Kriterium ΘTE zu berechnen: Θ TE ( h i ) = | Δ C ( h i ) | = | C ( D , h i = 0 ) C ( D , h i ) | = | C ( D , h i ) δ C δ h i h i C ( D , h i ) | = | δ C δ h i h i | .
    Figure DE102017124573A1_0010
  • Es ist wichtig, dass der Gradient erster Ordnung δ C δ h i
    Figure DE102017124573A1_0011
    eine erste Ableitung ist, welche für jeden Schichtparameter in der Kettenregel für das Zurück-Propagieren während des Trainings berechnet wird, und für eine Verwendung bei der Berechnung des ersten Kriteriums gespeichert werden kann. Das erste Kriterium beschneidet Parameter, welche einen nahezu flachen Gradienten erster Ordnung der Kostenfunktion bezüglich der Merkmalsabbildung hi aufweisen. Das Produkt des Schichtparameters hi und des Gradienten erster Ordnung der Kostenfunktion C bezüglich des Schichtparameters hi. ΘTE : RH l×W l×C l → R+ wird für eine mehrdimensionale Ausgabe, wie beispielsweise eine Merkmalsabbildung, berechnet durch Θ T E z ι ( k ) = | 1 M m δ C δ z l , m ( k ) z l , m ( k ) | ,
    Figure DE102017124573A1_0012
    wobei M eine Länge eines Merkmalsabbildungs-Vektors ist. Für einen Ministapel mit T > 1 Beispielen wird das erste Kriterium für jedes Beispiel getrennt berechnet und dann über T gemittelt. Eine Skala der Werte des ersten Kriteriums variiert mit der Tiefe, in Form von Schichten innerhalb des Netzes. Daher wird eine schichtweise I2-Normalisierung berechnet, indem das erste Kriterium über den Schichten erneut skaliert wird: Θ ^ ( z ι ( k ) ) = Θ ^ ( z ι ( k ) ) j ( Θ ^ ( z ι ( k ) ) ) 2
    Figure DE102017124573A1_0013
  • Eine Skalierung eines Kriteriums über den Schichten ist zum Beschneiden sehr wichtig. Wenn das Kriterium nicht geeignet skaliert wird, dann muss ein von Hand abgestimmter Multiplizierer für jede Schicht ausgewählt werden. Ohne eine Normalisierung neigt ein herkömmliches Gewichtsgrößenkriterium dazu, Merkmalsabbildungen von den ersten Schichten als wichtiger einzuordnen als von den letzten Schichten; ein herkömmliches Aktivierungskriterium ordnet mittlere Schichten wichtiger ein; und die Technik mit dem ersten Kriterium ordnet erste Schichten höher ein. Nach einer I2-Normalisierung weist jede Schicht einige Merkmalsabbildungen auf, welche sehr wichtig sind und andere, welche unwichtig sind.
  • Herkömmliche Techniken zum Beschneiden welche auf dem Einsatz einer Taylor-Erweiterung beruhen, setzen ein Taylor-Polynom zweiter Ordnung anstelle eines Taylor-Polynoms erster Ordnung ein. Die Erweiterung zweiter Ordnung weist den Gradienten erster Ordnung und einen Gradienten zweiter Ordnung auf: Δ C ( h i ) = δ C δ h i h i + 0.5 δ 2 C δ h i 2 + R 2 ( h i = 0 )
    Figure DE102017124573A1_0014
  • Darüber hinaus ist eine Behandlung des Terms erster Ordnung der Taylor-Erweiterung, y = δ C δ h h
    Figure DE102017124573A1_0015
    für die Kostenfunktion C und den versteckten Schichtparameter h, wie es in Gleichung (8) dargestellt ist, verschieden zu den herkömmlichen Beschneidungstechniken. Nach ausreichenden Trainingsperioden tendiert der Term des Gradienten erster Ordnung gegen 0 : δ C δ h   0
    Figure DE102017124573A1_0016
    und E(y) = 0. Beim Nennwert bietet y geringe nützliche Information. Daher betrachten herkömmliche Beschneidungstechniken y als gleich Null und fokussieren stattdessen auf den Term zweiter Ordnung, welcher den Gradienten zweiter Ordnung aufweist. Insbesondere setzen herkömmliche Beschneidungstechniken y = 0 und den Rest R2(hi = 0) auch als Null voraus, was eine Änderung in der Kostenfunktion ergibt: Δ C ( h i ) = 0.5   δ 2 C δ h i 2
    Figure DE102017124573A1_0017
  • Es sei darauf hingewiesen, dass die Varianz von y nicht Null ist und mit der Stabilität der lokalen Funktion bezüglich des Schichtparameters h korreliert. Der absolute Wert des Terms erster Ordnung |y| zeigt die absolute Änderung bezüglich der Kosten an, welche durch ein Beschneiden verursacht werden, und wird verwendet, um das erste und das zweite Kriterium zu berechnen, anstatt dass es auf 0 (wie in Gleichung (12)) gesetzt wird. Es sei angenommen, dass Werte mit einer unabhängigen und identischen Verteilung E ( | y | ) = σ 2 / π
    Figure DE102017124573A1_0018
    kommen, wobei σ die Standardabweichung von y ist, welcher als der Erwartungswert der halbnormalen Verteilung bekannt ist. Während y zu Null tendiert, ist so der Erwartungswert von |y| proportional der Varianz von y, einem Wert, welcher empirisch informativer als ein Beschneidungskriterium ist. Als zusätzlicher Vorteil wird eine Berechnung des Terms der Taylor-Erweiterung zweiter Ordnung oder eine Vereinfachung (z.B. einer Diagonalen der Hesse-Matrix) vermieden. Eine Berechnung der Hesse-Matrix, entweder teilweise oder vollständig, erhöht den Speicherverbrauch und die Rechneranforderungen mehr als eine Berechnung des Kriteriums erster oder zweiter Ordnung.
  • 2A stellt einen Graphen der Kostenfunktion C und der Parameter h für den Trainingsdatensatz D gemäß einer Ausführungsform dar. Wie in dem Graph dargestellt ist, sind die Gradienten erster Ordnung für die Schichtparameter hi und h2 nahezu gleich, aber der Gradient erster Ordnung für h2 ist positiv, während der Gradient erster Ordnung für h1 negativ ist. Wenn herkömmliche Techniken eingesetzt werden, heben sich die Gradienten erster Ordnung gegeneinander auf (d.h. die Summe ist nahezu Null). Wenn das erste Kriterium eingesetzt wird, welches einen absoluten Wert von jedem Produkt annimmt, heben sich die Gradienten erster Ordnung dagegen nicht gegeneinander auf. E(h) ist die mathematische Erwartung des Parameters h über einer Gruppe von Werten in dem Trainingsdatensatz. C(D, E(h)) ist ein Wert der Kostenfunktion an einer Stelle, wenn h einen Erwartungswert annimmt. zeigt die Abweichung eines Produkts zwischen einem möglichen Wert des Parameters h und einem Gradienten erster Ordnung der Kostenfunktion bezüglich der Werte von h.
  • Bei einer anderen Ausführungsform wird ein zweites Kriterium anstelle des ersten Kriteriums eingesetzt. Das zweite Kriterium wird berechnet, indem Quadrate des Schichtparameters skaliert durch den Gradienten erster Ordnung entsprechend dem Schichtparameter über Eingangskanäle und Dimensionen bzw. Abmessungen eines Faltungskerns aufsummiert werden. Genauer hängt das zweite Kriterium von einem Schichteingangsparameter Wi ε RM,X,Y für Parameter i ab, wobei M die Anzahl der Eingangskanäle für eine Merkmalsabbildung ist. X und Y entsprechen den Abmessungen bzw. Dimensionen des Faltungskerns. Das zweite Kriterium ΘSS ist eine Summe von Quadraten: Θ SS = M = 0 M 1 X = 0 X 1 Y = 0 Y 1 ( ( δ C δ W W i , M , X , Y ) 2 )
    Figure DE102017124573A1_0020
  • Ähnlich wie das erste Kriterium wird das zweite Kriterium auch abhängig von einem Gradienten erster Ordnung berechnet. Der Gradient erster Ordnung δ C δ W
    Figure DE102017124573A1_0021
    ist eine erste Ableitung, welche für jeden Schichtparameter während des Trainings berechnet wird, und kann für eine Verwendung bei der Berechnung des zweiten Kriteriums gespeichert werden.
  • 2B stellt ein Blockdiagramm eines Beschneidungssystems 250 für ein neuronales Netz gemäß einer Ausführungsform dar. Das Beschneidungssystem 250 für ein neuronales Netz kann ausgestaltet sein, um die in 1A dargestellten Schritte auszuführen. Das Beschneidungssystem 250 für ein neuronales Netz weist ein trainiertes neuronales Netz 225 und einen Trainingsdatensatz, welcher Eingangsdaten 215 und Sollausgangsdaten 255, welche durch das trainierte neuronale Netz 225 erzeugt werden sollen, wenn die Eingangsdaten 215 angelegt werden, aufweist, auf. Bei einer Ausführungsform wird das trainierte neuronale Netz 225 mittels eines ersten Datensatzes trainiert, welcher allgemein ist, bevor es mittels des Trainingsdatensatzes trainiert wird, welcher die Eingangsdaten 215 aufweist und speziell ist. Bei einer Ausführungsform ist das trainierte neuronale Netz 225 ein faltendes neuronales Netz.
  • Während des Beschneidens verarbeitet das trainierte neuronale Netz 225 die Eingangsdaten 215 und erzeugt Vorhersagedaten 135 (d.h. Ausgangsdaten). Eine Berechnungseinheit 245 für einen Gradienten einer Kostenfunktion empfängt die Vorhersagedaten 235 und die Sollausgangsdaten 255 und berechnet Gradienten erster Ordnung δC / δhi von Kostenwerten C relativ zu einem Schichteingangsparameter hi, welcher von dem Parameter i des trainierten neuronalen Netzes 225 erzeugt wird. Bei einer Ausführungsform wird während einer groben Beschneidung der absolute Wert des Gradienten für einen Schichtparameter minimiert.
  • Die Gradienten erster Ordnung werden an eine Berechnungseinheit 260 für ein Beschneidungskriterium ausgegeben, welches ein Beschneidungskriterium für jeden Schichtparameter des trainierten neuronalen Netzes 125 abhängig von den Gradienten berechnet. Bei einer Ausführungsform wird das Beschneidungskriterium für einen Schichtparameter, ΘTE(hi), mittels des ersten Kriteriums berechnet als | δ C δ h i h i | .
    Figure DE102017124573A1_0022
    Bei einer anderen Ausführungsform wird das Beschneidungskriterium für einen Schichtparameter, ΘSS(Wi), mittels des zweiten Kriteriums berechnet. Die Beschneidungskriterien werden als Wichtigkeitswerte dargestellt, welche einer Neuronenentfernungseinheit 265 bereitgestellt werden. Die Neuronenentfernungseinheit 265 zeigt bei dem trainierten neuronalen Netz 225 an, dass ein oder mehrere Neuronen von dem trainierten neuronalen Netz 225 entfernt werden sollten.
  • Das Beschneiden von Neuronen kann als ein Logikgatter implementiert sein, welches die Ausgabe von einigen Neuronen deaktiviert. Zum Beispiel kann ein Beschneidungsgatter g ι ( k ) { 0,1 } C ι
    Figure DE102017124573A1_0023
    ein Schalter sein, welcher bestimmt, ob eine bestimmte Merkmalsabbildung während einer Vorwärtsregelungs-Propagierung enthalten oder beschnitten ist, so dass, wenn g vektorisiert ist, W' = gW gilt. Bei einer Ausführungsform bestimmt jedes Beschneidungsgatter, ob die Ausgabe eines bestimmten Neurons während der Vorwärtsregelungs-Propagierung verwendet wird oder nicht, so dass für den Ausgang von jedem Neuron gilt: z ι ( k ) = c ι ( k ) g ι ( k )
    Figure DE102017124573A1_0024
  • 2C stellt einen Flussplan 200 eines anderen Verfahrens zum Beschneiden eines neuronalen Netzes gemäß einer Ausführungsform dar. Obwohl das Verfahren 200 im Zusammenhang mit dem System 250 zum Beschneiden eines neuronalen Netzes beschrieben wird, kann das Verfahren 100 auch durch ein Programm, eine kundenspezifische Schaltung oder durch eine Kombination aus einer kundenspezifischen Schaltung und einem Programm ausgeführt werden. Das Verfahren 200 kann zum Beispiel durch eine GPU, eine CPU, ein neuronales Netz oder irgendeinen Prozessor ausgeführt werden, welcher in der Lage ist, ein neuronales Netz zu implementieren. Darüber hinaus versteht der Fachmann, dass jedes System, welches das Verfahren 200 ausführt, im Umfang und im Geist der Ausführungsformen der vorliegenden Erfindung liegt.
  • Der Flussplan 200 enthält die Schritte 110, 120, 130 und 140 der 1A. Bei Schritt 210 wird das beschnittene neuronalen Netz mittels konventioneller Techniken fein angepasst. Ein feines Anpassen umfasst ein Optimieren der Parameter des Netzes, um eine Kostenfunktion bezüglich eines vorgegebenen Datensatzes zu minimieren. Bei Schritt 220 wird eine Entscheidung getroffen, ob ein Beschneiden fortgesetzt werden sollte oder nicht. Wenn das Beschneiden fortgesetzt wird, kehrt das System 250 zum Beschneiden eines neuronalen Netzes zum Schritt 120 zurück. Andernfalls ist das Beschneiden abgeschlossen. Ein Beschneiden kann als abgeschlossen betrachtet werden, wenn eine Schwellenwertanzahl von Neuronen entfernt worden ist. Bei einer Ausführungsform werden Neuronen, welche mit einer einzigen Merkmalsabbildung korrespondieren, während jeder Iteration beschnitten, was eine feine Anpassung und erneute Bewertung des Kriteriums ermöglicht, um eine Unabhängigkeit zwischen den Parametern zu berücksichtigen. Wenn das Beschneiden einmal beendet worden ist, werden die Parameter des neuronalen Netzes und die Beschneidungsgatter festgelegt. Darüber hinaus können Parameter, welche mit Beschneidungsgattern mit dem Wert Null korrespondieren, von dem neuronalen Netz entfernt werden.
  • Einer der Hauptgründe, um ein Beschneiden anzuwenden, ist, die Anzahl von Operationen in dem Netz zu verringern. Merkmalsabbildungen von verschiedenen Schichten erfordern unterschiedliche Ausmaße einer Berechnung aufgrund der Anzahl und der Ausmaße von Eingangsmerkmalsabbildungen und Faltungskernen.
  • Um dies zu berücksichtigen, wird eine Regularisierung von Fließkommaoperationen pro Sekunde (FLOPs) eingeführt: Θ ( z ι ( k ) ) = Θ ( z ι ( k ) ) λ Θ ι f l o p s ,
    Figure DE102017124573A1_0025
    wobei λ den Umfang der Regularisierung steuert. λ = 10-3 kann verwendet werden, um Θflops zu berechnen, wobei angenommen wird, dass eine Faltung als ein gleitendes Fenster implementiert ist. Bei einer Ausführungsform wird die FLOPs-Regularisierung während der Beschneidung angewendet, um Neuronen mit höheren FLOPs zuerst zu beschneiden. Zum Beispiel können die FLOPS pro Faltungsneuron von jeder Schicht für ein beispielhaftes neuronales Netz sein: Θ flops = [ 3,1 ; 57,8 ; 14,1 ; 28,9 ; 7,0 ; 14,5 ; 3,5 ; 7,2 ; 7,2 ; 1,8 ; 1,8 ; 1,8 ; 1,8 ]
    Figure DE102017124573A1_0026
  • Andere Regularisierungsbedingungen können angewendet werden, z.B. Speichergröße, Kerngröße oder Speicherfußabdruck, um Neuronen basierend auf den anderen Bedingungen zu beschneiden.
  • Um die Anzahl von FLOPs zu berechnen, wird angenommen, dass die Faltung als ein gleitendes Fenster implementiert ist und dass die nichtlineare Funktion umsonst berechnet wird. Für Faltungskerne gilt: FLOPs = 2 HW ( C in K 2 + 1 ) C out ,
    Figure DE102017124573A1_0027
    wobei H, W und Cin die Höhe, Breite bzw. Anzahl der Kanäle der Eingangsmerkmalsabbildung sind. K ist die Kernbreite (welche als symmetrisch angenommen wird) und Cout ist die Anzahl der Ausgangskanäle.
  • Für vollständig verbundene Schichten wird FLOPs berechnet durch: FLOPs = ( 2 l 1 ) O ,
    Figure DE102017124573A1_0028
    wobei I die Eingangsdimensionalität und O die Ausgangsdimensionalität ist.
  • Zusammengefasst können trainierte neuronale Netze iterativ mittels entweder eines ersten Kriteriums oder eines zweiten Kriteriums, welche abhängig von einem Gradienten erster Ordnung der Kostenfunktion bezüglich des Schichtparameters hi berechnet werden, beschnitten werden. Die unwichtigsten Schichtparameter gemäß dem ersten oder zweiten Kriterium werden entfernt. Die FLOPs-Regularisierung kann angewendet werden, um Wichtigkeiten zu berechnen und unwichtigere Neuronen mit höheren Berechnungslasten zu beschneiden. In ähnlicher Weise wie FLOPs kann eine Regularisierung von anderen Betriebsmitteln (z.B. Speichergröße, Bandbreite, usw.) eingesetzt werden, um Wichtigkeiten abhängig von anderen Bedingungen zu berechnen.
  • Parallele Verarbeitungsarchitektur
  • 3 stellt eine parallele Verarbeitungseinheit (PPU) 300 gemäß einer Ausführungsform dar. Die PPU 300 kann ausgestaltet sein, um ein Beschneiden eines neuronalen Netzes zu implementieren, wenn Befehle ausgeführt werden. Bei einer Ausführungsform ist die PPU 300 ausgestaltet, um das System 250 zum Beschneiden eines neuronalen Netzes zu implementieren.
  • In einer Ausführungsform ist die PPU 300 ein Multithread-Prozessor, der auf einem oder mehreren integrierten Schaltkreisen implementiert ist. Die PPU 300 ist eine Latenzzeitverdeckungsarchitektur, die dafür ausgelegt ist, viele Threads parallel zu verarbeiten. Ein Thread (d.h. ein Thread der Ausführung) ist eine Instanziierung eines Satzes von Befehlen, die so konfiguriert sind, dass sie von der PPU 300 ausgeführt werden. In einer Ausführungsform ist die PPU 300 eine Grafikverarbeitungseinheit (GPU), die so konfiguriert ist, dass sie eine Grafik-Rendering-Pipeline für die Verarbeitung von dreidimensionalen (3D) Grafikdaten implementiert, um zweidimensionale (2D) Bilddaten für die Anzeige auf einer Anzeigevorrichtung wie einer Flüssigkristallanzeigevorrichtung (LCD) zu erzeugen. In anderen Ausführungsformen kann die PPU 300 zur Durchführung von Mehrzweckberechnungen verwendet werden. Obwohl hier ein beispielhafter Parallelprozessor zur Veranschaulichung bereitgestellt ist, ist es wichtig zu beachten, dass dieser Prozessor nur zu illustrativen Zwecken aufgeführt ist und dass jeder Prozessor eingesetzt werden kann, um diesen zu ergänzen und/oder zu ersetzen.
  • Wie in 3 dargestellt, umfasst die PPU 300 eine Input/Output (I/O)-Einheit 305, eine Host-Interface-Einheit 310, eine Frontend-Einheit 315, eine Ablaufsteuerungseinheit bzw. Scheduler-Einheit 320, eine Arbeitsverteilungseinheit 325, einen Hub 330, ein Koppelfeld (Xbar) 370, ein oder mehrere General Processing Cluster (GPCs) 350 und eine oder mehrere Partitionseinheiten 380. Die PPU 300 kann über einen Systembus 302 an einen Host-Prozessor oder andere Peripheriegeräte angeschlossen werden. Die PPU 300 kann auch an einen lokalen Speicher angeschlossen werden, der aus mehreren Speicherbausteinen 304 besteht. In einer Ausführungsform kann der lokale Speicher aus einer Anzahl von DRAM-Vorrichtungen (Dynamic Random Access Memory) bestehen.
  • Die I/O-Einheit 305 ist so konfiguriert, dass sie über den Systembus 302 Kommunikationen (d.h. Befehle, Daten, etc.) von einem Host-Prozessor (nicht abgebildet) sendet und empfängt. Die I/O-Einheit 305 kann mit dem Host-Prozessor direkt über den Systembus 302 oder über ein oder mehrere Zwischenvorrichtungen wie z.B. eine Speicherbrücke, kommunizieren. In einer Ausführungsform implementiert die I/O-Einheit 305 eine Peripheral Component Interconnect Express (PCIe)-Schnittstelle für die Kommunikation über einen PCIe-Bus. In alternativen Ausführungsformen kann die I/O-Einheit 305 auch andere Arten von bekannten Schnittstellen für die Kommunikation mit externen Vorrichtungen implementieren.
  • Die I/O-Einheit 305 ist mit einer Host-Interface-Einheit 310 gekoppelt, die über den Systembus 302 empfangene Pakete dekodiert. In einer Ausführungsform stellen die Pakete Befehle dar, die so konfiguriert sind, dass die PPU 300 verschiedene Operationen ausführt. Die Host-Schnittstelleneinheit 310 überträgt die dekodierten Befehle an verschiedene andere Einheiten der PPU 300, wie in den Befehlen angegeben. So können z.B. einige Befehle an die Frontend-Einheit 315 übertragen werden. Andere Befehle können an den Hub 330 oder andere Einheiten der PPU 300 übertragen werden, wie z.B. eine oder mehrere Kopiermaschinen, einen Video-Encoder, einen Videodecoder, einen Videodecoder, eine Power-Management-Einheit usw. (nicht explizit dargestellt). Mit anderen Worten, die Hostschnittstelleneinheit 310 ist so konfiguriert, dass sie die Kommunikation zwischen und unter den verschiedenen logischen Einheiten der PPU 300 weiterleitet.
  • In einer Ausführungsform kodiert ein vom Host-Prozessor ausgeführtes Programm einen Befehlsstrom in einen Puffer, der der PPU 300 Arbeit (Workload) zur Verarbeitung zur Verfügung stellt. Eine Workload kann mehrere Instruktionen und Daten, die von diesen Instruktionen verarbeitet werden sollen, umfassen. Der Puffer ist ein Bereich in einem Speicher, auf den sowohl der Host-Prozessor als auch die PPU 300 zugreifen (d.h. lesen/schreiben) können. Beispielsweise kann die Host-Schnittstelleneinheit 310 so konfiguriert werden, dass sie über Speicheranforderungen, die von der I/O-Einheit 305 über den Systembus 302 übertragen werden, auf den Puffer in einem an den Systembus 302 angeschlossenen Systemspeicher zugreift. In einer Ausführungsform schreibt der Host-Prozessor den Befehlsstrom in den Puffer und sendet dann einen Zeiger auf den Anfang des Befehlsstroms an die PPU 300. Die Host-Schnittstelleneinheit 310 stellt der Frontend-Einheit 315 Zeiger auf einen oder mehrere Befehlsströme zur Verfügung. Die Frontend-Einheit 315 verwaltet einen oder mehrere Ströme, liest Befehle aus den Strömen und leitet Befehle an die verschiedenen Einheiten der PPU 300 weiter.
  • Die Frontend-Einheit 315 ist mit einer Scheduler-Einheit 320 gekoppelt, die die verschiedenen GPCs 350 so konfiguriert, dass sie Aufgaben bzw. Tasks bearbeiten, die durch einen oder mehrere Ströme definiert sind. Die Scheduler-Einheit 320 ist so konfiguriert, dass sie Zustandsinformationen zu den verschiedenen Aufgaben, die von der Scheduler-Einheit 320 verwaltet werden, verfolgt. Der Zustand kann angeben, welchem GPC 350 eine Aufgabe zugeordnet ist, ob die Aufgabe aktiv oder inaktiv ist, ob sie eine Prioritätsstufe hat, die der Aufgabe zugeordnet ist, und so weiter. Die Scheduler-Einheit 320 verwaltet die Ausführung einer Vielzahl von Aufgaben auf einem oder mehreren GPCs 350.
  • Die Scheduler-Einheit 320 ist mit einer Arbeitsverteilungseinheit 325 gekoppelt, die so konfiguriert ist, dass sie Aufgaben zur Ausführung auf den GPCs 350 verteilt. Die Arbeitsverteilungseinheit 325 kann eine Reihe von geplanten Aufgaben verfolgen, die von der Scheduler-Einheit 320 empfangen wurden. In einer Ausführungsform verwaltet die Arbeitsverteilungseinheit 325 für jeden der GPCs 350 einen anstehenden Aufgabenpool und einen aktiven Aufgabenpool. Der anstehende Aufgabenpool kann eine Anzahl von Slots (z.B. 32 Slots) umfassen, die Aufgaben enthalten, die von einem bestimmten GPC 350 bearbeitet werden sollen. Der aktive Aufgabenpool kann eine Anzahl von Slots (z.B. 4 Slots) für Aufgaben umfassen, die von den GPCs 350 aktiv bearbeitet werden. Wenn ein GPC 350 die Ausführung einer Aufgabe beendet, wird diese Aufgabe aus dem aktiven Aufgabenpool für den GPC 350 entfernt und eine der anderen Aufgaben aus dem anstehenden Aufgabenpool ausgewählt und zur Ausführung auf dem GPC 350 eingeplant. Wenn eine aktive Aufgabe auf dem GPC 350 untätig war, z.B. während des Wartens auf die Auflösung einer Datenabhängigkeit, kann die aktive Aufgabe aus dem GPC 350 entfernt und in den anstehenden Aufgabenpool zurückgegeben werden, während eine andere Aufgabe im anstehenden Aufgabenpool ausgewählt und zur Ausführung auf dem GPC 350 eingeplant wird.
  • Die Arbeitsverteilungseinheit 325 kommuniziert mit einem oder mehreren GPCs 350 über ein XBar 370. Das XBar 370 ist ein Verbindungsnetzwerk, das viele Einheiten der PPU 300 mit anderen Einheiten der PPU 300 koppelt. Beispielsweise kann das XBar 370 so konfiguriert werden, dass es die Arbeitsverteilungseinheit 325 mit einem bestimmten GPC 350 koppelt. Obwohl nicht explizit dargestellt, sind eine oder mehrere andere Einheiten der PPU 300 mit der Host-Schnittstelleneinheit 310 gekoppelt. Die anderen Vorrichtungen können auch über einen Hub 330 mit dem XBar 370 verbunden sein.
  • Die Aufgaben werden von der Scheduler-Einheit 320 verwaltet und von der Arbeitsverteilungseinheit 325 an ein GPC 350 versendet. Das GPC 350 ist so konfiguriert, dass es die Aufgabe bearbeitet und Ergebnisse generiert. Die Ergebnisse können von anderen Aufgaben innerhalb des GPC 350 aufgenommen, über das XBar 370 an ein anderes GPC 350 weitergeleitet oder im Speicher 304 gespeichert werden. Die Ergebnisse können über die Partitionseinheiten 380 in den Speicher 304 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten von/in den Speicher 304 implementieren. In einer Ausführungsform enthält die PPU 300 eine Anzahl U der Partitionseinheiten 380, die der Anzahl der separaten und unterschiedlichen Speicherbausteine 304 entspricht, die mit der PPU 300 gekoppelt sind. Eine Partitionseinheit 380 wird im Folgenden in Verbindung mit 4B näher beschrieben.
  • In einer Ausführungsform führt ein Host-Prozessor einen Treiberkern aus, der eine Anwendungsprogrammierschnittstelle (API) implementiert, die es einer oder mehreren Anwendungen, die auf dem Host-Prozessor ausgeführt werden, ermöglicht, Operationen für die Ausführung auf der PPU 300 einzuplanen. Eine Anwendung kann Anweisungen (d.h. API-Aufrufe) generieren, die den Treiberkern veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 300 zu generieren. Der Treiberkern gibt Aufgaben an einen oder mehrere Ströme aus, die von der PPU 300 verarbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen verwandter Threads umfassen, die hier als Warp bezeichnet werden. Ein Thread-Block kann sich auf eine Vielzahl von Gruppen von Threads beziehen, welche Anweisungen zur Ausführung der Aufgabe aufweisen. Threads in derselben Gruppe von Threads können Daten über einen Gemeinschaftsspeicher austauschen. In einer Ausführungsform umfasst eine Gruppe von Threads 32 in Bezug stehende Threads.
  • 4A zeigt ein GPC 350 innerhalb der PPU 300 von 3, entsprechend einer Ausführungsform. Wie in 4A dargestellt, enthält jedes GPC 350 eine Reihe von Hardware-Einheiten für die Bearbeitung von Aufgaben. In einer Ausführungsform enthält jedes GPC 350 einen Pipeline-Manager 410, eine Pre-Raster-Operations-Einheit (PROP) 415, eine Raster-Engine 425, ein Arbeitsverteilungs-Koppelfeld (WDX) 480, eine Speicherverwaltungs-Einheit (MMU) 490 und ein oder mehrere Musterverarbeitungs-Cluster (TPCs) 420. Es sei darauf hingewiesen, dass das GPC 350 von 4A anstelle oder zusätzlich zu den in 4A gezeigten Einheiten auch andere Hardware-Einheiten enthalten kann.
  • In einer Ausführungsform wird der Betrieb des GPC 350 durch den Pipeline-Manager 410 gesteuert. Der Pipeline-Manager 410 verwaltet die Konfiguration eines oder mehrerer TPCs 420 für die Bearbeitung von Aufgaben, die dem GPC 350 zugeordnet sind. In einer Ausführungsform kann der Pipeline-Manager 410 mindestens einen der TPCs 420 so konfigurieren, dass es mindestens einen Teil einer Grafik-Rendering-Pipeline implementiert. Beispielsweise kann ein TPC 420 so konfiguriert werden, dass es ein Vertex-Shader-Programm auf dem programmierbaren Streaming-Multiprozessor (SM) 440 ausführt. Der Pipeline-Manager 410 kann auch so konfiguriert werden, dass er Pakete, die von der Arbeitsverteilungseinheit 325 empfangen werden, an die entsprechenden logischen Einheiten innerhalb des GPC 350 weiterleitet. Beispielsweise können einige Pakete an Hardware-Einheiten mit fester Funktion in der PROP 415 und/oder der Raster-Engine 425 weitergeleitet werden, während andere Pakete an die TPCs 420 zur Verarbeitung durch die Primitiv-Engine 435 oder den SM 440 weitergeleitet werden.
  • Die PROP-Einheit 415 ist so konfiguriert, dass sie Daten, die von der Raster-Engine 425 und den TPCs 420 erzeugt wurden, an eine Raster-Operations-(ROP-) Einheit in der Partitionseinheit 380 weiterleitet, was weiter unten näher beschrieben wird. Die PROP-Einheit 415 kann auch so konfiguriert werden, dass sie Optimierungen für die Farbmischung durchführt, Pixeldaten organisiert, Adressübersetzungen durchführt und ähnliches.
  • Die Raster-Engine 425 enthält eine Reihe von Hardware-Einheiten mit fester Funktion, die so konfiguriert sind, dass sie verschiedene Rasteroperationen ausführen können. In einer Ausführungsform enthält die Raster-Engine 425 eine Setup-Engine, eine grobe Raster-Engine, eine Culling-Engine, eine Clipping-Engine, eine feine Raster-Engine und eine Kachel-Coalescing-Engine. Die Setup-Engine empfängt transformierte Vertices und generiert Ebenengleichungen, die dem geometrischen Primitiv zugeordnet sind, das durch die Vertices definiert ist. Die Ebenengleichungen werden an die grobe Raster-Engine übertragen, um Abdeckungsinformationen (z.B. eine x,y-Abdeckungsmaske für eine Kachel) für das Primitiv zu generieren. Die Ausgabe der groben Raster-Engine kann zu der Culling-Engine übertragen werden, wo Fragmente, die mit dem Primitiv assoziiert sind und einen Z-Test nicht bestehen, einem Culling unterzogen werden, und zu einer Clipping-Engine übertragen werden, wo Fragmente, die außerhalb eines Betrachtungsfrustums liegen, weggeschnitten werden. Diejenigen Fragmente, die das Clipping und Culling überleben, können an eine feine Raster-Engine übergeben werden, um Attribute für die Pixelfragmente zu generieren, die auf den von der Setup-Engine generierten Ebenengleichungen basieren. Die Ausgabe der Raster-Engine 425 besteht aus Fragmenten, die z.B. von einem Fragment-Shader verarbeitet werden, der in einem TPC 420 implementiert ist.
  • Jedes im GPC 350 enthaltene TPC 420 enthält einen M-Pipe-Controller (MPC) 430, eine Primitiv-Engine 435, einen oder mehrere SMs 440 und eine oder mehrere Mustereinheiten 445. Der MPC 430 steuert den Betrieb des TPC 420 und leitet die vom Pipeline-Manager 410 empfangenen Pakete an die entsprechenden Einheiten im TPC 420 weiter. Beispielsweise können Pakete, die einem Vertex zugeordnet sind, an die Primitiv-Engine 435 weitergeleitet werden, die so konfiguriert ist, dass sie Vertex-Attribute, die dem Vertex zugeordnet sind, aus dem Speicher 304 holt. Im Gegensatz dazu können Pakete, die einem Shader-Programm zugeordnet sind, an den SM 440 übertragen werden.
  • In einer Ausführungsform sind die Muster-Einheiten 445 so konfiguriert, dass sie Musterabbildungen (z.B. ein zweidimensionales Feld von Mustern) aus dem Speicher 304 laden und die Musterabbildungen so abtasten, dass sie abgetastete Musterwerte für die Verwendung in Shader-Programmen erzeugen, die von dem SM 440 ausgeführt werden. Die Muster-Einheiten 445 implementieren Muster-Operationen, wie z.B. Filteroperationen mit Hilfe von Mip-Maps (d.h. Musterabbildungen mit unterschiedlichen Detaillierungsgraden). Die Muster-Einheit 445 wird auch als der Lade-/Speicher-Pfad für den SM 440 bis MMU 490 verwendet. In einer Ausführungsform enthält jedes TPC 420 zwei (2) Muster-Einheiten 445.
  • Der SM 440 besteht aus einem programmierbaren Streaming-Prozessor, der so konfiguriert ist, dass er Aufgaben verarbeitet, die durch eine Reihe von Threads repräsentiert werden. Jeder SM 440 ist multi-threaded und so konfiguriert, dass er mehrere Threads (z.B. 32 Threads) aus einer bestimmten Gruppe von Threads gleichzeitig ausführen kann. In einer Ausführungsvariante implementiert der SM 440 eine SIMD-Architektur (Single-Instruction, Multiple-Data), bei der jeder Thread in einer Gruppe von Threads (z.B. Warp) so konfiguriert ist, dass er einen anderen Datensatz auf der Grundlage desselben Befehlssatzes verarbeitet. Alle Threads in der Gruppe der Threads führen dieselben Anweisungen aus. In einer anderen Ausführungsvariante implementiert der SM 440 eine SIMT-Architektur (Single-Instruction, Multiple Thread), bei der jeder Thread in einer Gruppe von Threads so konfiguriert ist, dass er einen anderen Datensatz auf der Grundlage desselben Befehlssatzes verarbeitet, wobei jedoch einzelne Threads in der Gruppe von Threads während der Ausführung voneinander abweichen dürfen. Mit anderen Worten, wenn eine Anweisung für die Gruppe von Threads zur Ausführung gesendet wird, können einige Threads in der Gruppe von Threads aktiv sein, wodurch die Anweisung ausgeführt wird, während andere Threads in der Gruppe von Threads inaktiv sein können, wodurch eine No-Operation (NOP) ausgeführt wird, anstatt die Anweisung auszuführen. Der SM 440 wird im Folgenden in Verbindung mit 5 näher beschrieben.
  • Die MMU 490 stellt eine Schnittstelle zwischen dem GPC 350 und der PartitionsEinheit 380 zur Verfügung. Die MMU 490 kann die Übersetzung virtueller Adressen in physikalische Adressen, einen Speicherschutz und eine Entscheidung von Speicheranforderungen ermöglichen. In einer Ausführungsform stellt die MMU 490 einen oder mehrere Übersetzungspuffer (TLBs) zur Verfügung, um die Übersetzung virtueller Adressen in physikalische Adressen im Speicher 304 durchzuführen.
  • 4B zeigt eine Speicherpartitionseinheit 380 der PPU 300 von 3, entsprechend einer Ausführungsform. Wie in 4B gezeigt, enthält die Speicherpartitionseinheit 380 eine Rasteroperations-Einheit (ROP-Einheit) 450, einen Level-2-Cache (L2-Cache) 460, eine Speicherschnittstelle 470 und ein L2-Koppelfeld (XBar) 465. Die Speicherschnittstelle 470 ist mit dem Speicher 304 gekoppelt. Die Speicherschnittstelle 470 kann 16, 32, 64, 64, 128-Bit-Datenbusse oder ähnliches für Hochgeschwindigkeits-Datenübertragungen implementieren. In einer Ausführungsform enthält die PPU 300 U Speicherschnittstellen 470, eine Speicherschnittstelle 470 pro Partitionseinheit 380, wobei jede Partitionseinheit 380 mit einer entsprechenden Speichervorrichtung 304 verbunden ist. Beispielsweise kann die PPU 300 an bis zu U Speichereinheiten 304 angeschlossen werden, wie z.B. Grafik-Doppel-Datenrate, Version 5, synchroner dynamischer Direktzugriffsspeicher (GDDR5 SDRAM). In einer Ausführungsform implementiert die Speicherschnittstelle 470 eine DRAM-Schnittstelle und U ist gleich 8.
  • In einer Ausführungsform implementiert die PPU 300 eine mehrstufige Speicherhierarchie. Der Speicher 304 befindet sich außerhalb des Chips in einem SDRAM, welcher mit der PPU 300 gekoppelt ist. Daten aus dem Speicher 304 können abgerufen und im L2-Cache 460 gespeichert werden, der sich auf dem Chip befindet und von den verschiedenen GPCs 350 gemeinsam benutzt wird. Wie gezeigt, enthält jede Partitionseinheit 380 einen Teil des L2-Cache 460, der einer entsprechenden Speichervorrichtung 304 zugeordnet ist. Untergeordnete Caches können dann in verschiedenen Einheiten innerhalb der GPCs 350 implementiert werden. Zum Beispiel kann jeder der SMs 440 einen Level-1-Cache (L1-Cache) implementieren. Der L1-Cache ist ein privater Speicher, der für einen bestimmten SM 440 reserviert ist. Daten aus dem L2-Cache 460 können geholt und in jedem der L1-Caches zur Verarbeitung in den Funktionseinheiten der SMs 440 gespeichert werden. Der L2-Cache 460 ist mit der Speicherschnittstelle 470 und dem XBar 370 gekoppelt.
  • Die ROP-Einheit 450 enthält einen ROP-Manager 455, eine Color-ROP- (CROP) Einheit 452 und eine Z-ROP- (ZROP) Einheit 454. Die CROP-Einheit 452 führt Rasteroperationen im Zusammenhang mit der Pixelfarbe durch, wie z.B. Farbkompression, Pixelblending und ähnliches. Die ZROP-Einheit 454 führt Tiefenprüfungen in Verbindung mit der Raster-Engine 425 durch. Die ZROP-Einheit 454 erhält von der Culling-Engine der Raster-Engine 425 eine Tiefe für eine Abtastposition, die einem Pixelfragment zugeordnet ist. Die ZROP-Einheit 454 prüft die Tiefe gegen eine entsprechende Tiefe in einem Tiefenpuffer für eine dem Fragment zugeordnete Abtastposition. Wenn das Fragment den Tiefen-Test für die Abtastposition besteht, aktualisiert die ZROP-Einheit 454 den Tiefenpuffer und überträgt das Ergebnis des Tiefen-Tests an die Raster-Engine 425. Der ROP-Manager 455 steuert den Betrieb der ROP-Einheit 450. Es sei angemerkt, dass die Anzahl der Partitionseinheiten 380 von der Anzahl der GPCs 350 abweichen kann und daher jede ROP-Einheit 450 mit jedem der GPCs 350 gekoppelt werden kann. Daher verfolgt der ROP-Manager 455 die von den verschiedenen GPCs 350 empfangenen Pakete und bestimmt, zu welchem GPC 350 ein Ergebnis, das von der ROP-Einheit 450 erzeugt wurde, weitergeleitet wird. Die CROP-Einheit 452 und die ZROP-Einheit 454 sind über ein L2 XBar 465 mit dem L2-Cache 460 gekoppelt.
  • 5 zeigt den Streaming-Multiprozessor 440 von 4A gemäß einer Ausführungsform. Wie in 5 dargestellt, enthält der SM 440 einen Befehlscache 505, eine oder mehrere Scheduler-Einheiten 510, eine Registerdatei 520, einen oder mehrere Verarbeitungskerne 550, eine oder mehrere Spezialfunktions-Einheiten (SFUs) 552, eine oder mehrere Lade-/Speicher-Einheiten (LSUs) 554, ein Verbindungsnetzwerk 580, einen Gemeinschaftsspeicher/L1 Cache 570. In einer Ausführungsform ist der Befehlscache 105, die Lade-/Speicher-Einheit 154 und die Registerdatei 115, die in 1B gezeigt sind, der Befehlscache 505, die Lade-/SpeicherEinheit (LSU) 554 bzw. die Registerdatei 520.
  • Wie oben beschrieben, verteilt die Arbeitsverteilungs-Einheit 325 Aufgaben zur Ausführung auf die GPCs 350 der PPU 300. Die Aufgaben werden einem bestimmten TPC 420 innerhalb eines GPC 350 zugewiesen, und wenn die Aufgabe einem Shader-Programm zugeordnet ist, kann die Aufgabe einem SM 440 zugewiesen werden. Die Scheduler-Einheit 510 nimmt die Aufgaben von der Arbeitsverteilungs-Einheit 325 entgegen und verwaltet die Befehlsplanung für eine oder mehrere Gruppen von Threads (z.B. Warps), die dem SM 440 zugeordnet sind. Die Scheduler-Einheit 510 plant Threads zur Ausführung in Gruppen paralleler Threads ein, wobei jede Gruppe als Warp bezeichnet wird. In einer Ausführungsform enthält jeder Warp 32 Threads. Die Scheduler-Einheit 510 kann eine Vielzahl verschiedener Warps verwalten, die Warps zur Ausführung einplanen und dann Anweisungen von der Vielzahl verschiedener Warps an die verschiedenen Funktionseinheiten (d.h. Kerne 550, SFUs 552 und LSUs 554) während jedes Taktzyklus senden.
  • Jede Dispatcher-Einheit 515 ist so konfiguriert, dass sie Befehle an eine oder mehrere der Funktionseinheiten übermittelt. In der in 5 gezeigten Ausführungsform enthält die Scheduler-Einheit 510 zwei Dispatcher-Einheiten 515, die es ermöglichen, zwei verschiedene Instruktionen aus demselben Warp während eines Taktzyklus abzuarbeiten. In alternativen Ausführungsformen kann jede Scheduler-Einheit 510 eine einzelne Dispatcher-Einheit 515 oder zusätzliche Dispatcher-Einheiten 515 enthalten.
  • Jeder SM 440 enthält eine Registerdatei 520, die einen Satz Register für die Funktionseinheiten der SM 440 enthält. In einer Ausführungsform wird die Registerdatei 520 zwischen den einzelnen Funktionseinheiten so aufgeteilt, dass jeder Funktionseinheit ein bestimmter Teil der Registerdatei 520 zugeordnet wird. In einer anderen Ausführungsform wird die Registerdatei 520 auf die verschiedenen Warps aufgeteilt, die von dem SM 440 ausgeführt werden. Die Registerdatei 520 dient zur Zwischenspeicherung von Operanden, die mit den Datenpfaden der Funktionseinheiten verbunden sind.
  • Jeder SM 440 besteht aus L Verarbeitungskernen 550. In einer Ausführungsform enthält der SM 440 eine große Anzahl (z.B. 128, etc.) unterschiedlicher Verarbeitungskerne 550. Jeder Kern 550 kann eine Verarbeitungseinheit mit einfacher Genauigkeit und vollständiger Pipeline enthalten, die eine Gleitkomma-Arithmetik-Logik-Einheit und eine Ganzzahl-Arithmetik-Logik-Einheit enthält. Der Kern 550 kann auch eine Verarbeitungseinheit mit doppelter Genauigkeit und mit einer Gleitkomma-Arithmetik-Logik-Einheit enthalten. In einer Ausführungsform implementieren die Gleitkomma-Arithmetik-Logikeinheiten den Standard IEEE 754-2008 für Gleitkomma-Arithmetik. Jeder SM 440 enthält auch M SFUs 552, die spezielle Funktionen ausführen (z.B. Attributauswertung, reziproke Quadratwurzel und dergleichen), und N LSUs 554, die Lade- und Speicheroperationen zwischen dem Gemeinschaftsspeicher/L1-Cache 570 und der Registerdatei 520 implementieren. In einer Ausführungsform umfasst der SM 440 128 Kerne 550, 32 SFUs 552 und 32 LSUs 554.
  • Jeder SM 440 enthält ein Verbindungsnetzwerk 580, das jede der Funktionseinheiten mit der Registerdatei 520 und die LSU 554 mit der Registerdatei 520, dem Gemeinschaftsspeicher/L1-Cache 570 verbindet. In einer Ausführungsform ist das Verbindungsnetzwerk 580 ein Koppelfeld, das so konfiguriert werden kann, dass es jede der Funktionseinheiten mit einem der Register in der Registerdatei 520 verbindet und die LSUs 554 mit der Registerdatei und den Speicherplätzen im Gemeinschaftsspeicher/L1-Cache 570 verbindet.
  • Der Gemeinschaftsspeicher/L1 Cache 570 ist ein Array eines On-Chip-Speichers, das die Datenspeicherung und Kommunikation zwischen dem SM 440 und der Primitiv-Engine 435 sowie zwischen Threads im SM 440 ermöglicht. In einer Ausführungsform umfasst der Gemeinschaftsspeicher/L1 Cache 570 64KB Speicherkapazität und befindet sich in dem Pfad von der SM 440 zur Partitionseinheit 380. Mit dem Gemeinschaftsspeicher/L1-Cache 570 können Lese- und Schreibzugriffe zwischengespeichert werden. In einer Ausführungsform beinhaltet der Gemeinschaftsspeicher/L1-Cache 570 die Inspektionsschaltung 170 zur Durchführung von Inline-Dateninspektionen für Ladevorgänge. In einer Ausführungsform befindet sich mindestens eine Inspektionsschaltung 170 zwischen dem Gemeinschaftsspeicher/L1-Cache 570 und den LSUs 554.
  • Die oben beschriebene PPU 300 kann so konfiguriert werden, dass sie hochparallele Berechnungen wesentlich schneller durchführt als herkömmliche CPUs. Paralleles Rechnen hat Vorteile bei der Grafikverarbeitung, Datenkompression, neuronalen Netzen, Deep Learning, Biometrie, Stream Processing Algorithmen und dergleichen.
  • Bei der Konfiguration für allgemeine parallele Berechnungen kann eine einfachere Konfiguration verwendet werden. In diesem Modell, wie in 3 gezeigt, werden Grafikverarbeitungseinheiten mit fester Funktion umgangen, wodurch ein wesentlich einfacheres Programmiermodell entsteht. In dieser Konfiguration ordnet die Arbeitsverteilungseinheit 325 Blöcke von Threads direkt den TPCs 420 zu und verteilt an diese. Die Threads in einem Block führen dasselbe Programm aus, wobei eine eindeutige Thread-ID in der Berechnung verwendet wird, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse generiert, wobei der SM 440 eingesetzt wird, um das Programm auszuführen und Berechnungen durchzuführen, der Gemeinschaftsspeicher/L1 Cache 570 eingesetzt wird, um zwischen Threads zu kommunizieren, und die LSU 554 eingesetzt wird, um den allgemeinen Speicher über einen Teil des Gemeinschaftsspeichers /L1 Cache 570 und die Partitionseinheit 380 lesen und zu schreiben. Wenn der SM 440 für allgemeine parallele Berechnungen konfiguriert ist, kann er auch Befehle schreiben, mit denen die Scheduler-Einheit 320 neue Arbeiten an den TPCs 420 starten kann.
  • In einer Ausführungsform besteht die PPU 300 aus einem Prozessor zum Deep Learning oder Machine Learning. Die PPU 300 ist so konfiguriert, dass sie Befehle empfängt, die Programme zur Modellierung neuronaler Netze und zur Verarbeitung von Daten mit einem neuronalen Netz spezifizieren.
  • In einer Ausführungsform besteht die PPU 300 aus einer Grafikprozessoreinheit (GPU). Die PPU 300 ist so konfiguriert, dass sie Befehle empfängt, die Shader-Programme zur Verarbeitung von Grafikdaten spezifizieren. Grafikdaten können als eine Menge von Primitiven definiert werden, wie Punkte, Linien, Dreiecke, Vierecke, Dreieckstreifen und dergleichen. Typischerweise enthält ein Primitiv Daten, die eine Anzahl von Vertices bzw. Eckpunkten für das Primitiv spezifizieren (z.B. in einem Modell-Raum-Koordinatensystem), sowie Attribute, die jedem Vertex des Primitives zugeordnet sind. Die PPU 300 kann so konfiguriert werden, dass sie die grafischen Primitives verarbeitet, um einen Bildspeicher zu erzeugen (d.h. Pixeldaten für jedes Pixel des Displays).
  • Eine Anwendung schreibt Modelldaten für eine Szene (d.h. eine Sammlung von Vertices und Attributen) in einen Speicher, wie z.B. einen Systemspeicher oder Speicher 304. Die Modelldaten definieren jedes der Objekte, die auf einer Anzeige sichtbar sein können. Die Anwendung führt dann einen API-Aufruf an den Treiberkern durch, der die Modelldaten anfordert, um diese zu rendern und anzuzeigen. Der Treiberkern liest die Modelldaten und schreibt Befehle an die einen oder mehrere Streams, um Operationen zur Verarbeitung der Modelldaten durchzuführen. Die Befehle können sich auf verschiedene Shader-Programme beziehen, die auf den SMs 440 der PPU 300 implementiert werden sollen, einschließlich eines oder mehrerer Vertex-Shader, Hull-Shader, Domain-Shader, Geometrie-Shader und Pixel-Shader. Beispielsweise kann ein oder können mehrere SMs 440 so konfiguriert werden, dass sie ein Vertex-Shader-Programm ausführen, das eine Anzahl von Vertices verarbeitet, die durch die Modelldaten definiert sind. In einer Ausführungsform können die verschiedenen SMs 440 so konfiguriert werden, dass sie verschiedene Shader-Programme gleichzeitig ausführen. Beispielsweise kann eine erste Teilmenge von SMs 440 so konfiguriert werden, dass sie ein Vertex-Shader-Programm ausführt, während eine zweite Teilmenge von SMs 440 so konfiguriert werden kann, dass sie ein Pixel-Shader-Programm ausführt. Die erste Untermenge von SMs 440 verarbeitet Vertexdaten zu verarbeiteten Vertexdaten und schreibt die verarbeiteten Vertexdaten in den L2-Cache 460 und/oder den Speicher 304. Nachdem die verarbeiteten Vertexdaten gerastert (d.h. von dreidimensionalen Daten in zweidimensionale Daten im Bildschirmraum transformiert) wurden, um Fragmentdaten zu erzeugen, führt die zweite Teilmenge von SMs 440 einen Pixel-Shader aus, um verarbeitete Fragmentdaten zu erzeugen, die dann mit anderen verarbeiteten Fragmentdaten gemischt und in den Bildpuffer im Speicher 304 geschrieben werden. Das Vertex-Shader-Programm und das Pixel-Shader-Programm können gleichzeitig ausgeführt werden, wobei verschiedene Daten derselben Szene gemäß einem Pipeline-Vorgehen verarbeitet werden, bis alle Modelldaten für die Szene in den Bildpuffer gerendert wurden. Anschließend wird der Inhalt des Bildpuffers an eine Anzeigesteuerung zur Anzeige auf einer Anzeigevorrichtung übertragen.
  • Die PPU 300 kann in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, einem Smartphone (z. B. einem drahtlosen, tragbaren Gerät), einem PDA, einer Digitalkamera, einem tragbaren elektronischen Gerät und dergleichen enthalten sein. In einer Ausführungsform wird die PPU 300 auf einem einzigen Halbleitersubstrat ausgebildet. In einer anderen Ausführungsform ist die PPU 300 in einem System-on-a-Chip (SoC) zusammen mit einer oder mehreren anderen logischen Einheiten wie einer RISC-CPU (Computer mit reduziertem Befehlssatz), einer MMU (Memory Management Unit), einem Digital-Analog-Wandler (DAC) und dergleichen enthalten.
  • In einer Ausführungsform kann die PPU 300 auf einer Grafikkarte enthalten sein, die ein oder mehrere Speichervorrichtungen 304, wie z.B. GDDR5 SDRAM, enthält. Die Grafikkarte kann so konfiguriert werden, dass sie mit einem PCIe-Steckplatz auf einem Motherboard eines Desktop-Computers verbunden wird, der z.B. einen Northbridge-Chipsatz und einen Southbridge-Chipsatz enthält. In einer weiteren Ausführungsform kann die PPU 300 eine integrierte Grafikverarbeitungseinheit (iGPU) sein, die im Chipsatz (z.B. Northbridge) des Motherboards enthalten ist.
  • Innerhalb der PPU 300 können verschiedene Programme ausgeführt werden, um die verschiedenen Schichten eines neuronalen Netzes zu implementieren. Beispielsweise kann der Gerätetreiber einen Kern auf der PPU 300 starten, um das neuronale Netz auf einem SM 440 (oder mehreren SMs 440) zu implementieren. Der Gerätetreiber (oder der initiale Kern, der von der PPU 300 ausgeführt wird) kann auch andere Kerne auf der PPU 300 starten, um andere Schichten des neuronalen Netzes auszuführen. Darüber hinaus können einige Schichten des neuronalen Netzes auf Hardware mit festen Einheiten implementiert werden, die in der PPU 300 implementiert ist. Es sei angemerkt, dass Ergebnisse aus einem Kern von einer oder mehreren dazwischenliegenden Hardware-Einheiten mit fester Funktion verarbeitet werden können, bevor sie von einem nachfolgenden Kern auf einem SM 440 verarbeitet werden.
  • Beispielhaftes System
  • 6 stellt ein beispielhaftes System 600 dar, in welchem die verschiedenen Architekturen und/oder Funktionalitäten der verschiedenen vorab beschriebenen Ausführungsformen implementiert sein können. Das beispielhafte System 600 kann ausgestaltet sein, um ein Beschneiden eines neuronalen Netzes zu implementieren.
  • Wie dargestellt ist, wird ein System 600 bereitgestellt, welches mindestens einen zentralen Prozessor 601 aufweist, welcher mit einem Kommunikationsbus 602 verbunden ist. Der Kommunikationsbus 602 kann unter Verwendung irgendeines geeigneten Protokolls, wie z.B. PCI („Peripheral Component Interconnect“), PCI-Express, AGP („Accelerated Graphics Port“), HyperTransport oder jedem anderen Bus- oder Punkt-zu-Punkt-Kommunikationsprotokoll, implementiert sein. Bei einer Ausführungsform ist der Kommunikationsbus 602 der Systembus 302, welcher in 3 dargestellt ist. Das System 600 weist auch einen Hauptspeicher 604 auf. Steuerlogik (Software) und Daten sind in dem Hauptspeicher 604 gespeichert, welcher die Ausführungsform eines Direktzugriffspeichers (RAM („Random Access Memory“)) aufweisen kann.
  • Das System 600 weist auch Eingabevorrichtungen 612, einen Grafikprozessor 606 und eine Anzeige 608, d.h. eine herkömmliche Kathodenstrahlröhre (CRT („Cathode Ray Tube“)), eine LCD-Anzeige („Liquid Crystal Display“), eine LED („Light Emitting Diode“), eine Plasmaanzeige oder Ähnliches, auf. Eine Benutzereingabe kann von den Eingabevorrichtungen 612, z.B. einer Tastatur, einer Maus, einem Touchpad, einem Mikrofon und Ähnlichem, erfasst werden. Bei einer Ausführungsform kann der Grafikprozessor 606 mehrere Shader-Module, ein Vektor-/Rastergrafik-Wandlungs-Modul, usw. aufweisen. Jedes der vorab erwähnten Module kann auf einer einzelnen Halbleiterplattform angeordnet sein, um eine Grafikprozessoreinheit (GPU („Graphic Processing Einheit“)) auszubilden.
  • Bei der vorliegenden Beschreibung kann eine einzelne Halbleiterplattform eine einzige einheitliche halbleiterbasierte integrierte Schaltung oder einen Chip bezeichnen. Es sei angemerkt, dass der Begriff einzelne Halbleiterplattform auch Module mit mehreren Chips mit erhöhten Anschlussmöglichkeiten bezeichnet, welche eine Operation auf einem Chip simulieren und wesentliche Verbesserungen gegenüber einem Einsatz einer herkömmlichen zentralen Verarbeitungseinheit (CPU) und Busimplementierung aufweisen. Natürlich können die verschiedenen Module auch getrennt oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Benutzers angeordnet sein.
  • Das System 600 kann auch einen zweiten Speicher 610 aufweisen. Der zweite Speicher 610 weist zum Beispiel eine Festplatte und/oder ein entfernbares Speicherlaufwerk, welches ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein CD-Laufwerk, ein DVD-Laufwerk, eine Aufzeichnungsvorrichtung, einen USB-Flashspeicher repräsentiert, auf. Das entfernbare Speicherlaufwerk liest von und/oder schreibt auf eine entfernbare Speichereinheit in einer bekannten Weise.
  • Computerprogramme oder Computer-Steuerlogikalgorithmen können in dem Hauptspeicher 604 und/oder dem zweiten Speicher 610 gespeichert werden. Solche Computerprogramme ermöglichen dem System 600, wenn sie ausgeführt werden, verschiedene Funktionen auszuführen. Der Speicher 604, der Speicher 610 und/oder jeder andere Speicher sind mögliche Beispiele von Computer-lesbaren Medien.
  • Bei einer Ausführungsform können die Architektur und/oder Funktionalität der verschiedenen vorher beschriebenen Figuren im Kontext des zentralen Prozessors 601, des Grafikprozessors 606, einer integrierten Schaltung (nicht dargestellt), welche in der Lage ist, zumindest einen Teil der Fähigkeiten sowohl des zentralen Prozessor 601 als auch des Grafikprozessors 606 auszuführen, eines Chipsatzes (d.h. einer Gruppe von integrierten Schaltungen, welche entworfen sind, um als eine Einheit zu arbeiten und verkauft zu werden, um entsprechende Funktionen, usw. auszuführen) und/oder jeder anderen integrierten Schaltung für diesen Zweck, implementiert werden.
  • Dennoch kann die Architektur und/oder Funktionalität der verschiedenen vorher beschriebenen Figuren in dem Kontext eines allgemeinen Computersystems, eines Platinensystems, eines Spielekonsolensystems, welches auf Unterhaltungszwecke ausgerichtet ist, eines anwendungsspezifischen Systems und/oder jedes anderen bestimmten Systems, implementiert werden. Zum Beispiel kann das System 600 die Ausführungsform eines autonomen Fahrzeugs, eines Tischcomputers, eines Laptopcomputers, eines Servers, einer Workstations, einer Spielekonsole, eines eingebetteten Systems und/oder jedes anderen Typs einer Logik annehmen.
  • Darüber hinaus kann das System 600, obwohl es nicht dargestellt ist, mit einem Netz (z.B. einem Telekommunikationsnetz, einem lokalen Netz (LAN), einem Funknetz, einem weiträumigen Netz (WAN), wie z.B. dem Internet, einem Peer-to-Peer-Netz, einem Kabelnetz oder Ähnlichem) für Kommunikationszwecke gekoppelt sein.
  • Während verschiedene Ausführungsformen vorab beschrieben worden sind, sollte klar sein, dass sie nur als Beispiel und nicht als Einschränkung präsentiert worden sind. Daher sollten die Breite und der Umfang einer bevorzugten Ausführungsform nicht durch irgendeine der vorab beschriebenen beispielhaften Ausführungsformen eingeschränkt sein, sondern sollten nur gemäß der folgenden Ansprüche und ihrer Äquivalente definiert sein.

Claims (20)

  1. System zum Beschneiden eines neuronalen Netzes, umfassend: einen Prozessor, welcher ausgestaltet ist, um Gradienten erster Ordnung einer Kostenfunktion bezüglich Schichtparametern für ein trainiertes neuronales Netz zu erfassen; um ein Beschneidungskriterium für jeden Schichtparameter abhängig von dem Gradienten erster Ordnung, welcher mit dem Schichtparameter korrespondiert, zu berechnen, wobei das Beschneidungskriterium eine Wichtigkeit von jedem Neuron anzeigt, welches in dem trainierten neuronalen Netz enthalten ist und dem Schichtparameter zugeordnet ist; um mindestens ein Neuron zu identifizieren, welches eine geringste Wichtigkeit aufweist; und um das mindestens eine Neuron von dem trainierten neuronalen Netz zu entfernen, um ein beschnittenes neuronales Netz zu erzeugen.
  2. System zum Beschneiden eines neuronalen Netzes nach Anspruch 1, wobei das trainierte neuronale Netz mittels eines ersten Datensatzes trainiert ist, welcher allgemein ist, bevor es mittels eines zweiten Datensatzes trainiert ist, welcher speziell ist.
  3. System zum Beschneiden eines neuronalen Netzes nach Anspruch 2, wobei die Gradienten erster Ordnung berechnet werden, während das trainierte neuronale Netz mittels des zweiten Datensatzes trainiert wird.
  4. System zum Beschneiden eines neuronalen Netzes nach einem der vorhergehenden Ansprüche, wobei das trainierte neuronale Netz ein faltendes neuronales Netz ist.
  5. System zum Beschneiden eines neuronalen Netzes nach einem der vorhergehenden Ansprüche, wobei das Berechnen des Beschneidungskriteriums für jeden Schichtparameter ein Annehmen eines absoluten Wertes des Schichtparameters, welcher durch den Gradienten erster Ordnung, der mit dem Schichtparameter korrespondiert, skaliert ist, umfasst.
  6. System zum Beschneiden eines neuronalen Netzes nach einem der vorhergehenden Ansprüche, wobei das Berechnen des Beschneidungskriteriums für jeden Schichtparameter ein Aufsummieren eines Quadrats des Schichtparameters, welcher durch den Gradienten erster Ordnung, der mit dem Schichtparameter korrespondiert, skaliert ist, über Eingangskanäle und Abmessungen eines Faltungskerns umfasst.
  7. System zum Beschneiden eines neuronalen Netzes nach einem der vorhergehenden Ansprüche, wobei der Schichtparameter ein Aktivierungswert ist.
  8. System zum Beschneiden eines neuronalen Netzes nach einem der vorhergehenden Ansprüche, wobei der Schichtparameter ein Gewicht ist.
  9. System zum Beschneiden eines neuronalen Netzes nach einem der vorhergehenden Ansprüche, wobei der Prozessor darüber hinaus ausgestaltet ist, um eine feine Anpassung auf dem beschnittenen neuronalen Netz auszuführen.
  10. System zum Beschneiden eines neuronalen Netzes nach einem der vorhergehenden Ansprüche, wobei das mindestens eine Neuron Neuronen umfasst, welche Wichtigkeiten unterhalb eines Schwellenwerts aufweisen.
  11. System zum Beschneiden eines neuronalen Netzes nach einem der vorhergehenden Ansprüche, wobei das mindestens eine Neuron einen vorbestimmten Prozentsatz von allen Neuronen in dem trainierten neuronalen Netz umfasst.
  12. Auf einem Computer implementiertes Verfahren, umfassend: Erfassen von Gradienten erster Ordnung einer Kostenfunktion relativ zu Schichtparametern für ein trainiertes neuronales Netz; Berechnen eines Beschneidungskriteriums für jeden Schichtparameter abhängig von dem Gradienten erster Ordnung, welcher mit dem Schichtparameter korrespondiert, wobei das Beschneidungskriterium eine Wichtigkeit von jedem Neuron anzeigt, welches in dem trainierten neuronalen Netz enthalten und dem Schichtparameter zugeordnet ist; Identifizieren mindestens eines Neurons, welches eine geringste Wichtigkeit aufweist; und Entfernen des mindestens einen Neurons von dem trainierten neuronalen Netz, um ein beschnittenes neuronales Netz zu erzeugen.
  13. Auf einem Computer implementiertes Verfahren nach Anspruch 12, wobei das trainierte neuronale Netz mittels eines ersten Datensatzes, welcher allgemein ist, trainiert ist, bevor es mittels eines zweiten Datensatzes, welcher speziell ist, trainiert wird.
  14. Auf einem Computer implementiertes Verfahren nach Anspruch 13, wobei die Gradienten erster Ordnung berechnet werden, während das trainierte neuronale Netz mittels des zweiten Datensatzes trainiert wird.
  15. Auf einem Computer implementiertes Verfahren nach einem der Ansprüche 12 bis 14, wobei das trainierte neuronale Netz ein faltendes neuronales Netz ist.
  16. Auf einem Computer implementiertes Verfahren nach einem der Ansprüche 12 bis 15, wobei das Berechnen des Beschneidungskriteriums für jeden Schichtparameter ein Annehmen eines absoluten Wertes des Schichtparameters umfasst, welcher durch den Gradienten erster Ordnung skaliert ist, der mit dem Schichtparameter korrespondiert.
  17. Auf einem Computer implementiertes Verfahren nach einem der Ansprüche 12 bis 16, wobei das Berechnen des Beschneidungskriteriums für jeden Schichtparameter ein Aufsummieren eines Quadrats des Schichtparameters, welcher durch den Gradienten erster Ordnung skaliert ist, der mit dem Schichtparameter korrespondiert, über Eingangskanäle und Abmessungen eines Faltungskerns umfasst.
  18. Auf einem Computer implementiertes Verfahren nach einem der Ansprüche 12 bis 17, wobei der Schichtparameter eine Aktivierung ist.
  19. Auf einem Computer implementiertes Verfahren nach einem der Ansprüche 12 bis 18, wobei der Schichtparameter ein Gewicht ist.
  20. Nicht flüchtiges, von einem Computer lesbares Speichermedium, welches Anweisungen speichert, welche, wenn sie durch einen Prozessor ausgeführt werden, bewirken, dass der Prozessor Schritte ausführt, welche umfassen: Erfassen von Gradienten erster Ordnung einer Kostenfunktion relativ zu Schichtparametern für ein trainiertes neuronales Netz; Berechnen eines Beschneidungskriteriums für jeden Schichtparameter abhängig von dem Gradienten erster Ordnung, welcher mit dem Schichtparameter korrespondiert, wobei das Beschneidungskriterium eine Wichtigkeit von jedem Neuron anzeigt, welches in dem trainierten neuronalen Netz enthalten und dem Schichtparameter zugeordnet ist; Identifizieren mindestens eines Neurons, welches eine geringste Wichtigkeit aufweist; und Entfernen des mindestens einen Neurons von dem trainierten neuronalen Netz, um ein beschnittenes neuronales Netz zu erzeugen.
DE102017124573.1A 2016-10-21 2017-10-20 Systeme und verfahren zum beschneiden von neuronalen netzen für eine betriebsmitteleffiziente folgerung Pending DE102017124573A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662411488P 2016-10-21 2016-10-21
US62/411,488 2016-10-21
US15/786,406 US11315018B2 (en) 2016-10-21 2017-10-17 Systems and methods for pruning neural networks for resource efficient inference
US15/786,406 2017-10-17

Publications (1)

Publication Number Publication Date
DE102017124573A1 true DE102017124573A1 (de) 2018-04-26

Family

ID=61865900

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017124573.1A Pending DE102017124573A1 (de) 2016-10-21 2017-10-20 Systeme und verfahren zum beschneiden von neuronalen netzen für eine betriebsmitteleffiziente folgerung

Country Status (2)

Country Link
US (1) US11315018B2 (de)
DE (1) DE102017124573A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113408723A (zh) * 2021-05-19 2021-09-17 北京理工大学 一种面向遥感应用的卷积神经网络剪枝和量化同步压缩方法

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6287999B2 (ja) * 2015-08-07 2018-03-07 トヨタ自動車株式会社 ニューラルネットワーク学習装置
EP3340129B1 (de) * 2016-12-21 2019-01-30 Axis AB Künstliches neuronales netzwerk klassenbasierte ausdünnung
US10339443B1 (en) * 2017-02-24 2019-07-02 Gopro, Inc. Systems and methods for processing convolutional neural network operations using textures
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
WO2018214913A1 (zh) * 2017-05-23 2018-11-29 上海寒武纪信息科技有限公司 处理方法及加速装置
US10268951B2 (en) 2017-06-14 2019-04-23 International Business Machines Corporation Real-time resource usage reduction in artificial neural networks
CN107463907B (zh) * 2017-08-08 2021-06-25 东软集团股份有限公司 车辆碰撞检测方法、装置、电子设备及车辆
WO2019033380A1 (en) * 2017-08-18 2019-02-21 Intel Corporation SLURRY OF NEURAL NETWORKS IN MACHINE LEARNING ENVIRONMENTS
US11093832B2 (en) * 2017-10-19 2021-08-17 International Business Machines Corporation Pruning redundant neurons and kernels of deep convolutional neural networks
US11250038B2 (en) * 2018-01-21 2022-02-15 Microsoft Technology Licensing, Llc. Question and answer pair generation using machine learning
US10970080B2 (en) 2018-02-08 2021-04-06 Marvell Asia Pte, Ltd. Systems and methods for programmable hardware architecture for machine learning
US11875260B2 (en) * 2018-02-13 2024-01-16 Adobe Inc. Reducing architectural complexity of convolutional neural networks via channel pruning
US11734568B2 (en) * 2018-02-14 2023-08-22 Google Llc Systems and methods for modification of neural networks based on estimated edge utility
US11631004B2 (en) * 2018-03-28 2023-04-18 Intel Corporation Channel pruning of a convolutional network based on gradient descent optimization
US10755229B2 (en) 2018-04-11 2020-08-25 International Business Machines Corporation Cognitive fashion-ability score driven fashion merchandising acquisition
US10685265B2 (en) * 2018-04-11 2020-06-16 International Business Machines Corporation Cognitive analysis and classification of apparel images
US11645529B2 (en) * 2018-05-01 2023-05-09 Hewlett Packard Enterprise Development Lp Sparsifying neural network models
US10956928B2 (en) 2018-05-17 2021-03-23 International Business Machines Corporation Cognitive fashion product advertisement system and method
US11538083B2 (en) 2018-05-17 2022-12-27 International Business Machines Corporation Cognitive fashion product recommendation system, computer program product, and method
US10997510B1 (en) 2018-05-22 2021-05-04 Marvell Asia Pte, Ltd. Architecture to support tanh and sigmoid operations for inference acceleration in machine learning
US10891136B1 (en) 2018-05-22 2021-01-12 Marvell Asia Pte, Ltd. Data transmission between memory and on chip memory of inference engine for machine learning via a single data gathering instruction
US10929778B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Address interleaving for machine learning
US10929760B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Architecture for table-based mathematical operations for inference acceleration in machine learning
US10929779B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Architecture to support synchronization between core and inference engine for machine learning
US11016801B1 (en) 2018-05-22 2021-05-25 Marvell Asia Pte, Ltd. Architecture to support color scheme-based synchronization for machine learning
US11403528B2 (en) 2018-05-31 2022-08-02 Kneron (Taiwan) Co., Ltd. Self-tuning incremental model compression solution in deep neural network with guaranteed accuracy performance
US10963744B2 (en) 2018-06-27 2021-03-30 International Business Machines Corporation Cognitive automated and interactive personalized fashion designing using cognitive fashion scores and cognitive analysis of fashion trends and data
US20200104716A1 (en) * 2018-08-23 2020-04-02 Samsung Electronics Co., Ltd. Method and system with deep learning model generation
CN110874550A (zh) * 2018-08-31 2020-03-10 华为技术有限公司 数据处理方法、装置、设备和系统
CN110909861B (zh) * 2018-09-17 2023-05-30 北京市商汤科技开发有限公司 神经网络优化方法及装置、电子设备和存储介质
US20220036150A1 (en) * 2018-09-18 2022-02-03 The Trustees Of Princeton University System and method for synthesis of compact and accurate neural networks (scann)
CN110929839B (zh) * 2018-09-20 2024-04-16 深圳市商汤科技有限公司 训练神经网络的方法和装置、电子设备和计算机存储介质
US11449756B2 (en) 2018-09-24 2022-09-20 Samsung Electronics Co., Ltd. Method to balance sparsity for efficient inference of deep neural networks
KR102153192B1 (ko) * 2018-10-31 2020-09-08 주식회사 노타 시뮬레이션-가이드된 반복적 프루닝을 사용하는 효율적인 네트워크 압축
US20210397962A1 (en) * 2018-10-31 2021-12-23 Nota, Inc. Effective network compression using simulation-guided iterative pruning
US20200160185A1 (en) * 2018-11-21 2020-05-21 Nvidia Corporation Pruning neural networks that include element-wise operations
CN109409442A (zh) * 2018-11-21 2019-03-01 电子科技大学 迁移学习中卷积神经网络模型选择方法
CN109671020B (zh) * 2018-12-17 2023-10-24 北京旷视科技有限公司 图像处理方法、装置、电子设备和计算机存储介质
CN109634401B (zh) * 2018-12-29 2023-05-02 联想(北京)有限公司 一种控制方法和电子设备
US20200226451A1 (en) * 2019-01-11 2020-07-16 Samsung Electronics Co., Ltd. Method and apparatus with neural network layer contraction
KR102214837B1 (ko) * 2019-01-29 2021-02-10 주식회사 디퍼아이 컨벌루션 신경망 파라미터 최적화 방법, 컨벌루션 신경망 연산방법 및 그 장치
EP4024223A1 (de) 2019-03-15 2022-07-06 Intel Corporation Systeme und verfahren zur cache-optimierung
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
AU2020241262A1 (en) 2019-03-15 2021-11-04 Intel Corporation Sparse optimizations for a matrix accelerator architecture
US12013808B2 (en) 2019-03-15 2024-06-18 Intel Corporation Multi-tile architecture for graphics operations
CN111723918A (zh) * 2019-03-18 2020-09-29 超威半导体公司 用于卷积内核的自动生成和调谐工具
KR20200129458A (ko) 2019-05-08 2020-11-18 삼성전자주식회사 인공 신경망 모델을 트레이닝하는 컴퓨팅 장치, 인공 신경망 모델을 트레이닝하는 방법 및 이를 저장하는 메모리 시스템
WO2020231049A1 (en) 2019-05-16 2020-11-19 Samsung Electronics Co., Ltd. Neural network model apparatus and compressing method of neural network model
KR102247896B1 (ko) * 2019-05-18 2021-05-04 주식회사 디퍼아이 학습된 파라미터의 형태변환을 이용한 컨벌루션 신경망 파라미터 최적화 방법, 컨벌루션 신경망 연산방법 및 그 장치
CN110348357B (zh) * 2019-07-03 2022-10-11 昆明理工大学 一种基于深度卷积神经网络的快速目标检测方法
US11107004B2 (en) * 2019-08-08 2021-08-31 Capital One Services, Llc Automatically reducing machine learning model inputs
US20210056357A1 (en) * 2019-08-19 2021-02-25 Board Of Trustees Of Michigan State University Systems and methods for implementing flexible, input-adaptive deep learning neural networks
US20210073642A1 (en) * 2019-08-23 2021-03-11 Benjamin Forrest Dribus Sparse Local Connected Artificial Neural Network Architectures Involving Hybrid Local/Nonlocal Structure
US11657635B2 (en) * 2019-08-28 2023-05-23 Ford Global Technologies, Llc Measuring confidence in deep neural networks
DE102019213458A1 (de) 2019-09-04 2021-03-04 Volkswagen Aktiengesellschaft Verfahren zum Komprimieren eines Neuronalen Netzes
CN112560881B (zh) * 2019-09-25 2024-04-19 北京四维图新科技股份有限公司 对象识别方法和装置、数据处理方法
US20210089921A1 (en) * 2019-09-25 2021-03-25 Nvidia Corporation Transfer learning for neural networks
IT201900018821A1 (it) * 2019-10-15 2021-04-15 Sisvel Tech S R L Method and apparatus for pruning neural networks
US11816574B2 (en) 2019-10-25 2023-11-14 Alibaba Group Holding Limited Structured pruning for machine learning model
CN110837811B (zh) * 2019-11-12 2021-01-05 腾讯科技(深圳)有限公司 语义分割网络结构的生成方法、装置、设备及存储介质
US11663746B2 (en) 2019-11-15 2023-05-30 Intel Corporation Systolic arithmetic on sparse data
CN110874631B (zh) * 2020-01-20 2020-06-16 浙江大学 一种基于特征图稀疏化的卷积神经网络剪枝方法
CN113222136A (zh) * 2020-01-21 2021-08-06 北京希姆计算科技有限公司 卷积运算方法及芯片
KR20220116270A (ko) * 2020-02-07 2022-08-22 주식회사 히타치하이테크 학습 처리 장치 및 방법
DE102020202795A1 (de) 2020-03-04 2021-09-09 Volkswagen Aktiengesellschaft Verfahren und Vorrichtung zum Komprimieren eines Neuronalen Netzes
CN111563455B (zh) * 2020-05-08 2023-07-11 南昌工程学院 基于时间序列信号和压缩卷积神经网络的伤损识别方法
US11919545B2 (en) * 2020-05-15 2024-03-05 Perceptive Automata, Inc. Scenario identification for validation and training of machine learning based models for autonomous vehicles
CN111612144B (zh) * 2020-05-22 2021-06-15 深圳金三立视频科技股份有限公司 一种应用于目标检测的剪枝方法及终端
US11842260B2 (en) * 2020-09-25 2023-12-12 International Business Machines Corporation Incremental and decentralized model pruning in federated machine learning
US11765376B2 (en) * 2020-10-08 2023-09-19 Tencent America LLC Pruning methods and apparatuses for neural network based video coding
US11068786B1 (en) * 2020-12-17 2021-07-20 Moffett Technologies Co., Limited System and method for domain specific neural network pruning
CN112818941A (zh) * 2021-03-04 2021-05-18 西北大学 基于迁移学习的文物碎片显微图像的分类方法、系统、设备及存储介质
CN113516163B (zh) * 2021-04-26 2024-03-12 合肥市正茂科技有限公司 基于网络剪枝的车辆分类模型压缩方法、装置及存储介质
WO2021178981A1 (en) * 2021-05-03 2021-09-10 Innopeak Technology, Inc. Hardware-friendly multi-model compression of neural networks
DE102021114044A1 (de) 2021-05-31 2022-12-01 Bayerische Motoren Werke Aktiengesellschaft Verfahren zum Bereitstellen eines künstlichen neuronalen Netzes zur dreidimensionalen Objekterkennung, Recheneinrichtung für ein Fahrzeug, Computerprogramm sowie Computerlesbares (Speicher)Medium
DE102021115879A1 (de) 2021-06-18 2022-12-22 Bayerische Motoren Werke Aktiengesellschaft Verfahren zum Bereitstellen eines komprimierten neuronalen Netzes
DE102021132542A1 (de) 2021-12-09 2023-06-15 Bayerische Motoren Werke Aktiengesellschaft Verfahren zum bereitstellen eines bit-flip-fehlerrobusten; perturbationsrobusten und komprimierten neuronalen netzes; computerprogramm; fahrerassistenzsystem
FR3133468A1 (fr) * 2022-03-14 2023-09-15 Psa Automobiles Sa Procédé d’élagage de réseau de neurones et dispositif associé

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0310366A (ja) 1989-05-19 1991-01-17 Philips Gloeilampenfab:Nv 人工ニューラルネットワーク
US5371809A (en) 1992-03-30 1994-12-06 Desieno; Duane D. Neural network for improved classification of patterns which adds a best performing trial branch node to the network
US5288645A (en) 1992-09-04 1994-02-22 Mtm Engineering, Inc. Hydrogen evolution analyzer
US5502688A (en) 1994-11-23 1996-03-26 At&T Corp. Feedforward neural network system for the detection and characterization of sonar signals with characteristic spectrogram textures
US5719692A (en) 1995-07-07 1998-02-17 Lucent Technologies Inc. Rule induction on large noisy data sets
DE19611732C1 (de) 1996-03-25 1997-04-30 Siemens Ag Verfahren zur Ermittlung von zur Entfernung geeigneten Gewichten eines neuronalen Netzes mit Hilfe eines Rechners
US5787408A (en) 1996-08-23 1998-07-28 The United States Of America As Represented By The Secretary Of The Navy System and method for determining node functionality in artificial neural networks
US6456991B1 (en) 1999-09-01 2002-09-24 Hrl Laboratories, Llc Classification method and apparatus based on boosting and pruning of multiple classifiers
US7970718B2 (en) 2001-05-18 2011-06-28 Health Discovery Corporation Method for feature selection and for evaluating features identified as significant for classifying data
US6970939B2 (en) 2000-10-26 2005-11-29 Intel Corporation Method and apparatus for large payload distribution in a network
US7472096B2 (en) 2005-07-18 2008-12-30 Microsoft Corporation Training a learning system with arbitrary cost functions
US8700552B2 (en) 2011-11-28 2014-04-15 Microsoft Corporation Exploiting sparseness in training deep neural networks
US9111375B2 (en) 2012-01-05 2015-08-18 Philip Meier Evaluation of three-dimensional scenes using two-dimensional representations
US9613316B2 (en) 2012-08-27 2017-04-04 Georges Harik Method for improving efficiency in an optimizing predictive model using stochastic gradient descent
CN102968663A (zh) 2012-11-29 2013-03-13 河海大学 基于无标记样本的神经网络构建方法及其装置
US9721204B2 (en) 2013-10-28 2017-08-01 Qualcomm Incorporated Evaluation of a system including separable sub-systems over a multidimensional range
CN104504441A (zh) 2014-12-09 2015-04-08 河海大学 基于敏感性的madaline神经网络构建方法及其装置
US9786036B2 (en) * 2015-04-28 2017-10-10 Qualcomm Incorporated Reducing image resolution in deep convolutional networks
US9633306B2 (en) 2015-05-07 2017-04-25 Siemens Healthcare Gmbh Method and system for approximating deep neural networks for anatomical object detection
US10115055B2 (en) 2015-05-26 2018-10-30 Booking.Com B.V. Systems methods circuits and associated computer executable code for deep learning based natural language understanding
US11423311B2 (en) 2015-06-04 2022-08-23 Samsung Electronics Co., Ltd. Automatic tuning of artificial neural networks
US10878320B2 (en) * 2015-07-22 2020-12-29 Qualcomm Incorporated Transfer learning in neural networks
US9792907B2 (en) 2015-11-24 2017-10-17 Intel IP Corporation Low resource key phrase detection for wake on voice
US10740676B2 (en) * 2016-05-19 2020-08-11 Nec Corporation Passive pruning of filters in a convolutional neural network
CN106054893B (zh) 2016-06-30 2019-07-26 江汉大学 智能车的控制系统和方法
CN106227851B (zh) 2016-07-29 2019-10-01 汤一平 基于深度卷积神经网络的分层深度搜索的图像检索方法
US10984308B2 (en) * 2016-08-12 2021-04-20 Xilinx Technology Beijing Limited Compression method for deep neural networks with load balance
CN106779075A (zh) 2017-02-16 2017-05-31 南京大学 一种计算机中采用剪枝方法改进的神经网络

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113408723A (zh) * 2021-05-19 2021-09-17 北京理工大学 一种面向遥感应用的卷积神经网络剪枝和量化同步压缩方法
CN113408723B (zh) * 2021-05-19 2023-04-07 北京理工大学 一种面向遥感应用的卷积神经网络剪枝和量化同步压缩方法

Also Published As

Publication number Publication date
US20180114114A1 (en) 2018-04-26
US11315018B2 (en) 2022-04-26

Similar Documents

Publication Publication Date Title
DE102017124573A1 (de) Systeme und verfahren zum beschneiden von neuronalen netzen für eine betriebsmitteleffiziente folgerung
DE102018113845A1 (de) Systeme und Verfahren zum Trainieren von neuronalen Netzwerken mit dünnbesetzten Daten
DE102018130924A1 (de) Systeme und Verfahren zur dynamischen Gesichtsanalyse mittels eines rekurrenten neuronalen Netzes
DE102018126670A1 (de) Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen
DE102018117813A1 (de) Zeitlich stabile Datenrekonstruktion mit einem externen rekurrenten neuronalen Netzwerk
DE102019102279A1 (de) Erzeugung von synthetischen Bildern zum Trainieren eines Neuronal-Netzwerkmodells
DE102018121282A1 (de) Differenzierbare rendering-pipeline für inverse graphik
DE102018108324A1 (de) System und Verfahren zur Schätzung eines optischen Flusses
DE102018126342A1 (de) Transformieren von faltenden neuronalen netzen zum lernen von visuellen sequenzen
DE112020004702T5 (de) Bildgenerierung unter verwendung eines oder mehrerer neuronaler netze
DE102018111407A1 (de) Methode zum maschinellen lernen für automatisches modellieren von mehrwertigen ausgaben
DE102017100609A1 (de) Online-Erfassung und Klassifizierung von dynamischen Gesten mit rekurrenten faltenden neuronalen Netzwerken
DE102018127647A1 (de) Systeme und verfahren zum trainieren neuronaler netzwerke auf regression ohne referenzdaten-trainingsmuster
DE102018132069A1 (de) Äquivariante Orientierungspunkt-Transformation für Orientierungspunkt-Lokalisierung
DE102018120859A1 (de) Inline-Dateninspektion zur Arbeitslastvereinfachung
DE102020115026A1 (de) Systeme und Verfahren zur Tonabbildung von Bildern mit hohem Dynamikumfang für auf tiefem Lernen basierende Verarbeitung von hoher Qualität
DE102021120605A1 (de) Effiziente softmax-berechnung
DE102018009315A1 (de) Verfahren tiefgehenden Lernens zum Trennen von Reflexions- und Übertragungsbildern, die an einer halbreflektierenden Oberfläche in einem Computerbild einer Realweltszene sichtbar sind
DE102019103310A1 (de) Schätzer for einen optimalen betriebspunkt für hardware, die unter einer beschränkung der gemeinsam genutzten leistung/wärme arbeitet
DE102020131896A1 (de) Deep learning-basierte auswahl von abtastwerten für adaptives supersampling
DE102019102009A1 (de) Reduzierung des rauschens während des renderings durch parallele path-space-filterung unter verwendung von hashing
DE102020132377A1 (de) Vorrichtung und Verfahren zur Drosselung einer Raytracing-Pipeline
DE102019135639A1 (de) Auf Echtzeit-Strahlverfolgung (RTRT) basierende adaptive Mehrfrequenzschattierung (AMFS)
DE102018101030A1 (de) Filterung von Bilddaten unter Verwendung eines neutralen Netzwerks
DE102022103358A1 (de) Training für maschinelles lernen im logarithmischen zahlensystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)
R016 Response to examination communication