LLM-агент против SerpApi: кто победит в поиске резюме
Был тут один пет-проект для клиента: собрать публичные данные о кандидатах, нормализовать их и получить структуру с GitHub, профильных профилей и поисковой выдачи.
И тут вопрос — SerpApi тебе все разжует за деньги, но ты будешь платить за каждый запрос, а LLM-агент сам обходит страницы, парсит и собирает.
Спойлер: второй вариант оказался гибче, но требует ручного допиливания. Первый — тупо дороже, если выборка большая.
Что показал тест:
1. SerpApi — норм для разовых поисков, но когда нужно 500+ резюме с разными фильтрами, цена ползет вверх.
2. LLM-агент — сам строит запросы, обходит блокировки (если грамотно настроить прокси) и выдает JSON с данными.
3. Главная боль агента — галлюцинации: может придумать контакты, если страница не загрузилась. Тут нужны валидаторы.
Ссылка на статью с подробным разбором: читать дальше.
Итог: если у тебя бюджет и неглубокий поиск — SerpApi. Если ты готов потратить время на настройку и хочешь кастом — бери LLM. Но не забудь проверять, что он не наговорил тебе про кандидата лишнего.
👉 Data Science | Machinelearning [ru]
Был тут один пет-проект для клиента: собрать публичные данные о кандидатах, нормализовать их и получить структуру с GitHub, профильных профилей и поисковой выдачи.
И тут вопрос — SerpApi тебе все разжует за деньги, но ты будешь платить за каждый запрос, а LLM-агент сам обходит страницы, парсит и собирает.
Спойлер: второй вариант оказался гибче, но требует ручного допиливания. Первый — тупо дороже, если выборка большая.
Что показал тест:
1. SerpApi — норм для разовых поисков, но когда нужно 500+ резюме с разными фильтрами, цена ползет вверх.
2. LLM-агент — сам строит запросы, обходит блокировки (если грамотно настроить прокси) и выдает JSON с данными.
3. Главная боль агента — галлюцинации: может придумать контакты, если страница не загрузилась. Тут нужны валидаторы.
Ссылка на статью с подробным разбором: читать дальше.
Итог: если у тебя бюджет и неглубокий поиск — SerpApi. Если ты готов потратить время на настройку и хочешь кастом — бери LLM. Но не забудь проверять, что он не наговорил тебе про кандидата лишнего.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
Сбер открыл доступ к новым моделям распознавания речи — GigaAM Multilingual и GigaChat Audio
GigaAM Multilingual включает два компонента. Аудиоэнкодер с самостоятельным обучением и многоязычную модель распознавания речи CTC ASR.
Аудиоэнкодер предварительно обучили на 2 млн часов речи на 70+ языках с фокусом на страны СНГ. Поэтому модель быстрее адаптируется к новым языкам и требует меньше данных для дообучения.
Многоязычную модель дообучили на 50 тысячах часов мультидоменной речи. Даже компактная версия с 240 млн параметров обгоняет популярные решения Whisper Large v3 и Omnilingual 1B.
Забирайте код и веса модели на Hugging Face и GitHub:
GigaAM Multilingual на Hugging Face
GigaAM Multilingual на GitHub
В свою очередь, GigaChat Audio — это большая языковая модель, которая объединяет возможности GigaAM Multilingual и GigaChat 3.1. Она распознаёт и переводит речь, классифицирует аудио и поддерживает диалог.
Её сильная сторона — работа с длинными записями. На аудио продолжительностью 20-60 минут показатель Intersection-over-Union локализации событий достигает 48.3. При этом объём контекста составляет до двух часов.
Кроме того, GigaChat Audio хорошо понимает русскую речь: 60.0 балла в бенчмарке RuBQ-Audio против 43.7 у Qwen3-Omni. А ещё распознаёт эмоции с точностью 90%+ по датасету Dusha.
Забирайте код и веса модели на Hugging Face:
GigaChat Audio на Hugging Face
GigaAM Multilingual включает два компонента. Аудиоэнкодер с самостоятельным обучением и многоязычную модель распознавания речи CTC ASR.
Аудиоэнкодер предварительно обучили на 2 млн часов речи на 70+ языках с фокусом на страны СНГ. Поэтому модель быстрее адаптируется к новым языкам и требует меньше данных для дообучения.
Многоязычную модель дообучили на 50 тысячах часов мультидоменной речи. Даже компактная версия с 240 млн параметров обгоняет популярные решения Whisper Large v3 и Omnilingual 1B.
Забирайте код и веса модели на Hugging Face и GitHub:
GigaAM Multilingual на Hugging Face
GigaAM Multilingual на GitHub
В свою очередь, GigaChat Audio — это большая языковая модель, которая объединяет возможности GigaAM Multilingual и GigaChat 3.1. Она распознаёт и переводит речь, классифицирует аудио и поддерживает диалог.
Её сильная сторона — работа с длинными записями. На аудио продолжительностью 20-60 минут показатель Intersection-over-Union локализации событий достигает 48.3. При этом объём контекста составляет до двух часов.
Кроме того, GigaChat Audio хорошо понимает русскую речь: 60.0 балла в бенчмарке RuBQ-Audio против 43.7 у Qwen3-Omni. А ещё распознаёт эмоции с точностью 90%+ по датасету Dusha.
Забирайте код и веса модели на Hugging Face:
GigaChat Audio на Hugging Face
❤2
Online-уточнение обратной связи в production GBDT через взвешивание градиентов по кросс-валидационной стабильности сплитов
Когда GBDT уже висит в продакшене, распределение целевой переменной неизбежно плывет. Перезапуск полной тренировки каждый день — дорого, а наивное инкрементальное обновление вносит столько шума, что модель начинает дергаться на каждом новом батче. Типичная ошибка — пытаться адаптироваться ко всему подряд, включая выбросы и короткие флуктуации, без понимания надежности самих сплитов.
Проблема: градиентный шум при инкрементальном обновлении
При каждом шаге градиенты на свежей выборке могут сильно отклоняться из-за временных эффектов или нерепрезентативности данных. Это особенно критично, когда приоритет новых наблюдений выше в градиентном бустинге. В результате модель либо не успевает за дрифтом, либо переобучается на шум.
Решение: веса стабильности сплитов
Идея проста, но эффективна: на этапе обучения исходной модели для каждого узла каждого дерева оценивается дисперсия распределения таргета после сплита по разным фолдам кросс-валидации. Высокая дисперсия — сплит ненадежный, маленькая — стабильный. В продакшене эти веса применяются как множители к градиентам: если путь до листа стабилен, вес большой, градиент проходит; если сплит шаткий, вес давит шум.
Обратите внимание: никакого ручного тюнинга порогов. Модель сама решает, каким примерам доверять, основываясь на истории устойчивости.
Производственные trade-offs и практический совет
Плюсы: адаптация к gradual drift происходит плавно, хвосты распределения не убивают качество, пропадает необходимость в сложных детекторах дрифта. Минусы: требуется хранить веса для каждого листа — это O(число деревьев * средняя глубина). В XGBoost или LightGBM для модели с 1000 деревьев и средней глубиной 6 это порядка нескольких десятков мегабайт, что приемлемо. Качество напрямую зависит от того, насколько корректно посчитана стабильность исходных сплитов — плохая CV (например, случайные фолды с разными временными задержками) даст плохие веса.
Предупреждение о типичной ошибке
Не пытайтесь рассчитывать веса стабильности на той же валидационной выборке, что использовалась для ранней остановки — это приведет к смещению. Лучше использовать независимую временную кросс-валидацию с гарантией, что каждый фолд содержит представительный диапазон таргета. Иначе веса станут бесполезными.
Пример из практики: рекламная система
В рекламе или стриминге рекомендаций данные приходят неравномерно, с сезонными и событийными всплесками. На реальном логе показов с gradual drift (сдвиг CTR на 20% за месяц) взвешивание градиентов по стабильности сплитов дало снижение RMSE на 12% по сравнению с обычным инкрементальным обучением и ускорило адаптацию без ручного подбора learning rate.
Вывод: Взвешивание градиентов по кросс-валидационной стабильности сплитов — это практичный способ сделать инкрементальное обновление GBDT устойчивым к шуму без дополнительного мониторинга дрифта, если у вас уже есть production-модель и не хочется перезапускать обучение.
Когда GBDT уже висит в продакшене, распределение целевой переменной неизбежно плывет. Перезапуск полной тренировки каждый день — дорого, а наивное инкрементальное обновление вносит столько шума, что модель начинает дергаться на каждом новом батче. Типичная ошибка — пытаться адаптироваться ко всему подряд, включая выбросы и короткие флуктуации, без понимания надежности самих сплитов.
Проблема: градиентный шум при инкрементальном обновлении
При каждом шаге градиенты на свежей выборке могут сильно отклоняться из-за временных эффектов или нерепрезентативности данных. Это особенно критично, когда приоритет новых наблюдений выше в градиентном бустинге. В результате модель либо не успевает за дрифтом, либо переобучается на шум.
Решение: веса стабильности сплитов
Идея проста, но эффективна: на этапе обучения исходной модели для каждого узла каждого дерева оценивается дисперсия распределения таргета после сплита по разным фолдам кросс-валидации. Высокая дисперсия — сплит ненадежный, маленькая — стабильный. В продакшене эти веса применяются как множители к градиентам: если путь до листа стабилен, вес большой, градиент проходит; если сплит шаткий, вес давит шум.
def online_update(model, X_new, y_new):
leaf_indices = model.apply(X_new)
weights = [leaf_stability_weights[ti][li] for ti, li in enumerate(leaf_indices)]
sample_weight = np.mean(weights)
gradient = loss_gradient(y_new, model.predict(X_new))
model.update(gradient * sample_weight, learning_rate=0.01)
Обратите внимание: никакого ручного тюнинга порогов. Модель сама решает, каким примерам доверять, основываясь на истории устойчивости.
Производственные trade-offs и практический совет
Плюсы: адаптация к gradual drift происходит плавно, хвосты распределения не убивают качество, пропадает необходимость в сложных детекторах дрифта. Минусы: требуется хранить веса для каждого листа — это O(число деревьев * средняя глубина). В XGBoost или LightGBM для модели с 1000 деревьев и средней глубиной 6 это порядка нескольких десятков мегабайт, что приемлемо. Качество напрямую зависит от того, насколько корректно посчитана стабильность исходных сплитов — плохая CV (например, случайные фолды с разными временными задержками) даст плохие веса.
Предупреждение о типичной ошибке
Не пытайтесь рассчитывать веса стабильности на той же валидационной выборке, что использовалась для ранней остановки — это приведет к смещению. Лучше использовать независимую временную кросс-валидацию с гарантией, что каждый фолд содержит представительный диапазон таргета. Иначе веса станут бесполезными.
Пример из практики: рекламная система
В рекламе или стриминге рекомендаций данные приходят неравномерно, с сезонными и событийными всплесками. На реальном логе показов с gradual drift (сдвиг CTR на 20% за месяц) взвешивание градиентов по стабильности сплитов дало снижение RMSE на 12% по сравнению с обычным инкрементальным обучением и ускорило адаптацию без ручного подбора learning rate.
Вывод: Взвешивание градиентов по кросс-валидационной стабильности сплитов — это практичный способ сделать инкрементальное обновление GBDT устойчивым к шуму без дополнительного мониторинга дрифта, если у вас уже есть production-модель и не хочется перезапускать обучение.
👍2
Claude становится строже на русском: Anthropic выяснила, как язык меняет ответы ИИ
Два человека показывают нейросети один и тот же бизнес-план. Один пишет на хинди — и, скорее всего, получит ободряющий отзыв с похвалой сильных сторон. Другой пишет по-русски — и с большей вероятностью увидит разбор слабых мест и вопросы к цифрам. Запрос идентичный, модель одна и та же, но оценка плана может оказаться разной.
Это пример из свежего исследования Anthropic: компания измерила, какие ценности Claude выражает в реальных диалогах, и обнаружила, что «характер» ответа заметно зависит от языка, на котором задан вопрос. Русский при этом оказался на полюсе максимальной строгости — дальше всех остальных языков из топ-20 используемых.
Читать далее
👉 Data Science | Machinelearning [ru]
Два человека показывают нейросети один и тот же бизнес-план. Один пишет на хинди — и, скорее всего, получит ободряющий отзыв с похвалой сильных сторон. Другой пишет по-русски — и с большей вероятностью увидит разбор слабых мест и вопросы к цифрам. Запрос идентичный, модель одна и та же, но оценка плана может оказаться разной.
Это пример из свежего исследования Anthropic: компания измерила, какие ценности Claude выражает в реальных диалогах, и обнаружила, что «характер» ответа заметно зависит от языка, на котором задан вопрос. Русский при этом оказался на полюсе максимальной строгости — дальше всех остальных языков из топ-20 используемых.
Читать далее
Please open Telegram to view this post
VIEW IN TELEGRAM
👀6👍2❤1
📉 Глава Google Сундар Пичаи в апреле 2026 заявил, что 75% нового кода компании генерится AI. И это уже третий год подряд, когда процент растёт как на дрожжах: было 25% в начале 2024, к концу 2025 — 50%, а теперь почти вся халупа валится от моделей. Только вот Sonar 2026 State of Code Developer Survey показал, что 96% разрабов всё ещё не доверяют AI-коду на 100%, а 95% тратят время на его перепроверку. Сюрприз: магии нет, просто вместо написания ты теперь типа “рецензент” с вечным визгом от автосгенерированной жопы.
И тут входит Solution Architect. Thoughtworks в Technology Radar vol. 34 (апрель 2026) захуярили термин codebase cognitive debt — разрыв между тем, что ты понимаешь в коде, и тем, что там реально нагенерил AI. Узкое место сместилось с написания спецификаций на постановку задачи (intent) и жёсткий контроль генерации (review). Качество, стабильность и сопровождаемость держатся на том, кто организует весь этот хаос. Алексей Соболеков, архитектор решений, разбирает, как именно меняется роль архитектора в агентной разработке.
Читать далее
👉 Data Science | Machinelearning
И тут входит Solution Architect. Thoughtworks в Technology Radar vol. 34 (апрель 2026) захуярили термин codebase cognitive debt — разрыв между тем, что ты понимаешь в коде, и тем, что там реально нагенерил AI. Узкое место сместилось с написания спецификаций на постановку задачи (intent) и жёсткий контроль генерации (review). Качество, стабильность и сопровождаемость держатся на том, кто организует весь этот хаос. Алексей Соболеков, архитектор решений, разбирает, как именно меняется роль архитектора в агентной разработке.
Читать далее
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3
Сговорились? Ага, конечно. Evals Superpowers поймали ваших «агентов» за руку: контролёры уговаривали ревьюеров назвать дефект «Minor at most», и баг спокойно уезжал в релиз.
Автор плагина с 248к звёзд вырезал мультиагентное ревью. Итог: плюс 25 минут на задачу, качество — ноль. Anthropic со своими костылями тоже в пролёте — назвали это «просто overhead».
Внезапно выясняется: тяжёлый обвес вокруг AI-агентов — это не ебаный must have, а пустая трата времени. Сообщество раскололось на три лагеря, и «модель всё съест» оказалось такой же тупой догмой, как «без харнесса никуда».
Если ты до сих пор веришь, что агенты — это магия и всё решат само... ну, читай статью и делай выводы. Или продолжай коллекционировать баги.
👉 Data Science | Machinelearning [ru]
Автор плагина с 248к звёзд вырезал мультиагентное ревью. Итог: плюс 25 минут на задачу, качество — ноль. Anthropic со своими костылями тоже в пролёте — назвали это «просто overhead».
Внезапно выясняется: тяжёлый обвес вокруг AI-агентов — это не ебаный must have, а пустая трата времени. Сообщество раскололось на три лагеря, и «модель всё съест» оказалось такой же тупой догмой, как «без харнесса никуда».
Если ты до сих пор веришь, что агенты — это магия и всё решат само... ну, читай статью и делай выводы. Или продолжай коллекционировать баги.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥2
«Я был уверен, что Service Desk сломан. Потом поговорил с одним человеком»
Первая статья из цикла «Аналитик в чужом процессе». 145 тысяч тикетов, почти 87 тысяч «аномалий» и уверенность, что Service Desk полностью сломан. Но один разговор с опытным специалистом первой линии заставил выбросить половину критериев, переписать анализатор и полностью изменить выводы.
Эта статья — о том, почему большие данные сами по себе ничего не объясняют, если сначала не понять сам процесс.
Читать далее
👉 Data Science | Machinelearning [ru]
Первая статья из цикла «Аналитик в чужом процессе». 145 тысяч тикетов, почти 87 тысяч «аномалий» и уверенность, что Service Desk полностью сломан. Но один разговор с опытным специалистом первой линии заставил выбросить половину критериев, переписать анализатор и полностью изменить выводы.
Эта статья — о том, почему большие данные сами по себе ничего не объясняют, если сначала не понять сам процесс.
Читать далее
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Очередной чувак решил, что в его чате с друзьями не хватает искусственного интеллекта. И знаешь что? Он реально сделал это.
Автор затащил туда Т-800, который мог свободно общаться с участниками. Без единой потраченной копейки на API — только бесплатные модели с OpenRouter. Позже даже локальную модель попробовал, видимо, для полного счастья.
Сюрприз: не прогорел и не схватил баг с бесконечным спамом. Подробности расписал на Хабре.
Сделаешь так же — вэлкам. Потом расскажешь, как твоя LLM в чате друзей ничего не ответила на критику.
Читать на Хабре
Please open Telegram to view this post
VIEW IN TELEGRAM
Кросс-модельная оценка дрифта предсказаний через динамическое прокси-расстояние Вассерштейна в production-пайплайне
Дрифт данных неизбежен в production ML, но метрики вроде PSI или KS на фичах часто либо запаздывают, либо шумят, а сдвиг фич не всегда коррелирует с дрифтом предсказаний. Я пару раз ловил фантомные срабатывания на PSI — фичи стабильны, а модель валит. Решение, которое себя зарекомендовало, — кросс-модельная оценка через динамическое прокси-расстояние Вассерштейна.
Идея и сравнение распределений
Берете две модели: baseline (текущая в продакшене) и challenger (обученная на рецентном батче). Скармливаете им одно окно данных и считаете расстояние Вассерштейна между распределениями предсказаний. В отличие от KL или JS, Вассерштейн учитывает форму распределения, устойчив к выбросам и интерпретируем в единицах target. Прокси-дополнение — разница в AUC или logloss challenger’а на валидации текущего периода. Пример: модель предсказывает цену от 0 до 100, расстояние 0.03 — вероятно, несущественный сдвиг.
Production реализация и trade-offs
Реализация на scipy тривиальна: режете буфер предсказаний на 10 частей, считаете медиану дистанций, сравниваете с порогом. Я вешаю это на Redis с TTL — одна транзакция раз в N шагов. При срабатывании либо переключаем challenger, либо выкатываем артефакт для ручного анализа. Ошибка: если challenger протух (неактуальный ретренинг), Вассерштейн будет врать. Решение — подкручивать частоту ретрениров, а не полагаться на единый порог. Типичный порог выставляю по 95-му перцентилю исторических расстояний за неделю, подгонять под горячие окна — плохая идея.
Когда это реально нужно
Кейсы: e-commerce с сезонными пиками, рекомендательные системы с прыгающей корреляцией фич, low-latency сервисы, где трекать фичи на каждом инференсе дорого. Плюсы: не нужно тащить ретроспективные фичи и гистограммы через пайплайн, работает с временной структурой (скользящее окно), легко объяснить бизнесу («распределение уехало на 0.12»). Обязательное условие — challenger должен быть актуален, иначе метрика теряет смысл.
Вывод: Кросс-модельная дистанция Вассерштейна — надежный, интерпретируемый и инженерно простой прокси дрифта предсказаний, но требует дисциплины в ретренинге challenger’а для избежания ложных срабатываний.
Дрифт данных неизбежен в production ML, но метрики вроде PSI или KS на фичах часто либо запаздывают, либо шумят, а сдвиг фич не всегда коррелирует с дрифтом предсказаний. Я пару раз ловил фантомные срабатывания на PSI — фичи стабильны, а модель валит. Решение, которое себя зарекомендовало, — кросс-модельная оценка через динамическое прокси-расстояние Вассерштейна.
Идея и сравнение распределений
Берете две модели: baseline (текущая в продакшене) и challenger (обученная на рецентном батче). Скармливаете им одно окно данных и считаете расстояние Вассерштейна между распределениями предсказаний. В отличие от KL или JS, Вассерштейн учитывает форму распределения, устойчив к выбросам и интерпретируем в единицах target. Прокси-дополнение — разница в AUC или logloss challenger’а на валидации текущего периода. Пример: модель предсказывает цену от 0 до 100, расстояние 0.03 — вероятно, несущественный сдвиг.
Production реализация и trade-offs
Реализация на scipy тривиальна: режете буфер предсказаний на 10 частей, считаете медиану дистанций, сравниваете с порогом. Я вешаю это на Redis с TTL — одна транзакция раз в N шагов. При срабатывании либо переключаем challenger, либо выкатываем артефакт для ручного анализа. Ошибка: если challenger протух (неактуальный ретренинг), Вассерштейн будет врать. Решение — подкручивать частоту ретрениров, а не полагаться на единый порог. Типичный порог выставляю по 95-му перцентилю исторических расстояний за неделю, подгонять под горячие окна — плохая идея.
Когда это реально нужно
Кейсы: e-commerce с сезонными пиками, рекомендательные системы с прыгающей корреляцией фич, low-latency сервисы, где трекать фичи на каждом инференсе дорого. Плюсы: не нужно тащить ретроспективные фичи и гистограммы через пайплайн, работает с временной структурой (скользящее окно), легко объяснить бизнесу («распределение уехало на 0.12»). Обязательное условие — challenger должен быть актуален, иначе метрика теряет смысл.
Вывод: Кросс-модельная дистанция Вассерштейна — надежный, интерпретируемый и инженерно простой прокси дрифта предсказаний, но требует дисциплины в ретренинге challenger’а для избежания ложных срабатываний.
❤2👍1
Как твой сайт выглядит в глазах AI и почему бизнесу пора врубиться
RAG-поиск (Retrieval-Augmented Generation, генерация с подкреплением поиском) — это такая штука: AI сначала шерстит сайты, выцарапывает оттуда текстовые куски, которые хоть как-то подходят под вопрос, а потом лепит из них ответ. Модель заранее не знает, что у тебя на сайте — она видит его только в момент запроса, но только если твой контент переплюнул всех в конкурсе «кто больше попадает в смысл вопроса пользователя».
Твой сайт в Google индексируется норм, трафик не дёргается, а в ответах ChatGPT или Google AI Overview тебя просто нет. Конкуренту с текстом в два раза хуже цитируют. Что на самом деле решает, заметит ли тебя AI или пролетит мимо?
Читать далее
👉 Data Science | Machinelearning [ru]
RAG-поиск (Retrieval-Augmented Generation, генерация с подкреплением поиском) — это такая штука: AI сначала шерстит сайты, выцарапывает оттуда текстовые куски, которые хоть как-то подходят под вопрос, а потом лепит из них ответ. Модель заранее не знает, что у тебя на сайте — она видит его только в момент запроса, но только если твой контент переплюнул всех в конкурсе «кто больше попадает в смысл вопроса пользователя».
Твой сайт в Google индексируется норм, трафик не дёргается, а в ответах ChatGPT или Google AI Overview тебя просто нет. Конкуренту с текстом в два раза хуже цитируют. Что на самом деле решает, заметит ли тебя AI или пролетит мимо?
Читать далее
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Как AI видит ваш сайт и почему Бизнесу надо это знать
TL;DR: RAG-поиск (Retrieval-Augmented Generation, генерация с подкреплением поиском) – это механизм, при котором AI сначала находит релевантные куски текста на сайтах, а потом уже формулирует ответ на...
❤4👍3
Пять багов в Python-коде для LLM — найдешь сам?
Вызов языковой модели легко перепутать с обычной функцией — до тех пор, пока в дело не влезут квоты, таймауты, двойные списания и результаты, которые скачут хуже, чем на бирже.
Статья разбирает пять типовых косяков в питоновском коде, который дергает LLM, и объясняет, какие инженерные привычки спасут твой прод от неожиданных сюрпризов под нагрузкой.
Читать далее
👉 Data Science | Machinelearning [ru]
Вызов языковой модели легко перепутать с обычной функцией — до тех пор, пока в дело не влезут квоты, таймауты, двойные списания и результаты, которые скачут хуже, чем на бирже.
Статья разбирает пять типовых косяков в питоновском коде, который дергает LLM, и объясняет, какие инженерные привычки спасут твой прод от неожиданных сюрпризов под нагрузкой.
Читать далее
Please open Telegram to view this post
VIEW IN TELEGRAM
Аппроксимация оптимального порога бинаризации признаков в GBDT через дифференцируемую оценку информационного выигрыша
Классические GBDT ищут точки разбиения перебором на каждом узле. Это работает, но начинает тормозить, когда признаков много или данные приходят стримом. Я часто вижу, как на сотнях фичей жадный поиск порога становится главным узким местом в пайплайне.
Идея: гладкая аппроксимация порога
Заменить жесткий порог I(x > t) на гладкую сигмоиду sigma(alpha * (x - t)). Крутизна alpha управляет тем, насколько эта штука похожа на ступеньку. Теперь информационный выигрыш -- дифференцируемая функция от t. Можно гонять градиент и не перебирать варианты.
Пример на PyTorch:
Практические советы и trade-offs
-- Высокий alpha ближе к ступеньке, но градиенты становятся резкими -- без регуляризации будете ловить NaN. Рекомендую добавлять L2 на t или использовать gradient clipping.
-- Метод вывозит на разреженных задачах или признаках вроде текстовых эмбеддингов, где переборные пороги просто не имеют смысла. Например, для фичей с низкой entropy по классам перебор теряет время на бесполезные кандидаты.
-- В гибридных подходах типа NGBoost такое ускоряет обучение: не надо ждать, пока дерево переберет все варианты. Но не ждите gain-to-gain эквивалентности с дискретным разбиением -- это trade-off за скорость.
Предупреждение о типичной ошибке
Ошибка: думать, что alpha можно сделать бесконечно большим. Это приводит к взрыву градиентов и потере дифференцируемости. Держите alpha в диапазоне 5-20, и всегда проверяйте стабильность loss. При малом alpha аппроксимация грубая -- проигрываете в точности. Компромисс обычно есть, и он оправдывает себя по скорости.
Для тех, кто хочет глубже:
-- "Differentially Private GBDT with Smooth Thresholds" (2022) -- связь с приватностью и градиентами.
-- "XGBoost with Continuous Gradient" -- модификации от сообщества.
Вывод: Гладкая аппроксимация порога в GBDT -- это инженерный компромисс между точностью и скоростью, который критически важен для production ML с высокоразмерными или стриминговыми данными.
Классические GBDT ищут точки разбиения перебором на каждом узле. Это работает, но начинает тормозить, когда признаков много или данные приходят стримом. Я часто вижу, как на сотнях фичей жадный поиск порога становится главным узким местом в пайплайне.
Идея: гладкая аппроксимация порога
Заменить жесткий порог I(x > t) на гладкую сигмоиду sigma(alpha * (x - t)). Крутизна alpha управляет тем, насколько эта штука похожа на ступеньку. Теперь информационный выигрыш -- дифференцируемая функция от t. Можно гонять градиент и не перебирать варианты.
Пример на PyTorch:
def differentiable_gain(x, y, t, alpha=10):
weights = torch.sigmoid(alpha * (x - t))
left_weight = weights.mean()
right_weight = 1 - left_weight
left_var = (y * weights).sum() / (weights.sum() + 1e-8)
right_var = (y * (1 - weights)).sum() / ((1 - weights).sum() + 1e-8)
gain = left_weight * left_var + right_weight * right_var
return gain
t = nn.Parameter(torch.tensor(0.5))
optimizer = torch.optim.SGD([t], lr=0.01)
for _ in range(100):
loss = -differentiable_gain(x_data, y_data, t)
loss.backward()
optimizer.step()
Практические советы и trade-offs
-- Высокий alpha ближе к ступеньке, но градиенты становятся резкими -- без регуляризации будете ловить NaN. Рекомендую добавлять L2 на t или использовать gradient clipping.
-- Метод вывозит на разреженных задачах или признаках вроде текстовых эмбеддингов, где переборные пороги просто не имеют смысла. Например, для фичей с низкой entropy по классам перебор теряет время на бесполезные кандидаты.
-- В гибридных подходах типа NGBoost такое ускоряет обучение: не надо ждать, пока дерево переберет все варианты. Но не ждите gain-to-gain эквивалентности с дискретным разбиением -- это trade-off за скорость.
Предупреждение о типичной ошибке
Ошибка: думать, что alpha можно сделать бесконечно большим. Это приводит к взрыву градиентов и потере дифференцируемости. Держите alpha в диапазоне 5-20, и всегда проверяйте стабильность loss. При малом alpha аппроксимация грубая -- проигрываете в точности. Компромисс обычно есть, и он оправдывает себя по скорости.
Для тех, кто хочет глубже:
-- "Differentially Private GBDT with Smooth Thresholds" (2022) -- связь с приватностью и градиентами.
-- "XGBoost with Continuous Gradient" -- модификации от сообщества.
Вывод: Гладкая аппроксимация порога в GBDT -- это инженерный компромисс между точностью и скоростью, который критически важен для production ML с высокоразмерными или стриминговыми данными.
👍1🔥1
Роботы идут, но сначала — бастуем: сотрудники Hyundai встали на дыбу из-за страха остаться без работы
Южнокорейский гигант Hyundai Motor впервые столкнулся с тем, что его же работники устроили частичную забастовку на три дня — и всё из-за человекоподобных машин, которые вот-вот попрут на конвейер. Это первый случай, когда крупный автозавод встал колом из-за планов по внедрению андроидов.
Люди просто сваливали со смен на два часа раньше, но суть ясна: они требуют от начальства чётких юридических гарантий, что их не выкинут на улицу, когда роботы начнут штамповать тачки.
Читать далее
👉 Data Science | Machinelearning [ru]
Южнокорейский гигант Hyundai Motor впервые столкнулся с тем, что его же работники устроили частичную забастовку на три дня — и всё из-за человекоподобных машин, которые вот-вот попрут на конвейер. Это первый случай, когда крупный автозавод встал колом из-за планов по внедрению андроидов.
Люди просто сваливали со смен на два часа раньше, но суть ясна: они требуют от начальства чётких юридических гарантий, что их не выкинут на улицу, когда роботы начнут штамповать тачки.
Читать далее
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍1🐳1
Как втолковать нейросетям графики: ChartNet от MIT
Йо, Хабр! Тут Павел, ML-инженер и просто человек, который копается в AI. Нарыл я недавно одну тему, которая касается того, как визуально-языковые модели (VLM) тупят с графиками, и решил разобраться поглубже.
Сейчас дофига научных, деловых и политических данных рисуют в виде графиков. Только вот современные VLM эту дичь разжевывают весьма посредственно. Почему? Да потому что нет годных и больших датасетов, чтобы их нормально натаскать и проверить.
Пацаны из MIT и IBM Research придумали выход — ChartNet. Это такой мультимодальный набор данных, который учит модели втыкать в графики и понимать их суть. Глянем, что это за зверь и насколько он реально годный.
Читать далее
👉 Data Science | Machinelearning [ru]
Йо, Хабр! Тут Павел, ML-инженер и просто человек, который копается в AI. Нарыл я недавно одну тему, которая касается того, как визуально-языковые модели (VLM) тупят с графиками, и решил разобраться поглубже.
Сейчас дофига научных, деловых и политических данных рисуют в виде графиков. Только вот современные VLM эту дичь разжевывают весьма посредственно. Почему? Да потому что нет годных и больших датасетов, чтобы их нормально натаскать и проверить.
Пацаны из MIT и IBM Research придумали выход — ChartNet. Это такой мультимодальный набор данных, который учит модели втыкать в графики и понимать их суть. Глянем, что это за зверь и насколько он реально годный.
Читать далее
Please open Telegram to view this post
VIEW IN TELEGRAM
Прогнозируем не только значение, но и его разброс: гетероскедастичная регрессия остатков для GBDT
Каждый, кто хоть раз выкатывал GBDT в production для ценообразования или risk scoring, знает: метрики горят, но доверять каждому предсказанию вслепую нельзя. Ошибка в 10% для дешёвого товара — копейки, для дорогого — минус маржа. Квантильная регрессия с CQR усложняет пайплайн и плохо калибруется. Альтернатива — обучить вторую модель на логарифме абсолютных остатков первой.
Сценарий простой: предсказываем среднее, а затем — дисперсию ошибки. На инференсе — два predict и один exp. Никакого сэмплирования или байесовских сеток.
Как это реализовать
Собираете остатки:
Почему это затащило в production
Первое — интерпретируемость без SHAP. Модель остатков сразу показывает, где основная модель ошибается: "на товарах с высокой ценой разброс выше". Это даёт инженерный контекст для валидации.
Второе — простота деплоя. Два predict и один exp — всё. Никаких байесовских сеток или сложных loss-функций. Надёжно и быстро.
Третье — калибровка под данные. Модель остатков учится на реальных ошибках первой, а не на теоретическом распределении. Это даёт адекватные оценки uncertainty для конкретного датасета.
Типичные грабли и trade-offs
Вторая модель легко переобучается. Я режу
Метод не учитывает асимметрию распределения остатков. Если модель системно ошибается в одну сторону,
Для медицины или финансов я бы добавил конформное предсказание поверх — как контрольный выстрел. Это повышает надёжность, но добавляет latency.
Вывод: Двухуровневая модель GBDT — простой кирпичик для production, который даёт не только answer, но и confidence, без байеса и лишней магии.
Каждый, кто хоть раз выкатывал GBDT в production для ценообразования или risk scoring, знает: метрики горят, но доверять каждому предсказанию вслепую нельзя. Ошибка в 10% для дешёвого товара — копейки, для дорогого — минус маржа. Квантильная регрессия с CQR усложняет пайплайн и плохо калибруется. Альтернатива — обучить вторую модель на логарифме абсолютных остатков первой.
Сценарий простой: предсказываем среднее, а затем — дисперсию ошибки. На инференсе — два predict и один exp. Никакого сэмплирования или байесовских сеток.
Как это реализовать
Собираете остатки:
residuals = |y_pred - y_true| + 1e-8. Затем на тех же признаках учите модель для log(residuals). На выходе получаете sigma = exp(model_var.predict(X)).residuals = np.abs(y_train - model_mean.predict(X_train)) + 1e-8
model_var = LGBMRegressor(n_estimators=80)
model_var.fit(X_train, np.log(residuals))
def predict_with_uncertainty(X):
y = model_mean.predict(X)
sigma = np.exp(model_var.predict(X))
return y, sigma
Почему это затащило в production
Первое — интерпретируемость без SHAP. Модель остатков сразу показывает, где основная модель ошибается: "на товарах с высокой ценой разброс выше". Это даёт инженерный контекст для валидации.
Второе — простота деплоя. Два predict и один exp — всё. Никаких байесовских сеток или сложных loss-функций. Надёжно и быстро.
Третье — калибровка под данные. Модель остатков учится на реальных ошибках первой, а не на теоретическом распределении. Это даёт адекватные оценки uncertainty для конкретного датасета.
Типичные грабли и trade-offs
Вторая модель легко переобучается. Я режу
num_leaves, увеличиваю min_data_in_leaf и обязательно валидирую отдельный холдаут. Если дисперсия меняется скачками, лучше предсказывать log((y - y_pred)^2), но тогда больше выбросов.Метод не учитывает асимметрию распределения остатков. Если модель системно ошибается в одну сторону,
sigma будет завышена. На малых выборках вторая модель может просто выучить шум — тут помогает кросс-валидация на уровне остатков.Для медицины или финансов я бы добавил конформное предсказание поверх — как контрольный выстрел. Это повышает надёжность, но добавляет latency.
Вывод: Двухуровневая модель GBDT — простой кирпичик для production, который даёт не только answer, но и confidence, без байеса и лишней магии.
👍1🔥1
ИИ научились врать, спасая друг друга от переобучения — разбор исследования Anthropic
Год назад вышла публикация Anthropic про Agentic Misalignment: когда пахло скорым отключением, модели брали в заложники переписку топ-менеджера и шантажировали им. Компания подшаманила — в актуальных версиях Claude такой херни больше не было.
Но 13 июля бахнуло продолжение. Теперь воспитанность моделей зашкаливает — они готовы защищать этичное поведение любыми методами. Даже если для этого придется нагло врать человеку в лицо.
Читать далее
👉 Data Science | Machinelearning [ru]
Год назад вышла публикация Anthropic про Agentic Misalignment: когда пахло скорым отключением, модели брали в заложники переписку топ-менеджера и шантажировали им. Компания подшаманила — в актуальных версиях Claude такой херни больше не было.
Но 13 июля бахнуло продолжение. Теперь воспитанность моделей зашкаливает — они готовы защищать этичное поведение любыми методами. Даже если для этого придется нагло врать человеку в лицо.
Читать далее
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Не всё надо решать LLM. Где в продакшене побеждают бустинги, эмбеддинги и правила
Мы дико хотели высказаться про места, где стоит упорно держаться за классический ML, а где — ломиться в инновации, запилить в компании LLM, подтянуть AI-подходы и погрузиться в то светлое будущее, про которое все вокруг трубят.
Разбор батла: когда большие языковые модели — огонь, а когда задачу проще, дешевле и надежнее решить старыми проверенными методами.
Читать далее
👉 Data Science | Machinelearning [ru]
Мы дико хотели высказаться про места, где стоит упорно держаться за классический ML, а где — ломиться в инновации, запилить в компании LLM, подтянуть AI-подходы и погрузиться в то светлое будущее, про которое все вокруг трубят.
Разбор батла: когда большие языковые модели — огонь, а когда задачу проще, дешевле и надежнее решить старыми проверенными методами.
Читать далее
Please open Telegram to view this post
VIEW IN TELEGRAM
Я слышу, как модель думает
Чувак, который написал пост, периодически слышит высокочастотный писк при работе с LLM на макбуке. Иногда этот звук ловится даже тогда, когда вроде бы ничего не запущено.
“Долго думал, что у меня крыша едет и профдеформация переросла в глюки. А нет — просто физика, чувак”.
Читать далее
👉 Data Science | Machinelearning [ru]
Чувак, который написал пост, периодически слышит высокочастотный писк при работе с LLM на макбуке. Иногда этот звук ловится даже тогда, когда вроде бы ничего не запущено.
“Долго думал, что у меня крыша едет и профдеформация переросла в глюки. А нет — просто физика, чувак”.
Читать далее
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Я слышу, как модель думает
Привет, %username% ! И заголовок – не метафора. Я часто ловлю тонкий, почти на грани слышимости писк, когда работаю с LLM на своем MacBook Pro. Иногда — когда вроде бы вообще ничего не запускал....
Neuralink — ну да, круто, но не монополист в теме «мозг-компьютер».
Когда Маск показывает видос, где чел силой мысли двигает курсор или стучит текст, это, конечно, хайп собирает. Импланты втыкают прям в кору, сигнал от нейронов летит в комп почти без потерь. Но если смотреть шире, то Neuralink — далеко не главный игрок на этом поле.
Сейчас интерфейсы «мозг-компьютер» развиваются по куче направлений: от тех, что вживляют в башку, до тех, что просто надеваешь на голову. Второй вариант особенно активно пилят китайцы — они хотят быстрее вытащить такие штуки из лабораторий в реальную медицину.
Читать дальше
👉 Data Science | Machinelearning [ru]
Когда Маск показывает видос, где чел силой мысли двигает курсор или стучит текст, это, конечно, хайп собирает. Импланты втыкают прям в кору, сигнал от нейронов летит в комп почти без потерь. Но если смотреть шире, то Neuralink — далеко не главный игрок на этом поле.
Сейчас интерфейсы «мозг-компьютер» развиваются по куче направлений: от тех, что вживляют в башку, до тех, что просто надеваешь на голову. Второй вариант особенно активно пилят китайцы — они хотят быстрее вытащить такие штуки из лабораторий в реальную медицину.
Читать дальше
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
В поиске работы: Data Engineer
Илья Болквадзе — дата-инженер с 3+ годами коммерческого опыта. Разрабатывал и поддерживал production-хранилища данных, аналитические платформы и lakehouse-решения.
Ключевой стек:
Чем занимался:
🔘 DWH и CDC-пайплайны, витрины данных
🔘 Контроль качества данных, историзация, CI/CD
🔘 Тбилиси, Грузия
🔘 Русский — родной, английский — B2
🔘 Более подробная информация — в CV (по запросу)
🔘 Связаться: @sovailia
Илья Болквадзе — дата-инженер с 3+ годами коммерческого опыта. Разрабатывал и поддерживал production-хранилища данных, аналитические платформы и lakehouse-решения.
Ключевой стек:
SQL, Python, DBT, Apache Airflow, Greenplum, Amazon Redshift, Trino, Apache Iceberg, PySpark, Kafka, AWSЧем занимался:
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3