Интересное что-то
517 subscribers
2.72K photos
253 videos
139 files
4.52K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.me/asisakov_channel
Чат: https://t.me/youknowds_chat
Download Telegram
Применимая в реальной работе модификация RICE

За последнее время уже с несколькими людьми из разных компаний обсуждал, как я модифицировал метод приоритизации RICE, и все говорили: «Да! У нас тоже все эти ситуации и проблемы есть!»

Да кто такой этот ваш RICE?
Длинный ответ можно прочитать, например, тут https://productstar.ru/rice.

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

Критерии простые (как я люблю):
- Reach (охват) – количество пользователей, которых затронет предлагаемая фича.
- Impact (влияние) – в некоторой мере оценочное суждение, насколько важна и нужна фича, насколько сильно она повлияет на пользователей.
- Confidence (уверенность) – степень уверенности в двух предыдущих оценках. Одно дело – вы подробный рисерч провели, а другое – вы пальцем в небо ткнули на основании своих ощущений.
- Effort (усилия) – трудозатраты на выполнение.

В теории это всё. Мол, так делайте, и спина болеть не будет.

Но на практике работы в разных командах и компаниях, где у моих команд было много заказчиков, я вывел еще два дополнительных критерия.

Коэффициент обманщика (пишу вам тут литературно приемлемым языком)
Помните сказку про мальчика, который кричал «Волки!»?

Так нередко встречается и в жизни. Есть заказчики, которые говорят: «Это точно очень надо», ты им делаешь, а они потом не пользуются. Или те, кто говорит: «Очень срочно!!!», ты делаешь, а они только откроют посмотреть недели через две-три. Или те, кто говорит: «Это блокер! Без этого нельзя продолжать работу!!!», а при детальном рассмотрении оказывается, что просто у пары людей из десятков что-то медленно работает и надо ждать дольше, чем обычно.

Все примеры – это настоящие истории. А то вдруг подумаете, что это я сочинил для красного словца, ведь кто будет в здравом уме обманывать и драматизировать?)

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

Коэффициент офигевшего
А еще бывает порой так, что вы посчитали все коэффициенты и задача объективно не сильно важна. А иногда даже просто от неё 0 профита. НО эту задачу хочет видеть какой-нибудь высокий/важный/громкий руководитель. И тогда у вас появляется сильно повышающий множитель.

Примеры тут тоже видел разные:
- На А/Б тестировании проверили, что автогенеренные картинки и крафтовые имеют одну и ту же кликабельность и один и тот же профит. Но у важного руководителя, видимо, нет другой важной работы, он отсматривает каждую картиночку и настаивает, чтобы было «сексуально» (я не выдумываю, это цитата). В результате люди будут кратно тратить больше времени и сил, чтобы босс был доволен, что у стрелочки не прямой хвостик, а волнистый.
- Очередная пассия начальника придумала (ни с кем не обсудив, конечно) и выдала в свою соцсеть, что компания сделает какой-то ивент. Теперь у отдела маркетинга новые планы 🙂
- Один руководитель хочет положить себе в резюме недостающий кусочек менеджерского пазла, и теперь у команды новый проект.

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

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

Так что, на моем опыте, RICE подойдет для 70-90% задач (я их называю политически нейтральными), но оставшиеся 10-30% будут обмазаны дополнительными понижающими и повышающими коэффициентами, и вам придется с этим смириться. Везде так. Различается только частотой и силой проявления.
Forwarded from Tensor Banana
Float - липс синк и говорящая голова на реал-тайм скорости

