🤗 Don't Repeat Yourself

#pro_nlp #nlp #transformers #opensource



Вчера HuggingFace подняли 100 миллионов долларов инвестиций и достигли капитализации в 2 миллиарда долларов.



С 2016 года HuggingFace стал самой большой и быстрорастущей платформой для машинного обучения. В HF Hub хостятся 100+ тысяч предобученных моделей и 10+ тысяч датасетов для NLP, CV, ASR, RL и многих других направлений.



Я давно хотела подсветить Transformers Design Philosophy, принятый в команде для развития opensource платформы.

🤗 Для сравнения: контрибьюторы Linux исчисляются десятками тысяч человек (популярная оценка — 16 тысяч разработчиков). ML-сообщество HuggingFace — теперь более 100 тысяч.



В основе философии лежит отказ от принципа DRY ("Don't repeat yourself"). Этот принцип широко используются во многих сферах разработки ПО, и впервые был сформулирован в книге "Программист-прагматик". TLDR: не дублировать логику, которая уже написана где-то еще. В трансформерах же вариаций того же механизма attention уже 50+ в разных файлах, а функции BERT часто просто скопированы разработчиками в код новых моделей — что с этим делать?



В data science зачастую нормализован грязный код, разобранный по ноутбукам, плохой контроль версий экспериментов и чекпоинтов, полученных в результате, не говоря уже о датасетах (guilty). В платформе для коллабораций такого хочется избежать и обеспечить порядок. Но в случае с тем же attention пришлось бы писать много абстракций разного уровня вложенности, чтобы обеспечить все вариации механизма, представленные в статьях, и заставлять разработчиков новых моделей переиспользовать их.

Примерно таким путем расширялся тот же sklearn, однако, там никогда не было сотни тысяч контрибьюторов: с таким масштабом контролировать порядок все сложнее. Как сделать централизованный цивилизованный подход, обеспечивающий воспроизводимость и прозрачность результатов?



Ответ HuggingFace: не использовать DRY вообще. Вместо принципов DRY исппользуется single file policy: весь необходимый код для запуска и инференса модели должен находиться в одном файле вида zapuskaem_berta.py.

Другие разаботчики будут смотреть только его, если хотят разобраться с логикой модели. И никакой абстракции.



Потому что:

1. Transformers создается open source сообществом и для него.

2. Как пишут фаундеры, продукт HuggingFace — это модели, а их клиенты — это разработчики, которые читают или настраивают код модели.

3. Область ML развивается очень быстро, абстракций не напасешься.

4. ML-модели при этом статичны и зафиксированы.



Уверена, что для продуктовой разработки этот подход как минимум очень нестандартный. А вот если продукт на самом деле — коммьюнити, то очень даже понятный. Легкая интеграция в индустриальные пайплайны, ниже порог входа, модели — в открытом доступе, никакого обучения с нуля, полная экономия green AI 🌱.



Можно сказать, что HuggingFace — инстраструктурный продукт ML для ML, и теперь сложно представить разработку без него. И вместе с ним и single file policy — для нужд опенсорса пока что самый рабочий вариант.