местный датасасер ☮️
1.91K subscribers
1.01K photos
61 videos
7 files
659 links
Пишу всякое о технологиях и моих проектах, @egorvoron
Download Telegram
Симулятор двойного маятника. Просто красиво
https://web.mit.edu/jorloff/www/chaosTalk/double-pendulum/double-pendulum-en.html
​​hello world – это канал, в котором тебе расскажут о многих интересных и актуальных вещах из мира современного анализа данных, разработки приложений и даже физики:

Квантовые компьютеры 
Криотронная техника 
Нейросети 
Разработка мобильных приложений

Канал будет полезен многим начинающим разработчикам и просто интересующимся.

Hello World – размышления на тему науки, программирования и высоких технологий
🎉 5 миллионов сделанных видео в @RoundDFBot!

Предыдущие отметки:
4 миллиона — 6 октября
3 миллиона — 17 сентября
2 миллиона — 8 сентября
1 миллион — 30 августа
Качаю Вольфрам Математику, посмотрим, что он из себя представляет...
Forwarded from Loskir's
Встречайте: @CatVibesBot!

Кайфуете под музыку? Отправьте боту BPM трека и получите гифку с вайбящим котом!

Работает также в инлайн-режиме.

Опен-сурс: github.com/Loskir/cat-vibes-bot

P.S. узнать BPM можно на songbpm.com
Forwarded from Derp Learning
This media is not supported in your browser
VIEW IN TELEGRAM
Немного эпилептического damedane2comics (осторожно, укачивает)
@face2comicsbot
Forwarded from Авва
В теории чисел есть важная теорема под названием "Квадратичный закон взаимности". Как и многое другое в математике, его открыл Эйлер; как и многое другое в теории чисел, его доказал Гаусс, в 1801 году.

(если у вас есть два простых числа p и q, этот закон объясняет связь между "найдется целый квадрат, который дает p в остатке при делении на q" и "найдется целый квадрат, который дает q в остатке при делении на p", поэтому "взаимность")

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

Кто-то пошутил и назвал его "доказательством методом математического омерзения".
Из истории создания курса теоретической физики Ландау и Лифшица: Замысел всеобъемлющего курса теоретической физики возник у Л. Д. Ландау и М. П. Бронштейна ещё в конце 1920-х годов в ленинградском Физтехе. Они независимо продолжали работу над ним в 1930-х (Бронштейн в Ленинграде, а Ландау в Харькове), однако в 1938 году Ландау был арестован, а Бронштейн расстрелян.

Как же я обожаю истории из СССР первой половины 20 века...
Forwarded from Loskir's
О воркерах в @RoundDFBot.

Кто такие воркеры?
Это эдакие микросервисоподобные скрипты на питоне, которые занимаются обработкой видео с помощью нейронки. Они общаются с главным сервером по HTTP. Берут себе задание, скачивают нужные файлы, обрабатывают их, загружают результат и отчитываются о готовности.
Плюс такой архитектуры в том, что она хорошо масштабируется горизонтально, то есть мы можем легко подключить как 2 воркера, так и 20.

Почему на питоне?
Потому что нейронка на питоне, почему же ещё.

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

Почему на каждом сервере запущено по 2 скрипта?
Потому что один скрипт не может ипользовать все ресурсы в одиночку. Я почти уверен, что дело тут в GIL, но разбираться с этим пока что слишком нецелесообразно. Как показал эксперимент, два скрипта рядом выдают большую суммарную производительность, чем один. Даже несмотря на то, что каждый из скриптов работает медленнее. чем мог бы в одиночку (например, 200+200 вместо 300)
Forwarded from Denis Sexy IT 🤖
This media is not supported in your browser
VIEW IN TELEGRAM
Наткнулся на интересное приложение, которое немного дает ощущение GAN-шопинга нового поколения:
В отличие от стандартного подхода, где на каждую вещь нужна модель и ее фотография, чуваки сразу построили систему где вы выбираете какую-то шмотку и «пересаживаете» ее на модель – таким образом вы можете собрать сразу лук и посмотреть на вещи на всех моделях какие есть в сервисе.

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

iOS ссылка, под Android пока нет

P.S. Апп не дает собирать луки без регистрации в приложении
Forwarded from Loskir's
Хорошая новость:
Мне удалось запустить воркер @RoundDFBot в Google Colab. Это оказалось куда проще, чем я предполагал. По производительности достаточно хорошо: чуть мощнее моего компьютера с 1660ti, примерно как половина среднего сервера на vast.ai.

Плохая новость:
За 1.5 дня у меня исчерпался лимит на GPU инстансы.
Стефан Банах — это монетка в два злотых, шутка с капустника про царство хана Банаха и, конечно же, теорема о неподвижной точке . В своё время на меня большое впечатление произвела её наглядная интерпретация. Берём большую карту Москвы и расстилаем на полу. Затем берём маленькую карту Москвы и кидаем её на большую так, чтобы она полностью на ней уместилась. А теперь можно взять гвоздик и проколоть обе карты по одному адресу
Forwarded from Deleted Account
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from Loskir's
От скуки переписал метод получения заданий во внутреннем API @RoundDFBot по принципу Long Poll.

Вот тут можно почитать чуть подробнее, что это такое.

Раньше у меня был реализован банальный short poll: раз в 3 секунды воркер спрашивал у сервера, есть ли подходящее задание для него. Ответ приходил мгновенно: задание либо есть, либо нет.

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

Чем это лучше?

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

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

Самое интересное: в-третьих, теперь я могу более детально настраивать очередность получения заявок.
Могу по простому принципу: очередь (первый пришел — первый ушёл), стек (последний пришел — первый ушёл) или как-нибудь ещё.
А могу сложнее: днём отдавать моему компьютеру больше заданий (потому что это дешевле по сравнению с другими воркерами), а ночью наоборот меньше (чтобы не шумел и не мешал мне спать)😉