Развертывание кода 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 или реестре рабочих областей и отправить модель в конечную точку обслуживания моделей .
Пример записной книжки
В следующем примере записной книжки показано, как скорректировать выходные данные модели, когда необработанные выходные данные запрашиваемой модели необходимо выполнить постобработку для использования.