Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Hosten Sie mehrere Modelle in einem Container hinter einem Endpunkt
Multimodell-Endpunkte bieten eine skalierbare und kostengünstige Lösung für die Bereitstellung einer großen Anzahl von Modellen. Sie verwenden dieselbe Flotte von Ressourcen und einen gemeinsamen Server-Container, um alle Ihre Modelle zu hosten. Dies reduziert Hosting-Kosten, indem die Endpunktauslastung gegenüber der Verwendung von Einzelmodell-Endpunkten verbessert wird. Reduziert werden auch die Bereitstellungskosten, da Amazon SageMaker das Laden von Modellen im Speicher und ihre Skalierung anhand der Datenverkehrsmuster zu Ihrem Endpunkt verwaltet.
Das folgende Diagramm zeigt, wie Multimodell-Endpunkte im Vergleich zu Einzelmodell-Endpunkten funktionieren.
Multimodell-Endpunkte eignen sich ideal zum Hosten einer großen Anzahl von Modellen, die dasselbe ML-Framework auf einem gemeinsam genutzten Serving-Container verwenden. Wenn Sie eine Mischung von Modellen haben, auf die häufig bzw. selten zugegriffen wird, kann ein Multimodell-Endpunkt diesen Datenverkehr mit weniger Ressourcen und höheren Kosteneinsparungen effizient bedienen. Ihre Anwendung sollte gelegentlich auftretende Latenzeinbußen im durch Kaltstarts tolerieren, die beim Aufrufen selten verwendeter Modelle auftreten.
Multimodell-Endpunkte unterstützen das Hosten von Modellen mit CPU- und GPU-Unterstützung. Durch die Verwendung von GPU-gestützten Modellen können Sie die Kosten für die Modellbereitstellung senken, indem Sie den Endpunkt und die zugrunde liegenden beschleunigten Cpmputing-Instances stärker auslasten.
Multimodell-Endpunkte ermöglichen darüber hinaus die zeitliche gemeinsame Nutzung von Speicherressourcen über Ihre Modelle hinweg. Dies funktioniert am besten, wenn die Modelle in Größe und Aufruflatenz recht ähnlich sind. In diesem Fall können Multimodell-Endpunkte Instances effektiv über alle Modelle hinweg verwenden. Wenn Sie Modelle mit deutlich höheren Transaktionen pro Sekunde (TPS) oder Latenzanforderungen haben, empfehlen wir Ihnen, diese auf dedizierten Endpunkten zu hosten.
Sie können Multimodell-Endpunkte mit den folgenden Features verwenden:
AWS PrivateLink und VPCs
Serielle Inference Pipelines (es kann jedoch nur ein multimodell-fähiger Container in einer Inference-Pipeline enthalten sein)
A/B-Tests
Sie können mit Amazon Elastic Inference keine multimodell-fähigen Container verwenden.
Einen Multimodell-Endpunkt können Sie mit dem AWS SDK for Python (Boto) oder der SageMaker-Konsole erstellen. Für CPU-gestützte Multimodell-Endpunkte können Sie Ihren Endpunkt mit benutzerdefinierten Containern erstellen, indem Sie die Multimodell-Server
Themen
- Unterstützte Algorithmen, Frameworks und Instances
- Beispiel-Notebooks für Multimodell-Endpunkte
- Funktionsweise von Multimodell-Endpunkten
- Einstellen des Caching-Verhaltens von SageMaker für Multimodell-Endpunkte
- Instance-Empfehlungen für Bereitstellungen von Multimodell-Endpunkten
- Erstellen eines Multimodell-Endpunkts
- Aufrufen eines Multimodell-Endpunkts
- Hinzufügen oder Entfernen von Modellen
- Erstellen Sie Ihren eigenen Container für SageMaker-Multimodell-Endpunkte
- Sicherheit eines Multimodell-Endpunkts
- CloudWatch-Kennzahlen für Multimodell-Endpunkt-Bereitstellungen
- Legen Sie Auto-Scaling-Richtlinien für die Bereitstellung von Multimodell-Endpunkten fest
Unterstützte Algorithmen, Frameworks und Instances
Informationen zu den Algorithmen, Frameworks und Instance-Typen, die Sie mit Multimodell-Endpunkten verwenden können, finden Sie in den folgenden Abschnitten.
Unterstützte Algorithmen, Frameworks und Instances für Multimodell-Endpunkte, die CPU-gestützte Instances verwenden
Die Inference-Container für die folgenden Algorithmen und Frameworks unterstützen Multimodell-Endpunkte:
Um ein anderes Framework oder einen anderen Algorithmus zu verwenden, nutzen Sie das SageMaker Inference Toolkit, um einen Container zu erstellen, der Multimodell-Endpunkte unterstützt. Weitere Informationen finden Sie unter Erstellen Sie Ihren eigenen Container für SageMaker-Multimodell-Endpunkte.
Multimodell-Endpunkte unterstützen CPU-Instances jedes Typs.
Unterstützte Algorithmen, Frameworks und Instances für Multimodell-Endpunkte, die GPU-gestützte Instances verwenden
Das Hosten mehrerer GPU-gestützter Modelle auf Multimodell-Endpunkten wird über den SageMaker Triton Inference Server unterstützt. Dies unterstützt alle wichtigen Inference Frameworks wie NVIDIA® TensorRT™, PyTorch, MXNet, Python, ONNX, XGBoost, Scikit-Learn, RandomForest, OpenVINO, benutzerdefiniertes C++ u.v.m.
Um ein anderes Framework oder einen anderen Algorithmus zu verwenden, können Sie das Triton-Backend für Python oder C++ verwenden, um Ihre Modelllogik zu schreiben und jedes benutzerdefinierte Modell bereitzustellen. Sobald Sie den Server bereit haben, können Sie damit beginnen, Hunderte von Deep-Learning-Modellen hinter einem Endpunkt bereitzustellen.
Multimodell-Endpunkte unterstützen GPU-Instances der folgenden Typen:
Instance-Familie | Instance-Typ | vCPUs | GiB Arbeitsspeicher pro vCPU | GPUs | GPU-Arbeitsspeicher |
---|---|---|---|---|---|
p2 |
ml.p2.xlarge |
4 |
15,25 |
1 |
12 |
p3 |
ml.p3.2xlarge |
8 |
7,62 |
1 |
16 |
g5 |
ml.g5.xlarge |
4 |
4 |
1 |
24 |
g5 |
ml.g5.2xlarge |
8 |
4 |
1 |
24 |
g5 |
ml.g5.4xlarge |
16 |
4 |
1 |
24 |
g5 |
ml.g5.8xlarge |
32 |
4 |
1 |
24 |
g5 |
ml.g5.16xlarge |
64 |
4 |
1 |
24 |
g4dn |
ml.g4dn.xlarge |
4 |
4 |
1 |
16 |
g4dn |
ml.g4dn.2xlarge |
8 |
4 |
1 |
16 |
g4dn |
ml.g4dn.4xlarge |
16 |
4 |
1 |
16 |
g4dn |
ml.g4dn.8xlarge |
32 |
4 |
1 |
16 |
g4dn |
ml.g4dn.16xlarge |
64 |
4 |
1 |
16 |
Beispiel-Notebooks für Multimodell-Endpunkte
Weitere Informationen zur Verwendung von Multimodell-Endpunkten finden Sie evtl. in den folgenden Beispiel-Notebooks:
-
Beispiele für Multimodell-Endpunkte, die CPU-gestützte Instances verwenden:
XGBoost-Beispiel-Notebook für Multimodell-Endpunkte
- Dieses Notebook zeigt, wie Sie mehrere XGBoost-Modelle für einen Endpunkt bereitstellen. Beispiel-Notebook zu Multimodell-Endpunkten BYOC
- Diese Notebook zeigt, wie der Container eines Kunden eingerichtet und bereitgestellt wird, der Multimodell-Endpunkte in SageMaker unterstützt.
-
Beispiel für Multimodell-Endpunkte, die GPU-gestützte Instances verwenden:
Mehrere Deep-Learning-Modelle auf GPUs ausführen mit Amazon SageMaker Multimodell-Endpunkten (MME)
- Dieses Notizbuch zeigt, wie Sie mit Hilfe eines NVIDIA Triton Inference-Containers ResNet-50-Modelle auf einem Multimodell-Endpunkt bereitstellen können.
Anweisungen dazu, wie Jupyter-Notebook-Instances erstellt werden, mit denen Sie die obigen Beispiel ausführen können, und wie der Zugriff darauf erfolgt, finden Sie unter Amazon- SageMaker Notebook-Instances. Sobald Sie eine Notebook-Instance erstellt und diese geöffnet haben, wählen Sie die Registerkarte SageMaker-Beispiele aus, um eine Liste aller SageMaker-Beispiele anzuzeigen. Die Notebooks für Multimodell-Endpunkte finden Sie im Abschnitt ADVANCED FUNCTIONALITY. Zum Öffnen eines Notebooks wählen Sie die Registerkarte Use (Verwenden) und dann Create copy (Kopie erstellen) aus.
Weitere Informationen zu Anwendungsfällen für Multimodell-Endpunkte finden Sie in den folgenden Blogs und Ressourcen:
Funktionsweise von Multimodell-Endpunkten
SageMaker verwaltet den Lebenszyklus von Modellen, die auf Multimodell-Endpunkten im Speicher des Containers gehostet werden. Anstatt alle Modelle aus einem Amazon S3-Bucket in den Container herunterzuladen, wenn Sie den Endpunkt erstellen, lädt SageMaker sie dynamisch und lädt sie beim Aufrufen in den Cache. Wenn SageMaker eine Aufrufanfrage für ein bestimmtes Modell empfängt, führt es folgende Schritte aus:
-
Er leitet die Anforderung an eine Instance hinter dem Endpunkt weiter.
-
Er lädt das Modell aus dem S3-Bucket auf das Speicher-Volume dieser Instance herunter.
-
Lädt das Modell in den Speicher des Containers (CPU oder GPU, je nachdem, ob Sie über CPU- oder GPU-gestützte Instances verfügen) auf dieser beschleunigten Computing-Instance. Wenn das Modell bereits in den Speicher des Containers geladen wurde, erfolgt der Aufruf schneller, da SageMaker es nicht erst herunterladen und laden muss.
SageMaker leitet weiterhin Anforderungen für ein Modell an die Instance weiter, wo das Modell bereits geladen ist. Wenn das Modell allerdings viele Aufrufanfragen empfängt und es für den Multimodell-Endpunkt zusätzliche Instances gibt, leitet SageMaker einige der Anfragen an eine andere Instance weiter, um dem Datenverkehr gerecht zu werden. Wenn das Modell noch nicht auf die zweite Instance geladen wurde, wird das Modell auf das Speicher-Volume dieser Instance heruntergeladen und in den Speicher des Containers geladen.
Wenn die Speicherauslastung einer Instance hoch ist und SageMaker ein weiteres Modell in den Speicher laden muss, werden nicht verwendete Modelle aus dem Container dieser Instance entfernt, damit genügend Speicher zum Laden des Modells vorhanden ist. Entfernte Modelle verbleiben auf dem Speicher-Volume der Instance und können später in den Speicher des Containers geladen werden, ohne dass sie erneut aus dem S3-Bucket heruntergeladen werden müssen. Wenn das Speicher-Volume der Instance seine maximale Kapazität erreicht, löscht SageMaker alle nicht verwendeten Modelle aus dem Speicher.
Um ein Modell zu löschen, beenden Sie das Senden von Anforderungen und löschen es aus dem S3-Bucket. SageMaker bietet Funktionen für Multimodell-Endpunkte in einem Server-Container an. Das Hinzufügen von Modellen zu einem Multimodell-Endpunkt und ihr Löschen erfordert keine Aktualisierung des Endpunkts selbst. Um ein Modell hinzuzufügen, laden Sie es in den S3-Bucket hoch und rufen Sie es auf. Um sie verwenden zu können, sind keine Codeänderungen erforderlich.
Anmerkung
Wenn Sie einen Multimodell-Endpunkt aktualisieren, kann es bei Aufrufanfragen auf dem Endpunkt zunächst zu höheren Latenzen kommen, da sich Smart Routing auf Multimodell-Endpunkten an das Muster Ihres Datenverkehrs anpasst. Sobald es allerdings das Muster Ihres Datenverkehrs kennt, kann es bei den am häufigsten verwendeten Modellen zu niedrigen Latenzen kommen. Bei weniger häufig verwendeten Modellen kann es zu Kaltstart-Latenzen kommen, da die Modelle dynamisch in eine Instance geladen werden.
Einstellen des Caching-Verhaltens von SageMaker für Multimodell-Endpunkte
Multimodell-Endpunkte speichern häufig verwendete Modelle standardmäßig im Arbeitsspeicher (CPU oder GPU, je nachdem, ob Sie über CPU- oder GPU-gestützte Instances verfügen) und auf der Festplatte zwischen, um Inferences mit geringer Latenz zu ermöglichen. Die zwischengespeicherten Modelle werden nur dann entladen und/oder von der Festplatte gelöscht, wenn einem Container nicht mehr genügend Arbeitsspeicher oder Festplattenspeicher für ein neues Zielmodell zur Verfügung steht.
Sie können das Caching-Verhalten eines Multimodell-Endpunkts ändern und das Modell-Caching explizit aktivieren oder deaktivieren, indem Sie den Parameter ModelCacheSetting
beim Aufrufen von create_model
Wir empfehlen, den Wert des Parameters ModelCacheSetting
für Anwendungsfälle, die nicht vom Modell-Caching profitieren, auf Disabled
festzulegen. Wenn eine große Anzahl von Modellen z.B. vom Endpunkt aus bedient werden müssen, jedes Modell aber nur einmal (oder sehr selten) aufgerufen wird. Bei solchen Anwendungsfällen erlaubt die Einstellung des Parameterwerts ModelCacheSetting
auf Disabled
höhere Transaktionen pro Sekunde (TPS) für invoke_endpoint
Anfragen im Vergleich zum Standard-Caching-Modus. Ein höherer TPS ist bei diesen Anwendungsfällen darauf zurückzuführen, dass SageMaker nach der invoke_endpoint
Anfrage wie folgt vorgeht:
-
Es entlädt das Modell asynchron aus dem Speicher und löscht es unmittelbar nach dem Aufruf von der Festplatte.
-
Es bietet eine höhere Parallelität beim Herunterladen und Laden von Modellen in den Inference-Container. Sowohl für CPU- als auch für GPU-gestützte Endpunkte ist die Parallelität ein Faktor der Anzahl der vCPUs der Container-Instance.
Richtlinien zur Auswahl eines SageMaker ML-Instance-Typs für einen Multimodell-Endpunkt finden Sie unter Instance-Empfehlungen für Bereitstellungen von Multimodell-Endpunkten.
Instance-Empfehlungen für Bereitstellungen von Multimodell-Endpunkten
Bei der Auswahl eines SageMaker ML-Instance-Typs für einen Multimodell-Endpunkt sind mehrere Dinge zu berücksichtigen:
Stellen Sie ausreichend Amazon Elastic Block Store (Amazon EBS)-Kapazität für alle Modelle bereit, die bereitgestellt werden müssen.
Wägen Sie Leistung (Minimierung von Kaltstarts) und Kosten (keine übermäßige Bereitstellung von Instance-Kapazität) gegeneinander auf. Hinweise zur Größe des Speichervolumens, das SageMaker für jeden Instance-Typ für einen Endpunkt und für einen Multimodell-Endpunkt zuweist, finden Sie unter Speichervolumen der Host-Instance.
Bei einem Container, der für die Ausführung im
MultiModel
-Modus konfiguriert ist, verfügt das für seine Instances bereitgestellte Speichervolume über mehr Speicher als im StandardmodusSingleModel
. Somit können mehr Modelle im Instance-Speicher zwischengespeichert werden als imSingleModel
-Modus.
Berücksichtigen Sie bei der Auswahl eines SageMaker-ML-Instance-Typs Folgendes:
-
Multimodell-Endpunkte werden derzeit für alle CPU-Instance-Typen und für Single-GPU-Instance-Typen unterstützt.
-
Bei der Datenverkehrsverteilung (Zugriffsmuster) auf die Modelle, die hinter dem Multimodell-Endpunkt gehostet werden sollen, zusammen mit der Modellgröße (wie viele Modelle in den Speicher der Instance geladen werden könnten) ist folgendes zu berücksichtigen:
-
Stellen Sie sich die Größe des Speichers auf einer Instance als Cache-Speicherplatz vor, in den Modelle geladen werden können, und stellen Sie sich die Anzahl der vCPUs als Parallelitätslimit für die Durchführung von Inferences auf den geladenen Modellen vor (unter der Annahme, dass das Aufrufen eines Modells an die CPU gebunden ist).
-
Bei CPU-gestützten Instances wirkt sich die Anzahl der vCPUs auf die maximale Anzahl gleichzeitiger Aufrufe pro Instance aus (unter der Annahme, dass das Aufrufen eines Modells an die CPU gebunden ist). Mit mehr vCPUs können Sie mehr eindeutige Modelle gleichzeitig aufrufen.
-
Bei GPU-gestützten Instances können Sie mit mehr Instance- und GPU-Speicher mehr Modelle laden und für Inference-Anfragen bereithalten.
-
Halten Sie für CPU- und GPU-gestützte Instances eine gewisse Menge an „Reservespeicher“ bereit, damit nicht genutzte Modelle entladen werden können, insbesondere bei Multimodell-Endpunkten mit mehreren Instances. Wenn eine Instance oder eine Availability Zone ausfällt, werden die Modelle dieser Instances an andere Instances hinter dem Endpunkt umgeleitet.
-
-
Bestimmen Sie Ihre Toleranz gegenüber Lade-/Herunterladezeiten:
-
Familien vom Instance-Typ d (z.B. m5d, c5d oder r5d) und g5s verfügen über eine NVMe-SSD (nicht-flüchtiger Speicher-Express), die eine hohe E/A-Leistung bietet und die Zeit zum Herunterladen von Modellen in den Speicher und zum Laden des Modells aus dem Speicher verkürzt.
-
Da die Instance-Typen d und g5 mit einem NVMe-SSD-Speicher geliefert werden, fügt SageMaker an diese ML-Datenverarbeitungs-Instances keinen Amazon EBS-Speicher an, auf dem der Multimodell-Endpunkt gehostet wird. Auto Scaling funktioniert am besten, wenn die Modelle ähnlich dimensioniert und homogen sind, d.h. wenn sie ähnliche Inference-Latenz- und Ressourcenanforderungen haben.
-
Sie können auch die folgenden Anleitungen verwenden, um das Laden von Modellen auf Ihre Multimodell-Endpunkte zu optimieren:
Wählen Sie einen Instance-Typ, der nicht alle Zielmodelle im Speicher aufnehmen kann
In manchen Fällen wollen Sie vielleicht die Kosten senken, indem Sie einen Instance-Typ wählen, der nicht alle Zielmodelle gleichzeitig im Speicher aufnehmen kann. SageMaker entlädt Modelle dynamisch, wenn der Speicherplatz knapp wird, um Platz für ein neues Zielmodell zu schaffen. Bei selten angeforderten Modellen verlieren Sie die dynamische Latenz beim Laden. In Fällen mit strengeren Latenzanforderungen können Sie sich für größere Instance-Typen oder mehr Instances entscheiden. Wenn Sie vorab Zeit für Leistungstests und Analysen investieren, können Sie Produktionsbereitstellungen erfolgreich durchführen.
Auswertung der Treffer im Modell-Cache
Mit Amazon CloudWatch-Kennzahlen können Sie Ihre Modelle bewerten. Weitere Informationen zu Kennzahlen, die Sie mit Multimodell-Endpunkten verwenden können, finden Sie unter CloudWatch-Kennzahlen für Multimodell-Endpunkt-Bereitstellungen .
Sie können mithilfe der Average
-Statistik der Metrik ModelCacheHit
das Verhältnis von Anforderungen überwachen, bei denen das Modell bereits geladen ist. Sie können mithilfe der SampleCount
-Statistik für die Metrik ModelUnloadingTime
die Anzahl der Entladungsanforderungen überwachen, die während eines Zeitraums an den Container gesendet werden. Wenn Modelle zu häufig entladen werden (ein Anzeichen für Thrashing, bei dem Modelle entladen und wieder geladen werden, da für den Arbeitssatz von Modellen nicht genügend Cache-Platz zur Verfügung steht), sollten Sie einen größeren Instance-Typ mit mehr Speicher verwenden oder die Anzahl der Instances hinter dem Multimodell-Endpunkt erhöhen. Beachten Sie bei Multimodell-Endpunkten mit mehreren Instances, dass ein Modell möglicherweise auf mehr als eine Instance geladen wird.