Eines der beliebtesten Modelle, die heute erhältlich sind, ist XGBoost. Mit der Fähigkeit, verschiedene Probleme wie Klassifizierung und Regression zu lösen, ist XGBoost zu einer beliebten Option geworden, die auch in die Kategorie der baumbasierten Modelle fällt. In diesem Beitrag tauchen wir tief ein, um zu sehen, wie Amazon Sage Maker können diese Modelle mit dienen NVIDIA Triton-Inferenzserver. Echtzeit-Inferenz-Workloads können unterschiedliche Anforderungen und Service Level Agreements (SLAs) in Bezug auf Latenz und Durchsatz haben und können mit SageMaker-Echtzeit-Endpunkten erfüllt werden.
SageMaker bietet einzelne Modellendpunkte, mit denen Sie ein einzelnes Modell für maschinelles Lernen (ML) für einen logischen Endpunkt bereitstellen können. Für andere Anwendungsfälle können Sie Kosten und Leistung mithilfe von verwalten Endpunkte mit mehreren Modellen, mit denen Sie mehrere Modelle angeben können, die hinter einem logischen Endpunkt gehostet werden sollen. Unabhängig von der gewählten Option ermöglichen SageMaker-Endpunkte einen skalierbaren Mechanismus selbst für die anspruchsvollsten Unternehmenskunden und bieten gleichzeitig einen Mehrwert in einer Vielzahl von Funktionen, darunter Schattenvarianten, automatische Skalierung, und native Integration mit Amazon CloudWatch (Weitere Informationen finden Sie unter CloudWatch-Metriken für Endpunktbereitstellungen mit mehreren Modellen).
Triton unterstützt verschiedene Backends als Engines, um das Ausführen und Bereitstellen verschiedener ML-Modelle für die Inferenz zu unterstützen. Für jede Triton-Bereitstellung ist es entscheidend zu wissen, wie sich das Backend-Verhalten auf Ihre Workloads auswirkt und was Sie erwarten können, damit Sie erfolgreich sein können. In diesem Beitrag helfen wir Ihnen, das zu verstehen Forest Inference Library (FIL)-Backend, das von Triton auf SageMaker unterstützt wird, damit Sie eine fundierte Entscheidung für Ihre Workloads treffen und die bestmögliche Leistung und Kostenoptimierung erzielen können.
Tauchen Sie tief in das FIL-Backend ein
Triton unterstützt die FIL-Backend um Baummodelle zu dienen, wie z XGBoost, LightGBM, scikit-lernen Zufälliger Wald, RAPIDS cuML Random Forest, und jedes andere Modell, das von unterstützt wird Baumlite. Diese Modelle werden seit langem zur Lösung von Problemen wie Klassifizierung oder Regression verwendet. Obwohl diese Arten von Modellen traditionell auf CPUs ausgeführt werden, haben die Popularität dieser Modelle und die Inferenzanforderungen zu verschiedenen Techniken geführt, um die Inferenzleistung zu erhöhen. Das FIL-Backend nutzt viele dieser Techniken durch die Verwendung von cuML-Konstrukten und basiert auf C++ und der CUDA-Kernbibliothek, um die Inferenzleistung auf GPU-Beschleunigern zu optimieren.
Das FIL-Backend verwendet die Bibliotheken von cuML, um CPU- oder GPU-Kerne zu verwenden, um das Lernen zu beschleunigen. Um diese Prozessoren zu verwenden, werden Daten aus dem Hostspeicher (z. B. NumPy-Arrays) oder GPU-Arrays (uDF, Numba, cuPY oder jede Bibliothek, die die __cuda_array_interface__
)-API. Nachdem die Daten im Arbeitsspeicher bereitgestellt wurden, kann das FIL-Backend die Verarbeitung auf allen verfügbaren CPU- oder GPU-Kernen ausführen.
Die FIL-Back-End-Threads können miteinander kommunizieren, ohne den gemeinsam genutzten Speicher des Hosts zu verwenden, aber bei Ensemble-Arbeitslasten sollte der Hostspeicher berücksichtigt werden. Das folgende Diagramm zeigt eine Ensemble-Scheduler-Laufzeitarchitektur, in der Sie die Speicherbereiche fein abstimmen können, einschließlich des CPU-adressierbaren gemeinsamen Speichers, der für die Kommunikation zwischen Prozessen zwischen Triton (C++) und dem Python-Prozess (Python-Backend) zum Austausch verwendet wird Tensoren (Eingabe/Ausgabe) mit dem FIL-Backend.
Triton Inference Server bietet konfigurierbare Optionen für Entwickler, um ihre Workloads zu optimieren und die Modellleistung zu optimieren. Die Konfiguration dynamic_batching
ermöglicht es Triton, clientseitige Anforderungen zu speichern und sie auf der Serverseite zu bündeln, um die parallele Berechnung von FIL effizient zu nutzen, um den gesamten Stapel zusammenzuschließen. Die Option max_queue_delay_microseconds
bietet eine ausfallsichere Kontrolle darüber, wie lange Triton wartet, um eine Charge zu bilden.
Es gibt eine Reihe weiterer FIL-spezifischer Optionen verfügbar die Leistung und Verhalten beeinflussen. Wir empfehlen, mit zu beginnen storage_type
. Wenn das Backend auf der GPU ausgeführt wird, erstellt FIL eine neue Speicher-/Datenstruktur, die eine Darstellung des Baums ist, für den FIL die Leistung und den Platzbedarf beeinflussen kann. Dies ist über den Umgebungsparameter konfigurierbar storage_type
, die die Optionen Dense, Sparse und Auto hat. Die Wahl der dichten Option verbraucht mehr GPU-Speicher und führt nicht immer zu einer besseren Leistung, daher ist es am besten, dies zu überprüfen. Im Gegensatz dazu verbraucht die Sparse-Option weniger GPU-Speicher und kann möglicherweise genauso gut oder besser als dicht funktionieren. Wenn Sie Auto auswählen, wird das Modell standardmäßig dicht, es sei denn, dies verbraucht deutlich mehr GPU-Speicher als Sparse.
Wenn es um die Modellleistung geht, sollten Sie die Betonung auf Folgendes legen threads_per_tree
Möglichkeit. Eine Sache, die Sie in realen Szenarien möglicherweise übersehen, ist dies threads_per_tree
kann einen größeren Einfluss auf den Durchsatz haben als jeder andere Parameter. Es ist legitim, ihn auf eine Potenz von 2 von 1–32 einzustellen. Der optimale Wert für diesen Parameter ist schwer vorherzusagen, aber wenn erwartet wird, dass der Server mit einer höheren Last fertig wird oder größere Stapelgrößen verarbeitet, profitiert er tendenziell von einem größeren Wert, als wenn er nur wenige Zeilen gleichzeitig verarbeitet.
Ein weiterer zu beachtender Parameter ist algo
, das auch verfügbar ist, wenn Sie auf GPU laufen. Dieser Parameter bestimmt den Algorithmus, der zum Verarbeiten der Inferenzanforderungen verwendet wird. Die dafür unterstützten Optionen sind ALGO_AUTO
, NAIVE
, TREE_REORG
und BATCH_TREE_REORG
. Diese Optionen bestimmen, wie Knoten innerhalb eines Baums organisiert sind, und können auch zu Leistungssteigerungen führen. Der ALGO_AUTO
Option standardmäßig auf NAIVE
für spärliche Lagerung u BATCH_TREE_REORG
für dichte Lagerung.
Schließlich enthält FIL den Shapley-Erklärer, der mithilfe von aktiviert werden kann treeshap_output
Parameter. Sie sollten jedoch bedenken, dass Shapley-Ausgaben aufgrund ihrer Ausgabegröße die Leistung beeinträchtigen.
Modellformat
Derzeit gibt es kein Standarddateiformat zum Speichern von gesamtstrukturbasierten Modellen. Jedes Framework neigt dazu, sein eigenes Format zu definieren. Um mehrere Eingabedateiformate zu unterstützen, importiert FIL Daten mithilfe von Open Source Baumlite Bibliothek. Dadurch kann FIL Modelle unterstützen, die in beliebten Frameworks trainiert wurden, wie z XGBoost und LichtGBM. Beachten Sie, dass das Format des Modells, das Sie bereitstellen, in festgelegt werden muss model_type
Konfigurationswert angegeben in der config.pbtxt
Datei.
Config.pbtxt
Jedes Modell in a Modell-Repository muss eine Modellkonfiguration enthalten, die die erforderlichen und optionalen Informationen über das Modell bereitstellt. Typischerweise wird diese Konfiguration in a bereitgestellt config.pbtxt
Datei angegeben als ModelConfig-protobuf. Weitere Informationen zu den Konfigurationseinstellungen finden Sie unter Modellkonfiguration. Im Folgenden sind einige der Modellkonfigurationsparameter aufgeführt:
- max_batch_size – Dies bestimmt die maximale Stapelgröße, die an dieses Modell übergeben werden kann. Im Allgemeinen ist die einzige Begrenzung für die Größe von Batches, die an ein FIL-Backend übergeben werden, der verfügbare Speicher, mit dem sie verarbeitet werden können. Für GPU-Läufe wird der verfügbare Speicher durch die Größe des CUDA-Speicherpools von Triton bestimmt, der beim Starten des Servers über ein Befehlszeilenargument festgelegt werden kann.
- Varianten des Eingangssignals: – Optionen in diesem Abschnitt teilen Triton mit, wie viele Features für jedes Eingabe-Sample zu erwarten sind.
- Möglichkeiten für das Ausgangssignal: – Optionen in diesem Abschnitt teilen Triton mit, wie viele Ausgabewerte es für jedes Sample geben wird. Wenn die
predict_proba
Option auf true gesetzt ist, wird für jede Klasse ein Wahrscheinlichkeitswert zurückgegeben. Andernfalls wird ein einzelner Wert zurückgegeben, der die für die gegebene Stichprobe vorhergesagte Klasse angibt. - Instanzgruppe – Dies bestimmt, wie viele Instanzen dieses Modells erstellt werden und ob sie GPU oder CPU verwenden.
- Modelltyp – Diese Zeichenfolge gibt an, in welchem Format das Modell vorliegt (
xgboost_json
in diesem Beispiel, aberxgboost
,lightgbm
undtl_checkpoint
sind ebenfalls gültige Formate). - vorhersage_wahrscheinlich – Wenn auf „true“ gesetzt, werden Wahrscheinlichkeitswerte für jede Klasse zurückgegeben und nicht nur eine Klassenvorhersage.
- Ausgabe_Klasse – Dies wird für Klassifikationsmodelle auf true und für Regressionsmodelle auf false gesetzt.
- Schwelle – Dies ist eine Bewertungsschwelle für die Bestimmung der Klassifizierung. Wenn
output_class
auf true gesetzt ist, muss dies angegeben werden, obwohl es nicht verwendet wird, wennpredict_proba
ist ebenfalls auf true gesetzt. - Speichertyp – Im Allgemeinen sollte die Verwendung von AUTO für diese Einstellung die meisten Anwendungsfälle abdecken. Wenn die automatische Speicherung ausgewählt ist, lädt FIL das Modell entweder mit einer spärlichen oder einer dichten Darstellung basierend auf der ungefähren Größe des Modells. In einigen Fällen möchten Sie dies möglicherweise explizit auf SPARSE setzen, um den Speicherbedarf großer Modelle zu reduzieren.
Triton Inference Server auf SageMaker
SageMaker erlaubt können Sie mit dem NVIDIA Triton Inference Server Endpunkte sowohl mit einem einzelnen Modell als auch mit mehreren Modellen bereitstellen. Die folgende Abbildung zeigt die High-Level-Architektur des Triton Inference Server. Der Modell-Repository ist ein dateisystembasiertes Repository der Modelle, die Triton für Inferenzen zur Verfügung stellen wird. Inferenzanforderungen kommen am Server an und werden an den geeigneten Planer pro Modell geleitet. Triton-Geräte mehrere Scheduling- und Batching-Algorithmen die von Modell zu Modell konfiguriert werden können. Der Scheduler jedes Modells führt optional eine Stapelverarbeitung von Inferenzanforderungen durch und übergibt die Anforderungen dann an die Backend dem Modelltyp entsprechend. Das Back-End führt mithilfe der Eingaben, die in den gestapelten Anforderungen bereitgestellt werden, Rückschlüsse durch, um die angeforderten Ausgaben zu erzeugen. Die Ausgaben werden dann zurückgegeben.
Wenn Sie Ihre Auto Scaling-Gruppen für SageMaker-Endpunkte konfigurieren, sollten Sie dies berücksichtigen SageMakerVariantInvocationsPerInstance
als primäres Kriterium zur Bestimmung der Skalierungseigenschaften Ihrer Auto Scaling-Gruppe. Darüber hinaus können Sie je nachdem, ob Ihre Modelle auf GPU oder CPU ausgeführt werden, auch die Verwendung von CPUUtilization oder GPUUtilization als zusätzliche Kriterien in Betracht ziehen. Beachten Sie, dass es für Endpunkte mit einem einzigen Modell ziemlich einfach ist, geeignete Richtlinien festzulegen, um Ihre SLAs zu erfüllen, da die bereitgestellten Modelle alle gleich sind. Für Endpunkte mit mehreren Modellen empfehlen wir die Bereitstellung ähnlicher Modelle hinter einem bestimmten Endpunkt, um eine stabilere, vorhersagbare Leistung zu erzielen. In Anwendungsfällen, in denen Modelle mit unterschiedlichen Größen und Anforderungen verwendet werden, möchten Sie diese Workloads möglicherweise auf mehrere Endpunkte mit mehreren Modellen verteilen oder einige Zeit mit der Feinabstimmung Ihrer Auto Scaling-Gruppenrichtlinie verbringen, um das beste Kosten- und Leistungsverhältnis zu erzielen.
Eine Liste der NVIDIA Triton Deep Learning Containers (DLCs), die von der SageMaker-Inferenz unterstützt werden, finden Sie unter Verfügbare Deep-Learning-Container-Images.
SageMaker-Notebook-Komplettlösung
ML-Anwendungen sind komplex und können oft eine Datenvorverarbeitung erfordern. In diesem Notebook tauchen wir ein in die Bereitstellung eines baumbasierten ML-Modells wie XGBoost mit dem FIL-Backend in Triton auf einem SageMaker-Endpunkt mit mehreren Modellen. Wir behandeln auch, wie Sie mithilfe der Ensemble-Funktion in Triton eine Python-basierte Datenvorverarbeitungs-Inferenzpipeline für Ihr Modell implementieren. Auf diese Weise können wir die Rohdaten von der Clientseite einsenden und sowohl die Datenvorverarbeitung als auch die Modellinferenz in einem Triton SageMaker-Endpunkt für eine optimale Inferenzleistung durchführen.
Triton-Modell-Ensemble-Funktion
Triton Inference Server vereinfacht die Bereitstellung von KI-Modellen im großen Maßstab in der Produktion erheblich. Triton Inference Server wird mit einer praktischen Lösung geliefert, die den Aufbau von Vorverarbeitungs- und Nachverarbeitungspipelines vereinfacht. Die Triton Inference Server-Plattform stellt den Ensemble-Scheduler bereit, der für das Pipelining der am Inferenzprozess beteiligten Modelle verantwortlich ist und gleichzeitig die Effizienz gewährleistet und den Durchsatz optimiert. Die Verwendung von Ensemble-Modellen kann den Aufwand für die Übertragung von Zwischentensoren vermeiden und die Anzahl der Anforderungen minimieren, die an Triton gesendet werden müssen.
In diesem Notebook zeigen wir, wie Sie die Ensemble-Funktion zum Erstellen einer Pipeline der Datenvorverarbeitung mit XGBoost-Modellrückschluss verwenden, und Sie können daraus extrapolieren, um der Pipeline eine benutzerdefinierte Nachverarbeitung hinzuzufügen.
Richten Sie die Umgebung ein
Wir beginnen mit der Einrichtung der erforderlichen Umgebung. Wir installieren die Abhängigkeiten, die zum Packen unserer Modellpipeline erforderlich sind, und führen Inferenzen mit Triton Inference Server aus. Wir definieren auch die AWS Identity and Access Management and (IAM)-Rolle, die SageMaker Zugriff auf die Modellartefakte und NVIDIA Triton gewährt Amazon Elastic Container-Registrierung (Amazon ECR)-Bild. Siehe folgenden Code:
Erstellen Sie eine Conda-Umgebung für die Vorverarbeitung von Abhängigkeiten
Das Python-Backend in Triton erfordert die Verwendung von a Conda Umgebung für zusätzliche Abhängigkeiten. In diesem Fall verwenden wir das Python-Backend, um die Rohdaten vorzuverarbeiten, bevor wir sie in das XGBoost-Modell einspeisen, das im FIL-Backend ausgeführt wird. Obwohl wir ursprünglich RAPIDS cuDF und cuML für die Datenvorverarbeitung verwendet haben, verwenden wir hier Pandas und scikit-learn als Vorverarbeitungsabhängigkeiten während der Inferenz. Wir tun dies aus drei Gründen:
- Wir zeigen, wie Sie eine Conda-Umgebung für Ihre Abhängigkeiten erstellen und in die Format erwartet von Tritons Python-Backend.
- Indem wir das Vorverarbeitungsmodell zeigen, das im Python-Backend auf der CPU ausgeführt wird, während XGBoost auf der GPU im FIL-Backend ausgeführt wird, veranschaulichen wir, wie jedes Modell in der Ensemble-Pipeline von Triton auf einem anderen Framework-Backend sowie verschiedenen Hardwarekonfigurationen ausgeführt werden kann.
- Es zeigt, wie die RAPIDS-Bibliotheken (cuDF, cuML) mit ihren CPU-Gegenstücken (Pandas, scikit-learn) kompatibel sind. Wir können zum Beispiel zeigen, wie
LabelEncoders
erstellt in cuML kann in scikit-learn verwendet werden und umgekehrt.
Wir befolgen die Anweisungen der Triton-Dokumentation zum Packen von Vorverarbeitungsabhängigkeiten (scikit-learn und Pandas), die im Python-Backend als TAR-Datei der Conda-Umgebung verwendet werden sollen. Das Bash-Skript create_prep_env.sh erstellt die TAR-Datei der Conda-Umgebung, dann verschieben wir sie in das Vorverarbeitungsmodellverzeichnis. Siehe folgenden Code:
Nachdem wir das vorherige Skript ausgeführt haben, wird es generiert preprocessing_env.tar.gz
, die wir in das Vorverarbeitungsverzeichnis kopieren:
Richten Sie die Vorverarbeitung mit dem Triton-Python-Backend ein
Für die Vorverarbeitung verwenden wir Triton's Python-Backend um eine tabellarische Datenvorverarbeitung (kategoriale Kodierung) während der Inferenz für Rohdatenanforderungen durchzuführen, die in den Server eingehen. Weitere Informationen zur Vorverarbeitung, die während des Trainings durchgeführt wurde, finden Sie unter Trainingsheft.
Das Python-Backend ermöglicht die Vorverarbeitung, Nachverarbeitung und jede andere benutzerdefinierte Logik, die in Python implementiert und mit Triton bereitgestellt werden kann. Die Verwendung von Triton auf SageMaker erfordert, dass wir zunächst einen Modell-Repository-Ordner einrichten, der die Modelle enthält, die wir bereitstellen möchten. Wir haben bereits ein Modell für die Vorverarbeitung von Python-Daten namens Vorverarbeitung in eingerichtet cpu_model_repository
und gpu_model_repository
.
Triton hat spezifische Anforderungen an das Layout des Modellrepositorys. Innerhalb des Modell-Repository-Verzeichnisses der obersten Ebene hat jedes Modell sein eigenes Unterverzeichnis, das die Informationen für das entsprechende Modell enthält. Jedes Modellverzeichnis in Triton muss mindestens ein numerisches Unterverzeichnis haben, das eine Version des Modells darstellt. Der Wert 1 steht für Version 1 unseres Python-Vorverarbeitungsmodells. Jedes Modell wird von einem bestimmten Backend ausgeführt, daher muss in jedem Versionsunterverzeichnis das von diesem Backend benötigte Modellartefakt vorhanden sein. Für dieses Beispiel verwenden wir das Python-Back-End, das erfordert, dass die von Ihnen bereitgestellte Python-Datei model.py heißt und die Datei implementiert werden muss bestimmte Funktionen. Wenn wir ein PyTorch-Backend verwenden würden, wäre eine model.pt-Datei erforderlich und so weiter. Weitere Einzelheiten zu den Namenskonventionen für Modelldateien finden Sie unter Modelldateien.
Das model.py Die hier verwendete Python-Datei implementiert die gesamte tabellarische Datenvorverarbeitungslogik, um Rohdaten in Funktionen umzuwandeln, die in unser XGBoost-Modell eingespeist werden können.
Jedes Triton-Modell muss außerdem eine bieten config.pbtxt
Datei, die die Modellkonfiguration beschreibt. Weitere Informationen zu den Konfigurationseinstellungen finden Sie unter Modellkonfiguration. Unser config.pbtxt file spezifiziert das Backend als Python und alle Eingabespalten für Rohdaten zusammen mit der vorverarbeiteten Ausgabe, die aus 15 Features besteht. Wir geben auch an, dass wir dieses Python-Vorverarbeitungsmodell auf der CPU ausführen möchten. Siehe folgenden Code:
Richten Sie ein baumbasiertes ML-Modell für das FIL-Backend ein
Als Nächstes richten wir das Modellverzeichnis für ein baumbasiertes ML-Modell wie XGBoost ein, das das FIL-Backend verwenden wird.
Das erwartete Layout für cpu_memory_repository
und gpu_memory_repository
ähneln denen, die wir zuvor gezeigt haben.
Hier FIL
ist der Name des Modells. Wir können ihm einen anderen Namen geben, z xgboost
wenn wir wollen. 1
ist das Versionsunterverzeichnis, das das Modellartefakt enthält. In diesem Fall ist es die xgboost.json
Modell, das wir gespeichert haben. Lassen Sie uns dieses erwartete Layout erstellen:
Wir brauchen die Konfigurationsdatei config.pbtxt
Beschreibung der Modellkonfiguration für das baumbasierte ML-Modell, damit das FIL-Backend in Triton verstehen kann, wie es bedient werden soll. Weitere Informationen finden Sie im neuesten Generikum Triton-Konfigurationsoptionen und die für die spezifischen Konfigurationsoptionen FIL-Backend. Wir konzentrieren uns in diesem Beispiel auf einige der häufigsten und relevantesten Optionen.
Erstellen config.pbtxt
für model_cpu_repository
:
Ebenso einrichten config.pbtxt
für model_gpu_repository
(Beachten Sie, der Unterschied ist USE_GPU = True
):
Richten Sie mithilfe von Ensembles eine Inferenzpipeline des Python-Back-Ends für die Datenvorverarbeitung und des FIL-Back-Ends ein
Jetzt können wir die Inferenzpipeline für die Datenvorverarbeitung und die baumbasierte Modellinferenz mithilfe von einrichten Ensemble-Modell. Ein Ensemble-Modell repräsentiert eine Pipeline aus einem oder mehreren Modellen und die Verbindung von Eingabe- und Ausgabetensoren zwischen diesen Modellen. Hier verwenden wir das Ensemble-Modell, um eine Pipeline der Datenvorverarbeitung im Python-Backend aufzubauen, gefolgt von XGBoost im FIL-Backend.
Das erwartete Layout für die ensemble
Model-Verzeichnis ist ähnlich wie die, die wir zuvor gezeigt haben:
Wir haben die Ensemble-Modelle erstellt config.pbtxt nach der Anleitung in Ensemble-Modelle. Wichtig ist, dass wir den Ensemble-Scheduler in einrichten müssen config.pbtxt
, die den Datenfluss zwischen Modellen innerhalb des Ensembles angibt. Der Ensemble-Scheduler sammelt die Ausgabetensoren in jedem Schritt und stellt sie gemäß der Spezifikation als Eingabetensoren für andere Schritte bereit.
Verpacken Sie das Modellrepository und laden Sie es in Amazon S3 hoch
Schließlich erhalten wir die folgende Modell-Repository-Verzeichnisstruktur, die ein Python-Vorverarbeitungsmodell und seine Abhängigkeiten zusammen mit dem XGBoost-FIL-Modell und dem Modell-Ensemble enthält.
Wir packen das Verzeichnis und seinen Inhalt als model.tar.gz
zum Hochladen auf Amazon Simple Storage-Service (Amazon S3). In diesem Beispiel haben wir zwei Möglichkeiten: Verwenden einer CPU-basierten Instanz oder einer GPU-basierten Instanz. Eine GPU-basierte Instanz ist besser geeignet, wenn Sie eine höhere Rechenleistung benötigen und CUDA-Kerne verwenden möchten.
Erstellen Sie das Modellpaket für eine CPU-basierte Instanz (optimiert für CPU) mit dem folgenden Code und laden Sie es hoch:
Erstellen Sie das Modellpaket für eine GPU-basierte Instanz (optimiert für GPU) mit dem folgenden Code und laden Sie es hoch:
Erstellen Sie einen SageMaker-Endpunkt
Wir haben jetzt die Modellartefakte in einem S3-Bucket gespeichert. In diesem Schritt können wir auch die zusätzliche Umgebungsvariable bereitstellen SAGEMAKER_TRITON_DEFAULT_MODEL_NAME
, der den Namen des von Triton zu ladenden Modells angibt. Der Wert dieses Schlüssels sollte mit dem Ordnernamen im Modellpaket übereinstimmen, das auf Amazon S3 hochgeladen wurde. Bei einem Einzelmodell ist diese Variable optional. Bei Ensemble-Modellen muss dieser Schlüssel angegeben werden, damit Triton in SageMaker gestartet werden kann.
Zusätzlich können Sie einstellen SAGEMAKER_TRITON_BUFFER_MANAGER_THREAD_COUNT
und SAGEMAKER_TRITON_THREAD_COUNT
zur Optimierung der Fadenzahlen.
Wir verwenden das vorhergehende Modell, um eine Endpunktkonfiguration zu erstellen, in der wir den Typ und die Anzahl der Instanzen angeben können, die wir im Endpunkt haben möchten
Wir verwenden diese Endpunktkonfiguration, um einen SageMaker-Endpunkt zu erstellen und zu warten, bis die Bereitstellung abgeschlossen ist. Mit SageMaker MMEs haben wir die Möglichkeit, mehrere Ensemble-Modelle zu hosten, indem wir diesen Vorgang wiederholen, aber wir bleiben für dieses Beispiel bei einer Bereitstellung:
Der Status ändert sich zu InService
wenn die Bereitstellung erfolgreich ist.
Rufen Sie Ihr auf dem SageMaker-Endpunkt gehostetes Modell auf
Nachdem der Endpunkt ausgeführt wird, können wir einige Beispiel-Rohdaten verwenden, um Rückschlüsse mit JSON als Payload-Format durchzuführen. Für das Inferenzanforderungsformat verwendet Triton die KFServing
Gemeinschaftsstandard Inferenzprotokolle. Siehe folgenden Code:
Das im Blog erwähnte Notizbuch ist im zu finden GitHub-Repository.
Best Practices
Zusätzlich zu den bereits erwähnten Optionen zur Feinabstimmung der Einstellungen des FIL-Backends können Data Scientists auch sicherstellen, dass die Eingabedaten für das Backend für die Verarbeitung durch die Engine optimiert werden. Geben Sie Daten nach Möglichkeit im Zeilenhauptformat in das GPU-Array ein. Andere Formate erfordern eine interne Konvertierung und nehmen Zyklen in Anspruch, was die Leistung verringert.
Beachten Sie aufgrund der Art und Weise, wie FIL-Datenstrukturen im GPU-Speicher verwaltet werden, die Baumtiefe. Je tiefer die Baumtiefe ist, desto größer wird Ihr GPU-Speicherbedarf sein.
Verwenden Sie das instance_group_count
-Parameter, um Worker-Prozesse hinzuzufügen und den Durchsatz des FIL-Back-Ends zu erhöhen, was zu einem höheren CPU- und GPU-Speicherverbrauch führt. Berücksichtigen Sie außerdem SageMaker-spezifische Variablen, die verfügbar sind, um den Durchsatz zu erhöhen, wie z. B. HTTP-Threads, HTTP-Puffergröße, Stapelgröße und maximale Verzögerung.
Zusammenfassung
In diesem Beitrag sind wir tief in das FIL-Backend eingetaucht, das Triton Inference Server auf SageMaker unterstützt. Dieses Backend bietet sowohl CPU- als auch GPU-Beschleunigung Ihrer baumbasierten Modelle wie den beliebten XGBoost-Algorithmus. Es gibt viele Optionen, die berücksichtigt werden müssen, um die beste Leistung für die Inferenz zu erzielen, z. B. Stapelgrößen, Dateneingabeformate und andere Faktoren, die an Ihre Anforderungen angepasst werden können. SageMaker ermöglicht es Ihnen, diese Funktion mit Endpunkten mit einem oder mehreren Modellen zu verwenden, um Leistung und Kosteneinsparungen in Einklang zu bringen.
Wir empfehlen Ihnen, die Informationen in diesem Beitrag zu lesen und zu prüfen, ob SageMaker Ihre Hosting-Anforderungen erfüllen kann, um baumbasierte Modelle bereitzustellen und Ihre Anforderungen an Kostensenkung und Workload-Leistung zu erfüllen.
Das Notebook, auf das in diesem Beitrag verwiesen wird, ist in den SageMaker-Beispielen zu finden GitHub-Repository. Außerdem finden Sie die aktuelle Dokumentation zum FIL-Backend auf GitHub.
Über die Autoren
Raghu Ramesha ist Senior ML Solutions Architect im Amazon SageMaker Service-Team. Er konzentriert sich darauf, Kunden dabei zu helfen, ML-Produktions-Workloads in großem Maßstab zu erstellen, bereitzustellen und zu SageMaker zu migrieren. Er ist auf maschinelles Lernen, KI und Computer Vision spezialisiert und hat einen Master-Abschluss in Informatik von der UT Dallas. In seiner Freizeit reist und fotografiert er gerne.
James Park ist Lösungsarchitekt bei Amazon Web Services. Er arbeitet mit Amazon.com zusammen, um Technologielösungen auf AWS zu entwerfen, zu entwickeln und bereitzustellen, und hat ein besonderes Interesse an KI und maschinellem Lernen. In seiner Freizeit sucht er gerne nach neuen Kulturen, neuen Erfahrungen und hält sich über die neuesten Technologietrends auf dem Laufenden.
Dhawal Patel ist Principal Machine Learning Architect bei AWS. Er hat mit Organisationen von großen Unternehmen bis hin zu mittelständischen Startups an Problemen im Zusammenhang mit verteiltem Computing und künstlicher Intelligenz gearbeitet. Er konzentriert sich auf Deep Learning, einschließlich NLP und Computer Vision-Domänen. Er hilft Kunden dabei, eine leistungsstarke Modellinferenz auf Amazon SageMaker zu erreichen.
Jiahong Liu ist Solution Architect im Cloud Service Provider-Team bei NVIDIA. Er unterstützt Kunden bei der Einführung von Lösungen für maschinelles Lernen und KI, die NVIDIA Accelerated Computing nutzen, um ihre Trainings- und Inferenzherausforderungen zu bewältigen. In seiner Freizeit beschäftigt er sich gerne mit Origami, DIY-Projekten und spielt Basketball.
Kshitiz Gupta ist Lösungsarchitekt bei NVIDIA. Es macht ihm Spaß, Cloud-Kunden über die GPU-KI-Technologien von NVIDIA aufzuklären und sie bei der Beschleunigung ihrer Anwendungen für maschinelles Lernen und Deep Learning zu unterstützen. Außerhalb der Arbeit geht er gerne laufen, wandern und Wildtiere beobachten.
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- PlatoAiStream. Web3-Datenintelligenz. Wissen verstärkt. Hier zugreifen.
- Die Zukunft prägen mit Adryenn Ashley. Hier zugreifen.
- Quelle: https://aws.amazon.com/blogs/machine-learning/hosting-ml-models-on-amazon-sagemaker-using-triton-xgboost-lightgbm-and-treelite-models/
- :hast
- :Ist
- :nicht
- :Wo
- $UP
- 1
- 100
- 11
- 13
- 200
- 23
- 24
- 7
- 8
- 9
- a
- Fähigkeit
- LiveBuzz
- beschleunigen
- beschleunigt
- beschleunigend
- Beschleuniger
- Zugang
- Nach
- entsprechend
- Konto
- Erreichen
- über
- hinzufügen
- Zusatz
- Zusätzliche
- Adresse
- adressierbar
- Die Annahme
- Nach der
- gegen
- Vereinbarungen
- AI
- Algorithmus
- Alle
- Zuweisungen
- erlauben
- erlaubt
- entlang
- bereits
- ebenfalls
- Obwohl
- immer
- Amazon
- Amazon Sage Maker
- Amazon Web Services
- Amazon.com
- Betrag
- an
- und
- jedem
- Bienen
- Anwendungen
- angemessen
- Architektur
- SIND
- Bereiche
- Argument
- Feld
- künstlich
- künstliche Intelligenz
- AS
- Vorlagen
- At
- Auto
- verfügbar
- vermeiden
- AWS
- Backend
- Balance
- basierend
- bash
- Grundlage
- Basketball
- BE
- weil
- werden
- war
- Bevor
- beginnen
- hinter
- unten
- Nutzen
- BESTE
- Besser
- zwischen
- größer
- Blog
- Körper
- beide
- puffern
- bauen
- Building
- erbaut
- aber
- by
- C + +
- namens
- CAN
- Karte
- Häuser
- Fälle
- Kategorie
- Verursachen
- Herausforderungen
- Übernehmen
- Charakteristik
- aus der Ferne überprüfen
- Chip
- Auswählen
- Auswahl
- Stadt
- Klasse
- Einstufung
- Auftraggeber
- Kunden
- Cloud
- Code
- Spalten
- COM
- kommt
- Kommen
- gemeinsam
- mit uns kommunizieren,
- Kommunikation
- community
- kompatibel
- Komplex
- Berechnung
- Computer
- Computerwissenschaften
- Computer Vision
- Computing
- Konfiguration
- Verbindung
- Geht davon
- betrachtet
- verbrauchen
- Verbrauch
- Container
- Behälter
- enthält
- Inhalt
- Kontrast
- Smartgeräte App
- Praktische
- Umwandlung (Conversion)
- verkaufen
- Kernbereich
- Dazugehörigen
- Kosten
- Kostenreduzierung
- Einsparmaßnahmen
- Abdeckung
- erstellen
- erstellt
- schafft
- Kriterien
- wichtig
- Zur Zeit
- Original
- Kunden
- Zyklen
- Dallas
- technische Daten
- Datum
- Tag
- Deal
- Entscheidung
- tief
- tiefe Lernen
- tiefer
- Standard
- defaults
- Grad
- verzögern
- anspruchsvoll
- Anforderungen
- Abhängig
- einsetzen
- Einsatz
- Bereitstellen
- Einsatz
- Tiefe
- Design
- Details
- Bestimmen
- entschlossen
- entschlossen
- Festlegung
- Entwickler
- Unterschied
- anders
- verteilt
- Verteiltes rechnen
- Diy
- do
- Dokumentation
- Tut nicht
- Dabei
- Domains
- erledigt
- wo
- zwei
- im
- jeder
- Früher
- Erziehung
- Effizienz
- effizient
- entweder
- Betonung
- ermöglicht
- ermutigen
- Ende
- Endpunkt
- Motor
- Motor (en)
- gewährleisten
- Gewährleistung
- Unternehmen
- Unternehmen
- Ganz
- Arbeitsumfeld
- Fehler
- Sogar
- Jedes
- Beispiel
- Beispiele
- austauschen
- erwarten
- erwartet
- Erfahrungen
- exportieren
- Faktoren
- ziemlich
- Stürze
- falsch
- Merkmal
- Eigenschaften
- Fed
- Fütterung
- wenige
- Abbildung
- Reichen Sie das
- Mappen
- Finden Sie
- Fertig
- Vorname
- Fluss
- Setzen Sie mit Achtsamkeit
- konzentriert
- folgen
- gefolgt
- Folgende
- Fußabdruck
- Aussichten für
- unten stehende Formular
- Format
- gefunden
- Unser Ansatz
- Gerüste
- Betrug
- Frei
- für
- Außerdem
- Gewinne
- Allgemeines
- erzeugt
- bekommen
- ABSICHT
- gegeben
- GPU
- sehr
- Gruppe an
- Gruppen
- die Vermittlung von Kompetenzen,
- passieren
- hart
- Hardware
- Haben
- he
- Hilfe
- Unternehmen
- hilft
- hier
- High-Level
- Hohe Leistungsfähigkeit
- höher
- Highlights
- seine
- hält
- Gastgeber
- gehostet
- Hosting
- Ultraschall
- Hilfe
- aber
- HTML
- http
- HTTPS
- Verletzt
- Identitätsschutz
- ids
- IDX
- if
- Image
- Impact der HXNUMXO Observatorien
- Einfluss hat
- implementieren
- umgesetzt
- implementiert
- Importe
- in
- das
- Einschließlich
- Erhöhung
- zeigt
- Information
- informiert
- Varianten des Eingangssignals:
- installieren
- Instanz
- Anleitung
- Integration
- Intelligenz
- Interesse
- intern
- in
- IT
- SEINE
- jpg
- JSON
- nur
- Behalten
- Wesentliche
- Art
- Wissen
- grosse
- Große Unternehmen
- größer
- Latency
- neueste
- Layout
- LERNEN
- lernen
- am wenigsten
- geführt
- legitim
- weniger
- Niveau
- Cholesterinspiegel
- Hebelwirkung
- Bibliotheken
- Bibliothek
- Gefällt mir
- LIMIT
- Line
- Liste
- Belastung
- Logik
- logisch
- Lang
- Maschine
- Maschinelles Lernen
- um
- verwalten
- viele
- Meister
- Spiel
- max
- maximal
- Kann..
- Mechanismus
- Triff
- Treffen
- Memory
- erwähnt
- Kaufmann
- Metrik
- könnte
- migriert
- Geist / Bewusstsein
- ML
- Model
- Modell
- für
- Monat
- mehr
- vor allem warme
- Am beliebtesten
- schlauer bewegen
- Multi-Modell-Endpunkt
- mehrere
- sollen
- Name
- Benennung
- nativen
- Need
- Bedürfnisse
- Neu
- Nlp
- nicht
- Fiber Node
- Notizbuch
- jetzt an
- Anzahl
- numpig
- Nvidia
- erhalten
- of
- bieten
- Angebote
- vorgenommen,
- on
- EINEM
- Einsen
- einzige
- Open-Source-
- optimal
- Optimierung
- Optimieren
- optimiert
- Optimierung
- Option
- Optionen
- or
- Auftrag
- Organisationen
- Organisiert
- ursprünglich
- OS
- Andere
- Andernfalls
- UNSERE
- Möglichkeiten für das Ausgangssignal:
- aussen
- besitzen
- Paket
- Verpackung
- Pandas
- Parallel
- Parameter
- Parameter
- teilnehmend
- besondere
- Bestanden
- leitet
- Weg
- Ausführen
- Leistung
- führt
- Erlaubnis
- Fotografie
- Pipeline
- Plattform
- Plato
- Datenintelligenz von Plato
- PlatoData
- spielend
- Bitte
- Fülle
- Politik durchzulesen
- Datenschutzrichtlinien
- Pool
- Beliebt
- Popularität
- möglich
- gegebenenfalls
- Post
- Werkzeuge
- vorhersagen
- Vorhersagbar
- vorhergesagt
- Prognose
- Prognosen
- vorher
- primär
- Principal
- Probleme
- Prozessdefinierung
- anpassen
- Verarbeitung
- Verarbeitungsleistung
- Prozessoren
- produziert
- Produktion
- Projekte
- ordnungsgemäße
- Proto
- die
- vorausgesetzt
- Versorger
- bietet
- Bereitstellung
- Python
- Pytorch
- zufällig
- Bereich
- lieber
- Roh
- bereit
- realen Welt
- Echtzeit
- Gründe
- empfehlen
- Veteran
- bezeichnet
- Ungeachtet
- Region
- bezogene
- relevant
- ersetzen
- Quelle
- Darstellung
- Darstellen
- representiert
- Anforderung
- Zugriffe
- erfordern
- falls angefordert
- Voraussetzungen:
- erfordert
- Antwort
- für ihren Verlust verantwortlich.
- Folge
- Die Ergebnisse
- Rollen
- Führen Sie
- Laufen
- s
- sagemaker
- SageMaker-Inferenz
- gleich
- Ersparnisse
- skalierbaren
- Skalieren
- Skalierung
- Szenarien
- Planung
- Wissenschaft
- Wissenschaftler
- scikit-lernen
- Ergebnis
- Abschnitt
- sehen
- auf der Suche nach
- ausgewählt
- senden
- Senior
- getrennte
- brauchen
- Dienstanbieter
- Lösungen
- Dienst
- kompensieren
- Einstellung
- Einstellungen
- Form
- von Locals geführtes
- sollte
- erklären
- Konzerte
- Seite
- bedeutend
- ähnlich
- Einfacher
- Single
- Größe
- Größen
- So
- Lösung
- Lösungen
- LÖSEN
- Auflösung
- einige
- Quelle
- spezialisiert
- spezifisch
- Spezifikation
- angegeben
- verbringen
- Standard
- Anfang
- Beginnen Sie
- Startups
- Bundesstaat
- Status
- stetig
- Schritt
- Shritte
- Lagerung
- speichern
- gelagert
- einfach
- Schnur
- Struktur
- erfolgreich
- so
- vorschlagen
- geeignet
- Support
- Unterstützte
- Unterstützt
- Nehmen
- Team
- Techniken
- Technologies
- Technologie
- erzählen
- AGB
- als
- zur Verbesserung der Gesundheitsgerechtigkeit
- Das
- die Informationen
- ihr
- Sie
- dann
- Dort.
- Diese
- vom Nutzer definierten
- Ding
- fehlen uns die Worte.
- diejenigen
- obwohl?
- nach drei
- Schwelle
- Durchsatz
- Zeit
- zu
- heute
- gemeinsam
- Top-Level
- traditionell
- trainiert
- Ausbildung
- Übertragen
- Reise
- Baum
- Trends
- Triton
- was immer dies auch sein sollte.
- XNUMX
- tippe
- Typen
- typisch
- verstehen
- hochgeladen
- Uploading
- us
- -
- benutzt
- Mitglied
- Verwendung von
- die
- Verwendung
- Wert
- Werte
- verschiedene
- Version
- Seh-
- W
- warten
- wollen
- wurde
- beobachten
- Weg..
- we
- Netz
- Web-Services
- GUT
- waren
- Was
- wann
- sobald
- ob
- welche
- während
- werden wir
- mit
- .
- ohne
- Arbeiten
- gearbeitet
- Arbeiter
- Werk
- würde
- XGBoost
- Jahr
- Du
- Ihr
- Zephyrnet
- PLZ