Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Moscow Python Meetup №95 Арсен Гумин (Сбер, Р...

Moscow Python Meetup №95 Арсен Гумин (Сбер, Руководитель направления по исследованию данных) Model-as-a-service: с нуля до enterprise ready

Разберемся, как усовершенствовать ваш model-as-a-service. Пройдем путь от понятной упаковки модели в Fastapi приложение до enterprise-ready сценариев машинного обучения. Также узнаем, какие инструменты и подходы применяются в онлайн-моделях и выясним, существует ли значительная разница между традиционными CPU-bound приложениями и моделями машинного обучения.

Видео: https://moscowpython.ru/meetup/95/model-as-a-service/

Moscow Python: http://moscowpython.ru
Курсы Learn Python: http://learn.python.ru
Moscow Python Podcast: http://podcast.python.ru
Заявки на доклады: https://bit.ly/mp-speaker

Moscow Python Meetup

October 21, 2024
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. 3 3 Back-end MLTools Models, Services Интеграционные сервисы платформы User

    Go\Py Front-end RecSys Studio Web \ Airflow Channels Client Data user DS SDK Sber ReсSys Platform
  2. Цель митапа Познакомить python разработчиков с ml online Рассмотреть инструментарий

    для сервинга моделей Узнать получше проблематику задачи ml online Показать MLOps\DS специалистам как можно улучшить их сценарии
  3. Результат разработки ML решения Метрика 1 Метрика 2 Метрика 3

    Метрика 4 Эксперимент 1 4,5 2,3 1,7 5 Эксперимент 2 3,2 5,1 4,4 3 Эксперимент 3 2,1 1,7 2,5 2,8 Эксперимент 4 4,5 2,2 1,7 7
  4. Очень хочется основываясь на действиях пользователя в наших продуктах, сразу

    ему давать персональные предложения: • Кредитные продукты • Фильмы • Ecom • Музыка • … Постановка задачи
  5. • Saving and Serving Models • Tracking • Experiment Management

    • Reproducibility • Deployment Consistency • Model Management • Library Agnosticism 12 ML Platform
  6. Open-Format Vendor File Extension License ML Tools & Platforms Support

    Human- readable Compression "almagination" − − − − − − ✓ PMML ✓ DMG .pmml AGPL R, Python, Spark ✓ (XML) ✘ PFA ✓ DMG JSON PFA-enabled runtime ✓ (JSON) ✘ ONNX ✓ SIG LFAI .onnx TF, CNTK, Core ML, MXNet, ML.NET − ✓ TF Serving Format ✓ Google .pf Tensor Flow ✘ g-zip Pickle Format ✓ .pkl scikit-learn ✘ g-zip JAR/ POJO ✓ .jar H2O ✘ ✓ HDF ✓ .h5 Keras ✘ ✓ MLEAP ✓ .jar/ .zip Spark, TF, scikit- learn ✘ g-zip Torch Script ✘ .pt PyTorch ✘ ✓ Apple .mlmodel ✘ Apple .mlmodel TensorFlow, scikit-learn, Core ML − ✓ Как хранить модели? И где?
  7. Model Registry • Saving and Serving Models • Tracking •

    Experiment Management • Reproducibility • Deployment Consistency • Model Management • Library Agnosticism
  8. Прямое решение @asynccontextmanager async def lifespan(app: FastAPI): app.state.model = load_model(...)

    yield app = FastAPI(lifespan=lifespan) @app.post("/v1/model/predict") def predict(x: List[List[float]]): outputs = app.state.model.predict(x) return outputs • Обучаем модель на исторических данных • Валидируем • Делаем pickle • Кладем модель в S3 • Или собираем модель сразу с сервисом • Пишем простой fastapi cервис • Кидаем все deployment/docker/systemd • Рассказываем всем формат входных данных
  9. Ретроспектива решения • Быстро • Просто • Дешево • Что

    с метриками? • Что с масштабированием нагрузки • Что с auth? • Что с cloud native? • Framework agnostic? • Стандартизация? • GPU support • Бизнес правила • Поддержка стриминга
  10. Добавим терминов Serving\Inference Platform • Advanced deployment • Serverless •

    Графы моделей • Cloud native Inference server • REST / gRPC server • Model serving • Metrics • Inference Protocol
  11. 23 Сохраним нашу модель def predict(model_input): return model_input.apply(lambda x: x

    * 2) with mlflow.start_run(): mlflow.pyfunc.log_model("model", python_model=predict, pip_requirements=[])
  12. 24 Развернем модель apiVersion: machinelearning.seldon.io/v1alpha2 kind: SeldonDeployment metadata: name: mlflow

    spec: name: wines predictors: - graph: children: [] implementation: MLFLOW_SERVER modelUri: s3://path/to/model name: classifier name: default replicas: 1 apiVersion: serving.kserve.io/v1beta1 kind: InferenceService metadata: name: mlflow-v2-wine-classifier spec: predictor: model: modelFormat: name: mlflow protocolVersion: v2 storageUri: s3://path/to/model
  13. 29 HTTP/2 и gRPC • Модели могут гонять много данных

    по сети • Для запроса к модели, необходимо обратится к 3 разными сервисами
  14. 31 Inference servers • NVIDIA Triton Inference Server • TensorFlow

    Serving • TorchServe • BentoML • Roboflow Inference • KServe (formerly KFServing)
  15. 32 Спасибо за внимание Не успели поговорить: • Security •

    Multi tenant • Feature store • Streaming • Adaptive batching • GPU • Public cloud platforms @arsengumin [email protected]