Netflix выпустила новый программный инструмент с открытым исходным кодом под названием Polynote, который представляет собой ноутбук-полиглот с первоклассной поддержкой Scala, интеграцией Apache Spark и многоязычной совместимостью, в том числе с Scala, Python и SQL.
Polynote описывается как предоставляющая среду для ноутбуков, которая позволяет исследователям данных и исследователям машинного обучения интегрировать платформу ML Netflix на основе JVM с библиотеками машинного обучения и визуализации экосистемы Python. Платформа ML Netflix, Infra, использует Scala и используется для создания персонализированных рекомендаций по «открытию привлекательного видеоконтента, который максимизирует радость участников».
Разработчики из команды инфраструктуры персонализации Netflix были разочарованы поддержкой Scala в существующих инструментах для ноутбуков. Такие инструменты в основном предназначены для разработчиков Python, работающих в среде, построенной с использованием менеджера пакетов с относительно небольшим количеством зависимостей. Напротив, разработчики Scala обычно работают в среде, основанной на проектах, с инструментом сборки, управляющим сотнями зависимостей, некоторые из которых конфликтуют с другими. Кроме того, разработчикам, использующим Spark, необходимо, чтобы их распределенный код работал независимо от того, на каком узле кластерной среды он работает.
Polynote стремится поддержать это, предоставляя информацию о конфигурации и настройке зависимостей, которая сохраняется в самой записной книжке. Еще одной особенностью Polynote является «воспроизводимость по дизайну». Принимая во внимание положение ячейки в записной книжке при ее выполнении, Polynote помогает предотвратить плохие практики, которые затрудняют повторный запуск записных книжек сверху. Это предназначено для преодоления проблемы, заключающейся в том, что ячейки в записной книжке могут быть изменены и выполнены независимо, а также могут зависеть от вывода других ячеек в записной книжке. То, как выражения обычно оцениваются в записных книжках, может вызвать проблемы, означающие, что записные книжки не могут быть надежно перезапущены сверху, что делает их очень трудными для воспроизведения и совместного использования.
Другие преимущества, по мнению команды разработчиков, включают в себя тот факт, что каждая ячейка в записной книжке может быть написана на другом языке с переменными, разделяемыми между ними. В настоящее время поддерживаются типы ячеек Scala, Python и SQL. Программное обеспечение также интегрировано с matplotlib и Vega, чтобы дать пользователям возможность общаться с другими с помощью визуализации.