Я обучаю модель компьютерного зрения в 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. Я не уверен, что это ожидаемое поведение и просто невозможно, или я что-то упускаю? Любая помощь высоко ценится.
Согласно этой документации, локальный путь типа ./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)
Выход:
Полный вопрос к комментарию выше смотрите здесь: stackoverflow.com/questions/78643575/…
Спасибо за решение, приведенное выше, быстрый вопрос: когда я запускаю его, код в папке «./src» загружается в мою учетную запись хранения BLOB-объектов по умолчанию в качестве нового контейнера. Это засоряет мою учетную запись хранения. Есть ли способ контролировать, где этот код загружается в мое хранилище по умолчанию?