Установите путь выходных данных задания AzureML к рабочему каталогу

Я обучаю модель компьютерного зрения в AzureML и пытаюсь настроить каталог выходных данных так, чтобы он соответствовал расположению моих журналов/артефактов, т. е. каталогу моей работы по выполнению «exe/wd». Я пишу/прототипирую локально и загружаю задания через mlclient. Сценарий обучения, среда, вычисления и т. д. работают. Запись файлов с помощью:

with open(filepath, 'wb') as f:
        f.write(obj)

store записывает файлы не в то место.

Для удобства я хотел бы хранить/просматривать/получать доступ к своим контрольным точкам:

Выходы+Журналы

Определение должности:

from azure.ai.ml import Output



job = command(
    inputs = {
        'data':Input(
                type = "uri_folder",
                path=f"{data_asset.id}",
                mode=InputOutputModes.RO_MOUNT
        )},
    outputs = {
        'outputs':Output(
            type='uri_folder',
            path = './outputs',
            mode  =InputOutputModes.RW_MOUNT
        )}
    ,
    code = "<path>",
    command=az_cfg.COMMAND_TRAIN,
    environment=f"{az_cfg.ENV_NAME}{az_cfg.ENV_VERSION}",
    display_name=az_cfg.DISPLAY_NAME,
    compute = ci_name,
    evironment_variables = { 
      "DATASET_MOUNT_BLOCK_BASED_CACHE_ENABLED": True
      },
    experiment_name=az_cfg.EXPERIMENT_NAME
      
)


Я ожидал увидеть папку моих результатов на вкладке «Выходы+Журналы» в студии.

После некоторых исследований я обнаружил, что выходные данные, сгенерированные во время выполнения, будут храниться в хранилище больших объектов рабочей области по умолчанию. Как я могу изменить выходные данные, чтобы они находились в рабочем каталоге рабочей области?

При сохранении модели с помощью mlflow журнал и сохранение окажутся в нужном месте. Однако я не могу использовать здесь mlflow. Я не уверен, что это ожидаемое поведение и просто невозможно, или я что-то упускаю? Любая помощь высоко ценится.

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
0
304
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно этой документации, локальный путь типа ./home/username/data/my_data поддерживается только для входов, а не для выходов.

Итак, как вы сказали, вам необходимо зарегистрировать модели и детали в стандартном workspaceblobstorage или пользовательском хранилище больших двоичных объектов и загрузить их в текущий каталог рабочей области.

Ниже приведен код задания команды.

job = command(
    code = "./src",  # local path where the code is stored
    command = "python main.py --diabetes-csv ${{inputs.diabetes}}  --model_out ${{outputs.output}}",
    inputs = {
        "diabetes": Input(
            type = "uri_file",
            path = "https://azuremlexamples.blob.core.windows.net/datasets/diabetes.csv",
        )
    },
    outputs = {
        'output': Output(
            type=AssetTypes.CUSTOM_MODEL,
            path = 'azureml://subscriptions/<subscriptions_id>/resourcegroups/<resourcegroup>/workspaces/jgsml/datastores/workspaceblobstore/paths/ML_output/',
            mode  = InputOutputModes.RW_MOUNT
        )}
    ,
    environment = "AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest",
    display_name = "sklearn-diabetes-example",
)

Фрагмент кода для сохранения модели в main.py:

import joblib
from pathlib import Path
model = train_model(params, X_train, X_test, y_train, y_test)
joblib.dump(model, (Path(args.model_out) / "model_1.pkl"))

После успешного завершения задания загрузите его в текущий каталог, используя приведенный ниже код.

returned_job = ml_client.create_or_update(job)
ml_client.jobs.download(returned_job.name, download_path = "./job_output", all=True)

Выход:

Спасибо за решение, приведенное выше, быстрый вопрос: когда я запускаю его, код в папке «./src» загружается в мою учетную запись хранения BLOB-объектов по умолчанию в качестве нового контейнера. Это засоряет мою учетную запись хранения. Есть ли способ контролировать, где этот код загружается в мое хранилище по умолчанию?

Matt_Haythornthwaite 19.06.2024 17:47

Полный вопрос к комментарию выше смотрите здесь: stackoverflow.com/questions/78643575/…

Matt_Haythornthwaite 25.06.2024 15:38

Другие вопросы по теме

Похожие вопросы

Как получить значение столбца из сложного json при создании конвейера ADF
Уведомления FCM V1 не доставляются из Центра уведомлений Azure
Извлечение информации о разрешениях из отчета о разрешениях, созданного в результате вызова DevOps API в PowerShell
Передача пользовательского идентификатора отслеживания из приложения Logic в приложение Function
Microsoft Entra ID: получение старой версии токена, несмотря на установку accessTokenAcceptedVersion на 2
##[ошибка]Терм New-AzActionGroupReceiver не распознается как имя командлета, функции, файла сценария или работающей программы
Переход с устаревшего пакета SDK Azure PHP на Azure CLI для операций с хранилищем BLOB-объектов
Как сохранить данные из qdrant в хранилище BLOB-объектов Azure/хранилище файловых ресурсов?
Мне нужно получить ResourceGroup и ResourceID связанной виртуальной машины Azure моего узла DSC
Как предоставить заголовок ответа «Content-Disposition» в веб-API ASP.NET, размещенном в Службе приложений Azure?