STACK MORE LAYERS – Telegram
STACK MORE LAYERS
2.11K subscribers
82 photos
15 videos
3 files
161 links
Еще один канал в твоем списке, который ты не будешь читать
Author: @alxmamaev
Download Telegram
😦 Если вы используете Numpy + Pytorch, скорее всего у вас есть этот баг 😱

Нашёл публикацию в блоге NVidia, про то, как легко и ненавязчиво можно угодить в когти не честного рандома.

Суть бага заключается в следующем. Если использовать np.rand и (ему подобные) внутри Pytorch Dataset, то в случае использования multiprocessing, мы получим неожиданный результат.
Каждый независимый воркер будет генерировать случайные числа идентичные случайным числам других воркеров 🤷‍♂️

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

И этому багу подвержены множество популярных проектов на Pytorch.

Подробнее прочитать можно тут:
https://tanelp.github.io/posts/a-bug-that-plagues-thousands-of-open-source-ml-projects/
Ну а для тех, кто вообще не связан с технологиями и разработкой моделей машинного обучения - посмотрите какую крутую технологию сделали украинские ребята из компании Respeecher.

Эта штука позволяет заменять ваш голос на голос знаменитости и качество поражает.


https://youtu.be/glwgybvxk-0
⚡️Тренировка моделей не spot instance☄️

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

В AWS (Клауд сервис от Амазон) существует опция spot instence. Это аренда серверов по методу биржи.
Со своей стороны вы можете выставить максимальную цену, которую готовы платить за данный сервер в час, Амазон, же в свою очередь, дает вам право пользоваться этими мощностями ровно до тех пор, пока не найдется человек, который перебьет вашу цену.
Из плюсов вы получаете стоимость значительно ниже, чем обычные машины (В том числе GPU), соответсвенный минус - машинку могут забрать в любой момент (вам дается 15 минут для завершения процессов).

Настройка сервера для начала работы достаточно муторная операция, не хотелось бы каждый раз руками создавать машину через aws, настраивать окружение через ssh, а потом постоянно копировать результаты обучения, чтобы они не потерялись, в случае остановки машины.

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

https://github.com/spotty-cloud/spotty/
🕺 Fast Pose Estimation 🧍‍♂️

Смотрел, что есть сейчас модного и удобного для вычисления скелета человека на видео, и нашёл интересную библиотечку.

При первом поиске вы скорее всего найдёте популярный проект OpenPose, который реализует описанную выше задачу в виде небольшой C++ библиотеки.
Однако покопавшись дальше я нашёл HyperPose.

Ребята пишут, что они в 4 раза быстрее open pose и в 10 раз быстрее TF Pose.

Достигается это с помощью использования tensorrt (библиотека от nvidia, для ускорения сеточек).
Сама библиотчека достаточно легковесная и легко собирается.
К сожалению имеет api только из C++, но для моей задачи этого вполне хватило.

Использовать ее достаточно легко, ведь даже я, не являясь грандмастером-колбастером по C++ смог это сделать.

В общем, если вы будете делать какие-то домашние или не очень проекты по детекции позиции человека - настоятельно советую посмотреть.

https://github.com/tensorlayer/hyperpose
🔄TF.jS Converter🔃

Понадобилось мне тут сконвертить модель из tf.js в обычный tensorflow, поскольку оригинала модели на tf не существует.
Оказалось, что никаких официальных инструментов для этого нет, но хорошие ребята подсуетились и сделали.

https://github.com/patlevin/tfjs-to-tf

О том, как пользоваться - здесь:
https://christianjmills.com/tensorflow/tutorial/2020/09/15/How-to-Convert-a-TensorFlow-js-Graph-Model-to-a-Tensorflow-SavedModel.html
🌤ODS Summer of Code 🌞

Стартовала летняя школа проектов в сфере DL от ODS. Суть примерно та же, как и в Google Summer of Code. Записываетесь на проект, пилите в рамках него крутые и полезные задачки, а в конце получаете всякие ништяки и гору опыта.

Среди проектов есть и мой 🌚, пусть пока и не очень развитый, но есть шанс это исправить!

https://ods.ai/tracks/summer-of-code-2021
⚡️Yolov5 TensorRT Jetson ☄️

