Почти все мы пользуемся ПО с открытым исходным кодом (Open Source Software или OSS), это часть нашей жизни. Коллективное сотрудничество в создании программного обеспечения изменило мир разработки ПО и мир вообще. Но мы не видим тех же действий в области data science. В DAGsHub мы проводим много времени, думая о open source data science (OSDS) и разговаривая с дата-сайентистами. Эта статья представляет собой краткое изложение некоторых таких бесед в нашем сообществе. Цель этой статьи — сформулировать, почему открытый исходный код является важной частью разработки программного обеспечения сегодня и выдвинуть аргумент о том, что открытость источников будет важной частью data science в ближайшем будущем.
Прежде чем утверждать, что Open Source Data Science имеет смысл, начнем с объяснения, почему имеет смысл Open Source вообще.
Дело открытого ПО
Многие считают преимущества открытого ПО очевидными, и большинство разработчиков и компаний-разработчиков ПО вовлечены в определенные отношения с сообществом открытого ПО. Но так было не всегда.
Краткая история программного обеспечения с открытым исходным кодом
В самом начале — в 1950-1960-е годах — код почти всего программное обеспечения был открыт. Открытое ПО создавалось исследователями и учеными, которые в духе науки делились им с обществом.
Но даже позже, когда такие компании, как IBM, продавали свои первые компьютеры, программное обеспечение распространялось вместе с его исходным кодом чтобы дать возможность «хакерам» исправлять ошибки и улучшать продукт.
Закрытое программное обеспечение постепенно стало стандартом к концу 1960-х годов, когда цены на ПО значительно выросли по сравнению с аппаратным обеспечением. Технологический сдвиг, как и многие другие сдвиги, начался с антимонопольного иска против IBM, закончившегося выводом, что поставляемое программное обеспечение мешает конкуренции.
Несколько лет спустя, в 1974 году, США пришли к выводу, что программное обеспечение может защищаться законом об авторских правах, и таким образом началась эпоха (и бизнес-модель) программного обеспечения с закрытым исходным кодом. Хотя открытый исходный код никуда не исчезал (пример — TeX), он пережил своего рода ренессанс, начавшийся с проекта GNU в 1983 году. Этот расцвет значительно проявился только в конце 1990-х годов в начатых Линусом Торвальдсом Linux и Git, конечным результатом стал GitHub.
Почему это не всегда было очевидно
Есть известная цитата о Википедии, применимая и к открытому исходному коду:
Проблема Википедии [читайте: Open Source] в том, что она работает только на практике. Теоретически она — всеобщая катастрофа — Гарет Оуэн
В первые дни существования программного обеспечения с открытым исходным кодом существовало твердое убеждение, что компании — разработчики ПО никогда не будут делиться своим исходным кодом, поскольку он, как их интеллектуальная собственность — самое ценное сокровище, и раздавать его конкурентам просто не имеет никакого смысла.
Программное обеспечение с закрытым исходным кодом имеет свои преимущества — оно, как правило, лучше поддерживается, имеет набор функций богаче и иногда удобнее в использовании. Действительно, у компаний есть интеллектуальная собственность, которую они хотели бы защитить, и не всегда ясно, как открытый исходный код вписывается в бизнес-модели разработчиков или компаний. Другими словами, иногда открытое ПО затрудняет зарабатывание денег. С другой стороны…
Преимущества открытого ПО
Сегодня многие преимущества открытого ПО очевидны:
- Прозрачность и свобода — использование открытого ПО означает, что вы не привязаны к поставщику и можете легко понять внутреннюю работу используемых вами инструментов.
- Надежность и безопасность — идентификация ошибок и рисков безопасности намного проще, когда у вас есть тысячи глаз, проверяющих ваш код.
- Ускорение выхода на рынок — сотни участников, помогающих в разработке функций, приводят к быстрому выходу на рынок. Это особенно верно для стартапов, в которых мало сотрудников.
Некоторые преимущества, однако, не столь интуитивно понятны. Например, одна из самых сложных вещей в технологической индустрии — поиск хороших разработчиков, многие из которых очень внимательны к открытому ПО. Включение открытого ПО в портфель продуктов компании позволяет разработчикам продемонстрировать способности и внести свой вклад в развитие сообщества. Это может принести огромную выгоду талантливому человеку.
И конечно, выпуск внутреннего проекта с открытым исходным кодом — это прекрасный PR (я говорю о пиаре, не о пул-реквестах), особенно когда у вас есть построенный вокруг него продукт с закрытым исходным кодом и/или если ваши пользователи — это разработчики.
Иногда это просто имеет смысл
Когда имеет смысл создавать проекты с открытым исходным кодом? Я думаю, что мы можем определить «критерий открытого исходного кода» для организаций таким образом:
Когда проект решает общественную проблему и не является частью вашего основного продукта (это эмпирическое правило, хотя есть исключения), открыть его исходный код — хорошая идея.
В качестве примера посмотрим на React. React — это библиотека JavaScript для построения пользовательских интерфейсов. Она была выпущена компанией Facebook в 2013 году. Распространяется по лицензии MIT, главным образом это означает, что вы можете использовать его для чего угодно, включая коммерческие проекты.
Проанализируем React с точки зрения продукта: он решает серьезную проблему в веб-разработке — создавать пользовательские интерфейсы с нуля трудно. Понятно, что проблема широко распространена, а также понятно то, что решение этой проблемы не является целью Facebook как компании — они
Это означает, что React является примером критериев, изложенных выше — он решает общественную проблему и не является основной интеллектуальной собственностью компании. Поэтому выпуск React как открытого ПО обеспечивает Facebook все преимущества при небольшом количестве недостатков.
Open Source Data Science
Я думаю, теперь вы должны быть убеждены, что открытое ПО ценно. Давайте поговорим о том, как эти понятия переносятся в область data science. Обрисуем более подробно видение того, как open source data science может работать, приведя соответствующий «критерию открытого исходного кода» пример — распознавание лиц.
Наверное, вы можете легко придумать несколько приложений, применяющих распознание лиц. Давайте рассмотрим распознавание лиц в контексте диагностики заболеваний и рекомендаций в моде. Быстрый поиск в Google покажет, что есть делающие именно это компании.
В первом случае фотография пациента делается в рамках медицинского осмотра (или дома), затем снимок анализируется, чтобы распознать возможные заболевания и помочь врачам расставить приоритеты, учитывая неотложные случаи, и лечить больше людей. Во втором случае приложение рекомендует лучшую одежду в соответствии с вашей историей покупок, а также чертами лица или вашей конституцией.
Занимающиеся этими двумя проблемами компании определенно не конкурируют. Их интеллектуальная собственность — система диагностики заболеваний или рекомендаций в моде. Однако сегодня обе компании, скорее всего, параллельно развивают важнейшую часть своих систем — распознавание лиц. Это означает дублирование работы, а также трату большого количества времени дата-сайентистов и денег.
В мире open source data science обе компании будут работать над открытым проектом распознавания лиц, вносить код и данные, чтобы помочь бороться с крайними случаями и создать решение надежнее. Компании могли бы выделить для этой задачи меньше дата-сайентистов, чем сегодня, и направить их работу на более сложные и критически важные проблемы.
Новые дата-сайентисты, желающие изучить и продемонстрировать свои навыки для улучшения своего портфолио, будут мотивированы выявить ошибки и неэффективность, создавать альтернативные модели, определяющие приоритетность различных показателей для различных вариантов использования.
В довершение всего, ищущие перспективных дата-сайентистов компании, могли бы связаться с теми, кто уже внес свой вклад в проекты интересующие компанию, тем самым сократив время найма и включения в работу новых членов команды.
В последнее время темам прозрачности ИИ, разнообразия и инклюзивности в области технологий уделяется основное внимание. OSDS в этих областях может оказывать значительное влияние. Чтобы привести пример, предположим, что пользовательница одного из этих продуктов (дата-сайентист) обнаруживает, что распознавание лиц плохо работает на ее фотографии. Она просматривает набор данных и понимает, что там нет изображений этнического меньшинства, к которому она принадлежит. Она добавляет заполняющие пробел изображения из другого набора данных, отправляет пул-реквест — и модель работает намного лучше, а компании наслаждаются новой, улучшенной моделью. По-настоящему беспроигрышная ситуация.
Когда я начал писать эту статью, это был теоретический пример. Теперь пример не теоретический.
В качестве финала статьи я хотел бы написать о двух примерах того, как open source data science должна и не должна выглядеть на практике.
Программное обеспечение с открытым исходным кодом, замаскированное под open source data science
Я уже слышу возражение: «я клонировал tensor2tensor и BERT из GitHub, это уже open source data science!» или «Код из многих статей, которые я читал на arXiv размещен в интернете».
Это не удар по авторам BERT, и этот раздел не предназначен для того, чтобы выразить неуважение к этим проектам. Эти проекты чрезвычайно полезны, и требуется много тяжелой работы, чтобы сделать их доступными для общественности. Их авторы делают все возможное, учитывая имеющиеся у них инструменты и отраслевые стандарты.
Аргумент, который я хотел бы привести: это открытое ПО, но не open source data science
Если код в одном из таких примеров содержит ошибку, которая приводит к тому, что API для опубликованной модели по какой-то причине не работает, независимый программист обычно может внести исправление ошибки в виде пул-реквеста. С другой стороны, если независимый дата-сайентист осознает, что в данных есть проблема, скажем, модель предвзята к определенным этническим группам, в большинстве таких случаев, дата-сайентисты не могут изменить набор данных и создать улучшенную модель. Это вклад в код, но не в научные данные проекта. Другими словами, проект фактически становится проектом открытого ПО. Open source data science также может иметь важный побочный эффект в смысле исследований в области data science.
Повышение качества научных исследований в data science
Повышение качества научных исследований является важной целью, к которой следует стремиться. Несколько заметных усилий по достижению этой цели заключаются в следующем:
- Distill.pub — издание, созданное с целью сделать исследование машинного обучения более доступным, интерактивным и прозрачным.
- Open Review — платформа для открытой научной коммуникации, ориентированная на то, чтобы сделать процесс экспертной оценки прозрачным.
- arXiv — электронная библиотека исследований, утвержденных на публикацию до полного рецензирования.
- Papers With Code — коллекция исследовательских работ по машинному обучению в сочетании с кодом, что упрощает реализацию.
Много сказано о проблемном характере некоторых передовых результатов в исследованиях в data science. Обычно при публикации статьи вы видите только конечный результат — процент улучшения по сравнению с прежним передовым подходом. Во многих случаях небольшие улучшения могут быть отнесены успешному выбору данных для генерации случайных чисел или выполнению множества экспериментов до тех пор, пока один из них не будет успешен в метрике, без достаточного внимания к статистической значимости результата.
Проще говоря, поскольку процесс исследования непрозрачен, мы не знаем, действительно ли результат представляет собой прогресс в исследованиях или это удачная случайность. В мире open source data science исследовательские группы могли бы опубликовать всю историю своих исследований, а затем представлять статью на рецензирование. Рецензенты смогут обеспечить полезную обратную связь и гарантировать строгость метода исследования. Каждый будет наслаждаться более качественными исследованиями в области data science.
Уже традиционно напоминаем, что если вас привлекает перспективная сфера data science — используйте специальный промокод HABR, который дает дополнительные 10% к скидке указанной на баннере.
- Онлайн-буткемп по Data Science
- Обучение профессии Data Analyst с нуля
- Онлайн-буткемп по Data Analytics
- Обучение профессии Data Science с нуля
- Курс «Python для веб-разработки»
Eще курсы
- Курс по аналитике данных
- Курс по DevOps
- Профессия Веб-разработчик
- Профессия iOS-разработчик с нуля
- Профессия Android-разработчик с нуля
- Профессия Java-разработчик с нуля
- Курс по JavaScript
- Курс по Machine Learning
- Курс «Математика и Machine Learning для Data Science»
- Продвинутый курс «Machine Learning Pro + Deep Learning»
Рекомендуемые статьи
- Как стать Data Scientist без онлайн-курсов
- 450 бесплатных курсов от Лиги Плюща
- Как изучать Machine Learning 5 дней в неделю 9 месяцев подряд
- Сколько зарабатывает аналитик данных: обзор зарплат и вакансий в России и за рубежом в 2020
- Machine Learning и Computer Vision в добывающей промышленности