- на вход картинка 512х512
- лицо должно занимать 60% кадра и смотреть прямо. Если есть обрезка головы, например, макушка, на выходе будут сильные артефакты
- нет video2video, на вход только картинка
- поддерживает 7 эмоций, можно задавать вручную: 'angry', 'disgust', 'fear', 'happy', 'neutral', 'sad', 'surprise' (гнев", "отвращение", "страх", "радость", "нейтральность", "грусть", "удивление"). По умолчанию использует смешанные эмоции.
- аниме лица не анимирует
- скорость на 3090 почти реалтайм: 39 секунд аудио за 41 секунду обработки
- жрет всего 3.3 гига VRAM при 20 секундах аудио
- в комфи ставится через manager по URL без всяких танцев с бубном

Надо бы сделать в комфи авто-вырезалку квадратного портрета с последующей склейкой обратно поверх исходного лица.


код: https://github.com/set-soft/ComfyUI-FLOAT_Optimized

ноды для comfy: https://github.com/set-soft/ComfyUI-FLOAT_Optimized

видео примеры: https://deepbrainai-research.github.io/float/
Interpolation.pdf
2.4 MB
Интерполяции здорового человека. Я более-менее дописал обещанный несколько месяцев назад текст про интерполяции и делюсь им с дорогими пампищиками. Замечания, рекомендации и предложения are welcome. Текст ещё будет расширяться в смысле библиографии и возможно будет дописан кусочек про тригонометрические интерполяции, но, думаю, что в текущем виде уже можно показывать :-)

Что в тексте. Я проповедую идею, что на все интерполяционные задачи полезно смотреть с точки зрения сопряженного пространства. Идея в том, что «данные для интерполяции» нужно понимать как линейные функционалы. То есть как базис сопряженного пространства. Затем подбирать к ним дуальный базис в исходном пространстве функций (тех, при помощи которых интерполируем) и собирать уже из этих многочленов интерполирующие функции.

Тут есть два важных момента.
1. Формулы получаются символьные, а значит универсальные.
2. Не особо важно какими функциями интерполировать. Можно полиномами (как в обычных сплайнах и интерполяционном многочлене Лагранжа), а можно тригонометрическими функциями, можно и какими-нибудь экспоненциальными даже. Или даже смешанными наборами. В общем чем угодно — не важно. Формулы позволяют.

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

Ну и немного эксклюзива.
Можно поиграться с формулами самостоятельно, я сделал проект в colab. Не ругайтесь, весь код сгенерирован при помощи #AI и, вероятно, ужасен :-)

1. Про базис тригонометрических функций тут.
2. Про интерполяцию тригонометрическими функциями тут.
3. Вычисления для сплайнов 5-го порядка здесь.

Надеюсь, что будет полезно и популярно. #научпоп
Каталог каталогов по ML и ИИ.

1. Мини-проекты по машинному обучению с Python
Небольшие проекты для понимания основных концепций. Создание моделей машинного обучения с Scikit-learn для регрессии и классификации.

2. Анализ данных и библиотека проектов машинного обучения
Учебные материалы, код и наборы данных для проектов анализа данных и машинного обучения.

3. Идеи для проектов машинного обучения
Идеи проектов: машинное обучение, НЛП, компьютерное зрение, рекомендательные системы.

4. 500+ проектов машинного обучения и ИИ с кодом
500+ реальных проектов: машинное обучение, глубокое обучение, компьютерное зрение, НЛП.

5. Проекты генеративного ИИ
Современные проекты и сервисы генеративного ИИ. Инструменты для генерации текста, изображений, аудио, видео.

6. Инструменты и проекты LangChain
Инструменты и проекты с фреймворком LangChain для приложений на основе больших языковых моделей и ИИ-агентов.

7. Решения Kaggle
Решения и идеи соревнований Kaggle. Лучшие подходы к решению задач машинного обучения.

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

9. Справочник по машинному обучению
Ссылки, учебные материалы и ресурсы по машинному обучению и глубокому обучению.

10. Ресурсы глубокого обучения
Учебники, проекты, книги и сообщества по глубокому обучению. Нейронные сети, обучение с подкреплением, исследования ИИ.

Обычно такое не люблю, но тут реально собраны тысячи полезных ссылок.
Тут и обучение и фреймворки и инструменты.
Все что может пригодиться в мире ИИ.
Подборки курируемые с десятками, а иногда и сотнями контрибьюторов.
И всё бесплатно. Лет на 5 обучения хватит.

#обучение #каталоги
———
@tsingular
Forwarded from .ml
Популярные SOTA-модели для суперразрешения

📍 Upscale-A-Video — модель для восстановления видео с низким разрешением, основанная на диффузии.

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