В общем, недавно я купил Nvidia Jetson Nano, это такой маленький компьютер похожий на Raspberry PI, но с маленькой видеокарточкой.
В качестве упражнения сделал небольшой проектик, который позволяет без лишней боли портировать Yolov5 на TensorRT для Jetson.
Важное уточнение, что сейчас инференс оптимизирован именно под Jetson, ибо у него есть некоторые железные особенности, так, например в нем отсутсвует раздельная RAM и DRAM, видеокарточка и процессор живут в рамках одной памяти.

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

https://github.com/alxmamaev/jetson_yolov5_tensorrt
Демка того, как фурычит детекция на видосике с Питером.

https://www.youtube.com/watch?v=Gg_El_NgPs8
Есть идейка погонять разные штуки на Jetson Nano и сделать небольшую обзорную статью того, что на нем можно сделать.
Из интересного - попробовать запустить TTS, модельки huggingface + Quake 3.

Если интересно - лайк, если есть идеи - в лс @alxmamaev
✍️ Как писать хорошие сообщений в Git 📝

Пока нет возможности написать подробный обзор jetson, т.к. я в некотором отъезде, но я уже завел себе страничку с блогом на своем домене 👉👈
Но не оставлять же вас без полезного контента. В последнее время я чаще читаю различные материалы не только про DS и ML, а в целом про разработку, computer science, и всякий технический обвес в виде устройства linux и кластеров. Думаю, что никто не расстроится, если подобный материал будет появляться здесь.

Я долгое время пытаюсь приучить себя к различным "аккуратным" методам ведения разработки, такие как: типизирование в питоне, докстринги и хорошие коммит месседжи.
Если вы все еще не уверены, что правильно пишете сообщения в комментах, рекомендую ознакомиться с этой статьей, где автор по полочкам рассказывает как делать это легко и непринужденно.

https://chris.beams.io/posts/git-commit/
🐍 Мысли в слух про Enviroment и Conda 📦

Я пользуюсь Anaconda достаточно долгое время, примерно с того дня, когда я заинтересовался Data Science как таковым.
Мне его представили как удобный инструмент, чтобы устанавливать библиотеки на рабочую машину.
Я пользовался windows и тогда мне это показалось безумно удобным инструментом, ведь многие пакеты не хотели просто так устанавливаться под виндой.
Шли годы, я оброс бородой и опытом, давно променял windows на более удобные платформы, но по прежнему продолжал пользоваться conda.
Я спрашивал себя - а что есть действительно наилучший способ организации рабочего окружения? Почему я должен отказаться от conda?
Внятного ответа в интернете я найти так и не смог, везде были свои за и против. Кто-то находится в лагере venv, кто-то в virtualenv.

Но недавно мне пришло осознание и я понял как сделать лучше, а самое главное - зачем.

Главная особенность conda заключается в том, что в отличие от pip оно так же поставляет собранные бинарники под любые задачи, то есть вы можете устновить ffmpeg, openblas, openfst и другие вещи прямо из конды, хотя сами эти пакеты могут быть совсем не связаны с питоном. В то же время pip и средства виртуализации venv и ему подобные позволяют вам "изолировать" именно ваше питоновское окружение, это означат, что проблемы с конфликтами бинарных пакетов все еще остаются.

Во многом виртуализация conda меня устраивала, но недавно произошло важное событие - я перешел на macbook m1, соответсвенно архитектура процессора полностью поменялась, больше никаких x86, только arm. И соответсвенно мои попытки скачать какие-то бинарные пакеты из conda не увенчались успехом. Их просто не существует, нет никаких вариантов поставить их от туда. Придется скачивать source code и собирать их самостоятельно с помощью cmake и gcc. Естественно делать это просто на тачке - глупо. Завтра я перееду на другой ноут - придется вспоминать все инструкции и процесс инсталяции, что не есть хорошо.

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

