Обучение моделей с помощью Машинное обучение Azure интерфейса командной строки, пакета SDK и REST API

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)

Машинное обучение Azure предоставляет несколько способов отправки заданий обучения машинного обучения. В этой статье вы узнаете, как отправлять задания с помощью следующих методов:

  • Расширение Azure CLI для машинного обучения: ml расширение также называется CLI версии 2.
  • Пакет SDK для Python версии 2 для Машинное обучение Azure.
  • REST API: API, на основе которых основан интерфейс командной строки и пакет SDK.

Необходимые компоненты

Чтобы использовать сведения о пакете SDK, установите пакет SDK Машинное обучение Azure версии 2 для Python.

Клонирование репозитория примеров

Фрагменты кода в этой статье основаны на примерах в репозитории GitHub Машинное обучение Azure. Чтобы клонировать репозиторий в среду разработки, используйте следующую команду:

git clone --depth 1 https://github.com/Azure/azureml-examples

Совет

При использовании параметра --depth 1 клонируется только последняя фиксация, что сокращает время выполнения операции.

Пример задания

Примеры, приведенные в этой статье, используют набор данных цветка ириса для обучения модели MLFlow.

Обучение в облаке

При обучении в облаке необходимо подключиться к рабочей области Машинное обучение Azure и выбрать вычислительный ресурс, который будет использоваться для запуска задания обучения.

1. Подключение к рабочей области

Совет

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

Чтобы подключиться к рабочей области, вам потребуются параметры идентификатора — подписка, группа ресурсов и имя рабочей области. Эти сведения будут использоваться в MLClientazure.ai.ml пространстве имен для получения дескриптора требуемой рабочей области Машинное обучение Azure. Для проверки подлинности используется проверка подлинности Azure по умолчанию. Дополнительные сведения о настройке учетных данных и подключении к рабочей области см. в этом примере.

#import required libraries
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

#Enter details of your Azure Machine Learning workspace
subscription_id = '<SUBSCRIPTION_ID>'
resource_group = '<RESOURCE_GROUP>'
workspace = '<AZUREML_WORKSPACE_NAME>'

#connect to the workspace
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace)

2. Создание вычислительного ресурса для обучения

Примечание.

Чтобы попробовать бессерверные вычисления, пропустите этот шаг и перейдите к 3. Отправьте задание обучения.

Кластер вычислений Машинное обучение Azure — это полностью управляемый вычислительный ресурс, который можно использовать для запуска задания обучения. В следующих примерах создается вычислительный cpu-compute кластер.

from azure.ai.ml.entities import AmlCompute

# specify aml compute name.
cpu_compute_target = "cpu-cluster"

try:
    ml_client.compute.get(cpu_compute_target)
except Exception:
    print("Creating a new cpu compute target...")
    compute = AmlCompute(
        name=cpu_compute_target, size="STANDARD_D2_V2", min_instances=0, max_instances=4
    )
    ml_client.compute.begin_create_or_update(compute).result()

3. Отправка задания обучения

Для выполнения этого скрипта вы будете использовать command скрипт Python, который выполняет main.py скрипт Python, расположенный в разделе ./sdk/python/jobs/single-step/lightgbm/iris/src/. Команда будет выполняться путем отправки ее в качестве job Машинное обучение Azure.

Примечание.

Чтобы использовать бессерверные вычисления, удалите compute="cpu-cluster" его в этом коде.

from azure.ai.ml import command, Input

# define the command
command_job = command(
    code="./src",
    command="python main.py --iris-csv ${{inputs.iris_csv}} --learning-rate ${{inputs.learning_rate}} --boosting ${{inputs.boosting}}",
    environment="AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu@latest",
    inputs={
        "iris_csv": Input(
            type="uri_file",
            path="https://azuremlexamples.blob.core.windows.net/datasets/iris.csv",
        ),
        "learning_rate": 0.9,
        "boosting": "gbdt",
    },
    compute="cpu-cluster",
)
# submit the command
returned_job = ml_client.jobs.create_or_update(command_job)
# get a URL for the status of the job
returned_job.studio_url

В приведенных выше примерах настроено:

  • code — путь, по которому находится код для выполнения команды;
  • command — команда, которую необходимо выполнить;
  • environment — среда, необходимая для запуска скрипта обучения. В этом примере мы используем курированную или готовую среду, предоставляемую Машинное обучение Azure.AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu Мы используем последнюю версию этой среды с помощью директивы @latest . Вы также можете использовать пользовательские среды, указав базовый образ Docker и указав в нем yaml conda.
  • inputs — словарь входных данных, использующих пары "значение-имя" для команды. Ключ — это имя входных данных в контексте задания, а значение — это входное значение. На входные данные можно ссылаться в command с помощью выражения ${{inputs.<input_name>}}. Для использования файлов или папок в качестве входных данных можно использовать класс Input. Дополнительные сведения см. в выражениях SDK и CLI версии 2.

Дополнительные сведения см. в справочной документации.

При отправке задания URL-адрес возвращается в состояние задания в Студия машинного обучения Azure. Используйте пользовательский интерфейс студии для просмотра хода выполнения задания. Можно также использовать returned_job.status для проверка текущего состояния задания.

Регистрация обученной модели

В следующих примерах показано, как зарегистрировать модель в рабочей области Машинное обучение Azure.

Совет

Свойство name , возвращаемое заданием обучения, используется как часть пути к модели.

from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes

run_model = Model(
    path="azureml://jobs/{}/outputs/artifacts/paths/model/".format(returned_job.name),
    name="run-model-example",
    description="Model created from run.",
    type=AssetTypes.MLFLOW_MODEL
)

ml_client.models.create_or_update(run_model)

Следующие шаги

Теперь, когда у вас есть обученная модель, узнайте , как развернуть ее с помощью сетевой конечной точки.

Дополнительные примеры см. в Машинное обучение Azure репозитории GitHub.

Дополнительные сведения о командах Azure CLI, классах пакета SDK для Python или REST API, используемых в этой статье, см. в следующей справочной документации: