Warning: mkdir(): No space left on device in /var/www/hottg/post.php on line 59

Warning: file_put_contents(aCache/aDaily/2024-05-29/post/pozitronik_blog/--): Failed to open stream: No such file or directory in /var/www/hottg/post.php on line 72
Как быстро летит время @Трудоголизм и прокрастинация
TG Telegram Group & Channel
Трудоголизм и прокрастинация | United States America (US)
Create: Update:

Как быстро летит время, когда занимаешься интересным делом! С усилием отрываюсь от этого дела, чтобы вам о нём рассказать.
Не так давно я писал о проекте roop — завирусившемся инструменте для дипфейков. Несмотря на сложность выполняемой задачи, это очень простая скриптовая обёртка над сторонними моделями и рантаймами; вся нейрохрень уже заготовлена, и её нужно просто запустить с нужными параметрами. Даже не имея практически никакого опыта с python, легко разобраться в местном индусском коде и начать контрибьютить.
Вернее, я думал, что контрибьютить будет легко, но с текущим ментейнером проекта мы не сошлись в подходах. Хотя мы достаточно корректно переписывались и проговаривали какие-то вещи в чате, он под разными предлогами отбивал мои PR (кроме совсем уж простых, вроде исправлений опечаток). PR на поддержку сохранения состояния, для отклонения которого повода не нашлось, он просто не принимал «до стабилизации кода». Оказалось, что под «стабилизацией» он подразумевает сквош всех коммитов dev-ветки, из-за чего история git изменилась, мой PR детачнулся, и тогда уж он его с чистой совестью закрыл. Кстати, squash ещё подразумевает, что из истории выкинулись имена всех, кто в проект контрибьютил, а это уже свинство (я, например, хотел бы иметь возможность на собесах флексить своим вкладом в опенсорс).
Это был не единственный, но финальный эпизод, после которого я воспламенил стул решил воспользоваться величайшей возможностью лицензии GNU GPL — забрать код, и сделать хорошо самому.
Вот и делаю: sinner (sinner is non exactly roop).
Здесь уже есть поддержка сейвов (обработку можно в любой момент прервать, и продолжить с того же места), обрабатываемые кадры извлекаются по мере чтения в память (а не валяются гигабайтами файлов на диске), есть понятная цепочка обработки (можно сначала поменять лицо в ролике, а затем прогнать через улучшайзер), можно натравливать обработку на каталог с картинками, а не только на видосы и фотки а ещё там нет nsfw-фильтра. Я уже знаю, как ускорить процессинг, и примерно догадываюсь, как реализовать некоторые фичи, от которых в roop отказались. Идей куча.
Но главное — мой код гораздо лучше спроектирован, в отличие от откровенного индокода roop (атавизмы которого у меня ещё присутствуют). Мне было больно наблюдать, как там выдумывают собственную реализацию интерфейсов, лишь бы не переходить на ООП — и я сделал нормально. В оригинале забили на тесты — я сразу стараюсь их писать. В целом, я просто стараюсь сделать код, который будет легко поддерживать и расширять.
В то же время я изучаю python прямо по ходу, и хотя он мне кажется простым до примитивности, я могу не знать каких-то приёмов, или следовать своим привычкам из других языков. Поэтому прошу знатоков посмотреть и поговнить, если я где-то сделал плохо, или не так, как принято.
А ещё это первый проект, который я пишу с активным использованием ChatGPT, и это очень кайфово. Раньше, когда я начинал писать на незнакомом языке, мне приходилось тратить кучу времени на гуглёж и расковыривание; сейчас можно просто поставить задачу и получить готовый, полностью разобранный код. Осечки случаются, но на уровне погрешности, и это в любом случае выходит на два порядка эффективнее, чем без ChatGPT. При этом я не думаю, что ИИ уже способен заменять хотя бы джунов: чтобы создавать с его помощью хотя бы базовый код, нужен человек с достаточным уровнем понимания теории и хоть каким-то практическим опытом. Неопытный человек просто не сможет корректно поставить задачу роботу. Но если опыт есть, то помогайка получается классная.