Какие плюсы из этого есть?
- Реальная изоляция окружения, то есть у вас по умолчанию проекты никогда не будут конфликтовать между собой, вы не забудете поменять env, ведь у каждого проекта он свой, а если и забудете, будет не проблематично откатить его назад.
- Фиксация всех изменений окружения. В dockerfile вы сами прописываете все инструкции того, куда что скачать, как что распаковать и это не забудется, и не придется писать отдельную инструкцию в confluence и любую другую систему вики.
- Легкая переносимость между устройствами - если вы меняете рабочую станцию или просто хотите создать аналогичное окружение на сервере, вы просто пуллите последнюю версию dockerfile и делаете билд
- Прозрачное понимание проблем сборки - если что-то не собралось под вашу платформу, вы не попадаете в патовую ситуацию, что раз уж нет бинарника - вы ничего не можете сделать, вы можете просто прописать свои "правильные" инструкции для сборки под эту платформу.
Единственное важное уточнение, если ваш код в дальнейшем планируется запускать под разными девайсами, например arm и x86, смотрите чтобы ваш базовый образ поддерживал все это.

Например базовый образ python запускается даже под powerpc (земля ему пухом)
А еще вы знали, что anaconda по идее платный софт?

Получается своего рода ситуация как с WinRAR
This media is not supported in your browser
VIEW IN TELEGRAM
Интересное наблюдение, в парке Ривьера в Сочи есть стенд с информацией об основателе парка и его фотографию анимировали с помощью First Order Model от снепа, с помощью ее же работает приложение Avatarify.
👍1
Кстати, в тиктоке был похожий тренд - оживлять фото умерших родственников. Немного крипово, но такова реальность.

https://vm.tiktok.com/ZSe8ab8XG/
🔝Курсы в айтишечке💻

Тинькофф запустил забавную штуку. Сервис по сравнению и подбору курсов в АйТи. Обещают только честные отзывы и справедливую оценку.

Жду когда рейтинг XYZ обвалится до 2.0 😬

https://journal.tinkoff.ru/sravnyator/it-courses/
STACK MORE LAYERS
⚡️Yolov5 TensorRT Jetson ☄️ В общем, недавно я купил Nvidia Jetson Nano, это такой маленький компьютер похожий на Raspberry PI, но с маленькой видеокарточкой. В качестве упражнения сделал небольшой проектик, который позволяет без лишней боли портировать Yolov5…
Следите за вашими почтовыми ящиками.

Только что обнаружил на почте письмо, что я со своим репозеторием выиграл соревнование от Ultralytics по экспорту YoloV5 на nvidia jetson.
Ну что сказать, делал я эту бибилиотечку с любовью! Так что если будете юзать джетсон, велкам.

Просили ответить до 18го, а уже 20е 🙂

Надеюсь они еще не передумали
🔥1
🥤Яндекс Кружка🏆

Неожиданно раньше пришли результаты контеста Яндекс Cup по трекам ML. С удивлением обнаружил, что я попал в призовые и получу не только футболку!

Интересные замечания по поводу контеста в этом году. Трек ML в отличие от прошлого года был разбит на категории - рекомендательные системы, компутер вижн, распознавание речи.
Что логичную учитывая то, что область ML развивается и специалисты становятся более нишевыми. Поэтому шанс ухватить приз выше.

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

Я учавствовал в треке распознавания речи. Задачей было определение 37 команд для Алисы в различных шумовых условиях. Причём были очень сложные семплы, где человек далеко не сразу поймёт что было сказано. В целом задача была интересная и в процессе было сделано некоторое количество трюков и хитростей при обучении. Даже пришлось один раз вспомнить математику!

Но одна деталь не даёт мне покоя. Человек, который занял первое место, выбил топ скор буквально на следующий день соревнования. Кажется что без жульничества или ликов здесь не обошлось, т.к. при обучении моделек я видел явный потолок, который можно преодолеть только ансамблированием моделей, а получить топ ансамбль на следующий день - сомнительная перспектива.

Кстати, fun fact. Поскольку я ушёл из большой компании в маленький, но гордый стартап, уже не получается использовать рабочие мощности для соревнований, когда они простаивают, здесь ничего не может простаивать просто так! Поэтому все решения делались только силами Google Colab.

Для тех кто хочет делать так же, советую купить Colab Pro+, он хоть и стоит $50🥴, но в отличие от Про и бесплатной подписки — не гасит машинки, если у вас закрыт браузер, плюс есть не нулевой шанс получить в распоряжение A100 с 40 гб на борту. А для того, чтобы не потерять все ваши метрики и чекпоинты — используйте wandb.ai он очень легко дружит с колабом.
Решение с первого места.
Forwarded from Vladislav Kramarenko
train.py
16.5 KB