DE112022001875T5 - Beschleunigen von entscheidungsbauminferenzen - Google Patents

Beschleunigen von entscheidungsbauminferenzen Download PDF

Info

Publication number
DE112022001875T5
DE112022001875T5 DE112022001875.5T DE112022001875T DE112022001875T5 DE 112022001875 T5 DE112022001875 T5 DE 112022001875T5 DE 112022001875 T DE112022001875 T DE 112022001875T DE 112022001875 T5 DE112022001875 T5 DE 112022001875T5
Authority
DE
Germany
Prior art keywords
nodes
branch
memory
memory blocks
blocks
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
DE112022001875.5T
Other languages
English (en)
Inventor
Jan van Lunteren
Charalampos Pozidis
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112022001875T5 publication Critical patent/DE112022001875T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/20Ensemble learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Human Computer Interaction (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computational Linguistics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Operations Research (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

Bereitgestellt werden Verfahren, Computerprogrammprodukte und/oder Systeme, die die folgenden Funktionen durchführen: Einstellen eines Speicherpuffers, der aneinandergrenzende Speicherblöcke aufweist; Erhalten eines Entscheidungsbaums, der Knoten, darunter Verzweigungsknoten und Blattknoten, aufweist, wobei jeder der Verzweigungsknoten mindestens zwei Kindknoten aufweist, die gemäß einer Zugriffswahrscheinlichkeit auf einen Kindknoten nach jedem der Verzweigungsknoten geordnet sind; Abbilden der Knoten auf jeweilige Blöcke der Speicherblöcke, wobei jeder der Speicherblöcke Attribute eines entsprechenden der Knoten speichert, wobei jeder der Verzweigungsknoten und ein beliebiger Kindknoten jedes Verzweigungsknotens auf nachfolgende Blöcke der Speicherblöcke abgebildet werden, wobei geordnete Kindknoten eines selben Verzweigungsknotens auf nachfolgende Blöcke abgebildet werden; Ausführen der Knoten durch Verarbeiten der Attribute der Knoten, wie auf sie aus dem Speicher gemäß einer Reihenfolge der Speicherblöcke im Speicherpuffer zugegriffen wird.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung bezieht sich allgemein auf das Gebiet von Entscheidungsbäumen. Insbesondere ist die vorliegende Erfindung auf ein Beschleunigen von Entscheidungsbauminferenzen ausgerichtet.
  • KURZDARSTELLUNG
  • Gemäß Aspekten der vorliegenden Erfindung werden ein Verfahren, ein Computerprogrammprodukt und/oder System bereitgestellt, das die folgenden Funktionen durchführt (nicht notwendigerweise in der folgenden Reihenfolge): in einem Speicher Einstellen eines Speicherpuffers, der aneinandergrenzende Speicherblöcke aufweist; Erhalten eines Entscheidungsbaums, der Knoten, darunter Verzweigungsknoten und Blattknoten, aufweist, wobei jeder der Verzweigungsknoten mindestens zwei Kindknoten aufweist, die gemäß einer Zugriffswahrscheinlichkeit auf einen Kindknoten nach jedem der Verzweigungsknoten geordnet sind; Abbilden der Knoten auf jeweilige Blöcke der Speicherblöcke, wobei jeder der Speicherblöcke Attribute eines entsprechenden der Knoten speichert, wobei das Abbilden gemäß einer Tiefensuche-Reihenfolge ausgeführt wird, wobei jeder der Verzweigungsknoten und ein beliebiger Kindknoten jedes Verzweigungsknotens auf nachfolgende Blöcke der Speicherblöcke abgebildet werden, wobei geordnete Kindknoten eines selben Verzweigungsknotens auf nachfolgende Blöcke der Speicherblöcke abgebildet werden; Ausführen der Knoten durch Verarbeiten der Attribute der Knoten, wie auf sie aus dem Speicher gemäß einer Reihenfolge der Speicherblöcke im Speicherpuffer zugegriffen wird; und Zurückgeben eines Inferenzergebnisses auf der Grundlage eines Ergebnisses aus dem Ausführen der Knoten.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Diese und weitere Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung gehen aus der nachfolgenden ausführlichen Beschreibung veranschaulichender Ausführungsformen davon hervor, die in Verbindung mit den beiliegenden Zeichnungen zu lesen ist. Die Veranschaulichungen werden der Klarheit wegen bereitgestellt, um einem Fachmann das Verständnis der Erfindung in Verbindung mit der ausführlichen Beschreibung zu erleichtern. In den Zeichnungen:
    • veranschaulicht 1 einen anfänglichen Entscheidungsbaum, der Verzweigungsknoten und Blattknoten gemäß Ausführungsformen der vorliegenden Offenbarung aufweist;
    • stellt 2 eine neu angeordnete Version des Entscheidungsbaums von 1 dar, in der einige der Knoten entsprechend ihrer Zugriffswahrscheinlichkeit im Hinblick auf ein Abbilden von Attributen dieser Knoten auf Blöcke eines Speicherpuffers gemäß Ausführungsformen der vorliegenden Offenbarung getauscht wurden;
    • zeigt 3 eine Auswahl verbundener Knoten des Entscheidungsbaums von 2 zusammen mit Merkmalkennungen und Schwellenwerten der Knoten, wie sie zum Ausführen dieser Knoten gemäß Ausführungsformen der vorliegenden Offenbarung verwendet werden;
    • stellen 4A und 4B Blöcke von Speicherpuffern dar, auf die Attribute von Knoten gemäß Ausführungsformen der vorliegenden Offenbarung abgebildet werden. In jeder von 4A und 4B wird jeder Verzweigungsknoten auf einen Speicherblock von 8 Byte abgebildet, wobei jeder Block in zwei Teilblöcke von je 4 Byte untergliedert ist. In 4A wird gemäß Ausführungsformen jeder Blattknoten der vorliegenden Offenbarung auf einen Block von 4 Byte abgebildet, während in 4B jeder Blattknoten auf einen Block von 8 Byte abgebildet wird;
    • ist 5 ein Ablaufplan zum Veranschaulichen von vorbereitenden Schritten auf hoher Ebene, die zum Erhalten eines Entscheidungsbaums mit in geeigneter Weise geordneten Knoten gemäß Ausführungsformen der vorliegenden Offenbarung ausgeführt werden;
    • ist 6 ein Ablaufplan zum Veranschaulichen von Schritten auf hoher Ebene aus einem Verfahren zum Beschleunigen von Inferenzen, indem neu geordnete Knoten eines Entscheidungsbaums gemäß Ausführungsformen der vorliegenden Offenbarung ausgeführt werden; und
    • stellt 7 schematisch ein Universalcomputersystem dar, das zum Umsetzen eines oder mehrerer Verfahrensschritte geeignet ist, wie sie an Ausführungsformen der vorliegenden Erfindung beteiligt sind.
  • Die beiliegenden Zeichnungen zeigen vereinfachte Darstellungen von Einheiten oder deren Teilen, die an Ausführungsformen beteiligt sind. Sofern nicht anders angegeben, wurden ähnlichen oder funktionsmäßig ähnlichen Elementen in den Figuren dieselben Bezugsziffern zugeordnet.
  • Computergestützte Verfahren und Computerprogrammprodukte, die die vorliegende Erfindung verkörpern, werden nun als nicht einschränkende Beispiele beschrieben.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß Aspekten der vorliegenden Offenbarung werden Verfahren, Systeme und/oder Computerprogrammprodukte zum Beschleunigen von Entscheidungsbauminferenzen bereitgestellt. Ausführungsformen der Verfahren, Systeme und/oder Computerprogrammprodukte sehen insbesondere ein Tauschen einiger Knoten eines Entscheidungsbaums gemäß ihrer Zugriffswahrscheinlichkeit vor. Die Knoten werden durch Verarbeiten von Knotenattributen ausgeführt, auf die aus einem Speicher gemäß einer Reihenfolge von Speicherblöcken eines Speicherpuffers zugegriffen wird, auf die Attribute der Entscheidungsbaumknoten gemäß einer Tiefensuche-Reihenfolge abgebildet werden.
  • Entscheidungsbaumlernen ist ein beim Maschinenlernen verwendeter Vorhersage-Modellierungsansatz. Es beruht auf einem oder mehreren Entscheidungsbäumen, die das Vorhersagemodell bilden. Dank ihrer Einfachheit und Interpretierbarkeit sind Entscheidungsbäume weit verbreitete Algorithmen des Maschinenlernens. Von Entscheidungsbäumen sind unterschiedliche Arten bekannt, darunter Klassifikations- und Regressionsbäume. Ein binärer Entscheidungsbaum ist im Grunde genommen eine Struktur, an der verbundene Entscheidungsprozesse beteiligt sind. Beginnend bei der Wurzel wird ein Merkmal bewertet, und einer der zwei Zweige des Wurzelknotens wird ausgewählt. Diese Vorgehensweise wird wiederholt, bis ein Blattknoten erreicht ist, aus dem ein Wert zum Zusammenstellen eines Endergebnisses verwendet wird.
  • Random Forest und Gradientenboosting sind wichtige Verfahren des Maschinenlernens, die auf binären Entscheidungsbäumen beruhen. In solchen Verfahren werden mehrere Entscheidungsbäume parallel durchlaufen, bis Blattknoten erreicht werden. Die aus den Blattknoten genommenen Ergebnisse werden dann gemittelt (Regression) oder in einer Mehrheitsentscheidung verwendet (Klassifikation). Solche Berechnungen können Zeit (und Ressourcen) in Anspruch nehmen, daher kann eine Notwendigkeit zum Beschleunigen einer auf Bäumen beruhenden Inferenz bestehen, insbesondere für Random-Forest- und/oder Gradientenboosting-Verfahren.
  • Beschleunigen einer auf Bäumen beruhenden Inferenz, beispielsweise für Random-Forest- und Gradientenboosting-Verfahren, kann erreicht werden, indem entweder: (i) Verarbeiten des einzelnen binären Entscheidungsbaums und/oder (ii) paralleles Verarbeiten mehrerer binärer Entscheidungsbäume beschleunigt wird. Die vorliegende Erfindung konzentriert sich zwar auf den ersten Ansatz, Ausführungsformen befassen sich jedoch auch mit dem zweiten Ansatz.
  • Unter Bezugnahme auf 2 bis 6 wird nun ein erster Aspekt der Erfindung ausführlich beschrieben, der ein Verfahren zum Beschleunigen von Entscheidungsbauminferenzen bereitstellt. Eine Ausführungsform des Verfahrens kann im Wesentlichen Einstellen eines Speicherpuffers in S20, Abbilden in geeigneter Weise angeordneter Knoten eines Entscheidungsbaums auf Blöcke dieses Speicherpuffers in s#0 und S40 und Ausführen der Knoten in S50 umfassen, um in S60 ein Ergebnis zurückzugeben, wie in 6 dargestellt. Zu beachten ist, dass dieses Verfahren und seine Varianten in dieser Offenbarung gemeinsam als „vorliegende Verfahren“ bezeichnet werden können. Alle Bezugszeichen Sn beziehen sich auf Verfahrensschritte der Ablaufpläne von 5 und 6, während Bezugsziffern zu physischen Teilen oder Komponenten der in 7 gezeigten computergestützten Einheit und zu Konzepten (wie beispielsweise Entscheidungsbäume und Entscheidungsbaumknoten) gehören, die in Ausführungsformen der vorliegenden Erfindung verwendet werden.
  • Im Einzelnen wird der Speicherpuffer (in Schritt S20 in 6) in einem Speicher einer computergestützten Einheit 101 oder eines computergestützten Systems eingestellt, die bzw. das zum Ausführen des Verfahrens verwendet wird. Dieser Speicherpuffer weist aneinandergrenzende Speicherblöcke auf, die an dieser Stelle noch nicht gefüllt sind.
  • Als Nächstes wird auf einen Entscheidungsbaum 20 zugegriffen (Schritt S10 von 6). Von diesem Baum wird angenommen, dass er in geeigneter Weise neu angeordnet wurde. Wenn ein anfänglicher Baum 10 (1) gegeben ist, heißt dies, dass mindestens einige der Knoten 110 gemäß ihrer Zugriffswahrscheinlichkeit neu geordnet werden, um einen Entscheidungsbaum 20 wie den in 2 gezeigten zu erhalten. Die Knoten 120 weisen Verzweigungsknoten und Blattknoten auf. In den Beispielen von 1 und 2 werden die Verzweigungsknoten („split nodes“) durch die Bezugszeichen SN0 (entspricht dem Wurzelknoten) bis SN14 bezeichnet, während die Blattknoten („leaf nodes“) durch die Bezugszeichen LN0 bis LN15 bezeichnet werden.
  • Nachdem der Baum neu angeordnet ist (2), weist jeder Verzweigungsknoten mindestens zwei Kindknoten auf, die gemäß ihrer Zugriffswahrscheinlichkeit nach diesem Verzweigungsknoten geordnet sind. Mit anderen Worten, in jeder Schicht sind die Kindknoten derselben Eltern gemäß einer Zugriffswahrscheinlichkeit so geordnet, dass auf einen ersten Kindknoten eines gegebenen Verzweigungsknotens mit höherer statistischer Wahrscheinlichkeit zugegriffen wird als auf den zweiten Kindknoten desselben Verzweigungsknotens. In ähnlicher Weise ist es wahrscheinlicher, dass auf den zweiten Kindknoten dieses Verzweigungsknotens zugegriffen wird als auf den dritten Kindknoten usw. Wenn eine bildliche Darstellung des Baums 20 betrachtet wird, läuft dies auf die Aussage hinaus, dass die Kindknoten alle in gleicher Richtung geordnet sind, beispielsweise von einer selben Seite des Entscheidungsbaums 20 (z.B. in dem Beispielbaum von 2 von der linken Seite).
  • Zum Ermitteln der Zugriffswahrscheinlichkeiten können mehrere Verfahren verwendet werden. Das Ordnen der Knoten 120 kann zum Beispiel insbesondere auf bedingten Ausführungswahrscheinlichkeiten der Knoten beruhen, zum Beispiel Wahrscheinlichkeiten für ein Zugreifen auf ein gegebenes Kind, nachdem seine Elternknoten ausgeführt wurden. Dort, wo klare Pfade (oder Abfolgen) von Knoten ermittelt werden können, die in Bezug auf Entscheidungspfade „heißer“ als durch umgebende Knoten verlaufende Pfade sind, können Kindknoten so getauscht werden, dass der wahrscheinlichste Knoten immer auf der linken (oder immer auf der rechten Seite) liegt. Zugriffswahrscheinlichkeiten können zum Beispiel mithilfe von Trainingsdaten oder beliebigen anderen repräsentativen Daten (z.B. Daten zur Gültigkeitsprüfung, Prüfdaten usw.) bestimmt werden, wie später ausführlich erörtert wird.
  • Dann werden die neu geordneten Knoten 120 (in Schritt S30) auf jeweilige Blöcke der Speicherblöcke des zuvor eingestellten Puffers 31, 32 abgebildet. Infolge der Abbildungsfunktion in Schritt S30 speichert jeder Speicherblock Attribute eines zugehörigen Knotens 120, bei dem es sich entweder um einen Verzweigungsknoten oder einen Blattknoten handeln kann. Attribute der Knoten können zum Ausführen der Knoten erforderliche Operanden aufweisen. Sie können beispielsweise Merkmalkennungen (auch Merkmalselektoren genannt) und/oder Schwellen aufweisen, die für Vergleiche verwendet werden, und allgemeiner alle Argumente, die zum Auswerten der von den Entscheidungsbaumknoten erfassten Regeln benötigt werden. Jeder Verzweigungsknoten eines Entscheidungsbaums ist mit einer Merkmalkennung gekennzeichnet und mit einer Schwelle zum Ausführen einer Funktion verbunden, wodurch ein zu einer Merkmalkennung gehörender Merkmalwert beispielsweise mit einer Schwelle verglichen wird, wie an sich bekannt ist. Dies ist in 3 veranschaulicht, die ausgewählte Knoten 120 des Baums 20 zusammen mit jeweiligen Werten von Merkmalkennungen („feature identifier“, „Merkmal-ID“) und Schwellenwerten darstellt.
  • Interessanterweise kann in einigen Ausführungsformen das Abbilden in S30 gemäß einer Tiefensuche-Reihenfolge (depth-first search, DFS) ausgeführt werden, im Gegensatz zu der allgemein für Entscheidungsbäume verwendeten Breitensuche-Reihenfolge. Infolgedessen werden jeder Verzweigungsknoten und ein beliebiger seiner Kindknoten auf nachfolgende Blöcke der Speicherblöcke abgebildet. Da mindestens einige der Knoten 120 neu geordnet wurden, bewirkt das DFS-Abbilden inzwischen, dass die geordneten Kindknoten desselben Elternknotens (ein Verzweigungsknoten) ebenfalls auf nachfolgende Blöcke abgebildet werden.
  • Dabei ist wichtig zu beachten, dass „nachfolgend“ nicht notwendigerweise „aufeinanderfolgend“, d.h. direkt auf den vorherigen folgend, bedeutet. Nachfolgend bedeutet vielmehr, dass etwas nacheinander kommt. Beispielsweise sind 1, 5, 9, 18 usw. nachfolgende Zahlen, aber keine aufeinanderfolgenden Zahlen (wie 1, 2, 3, 4, ...). Der erste Kindknoten jedes Verzweigungsknotens (d.h. der Knoten, auf den im Betrieb am wahrscheinlichsten nach dem Verzweigungsknoten zugegriffen wird) kann jedoch vorteilhafterweise auf einen Speicherblock abgebildet werden, der unmittelbar auf den Block folgt, der diesem Verzweigungsknoten entspricht. Zu beachten ist, dass jeder der Speicherblöcke, auf den Knotenattribute abgebildet werden, aus Gründen, die später ersichtlich werden, tatsächlich aus zwei aufeinanderfolgenden Teilblöcken bestehen kann.
  • Die Knoten 120 werden nacheinander in S50 ausgeführt, indem die Attribute der Knoten 120 so verarbeitet werden, wie auf sie aus dem Speicher zugegriffen wird. Auf diese Attribute wird jedoch gemäß einer Reihenfolge der Speicherblöcke im Speicherpuffer 31, 32 zugegriffen. In einigen Ausführungsformen ist die Zugriffsreihenfolge beispielsweise durch die Reihenfolge vorgegeben, wie sie im Speicherpuffer 31, 32 nach der Abbildungsfunktion in S30 festgelegt ist. Zu beachten ist, dass der Speicherpuffer 31, 32 üblicherweise als virtueller Datenpuffer in einer Software umgesetzt werden kann, obwohl er grundsätzlich auch in einer Hardware an einem gegebenen Speicherort dieser Hardware umgesetzt werden kann. Der Speicherpuffer kann vorteilhafterweise zum Abbilden von in ihm enthaltenen Daten auf aufeinanderfolgende Cache-Zeilen des Speichers verwendet werden, wie in einigen später beschriebenen Ausführungsformen.
  • Schließlich wird in Schritt S60 ein Inferenzergebnis zurückgegeben. Dieses Ergebnis beruht auf einem Ergebnis des Ausführens der Knoten 120. Mehrere Entscheidungsbäume können gleichzeitig ausgeführt werden, wie in Ensemble-Modellen, beispielsweise einem Random-Forest- oder einem Gradientenboosting-Modell. Auf diese Weise kann schließlich ein Gesamtergebnis auf der Grundlage von aus jedem Entscheidungsbaum erhaltenen Inferenzergebnissen aufgebaut werden, beispielsweise zu Klassifikations- oder Regressionszwecken.
  • Gemäß Ausführungsformen der vorliegenden Verfahren spiegelt die zum Ausführen der Knoten verwendete Blockstruktur des Speicherpuffers 31, 32 die Anordnung des Entscheidungsbaums 20 wider, wie er nach dem Neuordnen von mindestens einigen seiner Knoten 120 erhalten wird. Das heißt, für jeden Verzweigungsknoten dieses Entscheidungsbaums 20 befindet sich der erste Kindknoten immer auf einer selben Verarbeitungsseite. Die Speicherblöcke des Speicherpuffers sind an aufeinanderfolgenden Versatzwerten angeordnet, die nicht konstant zu sein brauchen, es jedoch durchaus sein können. Verwenden konstanter Versatzwerte für die Verzweigungsknoten und konstanter Versatzwerte für die Blattknoten macht es einfacher, sich auf ein implizites Ordnen der Blöcke zu stützen, so dass kein expliziter Zeiger auf die Kindblöcke (d.h. den Kindknoten entsprechende Blöcke) in den Speicherblöcken gespeichert zu werden braucht.
  • Der vorgeschlagene Ansatz kann mehrere Vorteile bieten. Zunächst einmal kann er beispielsweise dank der optimierten Reihenfolge der Speicherblöcke ein besseres Ausnutzen des räumlichen Orts der Daten ermöglichen, sei dies in den Speicherblöcken oder in den Cache-Zeilen, auf die diese Blöcke abgebildet werden. Beim Ausführen der Knoten kann beispielsweise eine einzelne Cache-Zeile geladen werden, die Attribute von Knoten auf einem wahrscheinlichsten Ausführungspfad enthält. Eine einzelne Cache-Zeile kann möglicherweise alle notwendigen Attribute enthalten, die zum Ausführen aller Knoten auf dem Pfad erforderlich sind. Dies kann wiederum zu einer höheren Cache-Leistung und Ausnutzung der Speicherbandbreite-Caches und des Hauptspeichers führen. Es können nämlich weniger Speicherzugriffe notwendig sein.
  • Verschiedene Ausführungsformen der vorliegenden Erfindung führen zu wesentlichen Verringerungen der Speicheranforderungen sowie zu wesentlichen Verbesserungen von Latenz und Durchsatz der Inferenz. Ausführungsformen machen es insbesondere möglich, Inferenzzeiten um einen Faktor im Bereich zwischen 1,5 und 70 (ungefähr) zu verringern, wobei dies von den Prüfdaten, Referenzverfahren und den betrachteten Plattformen abhängt. In der Praxis können Inferenzzeiten jedoch üblicherweise um einen Faktor verringert werden, der zwischen 2 und 3 liegt.
  • Darüber hinaus kann die vorliegende Offenbarung vorteilhafterweise Vektorverarbeitung für Entscheidungsbäume unterstützen, wie unter Bezugnahme auf einige Ausführungsformen weiter unten erörtert wird. Infolgedessen können mehrere Knoten eines selben Entscheidungsbaums parallel verarbeitet werden, was zu einer höheren Verarbeitungseffizienz für eine gegebene Speicherzugriffsgranularität (z.B. Cache-Zeile) führt. Die vorliegende Erfindung kann weiterhin auf mehrere Inferenzplattformen angewendet werden, darunter beispielsweise Zentraleinheiten (central processing units, CPUs) und vor Ort programmierbare Gatter-Anordnungen (Field-Programmable Gate Arrays, FPGAs).
  • Dies alles wird nun ausführlich unter Bezugnahme auf bestimmte Ausführungsformen der Erfindung beschrieben. Zunächst einmal kann, wie an früherer Stelle vorgesehen, der Speicherpuffer 31, 32 vorteilhafterweise (Schritt S40 in 6) auf Cache-Zeilen eines Cache abgebildet werden, der zum Ausführen der Knoten gemäß der Reihenfolge der Blöcke verwendet wird, wie diese im Speicherpuffer festgelegt ist. Das heißt, die Speicherblöcke des Speicherpuffers 31, 32 werden geordnet auf Speicherblöcke der Cache-Zeilen abgebildet und halten dabei dieselbe Reihenfolge der Speicherblöcke ein, wie sie im Puffer 31, 32 festgelegt ist, wie in 4B veranschaulicht. Die Knoten 120 werden somit nacheinander in S50 ausgeführt, indem die Attribute der Knoten 120 so verarbeitet werden, wie sie aus den Speicherblöcken der Cache-Zeilen erhalten werden.
  • Zu beachten ist, dass Ausführungsformen der vorliegenden Offenbarung unter Verwendung einer beliebigen Cache-Ebene umgesetzt werden können, insbesondere dort, wo die Knoten 120 von einer CPU ausgeführt werden. Für Umsetzungen mit FPGAs können Cache-Zeilen aus dem Hauptspeicher abgerufen und in den internen Speicher der FPGAs eingespeist werden, der als Cache für FPGAs betrachtet werden kann.
  • Vorteilhafterweise brauchen in einigen Ausführungsformen die Speicherblöcke, die Verzweigungsknoten entsprechen, keine Zeiger zu Kindknoten dieser Verzweigungsknoten aufzuweisen. Ausführungsformen der vorliegenden Offenbarung können sich vielmehr auf ein implizites Ordnen der Speicherblöcke stützen. Um dies zu vereinfachen, kann man in einigen Ausführungsformen vorgeben, dass die Speicherblöcke, die Verzweigungsknoten entsprechen, alle eine gleiche Größe S (für „split“ = Verzweigung) haben, während die Speicherblöcke, die Blattknoten entsprechen, alle eine gleiche Größe L (für „leaf“ = Blatt) haben. Zu beachten ist, dass L nicht gleich S zu sein braucht. In der Praxis kann L üblicherweise kleiner als oder gleich S sein. Wenn die Versatzwerte zwischen den Speicherblöcken bekannt sind, kann dadurch einfacher ermittelt werden, wo auf die Attribute der Knoten 120 aus dem Speicher gemäß dem impliziten Ordnen der Speicherblöcke zuzugreifen ist, das sich aus dem gewählten Abbilden ergibt. Somit besteht möglicherweise keine Notwendigkeit, Zeiger in den Speicherblöcken zu speichern.
  • Wie die relevanten Speicherblöcke abgerufen werden können, wird weiter unten unter Bezugnahme auf einige bevorzugte Ausführungsformen erklärt. Zunächst einmal können einige Eltern-Kind-Knotenpaare vorteilhafterweise auf aufeinanderfolgende (und nicht nur nachfolgende) Blöcke abgebildet werden. Das heißt, das Abbilden in S30 kann so ausgeführt werden, dass es sich bei zwei beliebigen Speicherblöcken, die aus einem Verzweigungsblock und einem ersten Kindblock bestehen, um aufeinanderfolgende Speicherblöcke in dem Speicherpuffer 31, 32 handelt. Ein Verzweigungsblock entspricht einem Verzweigungsknoten des Baums 20, während ein erster Kindblock dem ersten Kindknoten (wie geordnet) dieses Verzweigungsknotens entspricht. Dies ermöglicht einen effizienteren Speicherzugriff und eine effizientere Verarbeitung, da die wahrscheinlichsten Kindknotenattribute aus einem Speicherblock gelesen werden können, der unmittelbar auf den seinen Eltern entsprechenden Block folgt.
  • In einigen Ausführungsformen, wie beispielsweise in 4A und 4B veranschaulicht, können Speicherblöcke, die Verzweigungsknoten entsprechen, alle eine gleiche Größe von S Byte haben (z.B. mit S = 8), während die Speicherblöcke, die den Blattknoten entsprechen, alle eine gleiche Größe von L Byte haben können, beispielsweise mit S = 4 in 4A oder S = 8 in 4B. Somit ist im Speicherpuffer 31, 32 ein Speicherblock, der nach einem Speicherblock folgt, der einem Verzweigungsknoten entspricht, um S Byte versetzt, während ein Speicherblock, der nach einem Speicherblock folgt, der einem Blattblock entspricht, um L Byte versetzt. Um auf Attribute eines ersten Kindknotens zuzugreifen, nachdem Attribute seines Elternknotens verarbeitet wurden, reicht es dementsprechend aus, Daten zu lesen, die im Puffer 31, 32 oder den entsprechenden Cache-Zeilen um 8 Byte verschoben sind. In einem weniger wahrscheinlichen Szenario, in dem das zweite Kind statt des ersten Kindknotens auszuführen ist, kann auf die Attribute dieses Knotens dann zugegriffen werden, indem die um eine größere Anzahl an Byte verschobenen Daten gelesen werden. Somit kann man sich auf diese Weise ein implizites Ordnen der Blöcke zunutze machen, statt sich auf Zeiger zu stützen. Zum Zugreifen auf weitere Knoten können genaue Regeln entworfen werden.
  • In der Weise, wie dies verwirklicht werden kann, kann der Umstand, dass die Knoten 120 (zumindest teilweise) in dem Baum 20 neu geordnet werden, einfach durch geeignete Markierungen, sogenannte „Flags“, erfasst werden, die zusammen mit Attributen der Knoten gespeichert werden, wie nun unter Bezugnahme auf 4A und 4B erklärt wird. In einigen Ausführungsformen kann die in Schritt S30 durchgeführte Abbildungsfunktion nämlich ein Setzen eines Flag für jeden Verzweigungsblock umfassen, das einen Hinweis auf eine beim Ausführen dieses Teilungsknotens durchzuführende Operation. Bei diesem Flag handelt es sich um einen Wert, der gemäß dem Ordnen der Kindknoten dieses Verzweigungsknotens gesetzt wird, beispielsweise danach, wie die Kindknoten dieses Verzweigungsknotens in dem Baum 20 entsprechend ihrer Zugriffswahrscheinlichkeiten geordnet sind. Im Einzelnen bedeutet dies, dass sich aufgrund des lateralen Ordnens der Kindknoten jedes Verzweigungsknotens auf jeder Baumebene die wahrscheinlichsten Knoten alle auf einer selben lateralen Seite des Baums 20 befinden, beispielsweise auf der linken Seite in 2. Somit können Elternknoten, die gegenüber der standardmäßig vorgegebenen Anordnung, die sie sonst in dem anfänglichen Baum 10 ( 1) einnehmen würden, getauscht werden, vorteilhafterweise ein Flag aufweisen, das die mathematischen Operationen bestimmt, die als Teil des Ausführens dieser Elternknoten durchzuführen sind. Auf diese Weise läuft ein Tauschen der Knoten lediglich darauf hinaus, ein zu deren Elternknoten gehörendes Flag zu ändern. Der Block, der dem wahrscheinlichsten Kindknoten entspricht, auf den nach einem Verzweigungsknoten zuzugreifen ist, kann unmittelbar an den Block angrenzen, der diesem Verzweigungsknoten entspricht, ohne dass es für den Block, der diesem Verzweigungsknoten entspricht, erforderlich ist, Zeiger zu diesen Kindknoten aufzuweisen. Dank des Flag-Werts weiß der Algorithmus, welche Verschiebungen zu berücksichtigen sind.
  • In einigen Ausführungsformen kann es sich bei dem Entscheidungsbaum 20 üblicherweise um einen binären Entscheidungsbaum handeln. In diesem Fall gibt das Flag einen Hinweis auf eine oder zwei komplementäre mathematische Vergleichsoperationen, die z. B. auf Ungleichheiten beruhen. Eine Operation kann beispielsweise aus einem Vergleichen bestehen, ob ein Merkmalwert x streng kleiner als ein Schwellenwert t ist (z.B. x < t), wobei in diesem Fall die komplementäre Operation aus einem Vergleichen besteht, ob x größer als oder gleich t ist (z.B. x > t). Umgekehrt kann eine der Operationen „ > " sein, wobei in diesem Fall die komplementäre Operation „ ≤ " ist. Mit anderen Worten, die zwei komplementären mathematischen Vergleichsoperationen können aus einem Prüfen bestehen, ob x < t oder x ≥ t wahr ist oder ob x > t oder x ≤ t wahr ist. Allgemeiner können Gruppen komplementärer Operationen in ähnlicher Weise für nichtbinäre Entscheidungsbäume entworfen werden, bei denen mehr als zwei Kindknoten für einen oder mehrere der Verzweigungsknoten des Baums beteiligt sein können.
  • In 2 sind die Elternknoten von getauschten Kindknoten mit einem Sternchen gekennzeichnet; sie entsprechen Blöcken, die in 4A und 4B einen Flag-Wert gleich 1 speichern. In den Beispielen von 4A und 4B sind die Speicherblöcke aus Teilblöcken von je 4 Byte aufgebaut. Jeder Verzweigungsblock ist S = 8 Byte lang. Die ersten zwei Teilblöcke sind gemäß einer wahlweisen Gestaltungsentscheidung leer gelassen, die darauf abzielt, Kompatibilität mit anderen computergestützten Verfahren sicherzustellen. Dann wird der Wurzelknoten (SN0) auf die nächsten zwei Teilblöcke abgebildet. Der erste Teilblock von 4 Byte wird verwendet, um sowohl den Merkmalselektor („feature selector“, FT) als auch einen Flag-Wert zu codieren, während der zweite Teilblock von 4 Byte zum Codieren der Vergleichsschwelle („comparison threshold“, TH) verwendet wird. Der erste Teilblock (4 Byte) kann beispielsweise einen Merkmalselektor (FT) von 21 Bit und einen Flag-Wert von 1 Bit aufweisen, wobei beispielsweise der Bit-Wert 0 „ < " entspricht, während der Bit-Wert 1 „ ≥ " entspricht. Flags können somit effizient codiert werden und belegen weniger Speicherplatz als Zeiger, woraus sich ein wesentlicher Vorteil für Verfahren mit hunderten oder tausenden von Bäumen ergeben kann, von denen jeder tausende von Knoten aufweist. Der zweite Teilblock (4 Byte) speichert einen Gleitkomma-Schwellenwert (TH), einen Wert mit einfacher Genauigkeit. Bei den von dem Blattknoten zurückzugebenden Ergebniswerten kann es sich jeweils um einen Wert mit einfacher Genauigkeit handeln, der auf nur einen Teilblock von 4 Byte abgebildet wird, wie in 4A, oder um einen Wert mit doppelter Genauigkeit, der auf zwei Teilblöcken gespeichert wird (was 8 Byte ausmacht, wie in 4B). In Varianten könnten die Ergebniswerte Ganzzahlen entsprechen, beispielsweise zu Klassifikationszwecken, und können auf eine kleinere Anzahl an Byte abgebildet werden.
  • Wie an früherer Stelle angemerkt wurde, können genaue Regeln zum Abrufen relevanter Blöcke entworfen werden. In einigen Ausführungsformen wird ein implizites Ordnen gemäß den folgenden Regeln abgerufen. Erstens ist der Versatz des ersten Kindblocks (der dem ersten Kindknoten dieses gegebenen Verzweigungsknotens entspricht) gleich dem Versatz des Verteilungsblocks, der diesem Verzweigungsknoten plus S Byte entspricht, wie an früherer Stelle erörtert. Zweitens ist der Versatz des zweiten Kindblocks (der dem zweiten Kindknoten dieses Verzweigungsknotens entspricht) gleich dem Versatz des entsprechenden Verteilungsblocks, zu dem 2(R - 1) × (S + L) Byte addiert werden, wobei R die Anzahl der Baumebenen in dem Entscheidungsbaum 20 unter der Baumebene bezeichnet, auf der sich die betrachteten Verzweigungsknoten befinden.
  • Beispielsweise ist R = 4 für den Wurzelknoten SN0 des in 2 gezeigten Baums 20. Alle Kindknoten eines selben Verzweigungsknotens sind wieder auf jeder Ebene des Entscheidungsbaums 20 gemäß ihrer Zugriffswahrscheinlichkeit von links her geordnet. Somit erfordert Zugreifen auf Attribute des ersten (z.B. linken) Knotens des Wurzelknotens Lesen von Werten, die um S = 8 Byte gegenüber dem Block, der dem Wurzelknoten entspricht, verschoben sind. Umgekehrt erfordert Zugreifen auf Attribute des zweiten (z.B. rechten) Knotens des Wurzelknotens Lesen von Werten, die um 2(4 - 1) × (8 + 8) = 128 Byte gegenüber dem Block, der dem Wurzelknoten entspricht, verschoben sind (unter der Annahme, dass L = 8). Als Nächstes erfordert Zugreifen auf Attribute des ersten (z.B. linken) Knotens eines beliebigen nachfolgenden Teilungsknotens Lesen von Werten, die um S = 8 Byte gegenüber dem Block, der diesem Verzweigungsknoten entspricht, verschoben sind. Zugreifen auf Attribute des zweiten (z.B. rechten) Knotens eines Verzweigungsknotens auf der zweiten Ebene (direkt unter der Ebene des Wurzelknotens, so dass R = 3) erfordert Lesen von Werten, die um 2(3 - 1) × (8 + 8) = 64 Byte verschoben sind, und so weiter. Wie verwirklicht werden kann, besteht möglicherweise tatsächlich keine Notwendigkeit, die Formel 2(R - 1) × (S + L) für einen Verzweigungsknoten unter dem Wurzelknoten explizit zu berechnen, da es ausreicht, die Verschiebung, wie sie für einen Verzweigungsknoten auf einer oberen Ebene berechnet wurde, durch 2 zu dividieren.
  • Wie an früherer Stelle erörtert, können mehrere Instanzen des Entscheidungsbaums 20 möglicherweise auf der Grundlage verschiedener Sätze von Eingabedaten parallel mithilfe von Vektorverarbeitung ausgeführt werden. Vektorverarbeitungsfähigkeiten von CPUs nach dem Stand der Technik können vorteilhafterweise genutzt werden, um das Verarbeiten mehrerer Bäume parallel zueinander zu beschleunigen. Aufgrund der einfachen Verarbeitungsschritte, die von den Entscheidungsbaumknoten gefordert werden, kann ein Verarbeiten mehrerer Bäume zum Beispiel parallel unter Verwendung von Vektoranweisungen erfolgen.
  • In einigen Ausführungsformen kann der vorliegende Ansatz zusätzlich für zwei oder mehr Entscheidungsbäume umgesetzt werden, die Teil eines Ensemble-Modells sind. In diesem Fall beruht das endgültige Inferenzergebnis auf Ergebnissen von Schritt S50, wie sie für jeden der beteiligten Entscheidungsbäume erhalten werden. Inferenzen können beispielsweise an einem Teil oder allen Prüfdaten über alle binären Entscheidungsbäume ausgeführt werden, die beispielsweise Teil eines Random-Forest-Modells, eines Gradientenboosting-Modells oder dergleichen sein können. Jeder binäre Entscheidungsbaum wird trotzdem unabhängig beginnend beim jeweiligen Wurzelknoten verarbeitet.
  • Das Folgende erklärt unter Bezugnahme auf 5, wie die Knoten neu geordnet werden können. Das Ziel besteht im Grunde genommen darin, Kindknoten von einer selben lateralen Seite des Entscheidungsbaums 20 gemäß ihrer Zugriffswahrscheinlichkeit nach ihren Elternknoten neu zu ordnen, bevor die Knoten 120 (in Schritt S30) auf jeweilige Blöcke des Speicherpuffers abgebildet werden. Dennoch kann, wie an früherer Stelle angemerkt, in einigen Ausführungsformen das Neuanordnen des Entscheidungsbaums durch Speichern geeigneter Flag-Werte im Verhältnis zu den Elternknoten erfasst werden, wobei diese Flag-Werte die Operation bestimmen, die während des Ausführens der Elternknoten durchzuführen ist.
  • Dazu wird während einer vorbereitenden Phase (5) ein anfänglicher Baum festgelegt (Schritt S1), und dieser Entscheidungsbaum wird in S2 auf der Grundlage von Trainingsdaten wie üblich gelernt, um einen trainierten Entscheidungsbaum 10 zu erhalten, wie er 1 dargestellt ist. Das heißt, das dem Entscheidungsbaum zugrundeliegende Modell lernt wie üblich seine eigenen Parameter durch Verarbeiten von Trainingsbeispielen. Dann werden einige geeignete Eingabedaten in das Modell eingespeist, und der Entscheidungsbaum 10 (wie zuvor gelernt) wird in Schritt S3 (die Parameter des Modells stehen nun fest) im Hinblick darauf ausgeführt, Zugriffswahrscheinlichkeiten der Kindknoten zu ermitteln, beispielsweise unter Verwendung eines Diagramms zur Visualisierung von Daten (Heatmap). Beispielsweise können Zugriffszählungen überwacht werden. Für jeden binären Knoten kann man dann (beginnend am Wurzelknoten) Zugriffszählungen seiner beiden Kindknoten vergleichen. Der Kindknoten, der die größte Zugriffszählung aufweist, wird der „erste“ Knoten und so weiter. Der Vorgang wiederholt sich, bis alle Kindknoten verglichen worden sind. Schließlich erhält man einen neu angeordneten Baum 20, wie 2 gezeigt.
  • Bei den zum Lernen von Zugriffswahrscheinlichkeiten verwendeten Eingabedaten kann es sich einfach um die Trainingsdaten selbst und/oder um einige Daten für eine Gültigkeitsprüfung handeln. Interessanterweise kann der Entscheidungsbaum 20 zu einem späteren Zeitpunkt möglicherweise weiter neu geordnet werden, nachdem Inferenzen für wesentliche Prüfdaten durchgeführt wurden. Das heißt, Zugriffszählungen können von Zeit zu Zeit im Hinblick darauf überwacht werden, das Abbilden der Knoten auf die Speicherblöcke (und somit die Cache-Zeilen, falls notwendig) zu aktualisieren.
  • Ein bevorzugtes Szenario ist das folgende. Zuerst wird ein anfänglicher Baum in Schritt S1 festgelegt (5). Dieser Baum wird anschließend in S2 auf der Grundlage von Trainingsdaten gelernt, so dass man einen trainierten Entscheidungsbaum 10 erhält. Als Nächstes wird der Baum 10 in S3 auf der Grundlage repräsentativer Eingabedaten (z.B. Trainingsdaten, Daten für eine Gültigkeitsprüfung, einige Prüfdaten usw.) ausgeführt, um die Zugriffswahrscheinlichkeiten zu lernen. Auf der Grundlage der gelernten Zugriffswahrscheinlichkeiten werden einige der Knoten schließlich in S4 getauscht (z.B. werden Flags in Verbindung mit entsprechenden Elternknoten gespeichert), um einen Entscheidungsbaum 20 zu erhalten. Dieser Baum 20 wird dann in S5, S10 zum Durchführen von Schritt S20 bis S60 verwendet, die in 6 gezeigt sind. In Schritt S20 wird nämlich ein Speicherpuffer im Hinblick darauf eingestellt, in Schritt S30 Knotenattribute auf Speicherblöcke dieses Puffers abzubilden. Dann werden diese Blöcke in S40 auf Cache-Zeilen des Speichers abgebildet, und zwar im Hinblick auf das (oder während) des Ausführens der Knoten des Baums 20 in S50, um in S60 Inferenzergebnisse zu erhalten.
  • Als Nächstes können gemäß einem weiteren Aspekt Ausführungsformen der vorliegenden Erfindung als ein Computerprogrammprodukt zum Beschleunigen von Inferenzen des Maschinenlernens verkörpert werden. Dieses Computerprogrammprodukt weist ein von einem Computer lesbares Speichermedium mit damit verkörperten Programmanweisungen auf, wobei die Programmanweisungen durch ein Verarbeitungsmittel (Prozessor) 105 von einer oder mehr computergestützten Einheiten 101 ausführbar sind, siehe 7, so dass sie dieses Verarbeitungsmittel veranlassen, Schritte auszuführen, wie sie an früherer Stelle unter Bezugnahme auf das vorliegende Verfahren beschrieben wurden. Insbesondere können diese Anweisungen, wie an früherer Stelle erörtert, eine computergestützte Einheit zum Nutzen von Vektorverarbeitung veranlassen.
  • Computergestützte Systeme und Einheiten können in geeigneter Weise zum Umsetzen von Ausführungsformen der vorliegenden Erfindung, wie hier beschrieben, gestaltet werden. In dieser Hinsicht kann verständlich sein, dass die hier beschriebenen Verfahren weitgehend nichtinteraktiv und automatisiert sind. In beispielhaften Ausführungsformen können die hier beschriebenen Verfahren entweder in einem interaktiven, einem teilweise interaktiven oder einem nichtinteraktiven System umgesetzt werden. Die hier beschriebenen Verfahren können als Software, Hardware oder als Kombination davon umgesetzt werden. In beispielhaften Ausführungsformen werden die hier vorgeschlagenen Verfahren als Software als ausführbares Programm umgesetzt, wobei Letzteres durch geeignete digitale Verarbeitungseinheiten ausgeführt wird. Allgemeiner können Ausführungsformen der vorliegenden Erfindung umgesetzt werden, in denen virtuelle Maschinen und/oder digitale Universalcomputer wie beispielsweise Personal Computer, Workstations usw. verwendet werden.
  • Beispielsweise stellt 7 schematisch eine computergestützte Einheit 101 (z.B. einen Universal- oder Spezialcomputer) dar, die möglicherweise mit anderen ähnlichen Einheiten interagieren kann, so dass sie in der Lage ist, Schritte gemäß den vorliegenden Verfahren durchzuführen.
  • In beispielhaften Ausführungsformen weist jede Einheit 101 in Bezug auf Hardwarearchitektur, wie in 7 gezeigt, mindestens einen Prozessor 105 und einen Hauptspeicher 111 auf, die mit einer Speichersteuereinheit 115 verbunden sind. Mehrere Prozessoren (z.B. CPUs und/oder GPUs) können möglicherweise an jeder Einheit 101 beteiligt sein. Zu diesem Zweck kann jeder CPU/GPU eine jeweilige an sich bekannte Speichersteuereinheit zugewiesen werden. In Varianten können Steuereinheiten der Einheit 101 mit FPGAs verbunden sein, wie an früherer Stelle erwähnt; beispielsweise können einige der in 7 gezeigten CPUs/GPUs durch FPGAs ersetzt werden.
  • Eine oder mehrere Eingabe- und/oder Ausgabe- (E/A-) Einheiten 145, 150, 155 (oder Peripherieeinheiten) sind in einer zum Datenaustausch fähigen Weise über eine lokale Eingabe/Ausgabe-Steuereinheit 135 verbunden. Die Eingabe/Ausgabe-Steuereinheit 135 kann mit einem oder mehreren Bussen und einem Systembus 140, wie sie dem Fachmann bekannt sind, verbunden sein oder diese aufweisen. Die Eingabe/Ausgabe-Steuereinheit 135 kann zusätzliche Elemente aufweisen, die aus Gründen der Einfachheit weggelassen werden, wie beispielsweise Steuereinheiten, Puffer (Caches), Treiber, Wiederholungseinheiten und Empfänger, um einen Datenaustausch zu ermöglichen. Die lokale Schnittstelle kann weiterhin eine Adresse, Steuerung und/oder Datenverbindungen aufweisen, um einen geeigneten Datenaustausch zwischen den vorgenannten Komponenten zu ermöglichen.
  • Bei den Prozessoren 105 handelt es sich um Hardwareeinheiten zum Ausführen von Softwareanweisungen. Bei den Prozessoren 105 kann es sich um einen (mehrere) beliebige nach Kundenvorgabe angefertigte oder handelsübliche Prozessor(en) handeln. Im Allgemeinen können daran beliebige Arten von auf Halbleitern beruhenden Mikroprozessoren (in Form eines Mikrochips oder Chipsatzes) beteiligt sein oder allgemein jedes Bauelement zum Ausführen von Softwareanweisungen.
  • Der Hauptspeicher 111 weist üblicherweise flüchtige Speicherelemente (z.B. Speicher mit wahlfreiem Zugriff) auf und kann weiterhin nichtflüchtige Speicherelemente aufweisen. Darüber hinaus kann der Hauptspeicher 111 elektronische, magnetische, optische und/oder andere Arten von Speichermedien aufnehmen.
  • Software im Hauptspeicher 111 kann ein oder mehrere getrennte Programme aufweisen, von denen jedes ausführbare Anweisungen zum Umsetzen logischer Funktionen aufweist. In dem Beispiel von 7 können Anweisungen, die in den Hauptspeicher 111 geladen werden, Anweisungen aufweisen, die aus der Ausführung der hier beschriebenen computergestützten Verfahren gemäß beispielhaften Ausführungsformen entstehen. In den Hauptspeicher 111 kann weiterhin ein geeignetes Betriebssystem (operating system, OS) geladen werden. Das OS steuert im Wesentlichen die Ausführung anderer Computerprogramme oder Anweisungen und stellt Planungsfunktionen, Eingabe-Ausgabe-Steuerung, Datei- und Datenverwaltung, Speicherverwaltung und Datenaustauschsteuerung und damit zusammenhängende Dienste bereit.
  • Möglicherweise können eine herkömmliche Tastatur und Maus mit der Eingabe/Ausgabe-Steuereinheit 135 verbunden werden. Weitere E/A-Einheiten 140 bis 155 können einbezogen werden. Die computergestützte Einheit 101 kann weiterhin eine mit einer Anzeige 130 verbundene Anzeigesteuereinheit 125 aufweisen. In einigen Ausführungsformen kann die computergestützte Einheit 101 wahlweise mit einer Speichereinheit (z.B. intern, extern usw.) wie einem Speicher 121 verbunden sein. Eine beliebige computergestützte Einheit 101 weist üblicherweise eine Netzwerkschnittstelle oder einen Transceiver 160 zum Verbinden mit einem Netzwerk auf, um wiederum Datenübertragung zu/von anderen externen Komponenten, z.B. anderen Einheiten 101, zu ermöglichen.
  • Das Netzwerk überträgt und empfängt Daten zwischen einer gegebenen computergestützten Einheit 101 und einer anderen computergestützten Einheit 101 und/oder anderen Computereinheiten. Das Netzwerk kann möglicherweise in einer drahtlosen Weise umgesetzt werden, z.B. unter Verwendung drahtloser Protokolle und Techniken wie beispielsweise Wifi, WiMax usw. Bei dem Netzwerk kann es sich insbesondere um ein ortsfestes drahtloses Netzwerk, ein drahtloses Nahbereichsnetzwerk (LAN), ein drahtloses Weitbereichsnetzwerk (WAN), ein Personal Area Network (PAN), ein virtuelles privates Netzwerk (VPN), ein Intranet oder ein anderes geeignetes Netzwerksystem handeln, und es weist Ausrüstung zum Empfangen und Übertragen von Signalen auf. Vorzugsweise sollte dieses Netzwerk jedoch eine sehr schnelle Nachrichtenweitergabe zwischen Einheiten ermöglichen.
  • Bei dem Netzwerk kann es sich auch um ein auf dem Internet Protocol (IP) beruhendes Netzwerk für einen Datenaustausch zwischen einer gegebenen Einheit 101 und einer beliebigen externen Einheit über eine Breitbandverbindung handeln. In beispielhaften Ausführungsformen kann es sich bei dem Netzwerk um ein von einem Dienstanbieter administriertes verwaltetes IP-Netzwerk handeln. Außerdem kann es sich bei dem Netzwerk um ein paketvermitteltes Netzwerk wie ein LAN, WAN, Internet-Netzwerk, ein Internet-der-Dinge-Netzwerk usw. handeln.
  • Bei der vorliegenden Erfindung kann es sich somit um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen darauf aufweisen, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine auswechselbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein auswechselbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. ein Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Systemen und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbarer Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines in geeigneter Weise konfigurierten Computers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zum Umsetzen der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Schaltbilder bzw. Schaubilder festgelegten Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der festgelegten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die vorliegende Erfindung wurde zwar unter Bezugnahme auf eine begrenzte Zahl von Ausführungsformen, Varianten und die beiliegenden Zeichnungen beschrieben, für den Fachmann wird jedoch ersichtlich sein, dass daran verschiedene Änderungen und Ersetzungen durch gleichwertige Lösungen vorgenommen werden können, ohne den Geltungsbereich der vorliegenden Erfindung zu verlassen. Insbesondere kann ein Merkmal (einer Einheit ähnlich oder einem Verfahren ähnlich), das in einer gegebenen Ausführungsform oder Variante genannt oder in einer Zeichnung gezeigt wird, mit einem weiteren Merkmal in einer weiteren Ausführungsform, Variante oder Zeichnung kombiniert werden oder dieses ersetzen, ohne den Geltungsbereich der vorliegenden Erfindung zu verlassen. Verschiedene Kombinationen der in Bezug auf eine beliebige der obigen Ausführungsformen oder Varianten beschriebenen Merkmale können dementsprechend in Betracht gezogen werden, die innerhalb des Geltungsbereichs der anhängenden Ansprüche bleiben. Zudem können zahlreiche geringfügige Abänderungen vorgenommen werden, um eine bestimmte Situation oder ein bestimmtes Material an die Lehren der vorliegenden Erfindung anzupassen, ohne ihren Geltungsbereich zu verlassen. Daher soll die vorliegende Erfindung nicht auf bestimmte offenbarte Ausführungsformen beschränkt sein, sondern die vorliegende Erfindung schließt alle Ausführungsformen ein, die in den Geltungsbereich der anhängenden Ansprüche fallen. Zudem können viele weitere Varianten als die oben ausdrücklich angesprochenen in Betracht gezogen werden.

Claims (20)

  1. Auf einem Computer umgesetztes Verfahren, das umfasst: in einem Speicher Einstellen eines Speicherpuffers, der aneinandergrenzende Speicherblöcke aufweist; Erhalten eines Entscheidungsbaums, der Knoten, darunter Verzweigungsknoten und Blattknoten, aufweist, wobei jeder der Verzweigungsknoten mindestens zwei Kindknoten aufweist, die gemäß einer Zugriffswahrscheinlichkeit auf einen Kindknoten nach jedem der Verzweigungsknoten geordnet sind; Abbilden der Knoten auf jeweilige Blöcke der Speicherblöcke, wobei jeder der Speicherblöcke Attribute eines entsprechenden der Knoten speichert, wobei das Abbilden gemäß einer Tiefensuche-Reihenfolge durchgeführt wird, wobei jeder der Verzweigungsknoten und beliebige Kindknoten jedes Verzweigungsknotens auf nachfolgende Blöcke der Speicherblöcke abgebildet werden, wobei geordnete Kindknoten eines selben der Verzweigungsknoten auf nachfolgende Blöcke der Speicherblöcke abgebildet werden; Ausführen der Knoten durch Verarbeiten der Attribute der Knoten, wie auf sie aus dem Speicher gemäß einer Reihenfolge der Speicherblöcke im Speicherpuffer zugegriffen wird; und Zurückgeben eines Inferenzergebnisses auf der Grundlage eines Ergebnisses aus dem Ausführen der Knoten.
  2. Auf einem Computer umgesetztes Verfahren nach Anspruch 1, wobei den Verzweigungsknoten entsprechende Speicherblöcke eine gleiche Größe und den Blattknoten entsprechende Speicherblöcke eine gleiche Größe aufweisen, wobei die einem der Verzweigungsknoten entsprechenden Speicherblöcke keinen Zeiger auf irgendeinen der Kindknoten des einen der Verzweigungsknoten aufweisen, und wobei beim Ausführen der Knoten auf die Attribute der Knoten aus dem Speicher gemäß einem impliziten Ordnen der Speicherblöcke im Speicherpuffer zugegriffen wird.
  3. Auf einem Computer umgesetztes Verfahren nach Anspruch 1, wobei das Verfahren weiterhin Abbilden des Speicherpuffers auf Cache-Zeilen eines Cache umfasst, wobei die Speicherblöcke des Speicherpuffers geordnet auf die Speicherblöcke der Cache-Zeilen gemäß der Reihenfolge der Speicherblöcke abgebildet werden und die Knoten ausgeführt werden, indem die Attribute der Knoten so verarbeitet werden, wie sie aus den Speicherblöcken der Cache-Zeilen erhalten werden.
  4. Auf einem Computer umgesetztes Verfahren nach Anspruch 1, wobei das Abbilden so durchgeführt wird, dass Speicherblöcke, die einen Verzweigungsblock und einen ersten Kindblock aufweisen, auf aufeinanderfolgende Speicherblöcke in dem Speicherpuffer abgebildet werden, wobei der Verzweigungsblock einem Verzweigungsknoten der Verzweigungsknoten entspricht und wobei der erste Kindblock einem ersten der geordneten Kindknoten des Verzweigungsblocks entspricht.
  5. Auf einem Computer umgesetztes Verfahren nach Anspruch 4, wobei die Speicherblöcke, die Verzweigungsknoten entsprechen, alle eine gleiche Größe von S Byte aufweisen, wobei die Speicherblöcke, die Blattknoten entsprechen, alle eine gleiche Größe von L Byte aufweisen, wobei L kleiner als oder gleich S ist.
  6. Auf einem Computer umgesetztes Verfahren nach Anspruch 5, wobei Abbilden der Knoten auf die jeweiligen Blöcke der Speicherblöcke für jeden Verzweigungsblock Setzen eines Flag umfasst, das einen Hinweis auf eine Operation gibt, die beim Ausführen des entsprechenden Verzweigungsknotens durchzuführen ist, wobei das Flag gemäß dem gesetzt wird, wie die Kindknoten des entsprechenden Verzweigungsknotens gemäß ihrer Zugriffswahrscheinlichkeit geordnet sind.
  7. Auf einem Computer umgesetztes Verfahren nach Anspruch 6, wobei es sich bei dem Entscheidungsbaum um einen binären Entscheidungsbaum handelt und das Flag einen Hinweis auf eine von zwei komplementären mathematischen Vergleichsoperationen gibt.
  8. Auf einem Computer umgesetztes Verfahren nach Anspruch 7, wobei die zwei komplementären mathematischen Vergleichsoperationen auf Ungleichheiten beruhen.
  9. Auf einem Computer umgesetztes Verfahren nach Anspruch 7, wobei die zwei komplementären mathematischen Vergleichsoperationen Prüfen umfassen, ob x kleiner als t oder x größer als oder gleich t wahr ist, und Prüfen, ob x größer als t oder x kleiner als oder gleich t wahr ist, wobei x einem zu prüfenden Merkmalwert entspricht und t einem Schwellenwert entspricht.
  10. Auf einem Computer umgesetztes Verfahren nach Anspruch 7, wobei die Speicherblöcke, die einem Verzweigungsknoten entsprechen, keinen Zeiger auf irgendeinen der Kindknoten des Verzweigungsknotens aufweisen, wobei beim Ausführen der Knoten auf die Attribute der Knoten aus dem Speicher gemäß einem impliziten Ordnen der Speicherblöcke im Speicherpuffer zugegriffen wird und wobei für jeden Verzweigungsknoten der Verzweigungsknoten das implizite Ordnen der Speicherblöcke dazu führt, dass auf Attribute der Kindknoten jedes Verzweigungsknotens gemäß den folgenden Regeln zugegriffen wird: ein Versatz eines ersten Kindblocks, der dem ersten Kindknoten jedes Verzweigungsknotens entspricht, ist gleich einem Versatz des Verteilungsblocks, der diesem Verzweigungsknoten entspricht, plus S Byte; und ein Versatz eines zweiten Kindblocks, der dem zweiten Kindknoten jedes Verzweigungsknotens entspricht, ist gleich dem Versatz des Verteilungsblocks, der jedem Verteilungsknoten entspricht, plus 2(R - 1) × (S + L) Byte, wobei R eine Anzahl von Baumebenen in dem Entscheidungsbaum unter einer Baumebene bezeichnet, die einen beliebigen der Verzweigungsknoten aufweist.
  11. Auf einem Computer umgesetztes Verfahren nach Anspruch 6, wobei beim Abbilden der Knoten auf die jeweiligen Blöcke der Speicherblöcke die Größe S jedes Verzweigungsblocks gleich 8 Byte ist, in dem 4 Byte zum Codieren einer Vergleichsschwelle verwendet werden und 4 Byte zum Codieren sowohl eines Merkmalselektors als auch des Flag verwendet werden.
  12. Auf einem Computer umgesetztes Verfahren nach Anspruch 1, wobei mehrere Instanzen des Entscheidungsbaums auf der Grundlage verschiedener Sätze von Eingabedaten parallel unter Verwendung von Vektorverarbeitung ausgeführt werden.
  13. Auf einem Computer umgesetztes Verfahren nach Anspruch 1, wobei zwei oder mehr Entscheidungsbäume Teil eines Ensemble-Modells sind, so dass das zurückgegebene Inferenzergebnis auf einem Ergebnis aus dem Ausführen der Knoten jedes der zwei oder mehr Entscheidungsbäume beruht.
  14. Auf einem Computer umgesetztes Verfahren [nach] Anspruch 1, wobei das Verfahren weiterhin vor einem Abbilden der Knoten auf die jeweiligen Blöcke der Speicherblöcke Ordnen der Kindknoten jedes der Verzweigungsknoten von einer selben lateralen Seite des Entscheidungsbaums gemäß einer Zugriffswahrscheinlichkeit für jeden Kindknoten nach jedem der Verzweigungsknoten umfasst.
  15. Auf einem Computer umgesetztes Verfahren nach Anspruch 14, wobei das Verfahren vor dem Ordnen der Kindknoten weiterhin umfasst: Lernen des Entscheidungsbaums auf der Grundlage von Trainingsdaten; und auf der Grundlage von Eingabedaten Ausführen des Entscheidungsbaums, wie er gelernt wurde, um die Zugriffswahrscheinlichkeit zu ermitteln.
  16. Auf einem Computer umgesetztes Verfahren nach Anspruch 15, wobei die Eingabedaten, auf deren Grundlage der Entscheidungsbaum so, wie er gelernt wurde, zum Ermitteln der Zugriffswahrscheinlichkeit ausgeführt wird, mindestens einige der Trainingsdaten und Daten für eine Gültigkeitsprüfung aufweisen.
  17. Computerprogrammprodukt zum Beschleunigen von Inferenzen des Maschinenlernens, wobei das Computerprogrammprodukt ein von einem Computer lesbares Speichermedium mit damit verkörperten Programmanweisungen aufweist, wobei die von einem Verarbeitungsmittel ausführbaren Programmanweisungen das Verarbeitungsmittel veranlassen: in einem Speicher eines computergestützten Systems einen Speicherpuffer einzustellen, der aneinandergrenzende Speicherblöcke aufweist; einen Entscheidungsbaum zu erhalten, der Knoten, darunter Verzweigungsknoten und Blattknoten, aufweist, wobei jeder der Verzweigungsknoten mindestens zwei Kindknoten aufweist, die gemäß einer Zugriffswahrscheinlichkeit auf einen Kindknoten nach jedem der Verzweigungsknoten geordnet sind; und die Knoten auf jeweilige Blöcke der Speicherblöcke abzubilden, wobei jeder der Speicherblöcke Attribute eines entsprechenden der Knoten speichert, wobei das Abbilden gemäß einer Tiefensuche-Reihenfolge durchgeführt wird, wobei jeder der Verzweigungsknoten und beliebige Kindknoten jedes Verzweigungsknotens auf nachfolgende Blöcke der Speicherblöcke abgebildet werden, wobei geordnete Kindknoten eines selben der Verzweigungsknoten auf nachfolgende Blöcke der Speicherblöcke abgebildet werden.
  18. Computerprogrammprodukt nach Anspruch 17, wobei die Programmanweisungen durch ein Verarbeitungsmittel ausführbar sind, um das Verarbeitungsmittel weiterhin zu veranlassen: die Knoten durch Verarbeiten der Attribute der Knoten auszuführen, wie auf sie aus dem Speicher gemäß einer Reihenfolge der Speicherblöcke im Speicherpuffer zugegriffen wird; und ein Inferenzergebnis auf der Grundlage eines Ergebnisses aus dem Ausführen der Knoten zurückzugeben.
  19. Computerprogrammprodukt nach Anspruch 18, wobei die Programmanweisungen ausführbar sind, um das Verarbeitungsmittel weiterhin zu veranlassen: den Speicherpuffer auf Cache-Zeilen eines Cache abzubilden, wobei die Speicherblöcke des Speicherpuffers geordnet auf die Speicherblöcke der Cache-Zeilen gemäß der Reihenfolge der Speicherblöcke abgebildet werden und die Knoten ausgeführt werden, indem die Attribute der Knoten so verarbeitet werden, wie sie aus den Speicherblöcken der Cache-Zeilen erhalten werden.
  20. Computersystem, das aufweist: einen Prozessorsatz; und ein computerlesbares Speichermedium; wobei: der Prozessorsatz so strukturiert, angeordnet, verbunden und programmiert ist, dass auf dem computerlesbaren Speichermedium gespeicherte Programmanweisungen ausgeführt werden; und die gespeicherten Programmanweisungen aufweisen: Programmanweisungen, die programmiert sind zum Einstellen eines Speicherpuffers, der aneinandergrenzende Speicherblöcke aufweist; Programmanweisungen, die programmiert sind zum Erhalten eines Entscheidungsbaums, der Knoten, darunter Verzweigungsknoten und Blattknoten, aufweist, wobei jeder der Verzweigungsknoten mindestens zwei Kindknoten aufweist, die gemäß einer Zugriffswahrscheinlichkeit auf einen Kindknoten nach jedem der Verzweigungsknoten geordnet sind; und Programmanweisungen, die programmiert sind zum Abbilden der Knoten auf jeweilige Blöcke der Speicherblöcke, wobei jeder der Speicherblöcke Attribute eines entsprechenden der Knoten speichert, wobei das Abbilden gemäß einer Tiefensuche-Reihenfolge durchgeführt wird, wobei jeder der Verzweigungsknoten und beliebige Kindknoten jedes Verzweigungsknotens auf nachfolgende Blöcke der Speicherblöcke abgebildet werden, wobei geordnete Kindknoten eines selben der Verzweigungsknoten auf nachfolgende Blöcke der Speicherblöcke abgebildet werden; Programmanweisungen, die programmiert sind zum Ausführen der Knoten durch Verarbeiten der Attribute der Knoten, wie auf sie aus dem Speicher gemäß einer Reihenfolge der Speicherblöcke im Speicherpuffer zugegriffen wird; und Programmanweisungen, die programmiert sind zum Zurückgeben eines Inferenzergebnisses auf der Grundlage eines Ergebnisses aus dem Ausführen der Knoten.
DE112022001875.5T 2021-06-15 2022-05-18 Beschleunigen von entscheidungsbauminferenzen Pending DE112022001875T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/347,918 US11886725B2 (en) 2021-06-15 2021-06-15 Accelerating decision tree inferences
US17/347,918 2021-06-15
PCT/IB2022/054598 WO2022263942A1 (en) 2021-06-15 2022-05-18 Accelerating decision tree inferences

Publications (1)

Publication Number Publication Date
DE112022001875T5 true DE112022001875T5 (de) 2024-01-18

Family

ID=84389802

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112022001875.5T Pending DE112022001875T5 (de) 2021-06-15 2022-05-18 Beschleunigen von entscheidungsbauminferenzen

Country Status (5)

Country Link
US (1) US11886725B2 (de)
CN (1) CN117413258A (de)
DE (1) DE112022001875T5 (de)
GB (1) GB2621736A (de)
WO (1) WO2022263942A1 (de)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013025970A1 (en) * 2011-08-17 2013-02-21 Volcano Corporation Classification trees on gpgpu compute engines
US10339465B2 (en) 2014-06-30 2019-07-02 Amazon Technologies, Inc. Optimized decision tree based models
US10496283B2 (en) 2016-01-22 2019-12-03 Suraj Prabhakar WAGHULDE Adaptive prefix tree based order partitioned data storage system
US10725930B2 (en) 2018-08-27 2020-07-28 Micron Technology, Inc. Logical to physical memory address mapping tree
CN110245515B (zh) 2019-05-08 2021-06-01 北京大学 一种面向hdfs访问模式的保护方法和***
CN111368901A (zh) 2020-02-28 2020-07-03 深圳前海微众银行股份有限公司 基于联邦学习的多方联合建模方法、设备和介质

Also Published As

Publication number Publication date
WO2022263942A1 (en) 2022-12-22
US20220398015A1 (en) 2022-12-15
CN117413258A (zh) 2024-01-16
GB2621736A (en) 2024-02-21
US11886725B2 (en) 2024-01-30
GB202317166D0 (en) 2023-12-27

Similar Documents

Publication Publication Date Title
DE202017007517U1 (de) Aggregatmerkmale für maschinelles Lernen
DE112018006047T5 (de) Deformation von aufwandsfunktionen bei der quanten-näherungsoptimierung
DE112012004809B4 (de) Kantenverfolgung mit Hysterese-Schwellenwertbildung
DE112018006377T5 (de) Verschmelzen spärlich besetzter kernels zur approximation eines vollen kernels eines neuronalen faltungsnetzes
DE102009053578A1 (de) Verfahren und Vorrichtung zum Durchführen eines parallelen Routens unter Verwendung einer Multithreaded-Routing-Prozedur
DE102022119386A1 (de) Verfahren und einrichtung zum durchführen einer dichten vorhersage unter verwendung von transformatorblöcken
DE60211452T2 (de) DMA-Übertragung von Daten und Prüfinformation zu und von einem Datenspeicherungsgerät
DE112013003300T5 (de) Schrittweise Vorbereitung von Videos auf die Lieferung
DE112020002344T5 (de) Feature engineering zur optimierung von neuronalen netzwerken
DE112020000748T5 (de) Adresserzeugung zur hochleistungsverarbeitung von vektoren
DE2900586C2 (de) Anordnung zum Decodieren von Codewörtern variabler Länge
DE112022001059T5 (de) Verringerte bandbreiten-inanspruchnahme über generative adversarial networks
DE102010001052A1 (de) System, Verfahren und Computerprogrammprodukt zum Importance-Sampling von aufgeteilten Bereichen
DE112021001767T5 (de) Rationalisieren von datenverarbeitungsoptimierungen für arbeitslasten mit maschinellem lernen
DE112022001875T5 (de) Beschleunigen von entscheidungsbauminferenzen
DE102009004810A1 (de) Verfahren zum Ausführen eines oder mehrerer Programme auf einem Mehrkernprozessor und Mehrkernprozessor
DE112013007399T5 (de) Globale Gittererstellung in Aufschiebungsbereichen durch ein optimiertes Entzerrungsverfahren
DE102013114508B4 (de) Blockbasierte Signalverarbeitung
DE112021004729T5 (de) Dreifarben-bitmap-array zur garbage-collection
DE102021125926A1 (de) Systeme und verfahren zur datengesteuerten speicheraufteilung für deep-learning
DE102021125858A1 (de) Verfolgen eines protokollverlaufs einer änderungsdatenerfassung
DE112014003212T5 (de) Verfahren und System zum Implementieren einer Bitmatrix in einer Cachespeicherzeile
DE2613703C2 (de) Schaltungsanordnung zum Übersetzen von Programmtexten
DE202022100198U1 (de) Ein wolkenbasiertes System zur Graphenberechnung
DE4342521C1 (de) Verfahren und Anordnung zur Expansion komprimierter Daten

Legal Events

Date Code Title Description
R012 Request for examination validly filed