Что интересно:

📚 Модифицированные блоки UNet используют темпоральный механизм внимания — обучаются только временные слои, в то время как пространственные остаются фиксированными.

📚 Rotary Position Embedding использует вращательные матрицы для кодирования относительных позиций элементов в последовательности, что позволяет лучше учитывать временные зависимости.

📍 VideoGigaGan — SOTA-модель для видео суперразрешения, в которой ключевую роль играет функция потерь.

Архитектура: традиционный трансформер с UNet-подобным декодером. Важным аспектом является использование temporal attention, который позволяет передавать карты внимания между соседними кадрами. Это уменьшает размер модели и повышает её эффективность.


Что интересно:

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

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

Где взять данные для обучения моделей?


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

Процесс включает:

📌 Размытие из-за микродвижений.
📌 Уменьшение разрешения изображения.
📌 Добавление шума, характерного для камер при нормальном освещении.
📌 JPEG-сжатие, которое широко используется в современных устройствах.

Для обучения модели применяют подход, схожий с дистилляцией: модель дообучают на небольшом датасете реальных данных (real VSR). При этом важно учитывать loss между последними слоями исходной модели и новой, чтобы градиенты изменялись минимально на декодерной части.

💜 Этот пост написал Никита Алутис, ML-разработчик в Точке
Forwarded from Sinекура
Главный девиз Google — "Don't be evil" — почему-то совсем не даётся OpenAI. За что ни возьмутся, какая-то мутная ерунда получается. И хотя на этот раз сами результаты, кажется, под сомнение не ставят, давайте вспомним сложные отношения OpenAI с математикой. Я написал большой пост, здесь приведу сокращённый кусочек про FrontierMATH и IMO 2025:

Deep Think и IMO 2025: сложные отношения OpenAI и математики

В январе 2025 года разразился целый "бенчмарк-гейт". Датасет FrontierMATH — сверхсложный математический бенчмарк от Epoch AI, содержащий задачи хоть и с заранее известными ответами, но близкие к исследовательской математике. Я много раз рассказывал о нём в докладах; последний был на CS Space митапе.

И вот OpenAI анонсирует, что o3 набрала на FrontierMATH 25% в то время, как другие модели набирают около 2%. Величайший прорыв в математических рассуждениях? Нууу... в общем да, но со звёздочкой. Оказалось, что OpenAI профинансировала создание FrontierMATH и имела доступ к задачам, а писавшие задачи математики не знали о связях с OpenAI! Потом выяснилось, что есть "holdout" набор задач, к которому у OpenAI нет доступа, но всё это звучало подозрительно. В том, насколько это мутная история, легко убедиться по первоисточникам: просто посмотрите на саму статью Glazer et al. (2024) о FrontierMATH; arXiv помнит всё, и рис. 2 показывает разные версии этой статьи.

Независимая проверка показала, что o3-mini набирает на тестовом множестве FrontierMATH всего 11%. Потом o4-mini показала себя гораздо лучше, и сейчас две верхние строчки с огромным отрывом занимает o4, да и дальше только Gemini 2.5 Pro может конкурировать (рис. 3). Но все до сих пор вспоминают объявление о 25%.

А сегодня мы собрались ради IMO 2025. Мы только что обсуждали, что экспериментальная модель OpenAI решила 5 из 6 задач и достигла уровня золотой медали. Результат действительно впечатляющий... но опять есть нюанс. По словам инсайдеров, организаторы IMO попросили все AI-компании не красть внимание у детей и подождать неделю после церемонии закрытия, прежде чем объявлять свои результаты (рис. 4, рис. 5). А OpenAI объявила результаты сразу после церемонии закрытия, но за неделю до срока, о котором просили; более того, OpenAI не сотрудничала с IMO для официального тестирования.

А вот Google DeepMind повела себя корректно. Их модель Deep Think тоже решила 5 из 6 задач IMO 2025. Как и у OpenAI, речь идёт не об Alpha Proof 2, а о том, что обычная LLM, экспериментальный вариант Gemini под названием Deep Think, решал задачи на естественном языке.

