Delen via


Grote taalmodellen implementeren met Azure AI Studio

Belangrijk

Sommige van de functies die in dit artikel worden beschreven, zijn mogelijk alleen beschikbaar in de preview-versie. Deze preview wordt aangeboden zonder een service level agreement en we raden deze niet aan voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.

Implementatie van een LLM (Large Language Model) maakt het beschikbaar voor gebruik in een website, een toepassing of een andere productieomgeving. Implementatie omvat doorgaans het hosten van het model op een server of in de cloud en het maken van een API of een andere interface voor gebruikers om met het model te communiceren. U kunt de implementatie aanroepen voor realtime deductie van generatieve AI-toepassingen, zoals chat en copilot.

In dit artikel leert u hoe u grote taalmodellen implementeert in Azure AI Studio. U kunt modellen implementeren vanuit de modelcatalogus of vanuit uw project. U kunt ook modellen implementeren met behulp van de Azure Machine Learning SDK. In het artikel wordt ook beschreven hoe u deductie uitvoert op het geïmplementeerde model.

Een serverloos API-model implementeren en deductie uitvoeren met code

Een model implementeren

Serverloze API-modellen zijn de modellen die u kunt implementeren met betalen per gebruik-facturering. Voorbeelden zijn Phi-3, Llama-2, Command R, Mistral Large en meer. Voor serverloze API-modellen worden alleen kosten in rekening gebracht voor deductie, tenzij u ervoor kiest om het model af te stemmen.

De model-id ophalen

U kunt serverloze API-modellen implementeren met behulp van de Azure Machine Learning SDK, maar laten we eerst door de modelcatalogus bladeren en de model-id ophalen die u nodig hebt voor implementatie.

  1. Meld u aan bij AI Studio en ga naar destartpagina.

  2. Selecteer modelcatalogus in de linkerzijbalk.

  3. Selecteer serverloze API in het filter Implementatieopties.

    Een schermopname die laat zien hoe u filtert op serverloze API-modellen in de catalogus.

  4. Selecteer een model.

  5. Kopieer de model-id van de detailpagina van het model dat u hebt geselecteerd. Het ziet er ongeveer als volgt uit: azureml://registries/azureml-cohere/models/Cohere-command-r-plus/versions/3

De Azure Machine Learning-SDK installeren

Vervolgens moet u de Azure Machine Learning SDK installeren. Voer de volgende opdrachten uit in uw terminal:

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

Het serverloze API-model implementeren

Eerst moet u zich verifiëren bij 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",
)

Ten tweede verwijzen we naar de model-id die u eerder hebt gevonden.

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

Serverloze API-modellen van externe modelproviders vereisen een Azure Marketplace-abonnement om het model te kunnen gebruiken. Laten we een Marketplace-abonnement maken.

Notitie

U kunt het onderdeel overslaan als u een serverloos API-model van Microsoft implementeert, zoals 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()

Ten slotte gaan we een serverloos eindpunt maken.


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

Het serverloze API-eindpunt en de sleutels ophalen

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

De implementatie deductie

Voor deductie wilt u de code gebruiken die specifiek betrekking heeft op verschillende modeltypen en SDK die u gebruikt. U vindt codevoorbeelden in de voorbeeldopslagplaats Azure/azureml-voorbeelden.

Een beheerde compute-implementatie implementeren en deductie uitvoeren met code

Een model implementeren

De AI Studio-modelcatalogus biedt meer dan 1.600 modellen en de meest voorkomende manier om deze modellen te implementeren, is het gebruik van de optie voor beheerde rekenimplementatie, ook wel een beheerde online-implementatie genoemd.

De model-id ophalen

U kunt beheerde rekenmodellen implementeren met behulp van de Azure Machine Learning SDK, maar laten we eerst door de modelcatalogus bladeren en de model-id ophalen die u nodig hebt voor implementatie.

  1. Meld u aan bij AI Studio en ga naar destartpagina.

  2. Selecteer modelcatalogus in de linkerzijbalk.

  3. Selecteer Beheerde berekening in het filter Implementatieopties.

    Een schermopname die laat zien hoe u filtert op beheerde rekenmodellen in de catalogus.

  4. Selecteer een model.

  5. Kopieer de model-id van de detailpagina van het model dat u hebt geselecteerd. Het ziet er ongeveer als volgt uit: azureml://registries/azureml/models/deepset-roberta-base-squad2/versions/16

De Azure Machine Learning-SDK installeren

Voor deze stap moet u de Azure Machine Learning SDK installeren.

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

Model implementeren

Eerst moet u zich verifiëren bij 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",
)

We gaan het model implementeren.

Voor de optie beheerde rekenkrachtimplementatie moet u een eindpunt maken vóór een modelimplementatie. Denk aan eindpunt als een container die meerdere modelimplementaties kan bevatten. De eindpuntnamen moeten uniek zijn in een regio, dus in dit voorbeeld gebruiken we de tijdstempel om een unieke eindpuntnaam te maken.

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

Een implementatie maken. U vindt de model-id in de modelcatalogus.

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

De implementatie deductie

U hebt een JSON-voorbeeldgegevens nodig om deductie te testen. Maak sample_score.json met het volgende voorbeeld.

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

Laten we deductie maken met sample_score.json. Wijzig de locatie op basis van waar u het json-voorbeeldbestand hebt opgeslagen.

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

Het implementatie-eindpunt verwijderen

Als u implementaties in AI Studio wilt verwijderen, selecteert u de knop Verwijderen in het bovenste deelvenster van de pagina met implementatiedetails.

Overwegingen voor quotum

Als u deductie wilt implementeren en uitvoeren met realtime-eindpunten, gebruikt u het kernquotum voor virtuele machines (VM's) dat per regio aan uw abonnement is toegewezen. Wanneer u zich registreert voor AI Studio, ontvangt u een standaard-VM-quotum voor verschillende VM-families die beschikbaar zijn in de regio. U kunt implementaties blijven maken totdat u de quotumlimiet bereikt. Zodra dat gebeurt, kunt u een quotumverhoging aanvragen.

Volgende stappen