STACK MORE LAYERS – Telegram
STACK MORE LAYERS
2.11K subscribers
82 photos
15 videos
3 files
161 links
Еще один канал в твоем списке, который ты не будешь читать
Author: @alxmamaev
Download Telegram
📔 Пару слов про Jupyter 📓

Встретил на работе такой репозеторий, где лежал только один ноутбук для подгрузки и обучения модели.
Раньше я не видел в этом никакой проблемы, т.к. вроде все казалось весьма удобно. Со временем я поднабрался опыта и понял, что jupyter это отстой, т.к. это хороший инструмент в целом, но не то, в чем стоит хранить обучение моделей в продакшене.

Чем раньше вы перейдете на формат проекта, когда у вас в отдельных модулях лежит обработка, в отдельных модель, а в других обучение, тем раньше вы перейдете на новый грейд понимания в удобстве версионирования экспериментов, рефакторинга кода и запуска экспериментов.

Jupyter - главное зло, если он у вас есть в боевых проектах.


https://towardsdatascience.com/5-reasons-why-jupyter-notebooks-suck-4dc201e27086
✍️ Best image labeling tool 🔨

Кажется, я нашел царь-разметчик, который я пытался найти достаточно давно.
Я перепробовал кучу разных штук, но у них либо была стремная реализация с точки зрения интерфейса (одна программка была написана на джаве с супер не удобным интерфейсом), другие предоставлялись как сервис и не позволяли легко скейлить разметку внутри компании или размечать самому, в итоге в любом варианте имели кучу ограничений и просили за это деньги.

В итоге я нашел CocoAnnotator: https://github.com/jsbroks/coco-annotator


Он позволяет из коробки легко настроить разметку разных датасетов под задачи:
* Image labeling
* Image detection
* Image segmentation
* Keypoints detection

Имеет встроенный API, базу данных пользователей, датасетов и лейблов, позволяет легко импортировать датасет и экспортировать его в формате Coco. При этом имеет очень приятный интерфейс.

Запускается легко через docker compose. Короче must have!


И вот вам пару скриншотиков интерфейса
Давайте попробуем ввести лайки к постам. Оцените, будет ли болезна штука выше для вас?
🍎 Apple M1 vs Tesla v100🔥

Может прозвучать глупо, но не спешите делать свои выводы. На презентации чипа m1 Apple, заявили, что у них будет аппаратная поддержа для Deep learning штук. Ранее я думал, что он будет способен применяться только для инференса всяких TFLite моделек, но сегодня на Reddit наткнулся на интересный пост.

https://wandb.ai/vanpelt/m1-benchmark/reports/Can-Apple-s-M1-help-you-train-models-faster-cheaper-than-NVIDIA-s-V100---VmlldzozNTkyMzg

Чувак просто взял и сравнил работу чипа M1 с карточкой от Nvidia Tesla V100 и получил интересные результаты.
Понятное дело, что в общем и целом V100 выигрывает, но эта штука и весист как полмакбука, а электричества кушает как чайник.

На задачах с малым количеством весов, например тренировка последнего полносвязного слоя сети на MacMini проходит быстрее, чем на Tesla V100.
Только представьте, вы уже можете решать часть задач на Mac быстрее чем на топовых карточках. При этом потребление элетричества процессором M1 в 4 раза меньше.

На больших сетках пока, понятное дело проигрыш. Автор так же заметил, что learning rate на чипах m1 более привередливый и модель иногда не сходится, возможно это баги в ранних реализациях библиотеки.

Конечно, использовать все это еще рано, но это выглядить очень многообещающе, от того интересно, что покажут Pro версии девайсов от Apple. (Macbook pro не в счет)
Уже хочешь новый MacBook?
Кстати, на секундочку подумайте, что в новых IPad и IPhone будут стоять схожие чипы, а значит запускать какие-то более сложные сетки в виде GPT и прочего стафа на носимых девайсах не будет такой болью.
🔨 Запуск сеток в продакшен 📐

Часто, при прохождении собеседования в компании на позиции DL разработчика, меня спрашивали про вывод сеток в продакшен. Так получается, что делать fit/predict делать умеют примерно все, а вот запускать что-то на реальном железе, так чтобы оно не работало со скоростью 5 fps в секунду никто не умеет (мало кто).

Так сложилось, что в последнее время я достаточно сильно приближен к этой теме, поэтому решил замутить серию постов, где я не сколько буду объяснять вам как запустить что-то в прод, сколько буду скидывать различные материалы, которые могут вам помочь в этой не простой задаче, с некоторыми пояснениями. В принципе это мой стандартный формат постов.

И так приступим.
🏗 Верхнеуровневый обзор фремворков для инференса сеток.

