Запуск вычислений в облаке с помощью пакета SDK для Microsoft Foundry (классическая версия)

В настоящее время просмотр:Версия портала Foundry (классическая версия) - Переключиться на версию для нового портала Foundry

Важно

Элементы, помеченные (предварительная версия) в этой статье, в настоящее время находятся в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или могут иметь ограниченные возможности. Дополнительные сведения см. в разделе Supplemental Terms of Use for Microsoft Azure Previews.

В этой статье вы узнаете, как выполнять оценки в облаке (предварительная версия) для предварительного тестирования в тестовом наборе данных. Пакет SDK для оценки ИИ Azure позволяет выполнять оценки локально на компьютере и в облаке. Например, запустите локальные оценки на небольших тестовых данных для оценки прототипов созданных приложений ИИ, а затем перейдите к предварительному тестированию для выполнения вычислений в большом наборе данных.

Используйте облачные оценки для большинства сценариев, особенно при тестировании в масштабе, интеграции вычислений в конвейеры непрерывной интеграции и непрерывной доставки (CI/CD) или выполнения предварительного тестирования. Выполнение вычислений в облаке устраняет необходимость управления локальной вычислительной инфраструктурой и поддерживает крупномасштабные автоматизированные рабочие процессы тестирования. После развертывания вы можете выбрать непрерывно оценивать своих агентов для мониторинга после выполнения развертывания.

При использовании пакета SDK для Foundry он регистрирует результаты оценки в проекте Foundry для повышения наблюдаемости. Эта функция поддерживает все встроенные оценщики, созданные Microsoft. и собственные настраиваемые оценщики. Оценщики могут находиться в библиотеке оценщиков и иметь ту же самую областью действия проекта, управление доступом на основе ролей.

Необходимые условия

Примечание

Некоторые функции оценки имеют региональные ограничения. Дополнительные сведения см. в поддерживаемых регионах .

Начало работы

  1. Установите клиент проекта пакета SDK для Microsoft Foundry, чтобы запустить оценки в облаке:

    pip install azure-ai-projects azure-identity
    
  2. Задайте переменные среды для ресурсов Foundry:

    import os
    
    # Required environment variables:
    endpoint = os.environ["PROJECT_ENDPOINT"] # https://<account>.services.ai.azure.com/api/projects/<project>
    model_endpoint = os.environ["MODEL_ENDPOINT"] # https://<account>.services.ai.azure.com
    model_api_key = os.environ["MODEL_API_KEY"]
    model_deployment_name = os.environ["MODEL_DEPLOYMENT_NAME"] # E.g. gpt-5-mini
    
    # Optional: Reuse an existing dataset.
    dataset_name    = os.environ.get("DATASET_NAME",    "dataset-test")
    dataset_version = os.environ.get("DATASET_VERSION", "1.0")
    
  3. Определите клиент для выполнения вычислений в облаке:

    import os
    from azure.identity import DefaultAzureCredential
    from azure.ai.projects import AIProjectClient
    
    # Create the project client (Foundry project and credentials):
    project_client = AIProjectClient(
        endpoint=endpoint,
        credential=DefaultAzureCredential(),
    )
    

Подготовка входных данных

# Upload a local JSONL file. Skip this step if you already have a dataset registered.
data_id = project_client.datasets.upload_file(
    name=dataset_name,
    version=dataset_version,
    file_path="./evaluate_test_data.jsonl",
).id

Дополнительные сведения о форматах входных данных для оценки создаваемых приложений ИИ см. в следующем разделе:

Дополнительные сведения о форматах входных данных для оценки агентов можно найти в статьях Оценка агентов Azure ИИ и Оценка других агентов.

Укажите оценщиков

from azure.ai.projects.models import (
    EvaluatorConfiguration,
    EvaluatorIds,
)

# Built-in evaluator configurations:
evaluators = {
    "relevance": EvaluatorConfiguration(
        id=EvaluatorIds.RELEVANCE.value,
        init_params={"deployment_name": model_deployment_name},
        data_mapping={
            "query": "${data.query}",
            "response": "${data.response}",
        },
    ),
    "violence": EvaluatorConfiguration(
        id=EvaluatorIds.VIOLENCE.value,
        init_params={"azure_ai_project": endpoint},
    ),
    "bleu_score": EvaluatorConfiguration(
        id=EvaluatorIds.BLEU_SCORE.value,
    ),
}

Создание оценки