Трудоголизм и прокрастинация
Договорились о том, что он так больше делать не будет, чтобы не портить жизнь другим контрибьюторам (хотя ничего плохого в подобных ребейзах всё ещё не видит), а я перетерплю этот случай. Всё-таки это хоббийный (хотя и хайповый) проект, а не сериус бизнесс…
Как быстро летит время, когда занимаешься интересным делом! С усилием отрываюсь от этого дела, чтобы вам о нём рассказать.
Не так давно я писал о проекте roop — завирусившемся инструменте для дипфейков. Несмотря на сложность выполняемой задачи, это очень простая скриптовая обёртка над сторонними моделями и рантаймами; вся нейрохрень уже заготовлена, и её нужно просто запустить с нужными параметрами. Даже не имея практически никакого опыта с python, легко разобраться в местном индусском коде и начать контрибьютить.
Вернее, я думал, что контрибьютить будет легко, но с текущим ментейнером проекта мы не сошлись в подходах. Хотя мы достаточно корректно переписывались и проговаривали какие-то вещи в чате, он под разными предлогами отбивал мои PR (кроме совсем уж простых, вроде исправлений опечаток). PR на поддержку сохранения состояния, для отклонения которого повода не нашлось, он просто не принимал «до стабилизации кода». Оказалось, что под «стабилизацией» он подразумевает сквош всех коммитов dev-ветки, из-за чего история git изменилась, мой PR детачнулся, и тогда уж он его с чистой совестью закрыл. Кстати, squash ещё подразумевает, что из истории выкинулись имена всех, кто в проект контрибьютил, а это уже свинство (я, например, хотел бы иметь возможность на собесах флексить своим вкладом в опенсорс).
Это был не единственный, но финальный эпизод, после которого я воспламенил стул решил воспользоваться величайшей возможностью лицензии GNU GPL — забрать код, и сделать хорошо самому.
Вот и делаю: sinner (sinner is non exactly roop).
Здесь уже есть поддержка сейвов (обработку можно в любой момент прервать, и продолжить с того же места), обрабатываемые кадры извлекаются по мере чтения в память (а не валяются гигабайтами файлов на диске), есть понятная цепочка обработки (можно сначала поменять лицо в ролике, а затем прогнать через улучшайзер), можно натравливать обработку на каталог с картинками, а не только на видосы и фотки а ещё там нет nsfw-фильтра. Я уже знаю, как ускорить процессинг, и примерно догадываюсь, как реализовать некоторые фичи, от которых в roop отказались. Идей куча.
Но главное — мой код гораздо лучше спроектирован, в отличие от откровенного индокода roop (атавизмы которого у меня ещё присутствуют). Мне было больно наблюдать, как там выдумывают собственную реализацию интерфейсов, лишь бы не переходить на ООП — и я сделал нормально. В оригинале забили на тесты — я сразу стараюсь их писать. В целом, я просто стараюсь сделать код, который будет легко поддерживать и расширять.
В то же время я изучаю python прямо по ходу, и хотя он мне кажется простым до примитивности, я могу не знать каких-то приёмов, или следовать своим привычкам из других языков. Поэтому прошу знатоков посмотреть и поговнить, если я где-то сделал плохо, или не так, как принято.
А ещё это первый проект, который я пишу с активным использованием ChatGPT, и это очень кайфово. Раньше, когда я начинал писать на незнакомом языке, мне приходилось тратить кучу времени на гуглёж и расковыривание; сейчас можно просто поставить задачу и получить готовый, полностью разобранный код. Осечки случаются, но на уровне погрешности, и это в любом случае выходит на два порядка эффективнее, чем без ChatGPT. При этом я не думаю, что ИИ уже способен заменять хотя бы джунов: чтобы создавать с его помощью хотя бы базовый код, нужен человек с достаточным уровнем понимания теории и хоть каким-то практическим опытом. Неопытный человек просто не сможет корректно поставить задачу роботу. Но если опыт есть, то помогайка получается классная.


>>Click here to continue<<

Трудоголизм и прокрастинация




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)


Fatal error: Uncaught TypeError: shuffle(): Argument #1 ($array) must be of type array, null given in /var/www/hottg/post.php:344 Stack trace: #0 /var/www/hottg/post.php(344): shuffle() #1 /var/www/hottg/route.php(63): include_once('...') #2 {main} thrown in /var/www/hottg/post.php on line 344