Поделиться через


Развертывание кода Python с помощью службы моделей

В этой статье описывается, как развернуть ваш настраиваемый код Python с помощью модели ИИ Mosaic AI Model Serving. В примере в этой статье рассматриваются рекомендации по добавлению логики предварительной обработки и последующей обработки в модель и ее развертыванию.

Функция Python MLflow, pyfunc, обеспечивает гибкость для развертывания любого фрагмента кода Python или любой модели Python. Ниже приведены примеры сценариев, в которых может потребоваться использовать руководство.

  • Модель требует предварительной обработки перед передачей входных данных в прогнозную функцию модели.
  • Платформа модели изначально не поддерживается MLflow.
  • Вашему приложению требуется, чтобы необработанные выходные данные модели были обработаны для последующего использования.
  • Сама модель имеет логику ветвления по запросу.
  • Вы хотите развернуть полностью пользовательский код в качестве модели.

Создание пользовательской модели функции Python MLflow

MLflow предоставляет возможность регистрировать код Python с помощью формата пользовательских моделей Python.

Существует две необходимые функции при упаковке произвольного кода Python с помощью MLflow:

  • load_context — все, что необходимо загрузить только один раз, чтобы модель работала, должна быть определена в этой функции. Это важно, чтобы система свести к минимуму количество артефактов, загруженных во время функции predict, что ускоряет вывод.
  • predict — эта функция содержит всю логику, которая выполняется при каждом выполнении входного запроса.

Внесите в журнал вашу модель функции на Python

Несмотря на то, что вы пишете модель с пользовательским кодом, можно использовать общие модули кода из вашей организации. С помощью параметра code_path авторы моделей могут фиксировать полные ссылки на код, который загружается в путь и может быть использован в других пользовательских моделях pyfunc.

Например, если модель регистрируется в журнале:

mlflow.pyfunc.log_model(CustomModel(), "model", code_path = ["preprocessing_utils/"])

Код из preprocessing_utils доступен в загруженном контексте модели. Ниже приведен пример модели, которая использует этот код.

class CustomModel(mlflow.pyfunc.PythonModel):
    def load_context(self, context):
        self.model = torch.load(context.artifacts["model-weights"])
        from preprocessing_utils.my_custom_tokenizer import CustomTokenizer
        self.tokenizer = CustomTokenizer(context.artifacts["tokenizer_cache"])

    def format_inputs(self, model_input):
        # insert some code that formats your inputs
        pass

    def format_outputs(self, outputs):
        predictions = (torch.sigmoid(outputs)).data.numpy()
        return predictions

    def predict(self, context, model_input):
        model_input = self.format_inputs(model_input)
        outputs = self.model.predict(model_input)
        return self.format_outputs(outputs)

Обслуживание модели

После регистрации пользовательской модели pyfunc его можно зарегистрировать в каталоге Unity или реестре рабочих областей и отправить модель в конечную точку обслуживания моделей .

Пример записной книжки

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

Настройка выходных данных модели с помощью ноутбука MLflow PyFunc

Получите записную книжку