Azure ML: включение дополнительных файлов во время развертывания модели

В моем конвейере AML я построил модель и развернул ее в AciWebservice. Теперь мне нужно включить некоторые дополнительные данные, которые будут использоваться score.py. Эти данные представлены в формате json (~ 1 МБ) и относятся к построенной модели. Для этого я подумал о том, чтобы поместить этот файл в хранилище BLOB-объектов и обновить некоторые переменные "placholder" в score.py во время развертывания, но это кажется хакерским.

Вот несколько вариантов, которые я обдумывал, но не был уверен в практичности

Вариант 1. Можно ли включить этот файл во время самого развертывания модели, чтобы он стал частью образа докера?

Вариант 2: Я обдумывал еще одну возможность: можно ли включить эту часть данных json в артефакты модели?

Вариант 3: Как насчет того, чтобы зарегистрировать его как набор данных и добавить его в файл партитуры?

Каков рекомендуемый способ развертывания зависимых файлов в сценарии развертывания модели?


person webber    schedule 14.05.2020    source источник


Ответы (2)


Есть несколько способов добиться этого:

  1. Поместите дополнительный файл в ту же папку, что и файл модели, и регистр вся папка как модель. При таком подходе файл хранится вместе с моделью.

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

  3. Используйте настраиваемый базовый образ в InferenceConfig, чтобы записать файл в образ Docker.

person Roope Astala - MSFT    schedule 14.05.2020

Чтобы расширить ответ @Roope Astala - MSFT, вот как вы можете реализовать его, используя второй подход

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

Допустим, это ваша файловая структура.

.
└── deployment
    ├── entry.py
    ├── env.yml
    └── files
        ├── data.txt

И вы хотите прочитать сценарий files/names.txt в entry.py.

Вот как бы вы прочитали это в entry.py:

file_path = 'deployment/files/data.txt'
  with open(file_path, 'r') as f:
    ...

И вот как бы вы настроили конфигурацию развертывания.

deployment_config = AciWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1)
inference_config = InferenceConfig(
    runtime='python',
    source_directory='deployment',
    entry_script='entry.py',
    conda_file='env.yml'
)
person druskacik    schedule 11.12.2020
comment
что, если мне нужно отредактировать entry.py позже после развертывания, не меняя точку восстановления. - person vishal; 04.04.2021
comment
@vishal Вы можете использовать overwrite=True в методе Model.deploy. См. docs.microsoft.com/ en-us / python / api / azureml-core / - person druskacik; 05.04.2021