Но, во-первых, Google дождалась официальной сертификации результатов IMO, прежде чем делать объявление. Во-вторых — и это куда важнее для нас, пользователей — модель, которая участвовала в IMO, "на самом деле очень близка к основной модели Gemini, которую мы предлагаем людям". То есть почти готовый продукт, а OpenAI заявляла, что до релиза их модели ещё не меньше нескольких месяцев.

В-третьих, решения Deep Think опубликованы, и вот как они выглядят: сравните рис. 6 (OpenAI) и рис. 7 (Deep Think); у Deep Think куда человечнее. Наверняка можно попросить LLM переписать решения от OpenAI более понятно — но это отчасти подтверждает заявления о более близком релизе.

История отношений OpenAI с математическими бенчмарками — пример того, как не надо строить репутацию. Каждый раз компания технически ничего не нарушает, но ведёт себя мутно, и осадочек всё накапливается и накапливается... Хотя о чём это я, осадок от OpenAI уже давно высыпается из бокала.

В итоге получается странно: в обоих случаях OpenAI ведь и правда сделала большие прорывы в AI для математики. Текущие результаты o4-mini на FrontierMATH никто под сомнение не ставит, да и решения задач IMO, скорее всего, получены честно. Но я уверен, что репутация OpenAI от этих историй проиграла, а не выиграла. И зачем, спрашивается, так было делать?

Как говорится, я решил пятьдесят задач из FrontierMATH, но никто не называет меня "Сэм-Великий-Математик"; я решил пять из шести задач IMO 2025, но никто не называет меня "Сэм-Чемпион-Олимпиад"...
#паттерны

Введение

Сегодня мы рассмотрим паттерн проектирования "Адаптер".

Классификация

Тип:
Структурный

Определение: Адаптер — это структурный паттерн проектирования, который позволяет объектам с несовместимыми интерфейсами работать вместе.
Адаптер выступает прослойкой между объектами превращая вызовы одного в понятные для другого.

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

Из чего состоит и как работает паттерн адаптер

1. Клиент. Описывает бизнес логику программы. Работает с адаптером и другими объектами.


adapter = Adapter()
result = adapter.do() + "5"


2. Интерфейс с которым может работать клиентский код.


class Test1:
def do(self) -> str:
return "3"


3. Класс, который имеет нужную клиенту логику, однако клиент не может с ним общаться, так как интерфейс данного класса ему не понятен.


class Test2:
def specific_do(self) -> float:
return 3.4


4. Адаптер - класс который помогает клиенту использовать функционал незнакомого ему сервиса в правильном формате. Реализует клиентский интерфейс. Содержит ссылку на незнакомый сервис. Адаптер при получении вызовов от клиента через клиентский интерфейс и переводит их в вызовы незнакомого сервиса в правильном формате.


class Adapter(Test1, Test2):
def do(self) -> str:
return f"Translated: {round(self.specific_do())}"


Уточнение: Приложение должно использовать объект адаптера только через клиентский интерфейс. Это позволит легко создавать и изменять адаптеры в будущем.

Плюсы данного паттерна

1. Скрывает все "низкоуровневые" преобразования интерфейсов от клиента. Реализует принцип абстракция.

Минусы данного паттерна

Таковых я не обнаружил

Пример и задача

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

В виде клиента выступает функция которая постит текст в ваш блог.(Можете просто создать функцию которая выводит переданный в неё текст). Естественно она должна принимать только расшифрованный текст.

Реализуйте адаптер для второго класса, который спасёт ваш блог от зашифрованных постов.

Пример из реального кода

https://github.com/aiogram/aiogram/blob/b190bbba1915ed3b7f311a780f34723ebd6b5acd/aiogram/contrib/fsm_storage/redis.py#L280

Вот его объяснение какую задачу решает адаптер в данном случае:

Здесь адаптер дает возможность контроллеру хранилища (RedisStorage) работать с первой версией редиса, т.е. адаптирует aioredis-v1, там еще есть адаптер для aioredis-v2, но он в отличие от первой версии адаптирует только создание клиента редиса


Дополнительные материалы

https://habr.com/ru/post/85095/