На выходных продуктивно прокрастинировал: не желая убирать в квартире, решил прибраться в компьютерах - разгрести завалы файлов, почистить
Хотелось сложить сотни гигабайт некритичных файлов (датасеты, не самые важные бэкапы и т.д.) так, чтобы это было просто (
Первая мысль была про S3, но как-то это слишком "ентерпрайзно" для такой банальной задачи, да и априори не очень дешево ($0.023-0.025/Gb в зависимости от региона + куча подозрительных примечаний). Следующим вариантом был Digital Ocean Spaces, который в целом неплох и дает 250 Gb хранилища и 1Tb трафика за 5 баксов (дальше $0.02/Gb и $0.01/Gb соответственно), т.е. по деньгам ушел недалеко - довольно ожидаемо, все-таки это уже большая и с недавних пор публичная компания. Туда же идет Vultr (я использую их для ssh-туннелирования), который копирует Digital Ocean почти во всем, в т.ч. в прайсинге.
Приятной находкой стал BackBlaze. У этих ребят два продукта - backup решение (plug and play для нетехнарей) и S3-like хранилище с ценами сильно ниже ($0.005/Gb хранение, те же $0.01/Gb скачивание). Пользоваться легко, есть два CLI API - одно мимикрирует под S3, другое свое и чуть попроще (
Наконец, я наткнулся на Rclone. Это open source обертка над 50+ хранилищами, от своего FTP или SFTP до сервисов типа Dropbox и Google Drive. Вышеупомянутые S3, DO, Vultr и B2 тоже поддерживаются. Для более важных бэкапов можно, например, сделать синхронизацию между провайдерами в одну команду. Благодаря Rclone, мой терабайтный Яндекс.Диск (Яндекс дарит бывшим сотрудникам) теперь не пустует, а вовсю наполняется бэкапами.
~/data
, что-то забэкапить и так далее. Хотелось сложить сотни гигабайт некритичных файлов (датасеты, не самые важные бэкапы и т.д.) так, чтобы это было просто (
sync ~/data /awesome_storage
) и дешево. Первая мысль была про S3, но как-то это слишком "ентерпрайзно" для такой банальной задачи, да и априори не очень дешево ($0.023-0.025/Gb в зависимости от региона + куча подозрительных примечаний). Следующим вариантом был Digital Ocean Spaces, который в целом неплох и дает 250 Gb хранилища и 1Tb трафика за 5 баксов (дальше $0.02/Gb и $0.01/Gb соответственно), т.е. по деньгам ушел недалеко - довольно ожидаемо, все-таки это уже большая и с недавних пор публичная компания. Туда же идет Vultr (я использую их для ssh-туннелирования), который копирует Digital Ocean почти во всем, в т.ч. в прайсинге.
Приятной находкой стал BackBlaze. У этих ребят два продукта - backup решение (plug and play для нетехнарей) и S3-like хранилище с ценами сильно ниже ($0.005/Gb хранение, те же $0.01/Gb скачивание). Пользоваться легко, есть два CLI API - одно мимикрирует под S3, другое свое и чуть попроще (
b2 sync origin source
🚀). Прям сейчас я туда заливаю всякое барахло с неидеальной скоростью в районе 5 Mbit/s, но кажется, что проблема скорее в моем исходящем канале.Наконец, я наткнулся на Rclone. Это open source обертка над 50+ хранилищами, от своего FTP или SFTP до сервисов типа Dropbox и Google Drive. Вышеупомянутые S3, DO, Vultr и B2 тоже поддерживаются. Для более важных бэкапов можно, например, сделать синхронизацию между провайдерами в одну команду. Благодаря Rclone, мой терабайтный Яндекс.Диск (Яндекс дарит бывшим сотрудникам) теперь не пустует, а вовсю наполняется бэкапами.
Digitalocean
DigitalOcean Spaces | S3-Compatible Object Storage
S3-compatible object storage with a built-in CDN that makes scaling easy, reliable, and affordable. $5/mo.
Присылает мне Google страшное письмо с заголовком Change your compromised passwords. И дальше запугивает: Google found some of your passwords online. Anyone who finds them can access your accounts.
Я не слишком параноик, но напрягся. Выяснилось, что "утекли" пароли примерно от таких очень важных сервисов (см. скриншот).
В принципе, я готов пойти дальше и раскрыть тот факт, что на всех трех сервисах с картинки использован пароль 123123.
Я не слишком параноик, но напрягся. Выяснилось, что "утекли" пароли примерно от таких очень важных сервисов (см. скриншот).
В принципе, я готов пойти дальше и раскрыть тот факт, что на всех трех сервисах с картинки использован пароль 123123.
Если вы думали, что только неопытные секретарши из ООО "Рога и копыта" не умеют пользоваться электронной почтой и не отличают поля To, Cc и Bcc, то знайте, что и продакт менеджер из CloudFlare (такая небольшая технологическая конторка с капитализацией $22B) может ошибаться.
Отдельно иронично видеть среди получателей [email protected].
Отдельно иронично видеть среди получателей [email protected].
Недавно где-то на Реддите анонсировали новый агрегатор хайповых ML статей, благодаря которому вы можете еще легче находить свежие ресерчи, чтобы открывать их в новой вкладке, откладывать на потом и никогда не читать.
У этих же авторов обнаружился сервис Annotated PyTorch Paper Implementations: подборка их собственных реализаций статей с детальными комментариями. Набор статей не очень широкий, но если вам вдруг нужно погрузиться в тему, скажем, GANов или трансформеров с нуля, может быть полезно.
К сожалению, некоторые комментарии страдают от извечной проблемы плохих комментариев: описывают, что делает код, а не зачем/почему. Догадаться, что строка
У этих же авторов обнаружился сервис Annotated PyTorch Paper Implementations: подборка их собственных реализаций статей с детальными комментариями. Набор статей не очень широкий, но если вам вдруг нужно погрузиться в тему, скажем, GANов или трансформеров с нуля, может быть полезно.
К сожалению, некоторые комментарии страдают от извечной проблемы плохих комментариев: описывают, что делает код, а не зачем/почему. Догадаться, что строка
identity_loss = torch.nn.L1Loss()
инициализирует L1 Loss, вполне можно без комментариев, а почему именно он - не так очевидно.Рубрика "Читаем reddit за вас" представляет несколько ссылок:
- набор рандомных фактов от выпившего опытного разработчика (алкоголь, несомненно, добавляет прямоты в суждениях - для сравнения аналогичный пост трезвого инженера читается куда скучнее);
- очередное нытье про то, что academic ML полон фрода в той или иной степени (никогда такого не было, и вот опять);
- полезный тред на тему "Что делать, если в требованиях к вакансии указана технология Х, а ты формально не имеешь в ней опыта".
- набор рандомных фактов от выпившего опытного разработчика (алкоголь, несомненно, добавляет прямоты в суждениях - для сравнения аналогичный пост трезвого инженера читается куда скучнее);
- очередное нытье про то, что academic ML полон фрода в той или иной степени (никогда такого не было, и вот опять);
- полезный тред на тему "Что делать, если в требованиях к вакансии указана технология Х, а ты формально не имеешь в ней опыта".
Reddit
From the ExperiencedDevs community on Reddit
Explore this post and more from the ExperiencedDevs community
Я фанат Streamlit и часто использую его там, где многие бы ограничились Jupyter. Основные сценарии использования в чем-то похожи на Jupyter ноутбуки, но позволяют высунуть наружу не сами исходники, а только несколько контролов, которые и нужно крутить. Очень удобно для всяких демок - например, показать результат коллегам вне ML команды и дать им возможность потыкать что-то своими руками без единой строчки кода. И никакого богомерзкого JS писать не нужно!
Так вот, недавно я добрался до их коллекции компонентов и окончательно влюбился. Так, например, при помощи drawable canvas я набросал инструмент для разметки ровно в том формате, который мне был нужен, примерно за 3 минуты (т.е. взял исходники с гитхаба и дописал пять строк). Очень рекомендую!
Так вот, недавно я добрался до их коллекции компонентов и окончательно влюбился. Так, например, при помощи drawable canvas я набросал инструмент для разметки ровно в том формате, который мне был нужен, примерно за 3 минуты (т.е. взял исходники с гитхаба и дописал пять строк). Очень рекомендую!
streamlit.io
Streamlit • A faster way to build and share data apps
Streamlit is an open-source Python framework for data scientists and AI/ML engineers to deliver interactive data apps – in only a few lines of code.
👍1
Я по работе последние полтора года активно пользуюсь AWS (до этого - совсем поверхностно, на уровне
И вот вчера решил сделать небольшое приложение для pet-проекта: буквально пара ендпоинтов. Ну и сразу задался целью сделать модный serverless на лямбдах. В качестве фреймворка взял chalice.
Так вот, это бомба! Код пишется настолько прямолинейно, насколько возможно, никакой инфраструктурной возни. Чтобы сложить логи в Cloudwatch, нужно дописать одну строку. Тестирование не требует никаких особых приседаний. Чтобы задеплоиться, нужно вбить одну команду
Кажется, что для stateful приложений придется потратить еще на 15 минут больше, чтобы прикрутить какую-нибудь DynamoDB. Но все равно - близкий к идеальному опыт использования.
aws s3 cp s3://bucket/my_awesome_data /tmp
), но с использованием устоявшейся и местами слегка запутанной инфраструктуры. Потому казалось, что AWS - это классная махина, но порог входа для новых проектов достаточно высокий.И вот вчера решил сделать небольшое приложение для pet-проекта: буквально пара ендпоинтов. Ну и сразу задался целью сделать модный serverless на лямбдах. В качестве фреймворка взял chalice.
Так вот, это бомба! Код пишется настолько прямолинейно, насколько возможно, никакой инфраструктурной возни. Чтобы сложить логи в Cloudwatch, нужно дописать одну строку. Тестирование не требует никаких особых приседаний. Чтобы задеплоиться, нужно вбить одну команду
chalice deploy
. Когда понадобилось задеплоить жирный пакет (более 50 мб зависимостей, что превышает лимит загрузки кода в лямбду напрямую), пришлось прикрутить деплоймент через CloudFormation, и это тоже заняло аж 15 минут.Кажется, что для stateful приложений придется потратить еще на 15 минут больше, чтобы прикрутить какую-нибудь DynamoDB. Но все равно - близкий к идеальному опыт использования.
👍2
Недавно обсуждали с приятелем о том, как подходить к незнакомой ML задаче. И это повод как-то сформулировать фреймворк, которому следую я сам.
0. Собрать небольшой, но качественный датасет (или взять готовый, если задача позволяет; см. также мой старый пост)
1. Поверхностно понять продуктовую задачу и попытаться ее сформулировать в терминах ML. Например, "нужно распознавать ключевые фразы по аудио" ⇒ sound classification (disclaimer - я как раз почти ничего не знаю об этой задаче).
2. Уточнить формулировку в гугле, найти соответствующий раздел на paperswithcode, взять оттуда пяток свежих SotA статей.
3. Погуглить task name + survey для поиска обзорных статей по теме.
4. Бегло прочитать все это, опционально прочитать еще пару статей, которые часто цитируются в прочитанных.
5. Получив базовую интуицию, подытожить, что в прочитанных статьях является свистелками-перделками, а что - ядром подходов. Например, для sound classification будет логично, что перегнать звук в спектрограмму, аугментировать (pitch, mixup) и натравить CNN - это важно, а attention на последнем слое - не очень.
6. Построить бейзлайн (или с нуля, или на базе готовой реализации, найденной на paperswithcode).
7. ...
8. PROFIT
Дополнения и критика приветствуются в комментариях!
0. Собрать небольшой, но качественный датасет (или взять готовый, если задача позволяет; см. также мой старый пост)
1. Поверхностно понять продуктовую задачу и попытаться ее сформулировать в терминах ML. Например, "нужно распознавать ключевые фразы по аудио" ⇒ sound classification (disclaimer - я как раз почти ничего не знаю об этой задаче).
2. Уточнить формулировку в гугле, найти соответствующий раздел на paperswithcode, взять оттуда пяток свежих SotA статей.
3. Погуглить task name + survey для поиска обзорных статей по теме.
4. Бегло прочитать все это, опционально прочитать еще пару статей, которые часто цитируются в прочитанных.
5. Получив базовую интуицию, подытожить, что в прочитанных статьях является свистелками-перделками, а что - ядром подходов. Например, для sound classification будет логично, что перегнать звук в спектрограмму, аугментировать (pitch, mixup) и натравить CNN - это важно, а attention на последнем слое - не очень.
6. Построить бейзлайн (или с нуля, или на базе готовой реализации, найденной на paperswithcode).
7. ...
8. PROFIT
Дополнения и критика приветствуются в комментариях!
Telegram
partially unsupervised
Недавно в ods.ai случилось некоторое нашествие постов (например) почти по шаблону "подскажите самую крутую нейросетку для {узкая_задача}". Там в комментариях и родилась простая и понятная псевдоформула для подобных вопросов: sota(task, domain) ≈ sota(task…
С огромным удовольствием прочитал книгу про становление и падение Silk Road (goodreads, bookmate) - крупнейшего магазина дарквеба, который начинался с торговли грибами, а на пике торговал всем подряд - от автоматического оружия до донорских органов. Это совершенно нетехническая книга, но она про технологии. Точнее, про то, как технологии меняют те аспекты жизни, о которых мы (по крайней мере я) мало думаем - например, о том как изменились цепочки поставок веществ и о том, как можно довольно долго сохранять анонимность, если она по-настоящему нужна.
Написано драматично и захватывающе, по стилю довольно сильно напоминает Bad Blood, прекрасную историю расцвета и такого же падения Theranos.
Написано драматично и захватывающе, по стилю довольно сильно напоминает Bad Blood, прекрасную историю расцвета и такого же падения Theranos.
Goodreads
American Kingpin: The Epic Hunt for the Criminal Master…
The unbelievable true story of the man who built a bill…
image_2021-06-29_19-54-41.png
250.8 KB
Дорогие подписчики присылают контент для рубрики "Нерды шутят". Статья, кстати, реально существует.
Эффект бабочки в опенсорсе: случайно обнаружил куски своего кода двухлетней давности в плагине для GIMP.
Мораль очевидна: контрибьютить в опенсорс, даже по мелочи - это хорошо и правильно! Никогда не знаешь, кому и как в это итоге поможет; хорошие технические решения непредсказуемо виральны.
Мораль очевидна: контрибьютить в опенсорс, даже по мелочи - это хорошо и правильно! Никогда не знаешь, кому и как в это итоге поможет; хорошие технические решения непредсказуемо виральны.
GitHub
predictor added · KupynOrest/RestoreGAN@a434709
Contribute to KupynOrest/RestoreGAN development by creating an account on GitHub.
Отличная понятная статья про алгебраические типы данных. Для тех, кто думал, что ADT - это какая-то бесполезная заумь из теории типов, сколько-то интересная только программистам на Haskell и прочим упоротым функциональщикам.
Хабр
Алгебраические типы данных и Python
Возможно, кто-то из читателей, увидев заголовок этой статьи, подумает что-нибудь вроде: "Что?! Алгебраические типы данных?! Это же что-то из мира функциональных языков программирования. Python?! Ну...
Пара паттернов, которые меня в последнее время сильно настораживают в резюме:
1) Несоответствие уровней абстракций. Например, в скиллах человек перечисляет: умею AWS, machine learning, software design, REST API и YOLO v3. Чувак, если ты в рамках малого куска резюме не можешь обеспечить консистентность абстракций, то заранее страшновато смотреть на твой software design.
2) Неровная производная грейдов на предыдущих местах работы. Цепочка intern => engineer => senior engineer => lead engineer выглядит логично. Цепочка senior engineer => intern / junior => head of something вызывает некоторые вопросы: понятно, в какой дыре он был "сеньором", если дальше смог попасть только на стажировку; да и попадание из джунов в большие боссы намекает на некоторую инфляцию тайтлов на последнем месте работы. Конечно, соверешенно не проблема, что человек работал на какой-то галере - проблема в том, что он смело транслирует этот булшит в CV, а значит его остальное хвастовство можно смело делить на X в уме.
Вообще, хвастаться тоже надо уметь. Формулировки типа "Built 100+ ML models for in cloud environment using Random Forest, a predictive modeling technique, in R programming language" могут впечатлить только очень специфическую аудиторию, в определенных кругах это называется "гнилые понты". Play stupid games, win stupid prizes.
1) Несоответствие уровней абстракций. Например, в скиллах человек перечисляет: умею AWS, machine learning, software design, REST API и YOLO v3. Чувак, если ты в рамках малого куска резюме не можешь обеспечить консистентность абстракций, то заранее страшновато смотреть на твой software design.
2) Неровная производная грейдов на предыдущих местах работы. Цепочка intern => engineer => senior engineer => lead engineer выглядит логично. Цепочка senior engineer => intern / junior => head of something вызывает некоторые вопросы: понятно, в какой дыре он был "сеньором", если дальше смог попасть только на стажировку; да и попадание из джунов в большие боссы намекает на некоторую инфляцию тайтлов на последнем месте работы. Конечно, соверешенно не проблема, что человек работал на какой-то галере - проблема в том, что он смело транслирует этот булшит в CV, а значит его остальное хвастовство можно смело делить на X в уме.
Вообще, хвастаться тоже надо уметь. Формулировки типа "Built 100+ ML models for in cloud environment using Random Forest, a predictive modeling technique, in R programming language" могут впечатлить только очень специфическую аудиторию, в определенных кругах это называется "гнилые понты". Play stupid games, win stupid prizes.
Сегодня с разных сторон прилетело удивительное количество интересных ссылок сугубо про компьютерное зрение, и я просто обязан поделиться хотя бы некоторыми из них:
- Два обзора недавнего CVPR 2021 с фокусом на разные темы: первый, второй. Если кто-то не в курсе, это крупнейшная академическая конференция про CV.
- Отличная статья про StyleGAN (и многое вокруг) от @CVML_team. Вообще, посты Антона на Хабре - едва ли не лучший русскоязычный контент про computer vision: и академическая широта, и прагматичный взгляд из индустрии, и хороший слог.
- Наконец, @BoreMeNo прислал ссылку на видео про робота для игры в пул. Там маловато деталей реализации, но в целом за 20 минут можно понять, что нужно знать и уметь для построения подобной умной железки. CV часть, на мой взгляд, довольно простая, а вот остальное 🤯
- Два обзора недавнего CVPR 2021 с фокусом на разные темы: первый, второй. Если кто-то не в курсе, это крупнейшная академическая конференция про CV.
- Отличная статья про StyleGAN (и многое вокруг) от @CVML_team. Вообще, посты Антона на Хабре - едва ли не лучший русскоязычный контент про computer vision: и академическая широта, и прагматичный взгляд из индустрии, и хороший слог.
- Наконец, @BoreMeNo прислал ссылку на видео про робота для игры в пул. Там маловато деталей реализации, но в целом за 20 минут можно понять, что нужно знать и уметь для построения подобной умной железки. CV часть, на мой взгляд, довольно простая, а вот остальное 🤯
Сидели недавно в баре с приятелем, болтали про работу. И он сказал примерно следующее: "в такой-то части компании Х полный бардак, некоторые разработчики работают на второй работе и особо не скрывают этого". И это напомнило историю, которую мне пересказали в аналогичных условиях.
В некоторой большой российской корпорации была команда разработчиков - немаленькая, человек 10-15. И вот случилась в корпорации перестановка, эта команда попала в другую часть оргструктуры. На каком-то этапе вышестоящий менеджер (назовем его В.) начал вникать, чем команда занимается, и обнаружил, что делают они немного. Например, за один двухнедельный спринт пофиксили четыре бага, за следующий - два бага и одно мелкое улучшение. П - продуктивность!
В. решил узнать в чем дело, и пошел искать менеджера команды (назовем ее К.); она долго не отвечала, митинги откладывались и переносились. В. между делом спросил у разработчиков, как часто они взаимодействуют с К. - оказалось, что только на планировании спринта, раз в две недели.
Вся эта неопределенность тянулась какое-то время, но в итоге выяснилось, что К. уехала работать в Штаты еще полгода назад, но решила не увольняться, потому что ее отсутствие все равно оставалось незамеченным. В принципе, если бы не реорганизация и не появление В., эта все могло бы тянуться сильно дольше полугода. Сколько из ее подчиненных разработчиков параллельно работало на вторых работах, история умалчивает.
Расскажите в комментариях ваши любимые истории о том, как люди совмещают несколько работ, и к чему это приводит!
В некоторой большой российской корпорации была команда разработчиков - немаленькая, человек 10-15. И вот случилась в корпорации перестановка, эта команда попала в другую часть оргструктуры. На каком-то этапе вышестоящий менеджер (назовем его В.) начал вникать, чем команда занимается, и обнаружил, что делают они немного. Например, за один двухнедельный спринт пофиксили четыре бага, за следующий - два бага и одно мелкое улучшение. П - продуктивность!
В. решил узнать в чем дело, и пошел искать менеджера команды (назовем ее К.); она долго не отвечала, митинги откладывались и переносились. В. между делом спросил у разработчиков, как часто они взаимодействуют с К. - оказалось, что только на планировании спринта, раз в две недели.
Вся эта неопределенность тянулась какое-то время, но в итоге выяснилось, что К. уехала работать в Штаты еще полгода назад, но решила не увольняться, потому что ее отсутствие все равно оставалось незамеченным. В принципе, если бы не реорганизация и не появление В., эта все могло бы тянуться сильно дольше полугода. Сколько из ее подчиненных разработчиков параллельно работало на вторых работах, история умалчивает.
Расскажите в комментариях ваши любимые истории о том, как люди совмещают несколько работ, и к чему это приводит!
❤1
Прочитал прекрасный лонгрид про Трампа современное де-факто кастовое строение общества (очень рекомендую осилить целиком). Самые нетерпеливые читатели могут уже возмутиться "эй, мне обещали, что это канал про ML и software engineering, верните мои деньги!". Но погодите отписываться, это пост на самом деле про карьеру в software.
Вырву цитату из этой статьи:
Олред рассказывает, что за годы работы школы они поняли, что учеников надо научить не только правильно кодировать, но и правильно разговаривать, правильно одеваться и даже правильно выбирать имейл-адрес — иначе с устройством на работу возникают проблемы. У тех, кто приходит в Lambda, чтобы научиться кодировать, и у IT-менеджеров, которые их нанимают, просто разные культурные коды, и чтобы тебе доверяли как программисту, нужно не только программировать как программист, но и вести себя как программист. То есть показать, что ты принадлежишь к определенному социальному классу.
Этот тезис обязателен для осознания многим, например:
- тем, кто пытается вкатиться в индустрию без релевантного образования (а таких людей очень много);
- тем, кто в этом помогает (авторы всяких курсов программирования);
- тем, кто застрял в карьере на уровне code monkey (и недоволен этим).
Действительно, ставшие популярными behavioral интервью проверяют не только, не мудак ли кандидат, но и является ли он частью "касты технарей". Это необязательно значит быть архетипичным нердом, но какие-то общие ценности ожидаются. Знаменитое fake it till you make it - как раз про то, чтобы успешно мимикрировать под эту касту, и потом уже влиться в нее по-настоящему.
Разумеется, все вышесказанное никак не противоречит необходимости ботать алгоритмы, уметь пользоваться современными инструментами, сколько-то знать математику и в целом уметь программировать. Но этого недостаточно: при прочих равных из двух кандидатов, закончивших одинаковые курсы, пролиставших одинаковые учебники и сделавших одинаковые пет-проекты, первым получит работу тот, кто в свободное время читает научпоп про космос и играет в видеоигры, а не тот, кто с юности любит музеи современного искусства и артхаусное кино.
Вырву цитату из этой статьи:
Олред рассказывает, что за годы работы школы они поняли, что учеников надо научить не только правильно кодировать, но и правильно разговаривать, правильно одеваться и даже правильно выбирать имейл-адрес — иначе с устройством на работу возникают проблемы. У тех, кто приходит в Lambda, чтобы научиться кодировать, и у IT-менеджеров, которые их нанимают, просто разные культурные коды, и чтобы тебе доверяли как программисту, нужно не только программировать как программист, но и вести себя как программист. То есть показать, что ты принадлежишь к определенному социальному классу.
Этот тезис обязателен для осознания многим, например:
- тем, кто пытается вкатиться в индустрию без релевантного образования (а таких людей очень много);
- тем, кто в этом помогает (авторы всяких курсов программирования);
- тем, кто застрял в карьере на уровне code monkey (и недоволен этим).
Действительно, ставшие популярными behavioral интервью проверяют не только, не мудак ли кандидат, но и является ли он частью "касты технарей". Это необязательно значит быть архетипичным нердом, но какие-то общие ценности ожидаются. Знаменитое fake it till you make it - как раз про то, чтобы успешно мимикрировать под эту касту, и потом уже влиться в нее по-настоящему.
Разумеется, все вышесказанное никак не противоречит необходимости ботать алгоритмы, уметь пользоваться современными инструментами, сколько-то знать математику и в целом уметь программировать. Но этого недостаточно: при прочих равных из двух кандидатов, закончивших одинаковые курсы, пролиставших одинаковые учебники и сделавших одинаковые пет-проекты, первым получит работу тот, кто в свободное время читает научпоп про космос и играет в видеоигры, а не тот, кто с юности любит музеи современного искусства и артхаусное кино.
Гиперболея
Новые касты
Лонгрид Конца Света №2
Я традиционно недолюбливаю Jupyter ноутбуки, основные причины такой нелюбви в свое время прекрасно описал Joel Grus. Конечно, в некоторых задачах они прям хороши (поиграть с визуализацией или подготовить сколько-то интерактивный отчет для executives), хотя и в подобных задачах я все чаще использую streamlit. Поэтому появление Google Colab в свое время тоже прошло мимо меня.
И вот недавно, когда Google выкатил дополнительный тарифный план Colab Pro+, я задумался: а можно ли этим хоть как-то пользоваться вне jupyter-инфраструктуры? И, оказывается, человечество уже все придумало - для SSH подключения к colab инстансу достаточно:
1) запустить colab ноутбук;
2) поставить там
2.1) в случае с
3) подключиться по SSH
4) PROFIT!
В итоге можно для мелких экспериментов бесплатно получить почти полноценный инстанс с Ubuntu, парой CPU ядер, CUDA и рут-доступом. Если лень делать это все руками, можно воспользоваться готовыми решениям, например, colab-ssh для
И вот недавно, когда Google выкатил дополнительный тарифный план Colab Pro+, я задумался: а можно ли этим хоть как-то пользоваться вне jupyter-инфраструктуры? И, оказывается, человечество уже все придумало - для SSH подключения к colab инстансу достаточно:
1) запустить colab ноутбук;
2) поставить там
ngrok
или cloudflared
и запустить его в бэкграунд процессе;2.1) в случае с
cloudflared
- поставить соответствующий клиент на локальной машине;3) подключиться по SSH
4) PROFIT!
В итоге можно для мелких экспериментов бесплатно получить почти полноценный инстанс с Ubuntu, парой CPU ядер, CUDA и рут-доступом. Если лень делать это все руками, можно воспользоваться готовыми решениям, например, colab-ssh для
cloudflared
, сниппет для ngrok
.Наверняка почти все читатели что-то слышали о том, что Apple планирует сканировать ваши айфоны в поисках детского порно. Так вот, на Реддите утверждают, что экспортировали модель NeuralHash, которая используется для матчинга ваших фоток с базой запрещенного контента, и сконвертировали ее в ONNX. Кстати, это обычный MobilenetV3.
Сейчас, в условиях отсутствия в публичном доступе базы хэшей плохого контента, эта модель малополезна для злодеев, и представляет интерес в основном для любопытных инженеров. С другой стороны, если проверка осуществляется на девайсе, эта самая база тоже может быть найдена где-то среди файлов ios, и тогда технически продвинутые педофилы смогут легко обойти защиту Apple.
Сейчас, в условиях отсутствия в публичном доступе базы хэшей плохого контента, эта модель малополезна для злодеев, и представляет интерес в основном для любопытных инженеров. С другой стороны, если проверка осуществляется на девайсе, эта самая база тоже может быть найдена где-то среди файлов ios, и тогда технически продвинутые педофилы смогут легко обойти защиту Apple.
Today I learned: в
Очень удобно, если у вас бывает своеобразный код, где логи - это единственный side effect. С другой стороны, такой код может быть и звоночком - возможно, с дизайном что-то не так.
pytest
можно легко тестировать логирование. Не нужно самому возиться с моками для логгера, все уже готово - достаточно использовать дефолтную фикстуру caplog (пример использования для ленивых).Очень удобно, если у вас бывает своеобразный код, где логи - это единственный side effect. С другой стороны, такой код может быть и звоночком - возможно, с дизайном что-то не так.
Software Gems
5 Advanced Pytest Tricks
We write tests because they help us build confidence in our code. They also help us write clean and maintainable code. Yet, writing tests requires some effort. Fortunately, there are libraries we can …
Три ссылки, объединенные темой "вряд ли мне это пригодится, но впечатляет!"
1) Пост в блоге Яндекса о том, как они в коллаборации с HuggingFace сделали DeDLOC - фреймворк для распределенного обучения больших deep learning на гетерогенном "кластере", а точнее - разношерстном наборе волонтерских GPU машин (и Google Colab инстансов, хаха).
2) CLI-тулза для семантического поиска по изображениям на базе CLIP. Т.е.
1) Пост в блоге Яндекса о том, как они в коллаборации с HuggingFace сделали DeDLOC - фреймворк для распределенного обучения больших deep learning на гетерогенном "кластере", а точнее - разношерстном наборе волонтерских GPU машин (и Google Colab инстансов, хаха).
2) CLI-тулза для семантического поиска по изображениям на базе CLIP. Т.е.
cd photos && rclip "search query"
3) Огромный список open source проектов про sustainability природных ресурсов. Интересно, что в списке прекрасно сочетаются проекты вида "ML модель, чтобы делать Х (например, находить объекты со спутниковых снимков)" и "калькулятор CO2 выбросов от твоей видеокарты".Хабр
DeDLOC: обучаем большие нейросети всем миром
Как показывает опыт последних лет, самые интересные результаты в deep learning получаются при использовании больших нейросетей, обученных на массивах неразмеченных данных. Правда, для создания...