Bereitstellen und Rückschließen einer verwalteten Computebereitstellung mit Code

Der KI Studio-Modellkatalog bietet über 1.600 Modelle, und die am häufigsten verwendete Methode zum Bereitstellen dieser Modelle besteht darin, die Option für die verwaltete Computebereitstellung zu verwenden, die manchmal auch als verwaltete Onlinebereitstellung bezeichnet wird.

Durch die Bereitstellung eines großen Sprachmodells (Large Language Model, LLM) wird es für die Verwendung in einer Website, einer Anwendung oder anderen Produktionsumgebungen zur Verfügung gestellt. Die Bereitstellung umfasst in der Regel das Hosten des Modells auf einem Server oder in der Cloud und das Erstellen einer API oder einer anderen Schnittstelle für Benutzer, die mit dem Modell interagieren. Sie können die Bereitstellung für Rückschlüsse in Echtzeit von generativen KI-Anwendungen wie Chat und Copilot aufrufen.

In diesem Artikel erfahren Sie, wie Sie Modelle mit dem Azure Machine Learning-SDK bereitstellen. Der Artikel befasst sich auch mit der Durchführung von Rückschlüssen auf das bereitgestellte Modell.

Abrufen der Modell-ID

Sie können verwaltetes Compute mithilfe des Azure Machine Learning SDK bereitstellen, aber zuerst durchsuchen wir den Modellkatalog und rufen die Modell-ID ab, die Sie für die Bereitstellung benötigen.

  1. Melden Sie sich bei KI Studio an, und wechseln Sie zur Homepage.

  2. Wählen Sie Modellkatalog auf der linken Randleiste aus.

  3. Wählen Sie im Filter Bereitstellungsoptionen die Option Verwaltetes Compute aus.

    Screenshot: Filtern nach verwalteten Computemodellen im Katalog.

  4. Wählen Sie ein Modell aus.

  5. Kopieren Sie die Modell-ID von der Detailseite des ausgewählten Modells. Sie sieht so aus: azureml://registries/azureml/models/deepset-roberta-base-squad2/versions/16

Bereitstellen des Modells

Stellen Sie das Modell bereit.

Zuerst müssen Sie das Azure Machine Learning-SDK installieren.

pip install azure-ai-ml
pip install azure-identity

Verwenden Sie diesen Code, um sich bei Azure Machine Learning zu authentifizieren, und erstellen Sie ein Clientobjekt. Ersetzen Sie die Platzhalter durch Ihre Abonnement-ID, den Ressourcengruppennamen und den KI Studio-Projektnamen.

from azure.ai.ml import MLClient
from azure.identity import InteractiveBrowserCredential

client = MLClient(
    credential=InteractiveBrowserCredential,
    subscription_id="your subscription name goes here",
    resource_group_name="your resource group name goes here",
    workspace_name="your project name goes here",
)

Für die Option „Verwaltete Computebereitstellung“ müssen Sie vor einer Modellimplementierung einen Endpunkt erstellen. Stellen Sie sich den Endpunkt als Container vor, der mehrere Modellimplementierungen enthalten kann. Die Endpunktnamen müssen in einer Region eindeutig sein, daher verwenden wir in diesem Beispiel den Zeitstempel, um einen eindeutigen Endpunktnamen zu erstellen.

import time, sys
from azure.ai.ml.entities import (
    ManagedOnlineEndpoint,
    ManagedOnlineDeployment,
    ProbeSettings,
)

# Make the endpoint name unique
timestamp = int(time.time())
online_endpoint_name = "customize your endpoint name here" + str(timestamp)

# Create an online endpoint
endpoint = ManagedOnlineEndpoint(
    name=online_endpoint_name,
    auth_mode="key",
)
workspace_ml_client.begin_create_or_update(endpoint).wait()

Erstellen Sie eine Bereitstellung. Sie finden die Modell-ID im Modellkatalog.

model_name = "azureml://registries/azureml/models/deepset-roberta-base-squad2/versions/16" 

demo_deployment = ManagedOnlineDeployment(
    name="demo",
    endpoint_name=online_endpoint_name,
    model=model_name,
    instance_type="Standard_DS3_v2",
    instance_count=2,
    liveness_probe=ProbeSettings(
        failure_threshold=30,
        success_threshold=1,
        timeout=2,
        period=10,
        initial_delay=1000,
    ),
    readiness_probe=ProbeSettings(
        failure_threshold=10,
        success_threshold=1,
        timeout=10,
        period=10,
        initial_delay=1000,
    ),
)
workspace_ml_client.online_deployments.begin_create_or_update(demo_deployment).wait()
endpoint.traffic = {"demo": 100}
workspace_ml_client.begin_create_or_update(endpoint).result()

Rückschließen der Bereitstellung

Sie benötigen beispielhafte JSON-Daten zum Testen des Rückschlusses. Erstellen Sie sample_score.json mit dem folgenden Beispiel.

{
  "inputs": {
    "question": [
      "Where do I live?",
      "Where do I live?",
      "What's my name?",
      "Which name is also used to describe the Amazon rainforest in English?"
    ],
    "context": [
      "My name is Wolfgang and I live in Berlin",
      "My name is Sarah and I live in London",
      "My name is Clara and I live in Berkeley.",
      "The Amazon rainforest (Portuguese: Floresta Amaz\u00f4nica or Amaz\u00f4nia; Spanish: Selva Amaz\u00f3nica, Amazon\u00eda or usually Amazonia; French: For\u00eat amazonienne; Dutch: Amazoneregenwoud), also known in English as Amazonia or the Amazon Jungle, is a moist broadleaf forest that covers most of the Amazon basin of South America. This basin encompasses 7,000,000 square kilometres (2,700,000 sq mi), of which 5,500,000 square kilometres (2,100,000 sq mi) are covered by the rainforest. This region includes territory belonging to nine nations. The majority of the forest is contained within Brazil, with 60% of the rainforest, followed by Peru with 13%, Colombia with 10%, and with minor amounts in Venezuela, Ecuador, Bolivia, Guyana, Suriname and French Guiana. States or departments in four nations contain \"Amazonas\" in their names. The Amazon represents over half of the planet's remaining rainforests, and comprises the largest and most biodiverse tract of tropical rainforest in the world, with an estimated 390 billion individual trees divided into 16,000 species."
    ]
  }
}

Wir führen Rückschlüsse mit sample_score.json aus. Ändern Sie den Speicherort basierend auf der Stelle, an der Sie Ihre Beispiel-JSON-Datei gespeichert haben.

scoring_file = "./sample_score.json" 
response = workspace_ml_client.online_endpoints.invoke(
    endpoint_name=online_endpoint_name,
    deployment_name="demo",
    request_file=scoring_file,
)
response_json = json.loads(response)
print(json.dumps(response_json, indent=2))

Löschen des Bereitstellungsendpunkts

Um Bereitstellungen in KI Studio zu löschen, wählen Sie im oberen Bereich der Seite der Bereitstellungsdetails die Schaltfläche Löschen aus.

Überlegungen zu Kontingenten

Zum Bereitstellen und Durchführen der Rückschlüsse mit Echtzeitendpunkten verwenden Sie das Kernkontingent für virtuelle Computer (VM), das Ihrem Abonnement pro Region zugewiesen ist. Wenn Sie sich für KI Studio registrieren, erhalten Sie ein Standard-VM-Kontingent für mehrere VM-Familien, die in der Region verfügbar sind. Sie können weiterhin Bereitstellungen erstellen, bis Sie ihr Kontingentlimit erreicht haben. Sobald dies der Fall ist, können Sie eine Erhöhung des Kontingents anfordern.

Nächste Schritte