Dela via


Så här distribuerar och härleder du en hanterad beräkningsdistribution med kod

Azure AI Foundry-portalens modellkatalog erbjuder över 1 600 modeller, och det vanligaste sättet att distribuera dessa modeller är att använda distributionsalternativet för hanterad beräkning, vilket ibland även kallas för en hanterad onlinedistribution.

Distribution av en stor språkmodell (LLM) gör den tillgänglig för användning på en webbplats, ett program eller en annan produktionsmiljö. Distribution innebär vanligtvis att vara värd för modellen på en server eller i molnet och skapa ett API eller annat gränssnitt för användare att interagera med modellen. Du kan anropa distributionen för realtids slutsatsdragning av generativa AI-program som chatt och andrepilot.

I den här artikeln får du lära dig hur du distribuerar modeller med hjälp av Azure Machine Learning SDK. Artikeln beskriver också hur du utför slutsatsdragning för den distribuerade modellen.

Hämta modell-ID:t

Du kan distribuera hanterade beräkningsmodeller med hjälp av Azure Machine Learning SDK, men först ska vi bläddra i modellkatalogen och hämta det modell-ID du behöver för distribution.

  1. Logga in på Azure AI Foundry och gå till startsidan.

  2. Välj Modellkatalog i det vänstra sidofältet.

  3. I filtret Distributionsalternativ väljer du Hanterad beräkning.

    En skärmbild som visar hur du filtrerar efter hanterade beräkningsmodeller i katalogen.

  4. Välj en modell.

  5. Kopiera modell-ID:t från informationssidan för den modell som du har valt. Det ser ut ungefär så här: azureml://registries/azureml/models/deepset-roberta-base-squad2/versions/16

Distribuera modellen

Nu ska vi distribuera modellen.

Först måste du installera Azure Machine Learning SDK.

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

Använd den här koden för att autentisera med Azure Machine Learning och skapa ett klientobjekt. Ersätt platshållarna med ditt prenumerations-ID, resursgruppsnamn och Azure AI Foundry-projektnamn.

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 distributionsalternativet för hanterad beräkning måste du skapa en slutpunkt före en modelldistribution. Tänk på en slutpunkt som en container som kan innehålla flera modelldistributioner. Slutpunktsnamnen måste vara unika i en region, så i det här exemplet använder vi tidsstämpeln för att skapa ett unikt slutpunktsnamn.

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()

Skapa en distribution. Du hittar modell-ID:t i modellkatalogen.

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()

Slutsatsdragning av distributionen

Du behöver ett exempel på json-data för att testa slutsatsdragning. Skapa sample_score.json med följande exempel.

{
  "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."
    ]
  }
}

Låt oss dra slutsatsdragning med sample_score.json. Ändra platsen baserat på var du sparade json-exempelfilen.

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))

Ta bort distributionsslutpunkten

Om du vill ta bort distributioner i Azure AI Foundry-portalen väljer du knappen Ta bort på den översta panelen på sidan med distributionsinformation.

Kvotöverväganden

Om du vill distribuera och utföra slutsatsdragning med realtidsslutpunkter använder du kärnkvoten för virtuell dator (VM) som är tilldelad till din prenumeration per region. När du registrerar dig för Azure AI Foundry får du en standardkvot för virtuella datorer för flera vm-familjer som är tillgängliga i regionen. Du kan fortsätta att skapa distributioner tills du når din kvotgräns. När det händer kan du begära en kvotökning.

Nästa steg

  • Läs mer om vad du kan göra i Azure AI Foundry
  • Få svar på vanliga frågor och svar i artikeln vanliga frågor och svar om Azure AI