Dela via


Så här distribuerar du stora språkmodeller med Azure AI Studio

Viktigt!

Vissa av de funktioner som beskrivs i den här artikeln kanske bara är tillgängliga i förhandsversionen. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

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 stora språkmodeller i Azure AI Studio. Du kan distribuera modeller från modellkatalogen eller från projektet. Du kan också distribuera modeller med hjälp av Azure Machine Learning SDK. Artikeln beskriver också hur du utför slutsatsdragning för den distribuerade modellen.

Distribuera och dra slutsatser om en serverlös API-modell med kod

Distribuera en modell

Serverlösa API-modeller är de modeller som du kan distribuera med betala per användning-fakturering. Exempel är Phi-3, Llama-2, Command R, Mistral Large med mera. För serverlösa API-modeller debiteras du bara för slutsatsdragning, såvida du inte väljer att finjustera modellen.

Hämta modell-ID:t

Du kan distribuera serverlösa API-modeller 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å AI Studio och gå till startsidan.

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

  3. I filtret Distributionsalternativ väljer du Serverlöst API.

    En skärmbild som visar hur du filtrerar efter serverlösa API-modeller 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-cohere/models/Cohere-command-r-plus/versions/3

Installera Azure Machine Learning SDK

Därefter måste du installera Azure Machine Learning SDK. Kör följande kommandon i terminalen:

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

Distribuera den serverlösa API-modellen

Först måste du autentisera till Azure AI.

from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import MarketplaceSubscription, ServerlessEndpoint

# You can find your credential information in project settings.
client = MLClient(
    credential=DefaultAzureCredential(),
    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 det andra ska vi referera till modell-ID:t som du hittade tidigare.

# You can find the model ID on the model catalog.
model_id="azureml://registries/azureml-meta/models/Llama-2-70b-chat/versions/18" 

Serverlösa API-modeller från tredjepartsleverantörer kräver en Azure Marketplace-prenumeration för att kunna använda modellen. Nu ska vi skapa en Marketplace-prenumeration.

Kommentar

Du kan hoppa över delen om du distribuerar en serverlös API-modell från Microsoft, till exempel Phi-3.

# You can customize the subscription name.
subscription_name="Meta-Llama-2-70b-chat" 

marketplace_subscription = MarketplaceSubscription(
    model_id=model_id,
    name=subscription_name,
)

marketplace_subscription = client.marketplace_subscriptions.begin_create_or_update(
    marketplace_subscription
).result()

Slutligen ska vi skapa en serverlös slutpunkt.


endpoint_name="Meta-Llama-2-70b-chat-qwerty" # Your endpoint name must be unique

serverless_endpoint = ServerlessEndpoint(
    name=endpoint_name,
    model_id=model_id
)

created_endpoint = client.serverless_endpoints.begin_create_or_update(
    serverless_endpoint
).result()

Hämta serverlös API-slutpunkt och -nycklar

endpoint_keys = client.serverless_endpoints.get_keys(endpoint_name)
print(endpoint_keys.primary_key)
print(endpoint_keys.secondary_key)

Slutsatsdragning av distributionen

För att dra slutsatser vill du använda koden som specifikt riktar sig till olika modelltyper och SDK som du använder. Du hittar kodexempel på exempellagringsplatsen Azure/azureml-examples.

Distribuera och dra slutsatser om en hanterad beräkningsdistribution med kod

Distribuera en modell

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

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å AI Studio 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

Installera Azure Machine Learning SDK

För det här steget måste du installera Azure Machine Learning SDK.

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

Distribuera modellen

Först måste du autentisera till Azure AI.

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

Nu ska vi distribuera modellen.

För distributionsalternativet Hanterad beräkning måste du skapa en slutpunkt före en modelldistribution. Tänk på slutpunkten 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 AI Studio 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 AI Studio 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 AI Studio
  • Få svar på vanliga frågor och svar i artikeln vanliga frågor och svar om Azure AI