Запрети мне псевдолейблить
رفتن به کانال در Telegram
Канал о пути к Kaggle competitions (теперь уже) GrandMaster и поте, которым обливаешься в процессе Последний авторский канал про мл, претендующий на искренность и позволяющий ставить клоунов Для контакта пишите в сообщения канала, они бесплатные
نمایش بیشتر3 572
مشترکین
+224 ساعت
+477 روز
+18330 روز
آرشیو پست ها
3 Место от Santa 2025
Сетап соревнования кратко описан тут: https://t.me/pseudolabeling/327
Задача чуть меньше, чем NP-полная (∃R), а для таких пока не найдено одного оптимального алгоритма, так что все лучшие решения будут иметь несколько этапов. В этом случае этапы следующие:
1. Берем хорошее решение меньшего размера и 'наращиваем' на него прямоугольники
2. Собираем из этих запчастей кубик
3. Отжигаем получившеся решение с помощью SA. Вообще каждый Санта решается с помощью SA, так что запомните эти две буквы на следующий год
4. Модификацией sparrow важимаем последние соки
Для начала про sparrow- это такой алгоритм двумерной упаковки, основанный на эвристиках и написанный на Rust 🦀. О нем все узнали из того, что его автор занял 6 место, ставил синичку на аватарку и вообще везде указал, что он такой вот молодец и придумал новый алгортим. Я его понимаю, это его творение и его успех. По умолчанию он решает задачу 'утрамбовки' в прямоугольник известной высоты, передвигая объекты и оптимизируя длину прямоугольника.
В райтапе первый пункт описан плохо, но я додумаю для вас:
Берем пазл меньшего размера с высокой эффективностью. Эффективность определяем так: делим площадь квадрата на число деревьев и получаем условную 'плотность'. Чем плотнее- тем эффективнее. Логика простая- если такой коэф низкий, то и 'воздуха' в решении мало.
Дальше с помощью ванильного sparrow решаем две подзадачи в виде двух прямоугольников, достраиващих решение до квадрата большей площади. Можно конечно разбить и на два идентичных прямоугольника + маленький квадрат, но кажется особого смысла в таком лишнем ограничении нет и оно только испортит.
Пункт второй: SA
Строго и формально лучше всего читать на сайте ммп
Обычно алгоритм состоит из двух этапов: отжиг и kick
Отжиг на пальцах:
1.Фиксируем температуру T.
2. Берем случайное дерево, его немного поворачиваем и шевелим. Если из-за этого деревья пересекаются- начинаем с начала.
3. Если скор (размер описанного вокруг елок квадрата) после такого шевеления улучшился- это наше новое базовое решение.
4. Если не улучшился- то делаем это решение базовым только с вероятностью обратно пропорциональной изменению площади (-delta(space) / T)
Kick еще проще:
Чтобы не застояться в локально минимуме, иногда применяем шаг kick- каждое дерево случайно смещаем в одну из сторон и если не случился overlap, то оставляем как новое базовое решение.
Пункт третий:
Для sparrow придумали тоже пару модификаций, чтобы побить автора:
1. Переписали его под прямую оптимизацию стороны квадрата
2. Написали свою версию warm-start, чтобы не начинать каждый раз с начала. Хотя вормстарт не надо было писать самим, а надо было подтянуть мастер.
3. Дописали доп ограничения для солвера: решение должно быть либо зеркально симметричным, либо 4-симметричным (по вертикали и горизонтали). Так получается больше ограничений и можно отметать слабые решения раньше.
4. Так же добавили специальный параметр регуляризации, заставляющий выстраивать решения вдоль какой-нибудь заранее заданной оси:
P(thetta) = w * B(c) * delta(thetta, thetta*) ^ 2.
Тут w, thetta*- это гиперпараметры силы регуляризации и угла оси
B(c) = 1 + (b - 1)(1 - r) ^ p.
А тут B(c) нужен, чтобы от центра решения к краям регуляризация слабела: r- расстояние до центра паззла, а b и p- тоже гиперпараметры.
Из еще приколов:
1. Написали себе слак бота с апдейтами их прогресса на лб и автосабмитом
2. Решали все с помощью кагл ноутбуков. Кажется, даже не использовали дополнительные машины. Я в это не очень верю, ресурсы кагла все же очень ограничены. Но уличать их во лжи не на чем.
Соревнование в этот раз на мой взгляд чуть менее веселое, чем было в прошлом году с Геммой, но кагл стаф мне и не должен угождать.
Вот бы сейчас узнать мнение @silicon_bangalore о всех ситуациях, которые он не комментил
#santa2025
И так, наша первая идея для решения санты 2025, которая до сих пор работает, но почему-то не очень популярна в комьюнити. Ну или Вехденская правда придумал ее едиственный.
TLDR: сведем задачу упаковки к LP
Перва проблема сведения- это то, что ёлки то сами по себе не очень-то и выпуклые фигуры, а для решения LP надо фигуры иметь выпуклые. Тогда представим елку как минимальный набор выпуклых фигур (на рисунке), относительно которых можно собрать систему уравнений: порежем елку на фигуры и сделаем вид, что они друг к другу приклеены.
Для пары елок будем иметь 16 ограничивающих уравнений, но нам елки нужно сравнивать только попарно, так что количество уравнений не станет запредельным.
Тогда для каждой прямой описывающей каждый многоугольник будем иметь
a x + b y + c = 0Т.е. линейное ограничение. Если вдруг мы елку хотим двигать на (d_i, d_j), то каждое индивидуальное уравнение приобретет вид
a·dx_i + b·dy_i − a·dx_j − b·dy_j ≤ kГде k будет как раз нашим зазором между елками. Чем больше зазор- те больше 'воздуха' в нашем квадрате. Тогда сведение к LP будет: 1. Как переменные иметь сдвиги всех фигур + сторона квадрата 2. Сторону квадрата мы минимизируем 3. Каждую фигуру можно двигать так, чтобы она все еще находилась в квадрате и не пересекалась с другими ёлками. Какие тут минусы? Ну мы вообще не учитываем, что елки можно повернуть, так что для малых поворотов приходится играть с шумом на угол, чтобы мочь найти хороший вариант в окрестности. Опять же, не надо шагать в глобальный оптимум сразу. Лучше применить алгоритм несколько раз и делать сдвиги на какой-то коэффициент [0, 1], чтобы найти более глобальный оптимум. Тут аналогия как с другими оптимизаторами, где не надо торопиться. Таким образом команда @pseudolabeling примерно каждое решение могла немного улучшить в ~четвертом знаке Код можно вот тут потыкать и обойти текущий лучший паблик, чтобы поднять чсв Еще Вехденская правда планирует стрим с объяснением обсуждением этого в 21:00 по мск.
Заняли 47 место в упаковке елок в квадрат. Вернулся на 4 страницу рейтинга (382 место) в компетишнах, но как-то не ощутимо приблизился к гранд мастеру.
В ближайшие пару дней расскажу, что было придумано и как работало.
В жизни пару раз встречался с задачами упаковки объектов и всегда казалось, что каждый раз нужно изобретать костыли и писать очередной Brunch & Bound. Ну так вот вывод: надо!
https://huggingface.co/spaces/AlexWortega/hr-breaker
HR-breaker теперь в общем доступе
Repost from Борис опять
+1
На днях обсуждали с админом @pseudolabeling, что автоматические фильтры резюме совсем оборзели. Некоторые ребята которых я менторил из-за этого вручную оптимизировали резюме под каждую вакансию. Почему бы не автоматизировать?
Навайбкодил за два вечера hr-breaker:
1. Загружаете резюме
2. Даете ссылку на вакансию
3. LLM вооруженная тулколами генерирует оптимизированное резюме (в том числе по советам из методички)
4. Делаются стандартные проверки: keyword matching, vector similarity, проверка LLM-кой (в том числе визуально, что всё не поехало), проверка на галлюцинации, проверка на очевидный AI-generated текст
5. Если хотя бы одна проверка не пройдена оптимизация продолжается
Важно, что всё сконфигурировано не врать и не изобретать опыта которого нет, поэтому получается очень неплохо. Но если у вас нет совести ничто не мешает форкануть поиграться с промптами и отключить пару проверок 🤗
UX сделан для массовой подачи: кладет оптимизированные PDF в папку с указанием роли и компании, чтобы вы не забыли какое резюме куда отправляли.
Скачиваете, подставляете свой ключ Gemini API,
uv run и уничтожаете скрининг как явление. Добейте выживших
@boris_againВытянули с гранд мастером бронзу на соревновании по фин рынкам. Мелочь, а не лишнее.
Соревнование настолько рандомное, что завелся только один из сабмитнутых ноутов и в самой сореве драма вокруг отравленым китайских паблик ноутбуков
Фикс успешно влили в мастер. Теперь я контрибьютор еще и в дагстер
https://github.com/dagster-io/dagster/pull/33227/files
Repost from Агенты ИИ | AGI_and_RL
Автор собрал и описал в одном посте все улучшайки GRPO
https://cameronrwolfe.substack.com/p/grpo-tricks
Summary of the year for the channel "Запрети мне псевдолейблить" from @TGStat
С Новым годом, подписчики! Благодаря вам могу гордо занимать топ-1 в тг каналах про софт в Германии
Однажды я убил два месяца, пытаясь понять, как писать из Spark, который управляется Airflow в Redis Cluster (101) и в итоге справился. Смешно, но я видимо был первым и последним человеком, который столкнулся с этой проблемой на всем stuckoverflow:
https://stackoverflow.com/questions/68173118/spark-redis-exception-caused-by-redis-clients-jedis-exceptions-jedisconnection/68484061#68484061
В итоге, через 23 дня я просто руками перебрал все варианты и сам себе ответил. Проект тот кстати помер, так и не дойдя до релиза, так что о эффективности связки я так и не узнал.
С тех пор я совершенно не перестал дружить разные инструменты в очень странных конфигурациях и встречайте:
Я взял коннектор датадога для Dagster и раширил его функционал так, чтобы он работал ну хотя бы так же гибко, как оригинальный Datadog:
https://github.com/dagster-io/dagster/pull/33151
Dagster — это оркестратор дата-процессов: штука, которая превращает «кучу джобов/скриптов» в нормальную систему с графом зависимостей, ретраями, расписаниями, параметрами и понятным UI. Нужен, чтобы пайплайны не были магией на кронах: быстро понять, что упало, что именно пересчитать, и чтобы прод не держался на вере и одном человеке. А, ну или если коротко- это Airflow здорового человека и сразу на стерройдах
Datadog — это наблюдаемость “всё в одном”: метрики, логи, трейсы, алерты и дашборды, которые склеивают картину от «почему сервис тормозит» до «вот конкретный запрос и вот строчка лога». Нужен, чтобы дебажить и мониторить прод не по ощущениям, а по телеметрии. Вот мы его и используем, чтобы понять, что какие-то важные продовые джобы померли.
Это наверно не самая горячая связка из двух инструментов, но надеюсь кому-то кроме меня будет полезна. Опять же, изи вклад в популярный инструмент. У меня кстати есть бывший коллега, который в дагстере успел поработать. @nadya_nafig
Делитесь своими изи-контрибьюшнами в комментах. А я пойду убежу 5 немцев подписать петицию о признании вклада в open source как службу обществу.
Repost from Hacker News
Backing Up Spotify (🔥 Score: 151+ in 2 hours)
Link: https://readhacker.news/s/6HSgm
Comments: https://readhacker.news/c/6HSgm
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
