Data Science | Machinelearning [ru]
Все о Data Science, машинном обучении и искусственном интеллекте: от базовой теории до cutting-edge исследований и LLM. Личный блог автора - @just_genych По вопросам рекламы или разработки - @g_abashkin РКН: https://vk.cc/cJPGXD
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Data Science | Machinelearning [ru]
تُعد قناة Data Science | Machinelearning [ru] (@devsp) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 19 868 مشتركاً، محتلاً المرتبة 6 649 في فئة التكنولوجيات والتطبيقات والمرتبة 33 636 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 19 868 مشتركاً.
بحسب آخر البيانات بتاريخ 13 يوليو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -181، وفي آخر 24 ساعة بمقدار -9، مع بقاء الوصول العام مرتفعاً.
- حالة التحقق: غير موثّقة
- معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 5.90%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 3.71% من ردود الفعل نسبةً إلى إجمالي المشتركين.
- وصول المنشورات: يحصل كل منشور على متوسط 1 173 مشاهدة. وخلال اليوم الأول يجمع عادةً 738 مشاهدة.
- التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 4.
- الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل llm, nvidia, контекст, openai, архитектура.
📝 الوصف وسياسة المحتوى
يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“Все о Data Science, машинном обучении и искусственном интеллекте: от базовой теории до cutting-edge исследований и LLM.
Личный блог автора - @just_genych
По вопросам рекламы или разработки - @g_abashkin
РКН: https://vk.cc/cJPGXD”
بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 14 يوليو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
جاري تحميل البيانات...
| التاريخ | نمو المشتركين | الإشارات | القنوات | |
| 14 يوليو | +2 | |||
| 13 يوليو | 0 | |||
| 12 يوليو | +2 | |||
| 11 يوليو | +1 | |||
| 10 يوليو | +1 | |||
| 09 يوليو | +2 | |||
| 08 يوليو | +2 | |||
| 07 يوليو | +2 | |||
| 06 يوليو | +1 | |||
| 05 يوليو | +3 | |||
| 04 يوليو | +2 | |||
| 03 يوليو | +1 | |||
| 02 يوليو | +1 | |||
| 01 يوليو | +2 |
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 | Сбер открыл доступ к новым моделям распознавания речи — 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 | 459 |
| 3 | 🔍Тестовое собеседование на Frontend-разработчика со старшим разработчиком ex. Сбер
9 июля(в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Frontend-разработчика.
Как это будет:
📂 Даниил Дмитриев, старший разработчик в R-Vision, ex. TeamLead в Сбер, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Даниил будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Даниилу
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Frontend-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_front_bot
Реклама.
О рекламодателе. | 131 |
| 4 | LLM-агент против SerpApi: кто победит в поиске резюме
Был тут один пет-проект для клиента: собрать публичные данные о кандидатах, нормализовать их и получить структуру с GitHub, профильных профилей и поисковой выдачи.
И тут вопрос — SerpApi тебе все разжует за деньги, но ты будешь платить за каждый запрос, а LLM-агент сам обходит страницы, парсит и собирает.
Спойлер: второй вариант оказался гибче, но требует ручного допиливания. Первый — тупо дороже, если выборка большая.
Что показал тест:
1. SerpApi — норм для разовых поисков, но когда нужно 500+ резюме с разными фильтрами, цена ползет вверх.
2. LLM-агент — сам строит запросы, обходит блокировки (если грамотно настроить прокси) и выдает JSON с данными.
3. Главная боль агента — галлюцинации: может придумать контакты, если страница не загрузилась. Тут нужны валидаторы.
Ссылка на статью с подробным разбором: читать дальше.
Итог: если у тебя бюджет и неглубокий поиск — SerpApi. Если ты готов потратить время на настройку и хочешь кастом — бери LLM. Но не забудь проверять, что он не наговорил тебе про кандидата лишнего.
👉 Data Science | Machinelearning [ru] | 692 |
| 5 | Вайбкодинг на минималках: как настройка OpenClaw убила веру в магию нейросетей
Автор — не программист, не контент-мейкер и не вайбкодер, но его работа связана с компьютерами. Он делится субъективным опытом установки и настройки OpenClaw, со всеми ошибками новичка.
За OpenClaw он наблюдал давно и спустя полгода после релиза решил, что эксперимент уже избавился от большинства ошибок и стал рабочим продуктом. Увы, он был слишком наивен.
Читать далее: https://habr.com/ru/articles/1058588/
👉 Data Science | Machinelearning [ru] | 907 |
| 6 | Четыре истории внедрения ИИ в бизнесе: агент для заявок, RAG по документам и проверка сметы нейросетями
«Внедрить ИИ» — формулировка, за которой на практике скрываются совершенно разные по масштабу работы. Одной компании нужен агент, который годами живёт на сервере и разбирает входящие заявки. Другой — разовый прогон одного документа через связку нейросетей перед подписанием акта. Третьей автоматизация вообще ни к чему: важнее, чтобы команда сама умела ставить задачи агенту и проверять результат, без подрядчика на каждое изменение.
Читать далее
👉 Data Science | Machinelearning [ru] | 1 103 |
| 7 | ИИ-инфраструктура — это не купил видеокарту и погнал. Да, можно взять NVIDIA H100, поставить PyTorch и думать, что ты король.
Будешь как на Ferrari в час пик стоять.
Дмитрий Шиченко из Selectel вскрыл тему: без нормального пайплайна и баланса — твой сервер просто греет воздух. Инференс летит в жопу, если не продумать шину, память, архитектуру.
Они собрали свой AI-сервер и расписали принципы. Не для галочки — для реальной работы.
Коротко: железо — только половина дела. Вторая половина — как ты это упаковал и настроил. Хватит тупить.
Читай разбор: ссылка
Пошел ботать.
👉 Data Science | Machinelearning [ru] | 1 092 |
| 8 | Selectel запустила третий сезон своего IT-кроссворда, и на этот раз тема — AI и ML. Если ты думаешь, что это просто очередной развлекательный конкурс, ты ошибаешься.
Тебя ждут больше 100 вопросов о моделях ИИ, истории AI, безопасности, железе для ML и прочей базе, которую, если ты называешь себя специалистом, должен знать хотя бы на уровне «слышал и могу объяснить». Вопросы разной сложности — от «что такое нейросеть» до «как оптимизировать градиент». Рубрики разбиты по темам, так что даже новичок найдет, где потыкаться, а опытные могут проверить, не заржавели ли знания.
Правила простые: отвечаешь, набираешь баллы, попадаешь в топ. Знатоки получат эксклюзивный мерч Selectel и бонусы на аренду серверов. Не ради мерча — ради того, чтобы понять, насколько ты шаришь.
Читать далее
Не откладывай на вечер пятницы. Открывай, читай, отвечай.
👉 Data Science | Machinelearning [ru] | 995 |
| 9 | Как в Яндекс Лавке боролись с замкнутым кругом рекомендаций
Рекомендательная система со временем замыкается на привычках пользователя и перестаёт показывать что‑то незнакомое — интересы меняются, а система этого не замечает. Изменить ситуацию удаётся лишь ценой краткосрочных потерь.
Рамиль Боярченков из команды Яндекс Лавки рассказывает, как собрали механизм, который подмешивает незнакомые товары персонально — тем, кто к ним расположен, и с какой вероятностью это делать для каждого пользователя.
Читать далее: https://habr.com/ru/companies/yandex/articles/1051044/
👉 Data Science | Machinelearning [ru] | 1 012 |
| 10 | Динамический merge скоринговых реплик TensorFlow и GBDT через online-совместную реоптимизацию сплитов на стыке признаковых пространств
Когда в production-пайплайне работают две принципиально разные модели — TensorFlow (нейросеть) и GBDT (бустинг), — и возникает необходимость объединить их скоринговые реплики, стандартные подходы дают сбой. Усреднение выходов без учёта структуры дрейфа данных ломается, а мета-модель устаревает, как только распределение признаков сдвигается. Типичная ошибка — считать, что статическое усреднение или простая мета-модель решают проблему на non-stationary данные.
Проблема статического merge
Простое взвешенное усреднение (например, 0.5 * прогноз TF + 0.5 * прогноз GBDT) работает только пока валидационное распределение совпадает с production. В моей практике на рекомендательной системе в рекламном RTB-трафике это приводило к падению ROC-AUC на 3-4% при дрифте сезонных паттернов. Каждая переобучение всей связки — неделя времени. Причина — модель не адаптируется к локальным изменениям на стыке пространств.
Динамический merge с online-реоптимизацией сплитов
Решение — не складывать выходы, а построить общее признаковое пространство из эмбеддингов TF (выходы последнего скрытого слоя) и leaf values GBDT с градиентами. На этом стыке мы запускаем онлайн-дерево, которое пересчитывает сплиты на каждом новом батче. Пример из пайплайна click-through rate prediction: батч пришёл -> вытащили эмбеддинги TF -> предсказали листья GBDT -> склеили в joint-вектор -> прогнали через онлайн-дерево, которое реоптимизирует сплиты на основе градиента. Важно: ни TF, ни GBDT не переобучаются. Это снижает cost на адаптацию на 80% по сравнению с full retrain.
Баланс bias/variance и практический совет
Самый тонкий момент — не словить шум. Если пересчитывать сплиты на каждом батче без early stopping, модель начнёт подстраиваться под единичные выбросы. Личный опыт: я использую валидационное окно из последних 100 семплов. Как только метрика на окне перестаёт улучшаться — сплиты замораживаются до следующего триггера дрейфа. Это даёт стабильный прирост ROC-AUC на 3-5% на дрифтящих данных.
Типичная ошибка и trade-offs
Ошибка — пытаться реоптимизировать сплиты без учёта latency. Если joint-пространство получается большим (например, эмбеддинги 512-мерные, листьев 1000), online-дерево может тормозить. Решение: сжимать эмбеддинги через PCA до 32-64 компонент и ресамплировать листья по частоте. Это увеличивает latency всего на 2-3 мс на батч, но снижает cost на 5x. Иначе — перегрузка памяти и просадка throughput.
Вывод: Динамический merge через online-реоптимизацию сплитов на стыке признаковых пространств позволяет адаптировать ансамбль из TF и GBDT к дрейфу без полного переобучения, давая устойчивый прирост метрик при контроле bias/variance и latency. | 939 |
| 11 | 🤣 Мы все ждали когда это начнётся
✖️ xCode Journal | 944 |
| 12 | Ну что, пришло время оптимизации на RISC-V? Звучит как что-то для гиков, которые не боятся копаться в регистрах. Ребята из YADRO и НГТУ решили, что детектор углов на OpenCV можно ускорить. И знаешь что? Они это сделали. Никакой магии — алгоритмические костыли, ручная векторизация через RVV и тесты на плате Lichee Pi 4a. Результат: лучшая эффективность.
Смотри, в чем соль. Обычно ты берешь OpenCV, запускаешь на x86 и молишься, чтобы все летало. А тут архитектура RISC-V, где каждый такт на счету. Они не просто переписали код — они выжали из алгоритма все соки: убрали лишнее, добавили параллельность, оптимизировали под конкретный чип. Это тебе не курс по ML на коленке, а реальная работа с железом.
Для новичков: детектор углов — это база компьютерного зрения, алгоритм находит точки, где картинка меняет контур. Без этого роботы не видят препятствия, а камеры не фокусируются. Для опытных: векторизация RVV — это не SIMD из Intel, здесь свои тараканы, но подход тот же.
В общем, читаем статью, если хочешь понять, как выжать максимум из RISC-V, а не просто сохранять туториалы в закладки.
Вот ссылка
👉 Data Science | Machinelearning [ru] | 962 |
| 13 | Слышал новость? Роботы уже бегают быстрее людей, а ходить ровно всё ещё не могут.
За 2026 год двуногие машины пробежали полумарафон быстрее человеческого рекорда, CEO публично резал роботу ногу ножницами, а на презентации за миллионы долларов механизм тупо завалился на ровном месте. Сюрприз: походка теперь делается за 20 минут на одной видеокарте — это дешёвая инженерия. Но "живой" робот упирается в ватты, переполняющийся контекст и отсутствие непрерывного обучения.
Простыми словами: база есть, а мозгов нет. Всё упирается не в железо, а в то, как оно учится не падать.
Кому вкатываться — сначала разберись, как работает контекст и continuous learning. Без этого любая походка превратится в цирк на собеседовании.
Читать разбор
Работаем.
👉 Data Science | Machinelearning [ru] | 987 |
| 14 | Сравнение методов дообучения LLM: главный показатель качества
Исследователи лаборатории научных исследований Т-Технологий представили на ICML 2026 единый подход к сравнению методов дообучения больших языковых моделей, которые учатся на заранее подготовленных парах ответов. Разные методы часто сравниваются в разных условиях: этапы обучения, настройки и способы оценки ответов. Чтобы привести методы к сопоставимым условиям, исследователи разложили одноэтапные подходы (ORPO, ASFT) на два шага: supervised fine-tuning и отдельное выравнивание на парах ответов, а также ввели параметр β, регулирующий силу дообучения на человеческих предпочтениях. Исследователи пришли к выводу: качество сильнее всего зависит не от алгоритма, а от того, сравнивает ли модель ответы напрямую или оценивает их по отдельности.
«Один из главных выводов в том, что модели лучше учатся выбирать ответ, когда напрямую сравнивают два варианта между собой, а не оценивают каждый по отдельности»,
— рассказал руководитель лаборатории Даниил Гаврилов.
Так, попарные методы (pairwise) чаще дают результаты лучше, чем поточечные (pointwise), особенно на задачах средней сложности. В работе использовались Llama 3.2 3B, Llama 3.1 8B, Mistral 7B, Qwen 2.5 7B и 14B, обученные на данных Reddit TL;DR, UltraChat и UltraFeedback.
👉 Data Science | Machinelearning [ru] | 1 074 |
| 15 | Koda Pro решила поджарить Claude-sonnet
Новая версия Koda Pro на GLM 5.2 выстрелила в SWE-bench Verified. Старая версия показывала 59% — норм, но без фанатизма. Новая — 77.4%. Это на 10% выше старичка и почти догоняет Claude-sonnet-5 с его 78.8%.
Что сделали: перелопатили агентные инструменты, натянули системный промпт и докрутили обучение. Результат — дерзкий скачок.
Новичкам: не тупите в бездну абстрактных курсов. Откройте SWE-bench, посмотрите, как такие штуки тестируют код. Это сразу покажет, что вы умеете, а что нет.
Опытным: если ваши pet-projects не проходят даже половину таких бенчмарков, вы что-то делаете не так. Время подтянуть инструментарий.
Пошел читать статью и не ныть.
👉 Data Science | Machinelearning [ru] | 1 132 |
| 16 | Оптимизация распределённого жадного поиска сплитов в GBDT: вычислительное бюджетирование
Узкое место любого GBDT под нагрузкой — жадный поиск порогов для сплитов. Когда фич под тысячу, а строк миллионы, строить гистограмму для каждой на каждом узле — взрывной рост стоимости. В распределённой среде это буквально трата времени на заведомо мусорные сплиты.
Почему это важно
В production ML сценариях с высокой нагрузкой — мониторинг потоковых данных, обучение на Spark, CatBoost в real-time — каждая микросекунда на сплит умножается на число фич и глубину дерева. Типичная ошибка: строить плотные гистограммы для всех фич, даже для разреженных или с низким градиентом, что перегружает сеть и CPU.
Идея вычислительного бюджетирования
Вводим явный бюджет — лимит на количество гистограмм на узел. Фичи ранжируются по эвристике: сумма абсолютных градиентов или плотность ненулевых значений. Для разреженных фич это особенно спасает — они отсекаются до передачи данных между узлами.
Пример псевдокода для распределённой среды:
def allocate_budget(feature_stats, budget=100):
scores = {feat: len(nonzero_grads[feat]) for feat in feature_stats}
sorted_feats = sorted(scores, key=scores.get, reverse=True)
return sorted_feats[:budget]
for tree_level in range(max_depth):
budget_features = allocate_budget(current_stats)
parallel_build_histograms(budget_features)
Production-кейс и trade-offs
Из опыта внедрения в streaming-обучении: фаза сплита ускоряется на 40-60% при том же качестве. Сетевого трафика меньше — передаём гистограммы только по отобранным фичам. Однако есть нюанс: если бюджет задан без учёта gain от корня, можно отсечь хорошие сплиты в глубине. Слишком агрессивное бюджетирование (меньше 5% фич) — потеря информативности, особенно на сложных узлах с низкой чистотой.
Практический совет
Используйте адаптивный бюджет под сложность узла: для корневых узлов с большим gain можно увеличить бюджет, для глубоких — уменьшить. Это даёт баланс между скоростью и качеством, особенно в streaming-сценариях с ограничением по latency.
Типичная ошибка
Фиксированный бюджет на все уровни дерева без учёта распределения градиентов. На ранних узлах это может отсечь потенциально сильные фичи, которые станут доминантными глубже. Лучше динамически пересчитывать budget_features на каждой глубине.
Вывод: Вычислительное бюджетирование — простой и эффективный способ снизить latency в GBDT под нагрузкой, но требует адаптивного управления, чтобы не потерять качество из-за преждевременного отсечения фич. | 1 075 |
| 17 | Вечная тема: все хотят "говорить свободно", но в реальном диалоге впадают в ступор через 10 секунд. А продаваны курсов с радостью впарят тебе очередного "AI-тьютора", который отвечает через раз и с пятисекундной задержкой.
Парень на Хабре расписал свою Aisha — голосового репетитора английского. Это не просто обертка над GPT. Он реально запарился над архитектурой: голосовой ввод, стриминг, обработка ошибок в моменте, чтобы диалог не превращался в пытку лагами.
Суть проблемы, которую он решил: если тупо гонять аудио туда-сюда через API, живой диалог сдохнет на старте. Надо обрабатывать поток, резать payload и не проваливаться в задержки под контекст. Это hard mode, а не игрушки.
Новичкам: не пытайтесь сразу клепать таких монстров. Сначала научитесь гонять через whisper одну фразу и получать осмысленный ответ. Это база.
Для тех, кто шарит: статья — норм разбор того, как резать лаги в реалтайм-диалоге. Полезно, если пилите своего бойца.
Короче, идем читать, а не сохраняем в закладки до лучших времен. Пора разобраться, как это работает, а не просто пользоваться сырым говном от стартапов.
Тута ссылка на разбор архитектуры, payload и модели. Поехали.
👉 Data Science | Machinelearning [ru] | 1 019 |
| 18 | Многорукие бандиты с контекстом в микросервисном ранжировании: как не утонуть в сервисах
Цепочка ранжирования из нескольких сервисов — это не просто конвейер, а распределенная задача обучения с подкреплением. Типичная ошибка — внедрять бандита на каждый узел изолированно, не учитывая сквозной эффект решений.
Проблема фрагментации контекста
Каждый микросервис видит только свой контекст: сервис кандидатов знает время суток, сервис фич — нагрузку на вычисления, модель — идентификатор эксперимента, пост-процессинг — бизнес-правила. Если каждый из них принимает жадное или исследовательское решение независимо, цепочка накапливает шум. Контекстуальный бандит на финальном шаге бесполезен, если предыдущие узлы сгенерировали нерепрезентативные состояния.
Архитектура с общей обратной связью
Рабочее решение — цепочка контекстуальных бандитов, где каждый узел получает два сигнала: глобальное вознаграждение (например, CTR) и локальное (latency, ошибки). Ключевой трюк — смешивание их с фиксированными весами:
reward = 0.7 * глобальный CTR + 0.3 * локальный latency
Пример из продакшена:
- Сервис A выбирает источники кандидатов. Контекст: время суток, тип устройства.
- Сервис B решает, делать полный пересчет фич или инкрементальный — это влияет на latency и свежесть признаков.
- Сервис C выбирает версию модели: explore или exploit.
- Сервис D применяет бусты/дебусты в пост-процессинге.
Все бандиты работают с одним session_id (через OpenTelemetry) для трекинга сквозных цепочек. Вознаграждение выплачивается после завершения всего запроса — используем delayed rewards и policy gradient, а не Q-learning, чтобы избежать переобучения на локальных паттернах.
Практический совет и типичная ошибка
Реализация элементарна: класс с альфой на скользящее среднее и двумя полями под reward. Но главное — не добавлять бандита на узел, который не генерирует измеримого изменения в глобальной метрике. Иначе получите фоновый шум, который только увеличит variance A/B теста.
В нашем эксперименте на production: рост CTR +15% при сохранении latency. Сервисы остались автономными, но скоординированными. Добавление нового узла в цепочку — просто протянуть session_id и определить свой reward.
Вывод: Цепочка контекстуальных бандитов с общей обратной связью позволяет координировать микросервисы ранжирования без нарушения их изоляции, но требует явного смешивания глобальных и локальных метрик для стабильного обучения. | 1 092 |
| 19 | Динамический выбор алгоритма ветвления GBDT на основе аппаратных счетчиков производительности
Когда production GBDT внезапно начинает тормозить на одинаковой нагрузке, корень часто не в модели, а в том, как она ветвится на конкретном железе. CPU последовательно долбит if-else с промахами в prefetch, а GPU простаивает из-за дивергенции варпов. Типичная ошибка — фиксировать стратегию ветвления (left-heavy, depth-first) без учета аппаратных счетчиков.
Проблема статического ветвления
Классические GBDT-библиотеки (XGBoost, LightGBM) используют фиксированный порядок обхода дерева. На CPU это приводит к cache misses при холодных данных или branch miss penalties при нерегулярных паттернах. На GPU — к warp divergence, когда разные треды в варпе идут по разным веткам. В одном production-кейсе с XGBoost инференс на CPU vs GPU давал разницу в 2x из-за структуры дерева, хотя сама модель была идентична.
PMC-управляемое ветвление на CPU
Решение — на лету переключать алгоритм ветвления, используя Performance Monitoring Counters (PMC). Следим за:
- INSTRUCTIONS RETIRED — нагрузка на ядро;
- BRANCH MISS PREDICT — если >5%, переходим на предикаты (вычисляем обе ветки, выбираем результат);
- CACHE MISS (L1/L2) — при высоких значениях включаем prefetch и column-wise layout.
Пример: если cache miss >10% и branch miss predict <3%, оставляем row-wise traversal. Иначе — переключаемся на column-wise с prefetch-инструкциями через __builtin_prefetch. Мониторинг через libpfc или perf_event_open добавляет 1-3% overhead, но стабильно выигрывается 10-25% latency на стриминге.
GPU адаптация: occupancy и дивергенция
На GPU ключевой параметр — warp divergence. Порог — 30%: при превышении реорганизуем дерево в SIMD-дружественную структуру. Листья одного уровня упаковываются в плоский массив, а ветвление заменяется на gather/scatter из __shfl_sync. Работает через NVML или cupti для чтения счетчиков. Выигрыш 15-40% времени при стриминге, но портировать на ARM сложно (PMC там другие).
Trade-offs и ML-управление
Static-библиотеки не учитывают реальную нагрузку. Использование PMC добавляет overhead, но окупается на горячих путях. В production я добавил маленький регрессор (20 признаков из PMC) для предсказания оптимальной стратегии. Overhead тот же 1-3%, но точность подбора выше — снижает branch miss еще на 5%. Минус: портирование между x86 и ARM требует переписывать парсеры счетчиков.
Вывод:
Динамический выбор алгоритма ветвления GBDT на основе аппаратных счетчиков позволяет выжать 15-40% производительности на CPU и GPU, но требует учета overhead мониторинга и архитектурных различий. | 989 |
| 20 | Сидеть и работать в корпорации страшно, жизнь-то мимо проходит. Уходить строить бизнес страшно, а вдруг прогорит. Один из вариантов - разрабатывать свой пет-проект по вечерам. Многие успешные компании, например, Twitter, создавались именно так. Это не значит, что ваш проект обязательно заработает миллиарды, но заработать больше, чем в найме, и получить ценный опыт вполне реально.
Перед началом разработки появляется множество вопросов, например:
– Как выбрать идею для пет-проекта?
– Что нужно знать про маркетинг?
– Как запуститься и довести до первых продаж не имея бюджета на рекламу?
В телеграм-канале Твой пет проект, Михаил Табунов делится своим опытом с разработчиками и менеджерами.
Он рассказывает, где искать идею для нового проекта, что нужно знать о маркетинге, как запустить стартап и привлечь первых 10 клиентов, а также о многих других важных вещах.
Подписывайтесь на Твой пет проект получайте пользу от практиков рынка! | 817 |
