Реализация С++-интеграции в Python на примере NeoML AI/ML и визуализация данных
Мы разрабатываем open source-библиотеку для машинного обучения NeoML. Ядро нашей библиотеки написано на С++. Но для расширения области применения и упрощения использования мы сделали для нее Python-интерфейс. О том, как можно сделать интеграцию С++ в Python, при этом получить удобный и функциональный интерфейс, а также не потерять в производительности, я расскажу в своем докладе.
Вас ждет обзор доступных средств интеграции С++-кода в Python: ctypes, CFFI, Cython, CPython API. На примере нашего проекта обсудим их плюсы и минусы и выберем подходящее. Обсудим проблемы, возникающие при реализации интеграции: многопоточность и GIL, аллокация памяти, владение объектами, реализация сложной иерархии классов, сериализация, производительность и т. д.
Познакомимся поближе с возможностями библиотеки pybind11. Рассмотрим средства, предлагаемые в ней для решения обозначенных проблем. И в итоге оценим получившейся с помощью нее результат!
Head of Common Libraries, работает в ABBYY более 10 лет. Занимается внедрением машинного обучения в продуктах компании.
https://github.com/neoml-lib