Наконец, отправьте запуск удаленной оценки:

from azure.ai.projects.models import (
    Evaluation,
    InputDataset
)

# Create an evaluation with the dataset and evaluators specified.
evaluation = Evaluation(
    display_name="Cloud evaluation",
    description="Evaluation of dataset",
    data=InputDataset(id=data_id),
    evaluators=evaluators,
)

# Run the evaluation.
evaluation_response = project_client.evaluations.create(
    evaluation,
    headers={
        "model-endpoint": model_endpoint,
        "api-key": model_api_key,
    },
)

print("Created evaluation:", evaluation_response.name)
print("Status:", evaluation_response.status)

Указание пользовательских оценщиков

Примечание

Проекты Foundry не поддерживаются для этой функции. Вместо этого используйте проект Центра Foundry.

Пользовательские оценщики на основе кода

Зарегистрируйте пользовательских оценщиков в проекте в AI Hub Azure и получите идентификаторы оценщиков.

from azure.ai.ml import MLClient
from azure.ai.ml.entities import Model
from promptflow.client import PFClient

# Define ml_client to register the custom evaluator.
ml_client = MLClient(
       subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"],
       resource_group_name=os.environ["AZURE_RESOURCE_GROUP"],
       workspace_name=os.environ["AZURE_PROJECT_NAME"],
       credential=DefaultAzureCredential()
)

# Load the evaluator from the module.
from answer_len.answer_length import AnswerLengthEvaluator

# Convert it to an evaluation flow, and save it locally.
pf_client = PFClient()
local_path = "answer_len_local"
pf_client.flows.save(entry=AnswerLengthEvaluator, path=local_path)

# Specify the evaluator name that appears in the evaluator catalog.
evaluator_name = "AnswerLenEvaluator"

# Register the evaluator to the evaluator catalog.
custom_evaluator = Model(
    path=local_path,
    name=evaluator_name,
    description="Evaluator calculating answer length.",
)
registered_evaluator = ml_client.evaluators.create_or_update(custom_evaluator)
print("Registered evaluator id:", registered_evaluator.id)
# Registered evaluators have versioning. You can always reference any version available.
versioned_evaluator = ml_client.evaluators.get(evaluator_name, version=1)
print("Versioned evaluator id:", registered_evaluator.id)

После регистрации пользовательского оценщика просмотрите его в каталоге оценщика. В проекте Foundry выберите "Оценка", а затем каталог оценок.

Пользовательские вычислители на основе запросов

Используйте этот пример для регистрации пользовательского встроенного объекта FriendlinessEvaluator , как описано в оценщиках на основе запроса:

# Import your prompt-based custom evaluator.
from friendliness.friend import FriendlinessEvaluator

# Define your deployment.
model_config = dict(
    azure_endpoint=os.environ.get("AZURE_ENDPOINT"),
    azure_deployment=os.environ.get("AZURE_DEPLOYMENT_NAME"),
    api_version=os.environ.get("AZURE_API_VERSION"),
    api_key=os.environ.get("AZURE_API_KEY"), 
    type="azure_openai"
)

# Define ml_client to register the custom evaluator.
ml_client = MLClient(
       subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"],
       resource_group_name=os.environ["AZURE_RESOURCE_GROUP"],
       workspace_name=os.environ["AZURE_PROJECT_NAME"],
       credential=DefaultAzureCredential()
)

# # Convert the evaluator to evaluation flow and save it locally.
local_path = "friendliness_local"
pf_client = PFClient()
pf_client.flows.save(entry=FriendlinessEvaluator, path=local_path) 

# Specify the evaluator name that appears in the evaluator catalog.
evaluator_name = "FriendlinessEvaluator"

# Register the evaluator to the evaluator catalog.
custom_evaluator = Model(
    path=local_path,
    name=evaluator_name,
    description="prompt-based evaluator measuring response friendliness.",
)
registered_evaluator = ml_client.evaluators.create_or_update(custom_evaluator)
print("Registered evaluator id:", registered_evaluator.id)
# Registered evaluators have versioning. You can always reference any version available.
versioned_evaluator = ml_client.evaluators.get(evaluator_name, version=1)
print("Versioned evaluator id:", registered_evaluator.id)

После регистрации пользовательского оценщика его можно просмотреть в вашем каталоге оценщиков. В проекте Foundry выберите "Оценка", а затем каталог оценок.

Получение результатов

Устранение неполадок