Нашел интересную статью на Хабре, где автор делает обзор множества фреймворков для инференса сетей. Подчеркну, что это не фремворки для обучения, аля TF, Pytorch, Keras, а именно стек, который позволит вам запускать сетки быстро для работы в проде.
Автор хорошо структурировал их по типу применения: от серверов, то мобилок и встраиваемых девайсов. Советую к прочтению как новичкам, так и бывалым. Так например, автор раскрывает следущие темы:
* OpenCV еще живее всех живых
* GPU не всегда лучше CPU

https://m.habr.com/ru/company/recognitor/blog/524980/
Ставь лайк, если хочешь узнать больше про запуск сеток на реальном железе.

А еще будет круто, если ты поделишься этим каналом с коллегой или сокурсником.
Поскольку тема продакшена достаточна обширна, у меня есть достаточно много материала по этой теме.
Соответсвенно, хочется узнать как сильно вы хотите растянуть это удовольствие.
Получать один пост в день для вечернего чтения, соответсвенно растянув эту рубрику, или же по два-три, но узнав все быстрее.

Вопрос очень компексный, т.к. я сам люблю класть что-то в папочку “почитать позже” и никогда ее не открывать.
Сколько постов в день сделаем?
Anonymous Poll
67%
1
18%
2
14%
3
💻 Железо для ускорения сетей 🖥

Вы наверняка слышали, что для ускорения сеток можно использовать не только GPU?
Так, например Google предоставляет на своем Cloud сервисе доступ к TPU (Tensor Processor Unit). Apple и Samsung встраивают чипы для расчета сеток на мобильных телефонах. Intel выпускает фремворки для оптимизации сеток под свои процессоры. А, что если мы засунем сетку прямо в память процессора в виде последовательности транзисторов? Мы получим FPGA и ASICS! Что на счет сеток на базе аналоговых сигналов вместо бинарных - IBM тут как тут.


Короче, эта статься позволит поставить кучу разных букв названий процессорвов на свои места. Автор доступным языком пояснил, что уже можно использовать сейчас, а что, вероятно, будет нашим must have в 2050 (никогда не стоит забывать, что всего 40 лет назад мы играли в Commodore с всего 64КБ на борту)

https://m.habr.com/ru/post/455353/
Лайк, если слышал об ASICS и FPGA, только в контексте майнинга битка.
🥷Запускаем сетки на Triton🧜‍♂️

Мы уже немного поговорили про то, какое железо бывает для запуска сеток. Но как правильно запускать сетки на backend, так чтобы у нас была максимальная производительность и пользователи не замечали простоев?

Писать свой сервер на Flask - заведомо плохая идея. Конечно есть специфические фреймворки для каждого из фреймворков: tfservering, PyTorch Serv, Redis AI (кстати, его крайне не рекомендую, очень мало можно настроить и документация так себе), and e.t.c.

Но есть серебренная пуля для всего? Так чтобы быстро, удобно и сразу все фреймворки? Да!

Nvidia Triton 🧜‍♂️

https://github.com/triton-inference-server/server


Тритон умеет работать со большинством популярных фреймворков, автоматически собирает запросы в батчи. Для него легко можно написать свой модуль с кастомной логикой на C++/Python/TorchScript, где вы можете делать например препроцессинг данных и соединить это с моделью в единый пайплайн не выходя из конфигов тритона!

У него есть поддержка GRPC и HTTP, что позволяет легко сгенерировала клиент под любую платформу, при этом есть уже готовые официальные для python, c++ и go.

А если вы хотите аркестрировать ваши модели на нескольких машинах, triton поддерживает KFservering (да, да, тот самый kubernetes)

Если вы все ещё делаете деплой через костылики - присмотритесь.
🎹Генерация музыки🎵

Написал тут статейку про то, как генерировать музыку с помощью трансформеров. (Спойлер) В целом, почти ничем не отличается от работы с текстом.

Сделал это после участия в соревновании по генерации музыки от Yandex и AI Community.

https://alxmamaev.medium.com/generating-music-with-ai-or-transformers-go-brrrr-3a3ac5a04126
Будет приятно, если вы прочитаете и поставите clap в блоге.
🤔 Классический CV 🔨

Неожиданно для себя обнаружил, что далеко не все задачи в CV стоит решать словами. А, так тут Unet приделать надо, просто набрать пару тысяч картинок.

Нужно было для соревнования выделить хоккейное поле на картинке, начал я как полагается со сбора датасета, обучения сетки и в итоге уперся в количество картинок которое могу разметить. В итоге от скуки начал тыкать в open cv и играться с цветами, представляя, что я известный дизайнер. И как вдруг, у меня получилось выделить поле практически так, как я хотел, парой строчек кода без всяких сеток.


Если у вас есть интересные материалы про классическое CV, которые не протухли в 2021, закиньте мне @alxmamaev
Используешь классические подходы?
Еще немного вам поспамлю

Ну вы прикиньте, никаких сеток, просто баланс белого, вырезание цвета в нужном пространстве по трешхолдам, удаление шума, объединение нескольих масок - и вуа ля, никаких сеток и датасетов.

Все таки в каких-то узких задачах можно обойтись без ML и сбора данных, я в шоках. (простите)