Jak wdrażać duże modele językowe za pomocą usługi Azure AI Studio

Ważne

Niektóre funkcje opisane w tym artykule mogą być dostępne tylko w wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.

Wdrożenie dużego modelu językowego (LLM) umożliwia korzystanie z niego w witrynie internetowej, aplikacji lub w innym środowisku produkcyjnym. Wdrożenie zwykle obejmuje hostowanie modelu na serwerze lub w chmurze oraz tworzenie interfejsu API lub innego interfejsu dla użytkowników w celu interakcji z modelem. Wdrożenie można wywołać na potrzeby wnioskowania w czasie rzeczywistym aplikacji generacyjnych sztucznej inteligencji, takich jak czat i copilot.

Z tego artykułu dowiesz się, jak wdrażać duże modele językowe w usłudze Azure AI Studio. Modele można wdrażać z katalogu modeli lub z projektu. Modele można również wdrażać przy użyciu zestawu AZURE Machine Edukacja SDK. W tym artykule opisano również sposób wnioskowania na wdrożonym modelu.

Wdrażanie i wnioskowanie modelu bezserwerowego interfejsu API za pomocą kodu

Wdrażanie modelu

Modele bezserwerowych interfejsów API to modele, które można wdrożyć przy użyciu rozliczeń z płatnością zgodnie z rzeczywistym użyciem. Przykłady obejmują Phi-3, Llama-2, Command R, Mistral Large i nie tylko. W przypadku modeli bezserwerowych interfejsów API opłaty są naliczane tylko za wnioskowanie, chyba że zdecydujesz się dostosować model.

Pobieranie identyfikatora modelu

Modele bezserwerowego interfejsu API można wdrożyć przy użyciu zestawu SDK usługi Azure Machine Edukacja, ale najpierw przejrzyjmy katalog modeli i uzyskajmy identyfikator modelu potrzebny do wdrożenia.

  1. Zaloguj się do programu AI Studio i przejdź do strony głównej.

  2. Wybierz pozycję Katalog modeli na lewym pasku bocznym.

  3. W filtrze Opcje wdrażania wybierz pozycję Bezserwerowy interfejs API.

    Zrzut ekranu przedstawiający sposób filtrowania według modeli bezserwerowych interfejsów API w katalogu.

  4. Wybieranie modelu.

  5. Skopiuj identyfikator modelu ze strony szczegółów wybranego modelu. Wygląda to mniej więcej tak: azureml://registries/azureml-cohere/models/Cohere-command-r-plus/versions/3

Instalowanie zestawu AZURE Machine Edukacja SDK

Następnie należy zainstalować zestaw AZURE Machine Edukacja SDK. Uruchom następujące polecenia w terminalu:

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

Wdrażanie modelu bezserwerowego interfejsu API

Najpierw musisz uwierzytelnić się w usłudze 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",
)

Po drugie odwołujmy się do znalezionego wcześniej identyfikatora modelu.

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

Modele bezserwerowych interfejsów API od dostawców modeli innych firm wymagają subskrypcji witryny Azure Marketplace w celu korzystania z modelu. Utwórzmy subskrypcję witryny Marketplace.

Uwaga

Możesz pominąć tę część, jeśli wdrażasz model bezserwerowego interfejsu API firmy Microsoft, taki jak 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()

Na koniec utwórzmy bezserwerowy punkt końcowy.


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

Uzyskiwanie punktu końcowego i kluczy bezserwerowego interfejsu API

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

Wnioskowanie wdrożenia

Aby wnioskować, chcesz użyć kodu przeznaczonego specjalnie do różnych typów modeli i zestawu SDK, którego używasz. Przykłady kodu można znaleźć w repozytorium przykładów Azure/azureml-examples.

Wdrażanie i wnioskowanie zarządzanego wdrożenia obliczeniowego przy użyciu kodu

Wdrażanie modelu

Katalog modeli usługi AI Studio oferuje ponad 1600 modeli, a najczęstszym sposobem wdrożenia tych modeli jest użycie opcji wdrażania zarządzanego obliczeniowego, która jest czasami nazywana zarządzanym wdrożeniem online.

Pobieranie identyfikatora modelu

Zarządzane modele obliczeniowe można wdrożyć przy użyciu zestawu SDK usługi Azure Machine Edukacja, ale najpierw przejrzyjmy katalog modeli i uzyskajmy identyfikator modelu potrzebny do wdrożenia.

  1. Zaloguj się do programu AI Studio i przejdź do strony głównej.

  2. Wybierz pozycję Katalog modeli na lewym pasku bocznym.

  3. W filtrze Opcje wdrażania wybierz pozycję Zarządzane obliczenia.

    Zrzut ekranu przedstawiający sposób filtrowania według zarządzanych modeli obliczeniowych w wykazie.

  4. Wybieranie modelu.

  5. Skopiuj identyfikator modelu ze strony szczegółów wybranego modelu. Wygląda to mniej więcej tak: azureml://registries/azureml/models/deepset-roberta-base-squad2/versions/16

Instalowanie zestawu AZURE Machine Edukacja SDK

W tym kroku należy zainstalować zestaw AZURE Machine Edukacja SDK.

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

Wdrażanie modelu

Najpierw musisz uwierzytelnić się w usłudze 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",
)

Wdróżmy model.

W przypadku opcji Wdrożenia zarządzanego zasobów obliczeniowych należy utworzyć punkt końcowy przed wdrożeniem modelu. Punkt końcowy można traktować jako kontener, który może pomieścić wiele wdrożeń modelu. Nazwy punktów końcowych muszą być unikatowe w regionie, więc w tym przykładzie używamy znacznika czasu do utworzenia unikatowej nazwy punktu końcowego.

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

Utwórz wdrożenie. Identyfikator modelu można znaleźć w wykazie modeli.

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

Wnioskowanie wdrożenia

Do testowania wnioskowania potrzebne są przykładowe dane JSON. Utwórz sample_score.json przy użyciu poniższego przykładu.

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

Wywnioskujmy sample_score.jsonz . Zmień lokalizację na podstawie miejsca zapisania przykładowego pliku json.

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

Usuwanie punktu końcowego wdrożenia

Aby usunąć wdrożenia w programie AI Studio, wybierz przycisk Usuń na górnym panelu strony szczegółów wdrożenia.

Zagadnienia dotyczące limitu przydziału

Aby wdrożyć i przeprowadzić wnioskowanie za pomocą punktów końcowych czasu rzeczywistego, należy użyć limitu przydziału rdzeni maszyny wirtualnej przypisanego do subskrypcji dla poszczególnych regionów. Po zarejestrowaniu się w usłudze AI Studio otrzymasz domyślny limit przydziału maszyn wirtualnych dla kilku rodzin maszyn wirtualnych dostępnych w regionie. Wdrożenia można tworzyć nadal do momentu osiągnięcia limitu przydziału. Gdy tak się stanie, możesz zażądać zwiększenia limitu przydziału.

Następne kroki

  • Dowiedz się więcej o tym, co można zrobić w programie AI Studio
  • Uzyskaj odpowiedzi na często zadawane pytania w artykule Azure AI FAQ (Często zadawane pytania dotyczące sztucznej inteligencji platformy Azure)