Da Kunden ihre Migrationen in die Cloud beschleunigen und ihr Unternehmen transformieren, geraten einige in Situationen, in denen sie den IT-Betrieb in einer Multicloud-Umgebung verwalten müssen. Beispielsweise könnten Sie ein Unternehmen übernommen haben, das bereits bei einem anderen Cloud-Anbieter lief, oder Sie verfügen möglicherweise über eine Arbeitslast, die aus den einzigartigen Funktionen von AWS einen Mehrwert generiert. Ein weiteres Beispiel sind unabhängige Softwareanbieter (ISVs), die ihre Produkte und Dienstleistungen zum Nutzen ihrer Endkunden auf verschiedenen Cloud-Plattformen verfügbar machen. Oder eine Organisation ist möglicherweise in einer Region tätig, in der kein primärer Cloud-Anbieter verfügbar ist, und kann zur Erfüllung der Datensouveränitäts- oder Datenresidenzanforderungen einen sekundären Cloud-Anbieter nutzen.
Wenn Sie in diesen Szenarien beginnen, generative KI, große Sprachmodelle (LLMs) und Technologien des maschinellen Lernens (ML) als Kernbestandteile Ihres Unternehmens zu nutzen, suchen Sie möglicherweise nach Optionen, die Sie nutzen können AWS KI und ML Funktionen außerhalb von AWS in einer Multicloud-Umgebung. Beispielsweise möchten Sie möglicherweise Folgendes nutzen Amazon Sage Maker um ein ML-Modell zu erstellen und zu trainieren oder zu verwenden Amazon SageMaker-Jumpstart um vorgefertigte Basismodelle oder ML-Modelle von Drittanbietern bereitzustellen, die Sie mit nur wenigen Klicks bereitstellen können. Oder Sie möchten vielleicht davon profitieren Amazonas Grundgestein um generative KI-Anwendungen zu erstellen und zu skalieren, oder Sie können diese nutzen Vorab trainierte KI-Dienste von AWS, für die Sie keine maschinellen Lernfähigkeiten erlernen müssen. AWS bietet Unterstützung für Szenarien, in denen Unternehmen dies wünschen Bringen Sie ihr eigenes Modell zu Amazon SageMaker or in Amazon SageMaker Canvas für Vorhersagen.
In diesem Beitrag demonstrieren wir eine der vielen Optionen, die Ihnen zur Verfügung stehen, um die umfassendsten und umfassendsten KI/ML-Funktionen von AWS in einer Multicloud-Umgebung zu nutzen. Wir zeigen, wie Sie ein ML-Modell in AWS erstellen und trainieren und das Modell auf einer anderen Plattform bereitstellen können. Wir trainieren das Modell mit Amazon SageMaker und speichern die Modellartefakte darin Amazon Simple Storage-Service (Amazon S3) und stellen Sie das Modell in Azure bereit und führen Sie es aus. Dieser Ansatz ist von Vorteil, wenn Sie AWS-Services für ML für den umfassendsten Funktionsumfang nutzen, Ihr Modell jedoch in einer der von uns besprochenen Situationen bei einem anderen Cloud-Anbieter ausführen müssen.
Schlüssel Konzepte
Amazon SageMaker-Studio ist eine webbasierte, integrierte Entwicklungsumgebung (IDE) für maschinelles Lernen. Mit SageMaker Studio können Datenwissenschaftler, ML-Ingenieure und Dateningenieure auf einer Weboberfläche Daten vorbereiten, ML-Modelle erstellen, trainieren und bereitstellen. Mit SageMaker Studio können Sie auf speziell entwickelte Tools für jede Phase des ML-Entwicklungslebenszyklus zugreifen, von der Datenvorbereitung bis zur Erstellung, Schulung und Bereitstellung Ihrer ML-Modelle, wodurch die Produktivität des Data-Science-Teams um das bis zu Zehnfache gesteigert wird. SageMaker Studio-Notizbücher sind Schnellstart-Notizbücher für die Zusammenarbeit, die sich in speziell entwickelte ML-Tools in SageMaker und anderen AWS-Diensten integrieren lassen.
SageMaker ist ein umfassender ML-Dienst, der es Geschäftsanalysten, Datenwissenschaftlern und MLOps-Ingenieuren ermöglicht, ML-Modelle für jeden Anwendungsfall zu erstellen, zu trainieren und bereitzustellen, unabhängig von ML-Kenntnissen.
AWS bietet Deep-Learning-Container (DLCs) für beliebte ML-Frameworks wie PyTorch, TensorFlow und Apache MXNet, die Sie mit SageMaker für Training und Inferenz verwenden können. DLCs sind als Docker-Images in verfügbar Amazon Elastic Container-Registrierung (Amazon ECR). Die Docker-Images sind vorinstalliert und werden mit den neuesten Versionen beliebter Deep-Learning-Frameworks sowie anderen für Training und Inferenz erforderlichen Abhängigkeiten getestet. Eine vollständige Liste der vorgefertigten Docker-Images, die von SageMaker verwaltet werden, finden Sie unter Docker-Registrierungspfade und Beispielcode. Amazon ECR unterstützt Sicherheitsscans und ist in integriert Amazon-Inspektor Schwachstellenverwaltungsdienst zur Erfüllung der Image-Compliance-Sicherheitsanforderungen Ihres Unternehmens und zur Automatisierung der Schwachstellenbewertungsprüfung. Auch Organisationen können nutzen AWS-Training und AWS-Inferenz für ein besseres Preis-Leistungs-Verhältnis für die Ausführung von ML-Trainingsjobs oder Inferenzen.
Lösungsüberblick
In diesem Abschnitt beschreiben wir, wie Sie mit SageMaker ein Modell erstellen und trainieren und das Modell in Azure Functions bereitstellen. Wir verwenden ein SageMaker Studio-Notebook, um das Modell zu erstellen, zu trainieren und bereitzustellen. Wir trainieren das Modell in SageMaker mithilfe eines vorgefertigten Docker-Images für PyTorch. Obwohl wir in diesem Fall das trainierte Modell in Azure bereitstellen, können Sie den gleichen Ansatz verwenden, um das Modell auf anderen Plattformen bereitzustellen, beispielsweise vor Ort oder auf anderen Cloud-Plattformen.
Wenn wir einen Trainingsjob erstellen, startet SageMaker die ML-Recheninstanzen und verwendet unseren Trainingscode und den Trainingsdatensatz, um das Modell zu trainieren. Die resultierenden Modellartefakte und andere Ausgaben werden in einem S3-Bucket gespeichert, den wir als Eingabe für den Trainingsjob angeben. Wenn das Modelltraining abgeschlossen ist, verwenden wir das Öffnen Sie den Austausch neuronaler Netze (ONNX)-Laufzeitbibliothek zum Exportieren des PyTorch-Modells als ONNX-Modell.
Schließlich stellen wir das ONNX-Modell zusammen mit einem in Python geschriebenen benutzerdefinierten Inferenzcode über die Azure-CLI für Azure Functions bereit. ONNX unterstützt die meisten davon häufig verwendete ML-Frameworks und -Tools. Zu beachten ist, dass die Konvertierung eines ML-Modells in ONNX nützlich ist, wenn Sie ein anderes Zielbereitstellungsframework verwenden möchten, beispielsweise PyTorch in TensorFlow. Wenn Sie auf der Quelle und dem Ziel dasselbe Framework verwenden, müssen Sie das Modell nicht in das ONNX-Format konvertieren.
Das folgende Diagramm veranschaulicht die Architektur für diesen Ansatz.
Wir verwenden ein SageMaker Studio-Notizbuch zusammen mit dem SageMaker Python-SDK um unser Modell aufzubauen und zu trainieren. Das SageMaker Python SDK ist eine Open-Source-Bibliothek zum Trainieren und Bereitstellen von ML-Modellen auf SageMaker. Weitere Einzelheiten finden Sie unter Erstellen oder öffnen Sie ein Amazon SageMaker Studio-Notizbuch.
Die Codeausschnitte in den folgenden Abschnitten wurden in der Notebook-Umgebung SageMaker Studio mit dem Data Science 3.0-Image und dem Python 3.0-Kernel getestet.
In dieser Lösung demonstrieren wir die folgenden Schritte:
- Trainieren Sie ein PyTorch-Modell.
- Exportieren Sie das PyTorch-Modell als ONNX-Modell.
- Verpacken Sie das Modell und den Inferenzcode.
- Stellen Sie das Modell für Azure Functions bereit.
Voraussetzungen:
Folgende Voraussetzungen sollten Sie mitbringen:
- Ein AWS-Konto.
- Eine SageMaker-Domäne und ein SageMaker Studio-Benutzer. Anweisungen zum Erstellen dieser finden Sie unter Integrieren Sie die Amazon SageMaker-Domäne mithilfe der Schnelleinrichtung.
- Die Azure-CLI.
- Zugriff auf Azure und Anmeldeinformationen für einen Dienstprinzipal, der über Berechtigungen zum Erstellen und Verwalten von Azure-Funktionen verfügt.
Trainieren Sie ein Modell mit PyTorch
In diesem Abschnitt beschreiben wir die Schritte zum Trainieren eines PyTorch-Modells.
Installieren Sie Abhängigkeiten
Installieren Sie die Bibliotheken, um die für das Modelltraining und die Modellbereitstellung erforderlichen Schritte auszuführen:
pip install torchvision onnx onnxruntime
Schließen Sie die Ersteinrichtung ab
Wir beginnen mit dem Importieren der AWS SDK für Python (Boto3) und für SageMaker Python-SDK. Im Rahmen des Setups definieren wir Folgendes:
- Ein Sitzungsobjekt, das praktische Methoden im Kontext von SageMaker und unserem eigenen Konto bereitstellt.
- Ein SageMaker-Rollen-ARN, der zum Delegieren von Berechtigungen an den Schulungs- und Hostingdienst verwendet wird. Wir benötigen dies, damit diese Dienste auf die S3-Buckets zugreifen können, in denen unsere Daten und Modelle gespeichert sind. Anweisungen zum Erstellen einer Rolle, die Ihren Geschäftsanforderungen entspricht, finden Sie unter SageMaker-Rollen. Für diesen Beitrag verwenden wir dieselbe Ausführungsrolle wie unsere Studio-Notebook-Instanz. Wir bekommen diese Rolle per Anruf
sagemaker.get_execution_role()
. - Die Standardregion, in der unser Trainingsjob ausgeführt wird.
- Der Standard-Bucket und das Präfix, die wir zum Speichern der Modellausgabe verwenden.
Siehe folgenden Code:
import sagemaker
import boto3
import os execution_role = sagemaker.get_execution_role()
region = boto3.Session().region_name
session = sagemaker.Session()
bucket = session.default_bucket()
prefix = "sagemaker/mnist-pytorch"
Erstellen Sie den Trainingsdatensatz
Wir verwenden den im öffentlichen Bucket verfügbaren Datensatz sagemaker-example-files-prod-{region}
. Der Datensatz enthält die folgenden Dateien:
- train-images-idx3-ubyte.gz – Enthält Trainingssatzbilder
- train-labels-idx1-ubyte.gz – Enthält Trainingsset-Beschriftungen
- t10k-images-idx3-ubyte.gz – Enthält Testsatzbilder
- t10k-labels-idx1-ubyte.gz – Enthält Testset-Etiketten
Wir nutzen dietorchvision.datasets
Modul, um die Daten lokal aus dem öffentlichen Bucket herunterzuladen, bevor sie in unseren Trainingsdaten-Bucket hochgeladen werden. Wir übergeben diesen Bucket-Standort als Eingabe an den SageMaker-Trainingsjob. Unser Trainingsskript verwendet diesen Speicherort, um die Trainingsdaten herunterzuladen und vorzubereiten und dann das Modell zu trainieren. Siehe den folgenden Code:
MNIST.mirrors = [ f"https://sagemaker-example-files-prod-{region}.s3.amazonaws.com/datasets/image/MNIST/"
] MNIST( "data", download=True, transform=transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))] ),
)
Erstellen Sie das Trainingsskript
Mit SageMaker können Sie Ihr eigenes Modell verwenden Skriptmodus. Im Skriptmodus können Sie die vorgefertigten SageMaker-Container verwenden und Ihr eigenes Trainingsskript bereitstellen, das die Modelldefinition sowie alle benutzerdefinierten Bibliotheken und Abhängigkeiten enthält. Der SageMaker Python-SDK übergibt unser Skript als entry_point
an den Container, der die Train-Funktion aus dem bereitgestellten Skript lädt und ausführt, um unser Modell zu trainieren.
Wenn das Training abgeschlossen ist, speichert SageMaker die Modellausgabe im S3-Bucket, den wir als Parameter für den Trainingsjob bereitgestellt haben.
Unser Schulungscode ist wie folgt angepasst PyTorch-Beispielskript. Der folgende Auszug aus dem Code zeigt die Modelldefinition und die Zugfunktion:
# define network class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout(0.25) self.dropout2 = nn.Dropout(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output
# train def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break
Trainiere das Modell
Nachdem wir nun unsere Umgebung eingerichtet und unseren Eingabedatensatz und ein benutzerdefiniertes Trainingsskript erstellt haben, können wir mit dem Modelltraining mit SageMaker beginnen. Wir verwenden den PyTorch-Schätzer im SageMaker Python SDK, um einen Trainingsauftrag für SageMaker zu starten. Wir übergeben die erforderlichen Parameter an den Schätzer und rufen die Fit-Methode auf. Wenn wir fit für den PyTorch-Schätzer aufrufen, startet SageMaker einen Trainingsjob mit unserem Skript als Trainingscode:
from sagemaker.pytorch import PyTorch output_location = f"s3://{bucket}/{prefix}/output"
print(f"training artifacts will be uploaded to: {output_location}") hyperparameters={ "batch-size": 100, "epochs": 1, "lr": 0.1, "gamma": 0.9, "log-interval": 100
} instance_type = "ml.c4.xlarge"
estimator = PyTorch( entry_point="train.py", source_dir="code", # directory of your training script role=execution_role, framework_version="1.13", py_version="py39", instance_type=instance_type, instance_count=1, volume_size=250, output_path=output_location, hyperparameters=hyperparameters
) estimator.fit(inputs = { 'training': f"{inputs}", 'testing': f"{inputs}"
})
Exportieren Sie das trainierte Modell als ONNX-Modell
Nachdem das Training abgeschlossen ist und unser Modell am vordefinierten Speicherort in Amazon S3 gespeichert ist, exportieren wir das Modell mithilfe der ONNX-Laufzeit in ein ONNX-Modell.
Wir fügen den Code zum Exportieren unseres Modells nach ONNX in unser Trainingsskript ein, das nach Abschluss des Trainings ausgeführt wird.
PyTorch exportiert das Modell nach ONNX, indem es das Modell mit unserer Eingabe ausführt und eine Spur der zur Berechnung der Ausgabe verwendeten Operatoren aufzeichnet. Wir verwenden mit PyTorch eine zufällige Eingabe des richtigen Typs torch.onnx.export
Funktion zum Exportieren des Modells nach ONNX. Wir geben auch die erste Dimension in unserer Eingabe als dynamisch an, damit unser Modell eine Variable akzeptiert batch_size
der Eingaben während der Inferenz.
def export_to_onnx(model, model_dir, device): logger.info("Exporting the model to onnx.") dummy_input = torch.randn(1, 1, 28, 28).to(device) input_names = [ "input_0" ] output_names = [ "output_0" ] path = os.path.join(model_dir, 'mnist-pytorch.onnx') torch.onnx.export(model, dummy_input, path, verbose=True, input_names=input_names, output_names=output_names, dynamic_axes={'input_0' : {0 : 'batch_size'}, # variable length axes 'output_0' : {0 : 'batch_size'}})
ONNX ist ein offenes Standardformat für Deep-Learning-Modelle, das die Interoperabilität zwischen Deep-Learning-Frameworks wie PyTorch, Microsoft Cognitive Toolkit (CNTK) und mehr ermöglicht. Das bedeutet, dass Sie jedes dieser Frameworks verwenden können, um das Modell zu trainieren und die vorab trainierten Modelle anschließend im ONNX-Format zu exportieren. Durch den Export des Modells nach ONNX profitieren Sie von einer größeren Auswahl an Bereitstellungsgeräten und -plattformen.
Laden Sie die Modellartefakte herunter und extrahieren Sie sie
Das ONNX-Modell, das unser Trainingsskript gespeichert hat, wurde von SageMaker nach Amazon S3 an den Ausgabeort kopiert, den wir beim Start des Trainingsjobs angegeben haben. Die Modellartefakte werden als komprimierte Archivdatei namens gespeichert model.tar.gz
. Wir laden diese Archivdatei in ein lokales Verzeichnis in unserer Studio-Notebook-Instanz herunter und extrahieren die Modellartefakte, nämlich das ONNX-Modell.
import tarfile local_model_file = 'model.tar.gz'
model_bucket,model_key = estimator.model_data.split('/',2)[-1].split('/',1)
s3 = boto3.client("s3")
s3.download_file(model_bucket,model_key,local_model_file) model_tar = tarfile.open(local_model_file)
model_file_name = model_tar.next().name
model_tar.extractall('.')
model_tar.close()
Validieren Sie das ONNX-Modell
Das ONNX-Modell wird in eine Datei mit dem Namen exportiert mnist-pytorch.onnx
durch unser Trainingsskript. Nachdem wir diese Datei heruntergeladen und extrahiert haben, können wir optional das ONNX-Modell mithilfe von validieren onnx.checker
Modul. Das check_model
Die Funktion in diesem Modul prüft die Konsistenz eines Modells. Wenn der Test fehlschlägt, wird eine Ausnahme ausgelöst.
import onnx onnx_model = onnx.load("mnist-pytorch.onnx")
onnx.checker.check_model(onnx_model)
Verpacken Sie das Modell und den Inferenzcode
Für diesen Beitrag verwenden wir die .zip-Bereitstellung für Azure Functions. Bei dieser Methode verpacken wir unser Modell, den zugehörigen Code und die Azure Functions-Einstellungen in einer ZIP-Datei und veröffentlichen sie in Azure Functions. Der folgende Code zeigt die Verzeichnisstruktur unseres Bereitstellungspakets:
mnist-onnx
├── function_app.py
├── model
│ └── mnist-pytorch.onnx
└── requirements.txt
Abhängigkeiten auflisten
Wir listen die Abhängigkeiten für unseren Inferenzcode im auf requirements.txt
Datei im Stammverzeichnis unseres Pakets. Diese Datei wird zum Erstellen der Azure Functions-Umgebung verwendet, wenn wir das Paket veröffentlichen.
azure-functions
numpy
onnxruntime
Schreiben Sie einen Inferenzcode
Wir verwenden Python, um den folgenden Inferenzcode zu schreiben, und verwenden die ONNX-Laufzeitbibliothek, um unser Modell zu laden und die Inferenz auszuführen. Dadurch wird die Azure Functions-App angewiesen, den Endpunkt am verfügbar zu machen /classify
relativer Pfad.
import logging
import azure.functions as func
import numpy as np
import os
import onnxruntime as ort
import json app = func.FunctionApp() def preprocess(input_data_json): # convert the JSON data into the tensor input return np.array(input_data_json['data']).astype('float32') def run_model(model_path, req_body): session = ort.InferenceSession(model_path) input_data = preprocess(req_body) logging.info(f"Input Data shape is {input_data.shape}.") input_name = session.get_inputs()[0].name # get the id of the first input of the model try: result = session.run([], {input_name: input_data}) except (RuntimeError) as e: print("Shape={0} and error={1}".format(input_data.shape, e)) return result[0] def get_model_path(): d=os.path.dirname(os.path.abspath(__file__)) return os.path.join(d , './model/mnist-pytorch.onnx') @app.function_name(name="mnist_classify")
@app.route(route="classify", auth_level=func.AuthLevel.ANONYMOUS)
def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') # Get the img value from the post. try: req_body = req.get_json() except ValueError: pass if req_body: # run model result = run_model(get_model_path(), req_body) # map output to integer and return result string. digits = np.argmax(result, axis=1) logging.info(type(digits)) return func.HttpResponse(json.dumps({"digits": np.array(digits).tolist()})) else: return func.HttpResponse( "This HTTP triggered function successfully.", status_code=200 )
Stellen Sie das Modell für Azure Functions bereit
Nachdem wir den Code nun im erforderlichen ZIP-Format gepackt haben, können wir ihn in Azure Functions veröffentlichen. Wir tun dies mithilfe der Azure CLI, einem Befehlszeilenprogramm zum Erstellen und Verwalten von Azure-Ressourcen. Installieren Sie die Azure CLI mit dem folgenden Code:
!pip install -q azure-cli
Führen Sie dann die folgenden Schritte aus:
- Melden Sie sich bei Azure an:
!az login
- Richten Sie die Parameter für die Ressourcenerstellung ein:
import random random_suffix = str(random.randint(10000,99999)) resource_group_name = f"multicloud-{random_suffix}-rg" storage_account_name = f"multicloud{random_suffix}" location = "ukwest" sku_storage = "Standard_LRS" functions_version = "4" python_version = "3.9" function_app = f"multicloud-mnist-{random_suffix}"
- Verwenden Sie die folgenden Befehle, um die Azure Functions-App zusammen mit den erforderlichen Ressourcen zu erstellen:
!az group create --name {resource_group_name} --location {location} !az storage account create --name {storage_account_name} --resource-group {resource_group_name} --location {location} --sku {sku_storage} !az functionapp create --name {function_app} --resource-group {resource_group_name} --storage-account {storage_account_name} --consumption-plan-location "{location}" --os-type Linux --runtime python --runtime-version {python_version} --functions-version {functions_version}
- Richten Sie die Azure-Funktionen so ein, dass bei der Bereitstellung des Funktionspakets die
requirements.txt
Die Datei wird zum Erstellen unserer Anwendungsabhängigkeiten verwendet:!az functionapp config appsettings set --name {function_app} --resource-group {resource_group_name} --settings @./functionapp/settings.json
- Konfigurieren Sie die Funktions-App so, dass sie das Python v2-Modell ausführt und einen Build auf dem Code durchführt, den sie nach der ZIP-Bereitstellung erhält:
{ "AzureWebJobsFeatureFlags": "EnableWorkerIndexing", "SCM_DO_BUILD_DURING_DEPLOYMENT": true }
- Nachdem wir die Ressourcengruppe, den Speichercontainer und die Funktions-App mit der richtigen Konfiguration haben, veröffentlichen Sie den Code in der Funktions-App:
!az functionapp deployment source config-zip -g {resource_group_name} -n {function_app} --src {function_archive} --build-remote true
Testen Sie das Modell
Wir haben das ML-Modell als HTTP-Trigger für Azure Functions bereitgestellt, was bedeutet, dass wir die Functions-App-URL verwenden können, um eine HTTP-Anfrage an die Funktion zu senden, um die Funktion aufzurufen und das Modell auszuführen.
Um die Eingabe vorzubereiten, laden Sie die Testbilddateien aus dem SageMaker-Beispieldateien-Bucket herunter und bereiten Sie eine Reihe von Beispielen im für das Modell erforderlichen Format vor:
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
import matplotlib.pyplot as plt transform=transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))]
) test_dataset = datasets.MNIST(root='../data', download=True, train=False, transform=transform)
test_loader = DataLoader(test_dataset, batch_size=16, shuffle=True) test_features, test_labels = next(iter(test_loader))
Verwenden Sie die Anforderungsbibliothek, um eine Post-Anfrage mit den Beispieleingaben an den Inferenzendpunkt zu senden. Der Inferenzendpunkt hat das im folgenden Code gezeigte Format:
import requests, json def to_numpy(tensor): return tensor.detach().cpu().numpy() if tensor.requires_grad else tensor.cpu().numpy() url = f"https://{function_app}.azurewebsites.net/api/classify"
response = requests.post(url, json.dumps({"data":to_numpy(test_features).tolist()}) )
predictions = json.loads(response.text)['digits']
Aufräumen
Wenn Sie mit dem Testen des Modells fertig sind, löschen Sie die Ressourcengruppe zusammen mit den enthaltenen Ressourcen, einschließlich des Speichercontainers und der Funktionen-App:
!az group delete --name {resource_group_name} --yes
Darüber hinaus wird empfohlen, ungenutzte Ressourcen in SageMaker Studio herunterzufahren, um die Kosten zu senken. Weitere Informationen finden Sie unter Sparen Sie Kosten, indem Sie ungenutzte Ressourcen in Amazon SageMaker Studio automatisch herunterfahren.
Zusammenfassung
In diesem Beitrag haben wir gezeigt, wie Sie mit SageMaker ein ML-Modell erstellen, trainieren und bei einem anderen Cloud-Anbieter bereitstellen können. In der Lösung verwendeten wir ein SageMaker Studio-Notebook, für Produktions-Workloads empfahlen wir jedoch die Verwendung MLOps um wiederholbare Trainingsworkflows zu erstellen, um die Modellentwicklung und -bereitstellung zu beschleunigen.
In diesem Beitrag wurden nicht alle möglichen Möglichkeiten zum Bereitstellen und Ausführen eines Modells in einer Multicloud-Umgebung aufgezeigt. Beispielsweise können Sie Ihr Modell auch zusammen mit Inferenzcode und Abhängigkeitsbibliotheken in ein Container-Image packen, um das Modell als Containeranwendung auf einer beliebigen Plattform auszuführen. Weitere Informationen zu diesem Ansatz finden Sie unter Stellen Sie Containeranwendungen in einer Multicloud-Umgebung mit Amazon CodeCatalyst bereit. Ziel des Beitrags ist es, zu zeigen, wie Unternehmen die KI/ML-Funktionen von AWS in einer Multicloud-Umgebung nutzen können.
Über die Autoren
Raja Vaidyanathan ist Lösungsarchitekt bei AWS und unterstützt globale Finanzdienstleistungskunden. Raja arbeitet mit Kunden zusammen, um Lösungen für komplexe Probleme zu entwickeln, die sich langfristig positiv auf ihr Unternehmen auswirken. Er ist ein erfahrener Ingenieur mit ausgeprägten Kenntnissen in den Bereichen IT-Strategie, Unternehmensdatenmanagement und Anwendungsarchitektur, mit besonderem Interesse an Analysen und maschinellem Lernen.
Amandeep Bajwa ist Senior Solutions Architect bei AWS und unterstützt Finanzdienstleistungsunternehmen. Er hilft Unternehmen dabei, ihre Geschäftsergebnisse zu erzielen, indem er basierend auf Branchentrends und organisatorischen Prioritäten die geeignete Cloud-Transformationsstrategie identifiziert. Zu den Bereichen, in denen Amandeep berät, gehören Cloud-Migration, Cloud-Strategie (einschließlich Hybrid- und Multi-Cloud), digitale Transformation, Daten und Analysen sowie Technologie im Allgemeinen.
Prema Iyer ist Senior Technical Account Manager für AWS Enterprise Support. Sie arbeitet mit externen Kunden an verschiedenen Projekten und hilft ihnen, den Wert ihrer Lösungen durch den Einsatz von AWS zu steigern.
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- PlatoData.Network Vertikale generative KI. Motiviere dich selbst. Hier zugreifen.
- PlatoAiStream. Web3-Intelligenz. Wissen verstärkt. Hier zugreifen.
- PlatoESG. Kohlenstoff, CleanTech, Energie, Umwelt, Solar, Abfallwirtschaft. Hier zugreifen.
- PlatoHealth. Informationen zu Biotechnologie und klinischen Studien. Hier zugreifen.
- Quelle: https://aws.amazon.com/blogs/machine-learning/train-and-deploy-ml-models-in-a-multicloud-environment-using-amazon-sagemaker/
- :hast
- :Ist
- :nicht
- :Wo
- $UP
- 1
- 10
- 100
- 13
- 25
- 28
- 32
- 7
- 9
- a
- LiveBuzz
- beschleunigen
- Akzeptiert
- Zugang
- Konto
- Erreichen
- erworben
- Vorteil
- Nach der
- AI
- AI / ML
- Alle
- erlaubt
- entlang
- bereits
- ebenfalls
- Obwohl
- Amazon
- Amazon Sage Maker
- Amazon SageMaker-Leinwand
- Amazon SageMaker-Studio
- Amazon Web Services
- an
- Business Analysten
- Analytik
- und
- Anonym
- Ein anderer
- jedem
- Apache
- App
- Anwendung
- Anwendungen
- Ansatz
- angemessen
- Architektur
- Archiv
- SIND
- Bereiche
- AS
- Bewertung
- At
- automatisieren
- Im Prinzip so, wie Sie es von Google Maps kennen.
- verfügbar
- AWS
- ACHSEN
- Azure
- basierend
- BE
- war
- Bevor
- beginnen
- vorteilhaft
- Nutzen
- Besser
- zwischen
- beide
- bringen
- breiteres
- bauen
- Building
- Geschäft
- aber
- by
- rufen Sie uns an!
- namens
- Aufruf
- CAN
- Leinwand
- Fähigkeiten
- tragen
- Häuser
- Schecks
- Klasse
- klassifizieren
- klicken Sie auf
- Cloud
- Code
- kognitiv
- kollaborative
- Unternehmen
- abschließen
- Komplex
- Compliance
- umfassend
- Berechnen
- Konfiguration
- enthalten
- Container
- Behälter
- enthält
- Kontext
- sehr beliebtes Sprach- und Freizeitprogramm
- verkaufen
- Umwandlung
- Kernbereich
- Kosten
- könnte
- erstellen
- erstellt
- Erstellen
- Schaffung
- Referenzen
- Original
- Kunden
- technische Daten
- Datenmanagement
- Datenaufbereitung
- Datenwissenschaft
- Datensätze
- tief
- tiefe Lernen
- tiefsten
- Standard
- definieren
- Definition
- zeigen
- Abhängigkeiten
- Abhängigkeit
- einsetzen
- Einsatz
- Bereitstellen
- Einsatz
- beschreiben
- Detail
- Details
- Entwicklung
- Gerät
- Geräte
- anders
- digital
- Digitale Transformation
- Ziffern
- Abmessungen
- diskutiert
- do
- Docker
- Domain
- erledigt
- Nicht
- nach unten
- herunterladen
- im
- dynamisch
- e
- sonst
- umarmen
- ermöglicht
- ermöglichen
- Ende
- Endpunkt
- Entwicklung
- Ingenieure
- Unternehmen
- Unternehmen
- Arbeitsumfeld
- Epoche
- Epochen
- Jedes
- Beispiel
- Außer
- Ausnahme
- Ausführung
- Expertise
- exportieren
- Ausfuhr
- extern
- Extrakt
- scheitert
- Eigenschaften
- wenige
- Reichen Sie das
- Mappen
- Revolution
- Finanzdienstleistungen
- Finden Sie
- Vorname
- passen
- Folgende
- Aussichten für
- Format
- Foundation
- Unser Ansatz
- Gerüste
- für
- Funktion
- Funktionen
- Allgemeines
- erzeugt
- generativ
- Generative KI
- bekommen
- Global
- globale finanzielle
- Gruppe an
- Haben
- he
- Unternehmen
- hilft
- Hosting
- Ultraschall
- Hilfe
- HTML
- http
- HTTPS
- Hybrid
- ID
- Identifizierung
- Leerlauf
- if
- zeigt
- Image
- Bilder
- Impact der HXNUMXO Observatorien
- importieren
- Einfuhr
- zu unterstützen,
- Verbesserung
- in
- das
- Einschließlich
- unabhängig
- Energiegewinnung
- Information
- Anfangs-
- Varianten des Eingangssignals:
- Eingänge
- installieren
- Instanz
- Anleitung
- integrieren
- integriert
- Absicht
- Interessen
- Schnittstelle
- Flexible Kommunikation
- in
- IT
- SEINE
- Job
- Jobs
- jpg
- JSON
- Sprache
- grosse
- neueste
- startet
- LERNEN
- lernen
- Länge
- Hebelwirkung
- Bibliotheken
- Bibliothek
- Lebenszyklus
- Line
- linux
- Liste
- Belastung
- Belastungen
- aus einer regionalen
- örtlich
- Standorte
- Protokollierung
- langfristig
- suchen
- Verlust
- Maschine
- Maschinelles Lernen
- um
- verwalten
- verwaltet
- Management
- Manager
- viele
- Karte
- Matplotlib
- Kann..
- Mittel
- Triff
- Trifft
- Methode
- Methoden
- Microsoft
- könnte
- Migration
- ML
- MLOps
- Model
- Modell
- für
- Modul
- mehr
- vor allem warme
- Name
- Namens
- nämlich
- Need
- erforderlich
- Bedürfnisse
- Netto-
- Netzwerk
- Nerven-
- neuronale Netzwerk
- Notizbuch
- numpig
- Objekt
- of
- on
- EINEM
- XNUMXh geöffnet
- Open-Source-
- die
- Einkauf & Prozesse
- Betreiber
- Optionen
- or
- Auftrag
- Organisation
- organisatorisch
- Organisationen
- OS
- Andere
- UNSERE
- Ergebnisse
- Möglichkeiten für das Ausgangssignal:
- aussen
- besitzen
- Paket
- verpackt
- Parameter
- Parameter
- Teil
- besondere
- Party
- passieren
- leitet
- Weg
- Ausführen
- Berechtigungen
- Plattform
- Plattformen
- Plato
- Datenintelligenz von Plato
- PlatoData
- Beliebt
- positiv
- möglich
- Post
- Prognosen
- Vorbereitung
- Danach
- Voraussetzungen
- primär
- Principal
- Probleme
- Verarbeitet
- Produktion
- PRODUKTIVITÄT
- Produkte
- Professionell
- Projekte
- die
- vorausgesetzt
- Versorger
- bietet
- Öffentlichkeit
- veröffentlichen
- Python
- Pytorch
- Direkt
- geschafft
- zufällig
- bereit
- erhält
- empfohlen
- Einspielung vor
- Veteran
- siehe
- Ungeachtet
- Region
- Registratur
- relativ
- wiederholbar
- Anforderung
- Zugriffe
- erfordern
- falls angefordert
- Voraussetzungen:
- Ressourcen
- Downloads
- Antwort
- Folge
- was zu
- Rückkehr
- Recht
- Rollen
- Wurzel
- Führen Sie
- Laufen
- läuft
- sagemaker
- gleich
- Gerettet
- Skalieren
- Scannen
- Szenarien
- Wissenschaft
- Wissenschaftler
- Skript
- Sdk
- Sekundär-
- Abschnitt
- Abschnitte
- Sicherheitdienst
- sehen
- Auswahl
- SELF
- senden
- Senior
- Lösungen
- Sitzung
- kompensieren
- Einstellungen
- Setup
- Form
- sie
- sollte
- erklären
- zeigte
- gezeigt
- Konzerte
- schließen
- Herunterfahren
- Einfacher
- Umstände
- erfahren
- Fähigkeiten
- So
- Software
- Lösung
- Lösungen
- einige
- Quelle
- Souveränität
- angegeben
- Stufe
- Standard
- Anfang
- begonnen
- beginnt
- Shritte
- Lagerung
- speichern
- gelagert
- Strategie
- Schnur
- stark
- Struktur
- Studio Adressen
- Anschließend
- Erfolgreich
- so
- Support
- Unterstützung
- Unterstützt
- Nehmen
- nimmt
- Target
- Team
- Technische
- Technologies
- Technologie
- zehn
- Tensorfluss
- Test
- getestet
- Testen
- Text
- zur Verbesserung der Gesundheitsgerechtigkeit
- Das
- Die Quelle
- ihr
- Sie
- sich
- dann
- Diese
- vom Nutzer definierten
- Ding
- Dritte
- fehlen uns die Worte.
- mal
- zu
- Toolkit
- Werkzeuge
- Fackel
- Fackelvision
- Spur
- Training
- trainiert
- Ausbildung
- Transformieren
- Transformation
- Transformationsstrategie
- Transformationen
- Trends
- auslösen
- ausgelöst
- was immer dies auch sein sollte.
- versuchen
- tippe
- einzigartiges
- hochgeladen
- Uploading
- URL
- -
- Anwendungsfall
- benutzt
- Mitglied
- verwendet
- Verwendung von
- Nutzen
- BESTÄTIGEN
- Wert
- Variable
- Vielfalt
- Anbieter
- Versionen
- Verwundbarkeit
- wollen
- wurde
- Wege
- we
- Netz
- Web-Services
- Webbasiert
- GUT
- wann
- welche
- werden wir
- mit
- .
- Workflows
- Werk
- schreiben
- geschrieben
- X
- noch
- Du
- Ihr
- Zephyrnet
- PLZ