питоновских ML и DL моделей закинуть в продакшен чтобы генерировать предсказания. Сначала по запросу (типа curl -X POST ...) а в будущем и в реальном времени. Одна модель написана используя Scikit-learn и ещё несколько на TensorFlow и PyTorch. В будущем планируется планируется также брать данные из HBase и Elasticsearch.
А теперь проблема. Боссы хотят что-бы все модели работали на Спарке и готовы предоставить только спарк-кластер для моих моделей. Пытаюсь теперь понять как лучше это все задеплоить.
1) Первый вариант - это переписать ML модель с Scikit-learn на Spark ML. Что делать с DL правда не понятно. Нужно чтоб работало на GPUs. Нашёл несколько вариантов на гитхабе: elephas (https://github.com/maxpumperla/elephas), TensorFlowOnSpark (https://github.com/yahoo/TensorFlowOnSpark), BigDL (https://github.com/intel-analytics/BigDL) и Analytics Zoo (https://github.com/intel-analytics/analytics-zoo). Но они не поддерживают пока что Spark 3. BigDL и Analytics Zoo ещё вдобавок не поддерживают вычисления на GPUs (в будущем планирует).
2) Второй вариант - это добавить PySpark к коду и добавить UDFs. Но пока я не понял можно ли весь код завернуть в них.
3) У TensorFlow кажется появилась какая-то поддержка Спарка https://github.com/tensorflow/ecosystem/tree/master/spark. Пока не пробовал, но выглядит очень сырым продуктом.
4) Ещё есть Koalas со своими dataframes на Спарке. Но пока я не вижу как она может пригодится.
5) Ещё слышал про форматы PMML, PFA и ONNX. Но не знаю на сколько это актуально.
Что посоветуете в моём случае?
Модели которые используют cpu можно развернуть на спарке через spark-submit, нужно написать py-скрипт который подтягивает все библиотеки и реализует функцию инференса, потом нужно чтобы этот скрипт заливался на все ноды, тогда udf с этой функцией будет работать в кластерном режиме, все библиотеки используемые нужно будет запаковать в архив и прописать в pyspark-интерпретер
Обсуждают сегодня