life = curiosity + irreducible noise Whois: https://t.me/boris_again/1652 Лс: @btseytlin
Если говорить про прогресс, то последний чекпоинт гораздо лучше слушается схемы. Всё благодаря хитрым аугментациям. На прошлом модель очень часто забивала на схему и пыталась угадать ответ из входа.
Здесь же видно, что эта штука не включает в ответ поле "about" пока я её об этом не прошу.
Это конечно черри-пик. Пока всё ещё страшно нестабильно и легко получить галлюцинации. Вообще не уверен, что модели меньше 1B способны решать задачу так надежно, как мне бы хотелось.
# Any2json: датасет как база данных
Продолжаю рассказывать про пет-проект, где я обучаю конвертер из чего угодно в json.
Самое главное в этом проекте это собрать данные такого вида:
- Вход: данные которые мы хотим сконвертировать
- Схема: JSONSchema описание структуры json на выходе
- Выход: JSON который содержит весь смысл из входа в структуре из схемы
Таких данных в готовом виде нет. Но можно найти отдельно входы, схемы или выходы, а затем придумать как добыть остальное. Для выходов подойдет любой json. Для схем есть schemastore.org и небольшое количество датасетов. Со входами сложнее всего: нужно придумать придумать как найти входы похоже на то, что реальные пользователи захотят конвертировать в json.
Вот пример процесса создания примера:
1. Берем json-выход и генерируем к нему JSONSchema с помощью Gemini 2.5 Flash/Lite workflow. Workflow содержит простой цикл где LLM предлагает схему, мы валидируем json по этой схеме и, если возникает ошибка, просим LLM поправить схему. Здесь круто, что мы можем достоверно узнать, что json соответствует схеме. Спасибо python-fastjsonschema.
2. Имя json и схему делаем json.loads, чтобы получить из json объект в питоне. Затем питоном конвертируем этот объект во все мысленные форматы: yaml, toml, html, markdown, итд. Так мы получаем входы смысл которых точно соответствует выходу. Количество форматов зависит только от готовность написать для них конвертер.
Для различных исходных данных сценарий немного отличается, но общая идея будет похожей. Например, если вначале есть json схема, то для неё нужно сгенерировать json, так что первый шаг отличается, а второй остается таким же. В общем у нас много источников данных и схожих операций которые применяюстя в разном порядке. Хотелось бы уметь комбинировать их без копипасты.
Ещё можно просто генерировать полную синтетику с помощью пандаса: делаем случайный датафрейм, конвертируем его в json и все поддерживаемые пандасом форматы, подбираем схему. Хотелосьт бы уметь отличать синтетику от не-синтетики, чтобы управлять наполнением датасета и делать эксперименты.
Так же особенность задачи в том, что можно делать что-то вроде аугментации. Если взять JSONSchema и удалить из неё один ключ, то получится новая валидная схема. Так что сущности можно делать из других сущностей. Хотелось бы иметь возможность трекать родословную: что из чего получилось.
Ещё есть ML-специфичная потребность: очень важно кешировать. Многие этапы занимают очень много времени, а некоторые буквально стоят денег (например LLM генерации). Поэтому надо иметь возможность запустить один этап и затем переиспользовать его результаты, а не пересчитывать заново.
Когда возникает столько хотелок относительно данных это уже называется Data Engine. Стандартный способ решать эту задачу в ML: сделать ворох скриптов и свалку файлов.
Я напряг извилины: можно ли иначе? Я делаю этот проект, чтобы научиться. В том числе тому как делать Data Engine здорового человека.
https://idiallo.com/blog/performing-for-the-job-title
Очень хорошая и лаконичная статья про то, как устроены собеседования в IT. Это именно то, о чем я писал в методичке: немалая часть это просто правила исторически сложившейся игры имеющие мало отношения к реальным навыкам. Но автор смог выразить это более ёмко: на собеседовании тебя проверяют можешь ли ты играть роль инженера в стиле Google.
The prices in St. Petersburg are insane, anything costs an arm and a leg
Читать полностью…Скотт Александр мастер щитпостов
https://www.astralcodexten.com/p/what-is-man-that-thou-art-mindful
Апдейт по пет-проекту. Бенчмаркнул свои первые попытки что-то учить (на данный момент SmolLM2 135M и Gemma3 270M) против предобученного qwen0.6B с ризонингом.
Ожидаемо, что квен намного медленнее. Но я не ожидал, что он будет настолько хуже. Меньше половины верных ответов несмотря на ризонинг и х2 параметров. Пока что лидирует smollm со structured outputs, а с геммой я что-то сделал не так (скорее всего косяк с применением чат темплейта).
Запись и презентация моего выступления на митапе Practical AI про автоматизацию бизнес-процессов с LLM
https://www.youtube.com/watch?v=baXli1UVoBg
Даня, организатор митапа, так описал главный инсайт:
Настоящая экономическая ценность искусственного интеллекта — в автоматизации «тупой интеллектуальной работы».
Это задачи, которые легко объяснить человеку, но почти невозможно описать жесткими правилами в коде. Например, оценить по фото, является ли товар подделкой.
Раньше такие процессы были ограничены скоростью и количеством людей. AI позволяет масштабировать эту «человеческую» оценку до миллионов операций в сутки. Вы переходите от выборочных проверок к 100% покрытию, получая уровень контроля, который раньше был экономически и технически недостижим.
https://crisostomi.github.io/blog/2025/model_merging/
Охренеть красиво
Кстати лучшие хьюман мемеры пока не будут заменены даже нанобананой. Мне потребовалось буквально два часа, чтобы навайбфотошопить этот мем. Приходилось на добавление каждого символа создавать новый чат раза 3-4 пока не получалось приемлемо. Очень плохо работает с маленькими деталями типа символов и текста.
Быстрее бы сам нарисовал.
Но по сравнению с тем, что было раньше, это конечно огромный прогресс
Мой канал попал в подборку от РБК. Всем новичкам добро пожаловать! Хороший повод обновить приветственный пост.
#whois
Привет, я Боря и это мой канал про профессиональное (машинное обучение, ИИ, IT), интересное, личное и просто весёлое. В этом посте можно найти мини-интервью со мной.
Сейчас я пишу научпоп книгу про исскуственный интеллект, подробнее тут.
Я работал:
- Staff Machine Learning Engineer в eBay
- Тимлидом компьютерного зрения в агротехе PlanetFarms
- Исследователем в Yandex (Toloka)
Преподаю машинное обучение (ВШЭ, OTUS, DLS), временами консультирую людей по поиску работы и компании по ML/DS/AI.
Предлагаю почитать в канале из нового:
* Искусственный интеллект не дает преимуществ — почему ИИ инструменты не помогают преуспеть в карьере.
* Обзор исследования METR — про влияние AI инструментов на продуктивность разработчиков.
* Как распознать AI текст в 2025
* Может ли LLM написать книгу за меня — эксперимент на друзьях и подписчиках.
Из менее нового:
* Минимальные знания ML Engineering для Data Scientist — серия постов.
* Два способа делать ML — как стоит и как не стоит делать ML/AI проекты.
* Лихие Джуновские — как все начиналось.
* Как я убеждал младшего брата, что он путешествует во времени — с чего начинался канал.
* Серия постов с обзором самого масштабного исследования безусловного базового дохода.
Лонгриды:
* Методичка: Поиск Работы в ML/DS, мой наиболее популярный и полезный материал
* "Нормально разбираемся в Нормальном распределении" на Хабре.
* Туториал по реализации алгоритма поиска BM25+ на Хабре.
* Гайд по опционам в стартапах для сотрудника.
В канале есть реклама, если я считаю её полезной для подписчиков. Подробнее здесь
Мучаю comet browser на самом полезном юзкейсе: принимать инвайты в линкдине с учетом расизма.
Так не работает: accept all invites except from indian people
Вчера прошлись с другом по Лиссабону и заглянули в иммигрантский квартал (Martim Moniz). Неожиданно нашли себе истинно европейское развлечение: смотреть как дерутся на ножах люди беднее тебя.
Для дополнительного колорита прям на той же площади проходило какое-то индийское празднование человек эдак на двести, возможно свадьба
Мой Data Engine позволяет создать датасет набором команд. Каждая из них принимает на вход текущее состояние датасета и обновляет его.
Получаем конструктор из трансформаций. Одна операция загружает из HF датасетов исходники (чанки, схемы), другая генерирует схемы, третья пытается сметчить json чанки с имеющимися схемами, четвертая удаляет дубликаты, и так далее. Задача сводится к тому, чтобы сначала наполнить таблицы исходниками, нагенерировать недостающее и связать всё между собой.
Это возможно сделать без страданий так как сам датасет это sqlite3 бд. Содержит несколько сущностей:
- JsonSchema
- Chunk - имеет поля content, content_type, schema_id.
- SchemaConversion - связывает input_chunk, json_schema и output_chunk. В общем сообщает, что один чанк можно сконвертировать в другой используя конкретную схему. Ради этих сущностей всё и затевается: в итоге они становятся примерами в HF датасете для обучения.
Все сущности так же имеют json поле meta куда можно запихать что угодно. Например, из какого датасета эта штука взялась, с какими параметрами была сгенерирована или из какой сущности была получена.
Как бонус мы бесплатно получаем универсальный инструмент для любых манипуляций с датасетом (sql) и универсальный GUI (любой sqlite3 клиент) позволяющий смотреть на данные глазами.
В реальности БД где-нибудь хостилась бы, но, так как я делаю всё один, у меня это буквально sqlite3 файл закоммиченый в git large file storage (в этом случае огромный файл не засоряет историю коммитов, в истории хранится только ссылка на файл). У Github достаточно щедрые квоты на бесплатное хранилище. Это добавляет ещё один бонус: я могу сделать новую ветку, изменить в ней датасет и, если не понравится результат, вернуться к старому состоянию датасета. Как DVC, только просто пользуешься git и всё.
Я выбрал sqlite3 потому что мне нужно было что-то маленькое, локальное и простое. Если бы я начинал всё заново, то выбрал бы MongoDB в докер контейнере. Те кто давно читают канал наверняка знают, что я хейтер MongoDB. Однако действительно так если речь идет про её использование как основной бд в бекенде, где она во всём проигрывает postgresql. Однако, внезапно, документо-оринтерованные бд выглядят как как отличный выбор для data engine. То, что надо: тебе не нужна жесткая схема, всё равно на перфоманс и консистентность. Даже язык запросов MongoDB с его последовательными операциями гораздо более интуитивный для обработки данных такого формата, чем SQL.
В частности возможность проследить lineage всех примеров позволяет сделать правильный train test split. Не хотелось бы, чтобы в тест попали примеры тесно связанные с примерами в трейне. Наличие нормальных человеческих foreign key позволяет разделить примеры на кластеры по их связям и убедиться, что каждый кластер попадает или в трейн, или в тест.
В конце, для обучения, всё естественно экспортируется в Huggingface dataset.
В общем, я думаю ML-щикам пора открывать для себя базы данных.
Продолжаем рубрику "занимательная математическая статистика".
Прочитала вчера в ооците пост про эффект Даннинга-Крюгера (рис. 1 и /channel/lonely_oocyte/6097 ), а также обсуждение в комментариях про связь этого эффекта с регрессией к среднему. После этого мне захотелось чуть получше разобраться в том, как все это работает.
Для начала я заглянула в исходную статью Крюгера и Даннинга (1999) - https://sites.lsa.umich.edu/sasi/wp-content/uploads/sites/275/2015/11/krugerdunning99.pdf и посмотрела на графики (рис. 2 - 4). На первом показан результат исследования того, насколько хорошо люди оценивают свою способность понимать шутки: участники были разделены на квартили по фактическим результатам теста на понимание юмора. Нижний квартиль показал большую переоценку своих способностей, в то время как верхний квартиль слегка недооценил себя - классический пример эффекта Даннинга-Крюгера. На графиках с результатами экспериментов с тестами на грамматику и логику наблюдается похожий эффект - чем хуже реальные результаты, тем больше переоценка своих способностей.
Для того, чтобы посмотреть, может ли чисто статистический эффект регрессии к среднему дать такой же график, я навайбкодила численный эксперимент в Google Colab - https://colab.research.google.com/drive/1_CWd9S2aecRoZarYQ6yZEZOkDkc7Lx38?usp=sharing . В нем я сгенерировала две случайные выборки - можно представить себе, что одна отображает "фактические способности", а другая - "самооценку". Затем я применила обработку данных, похожую на ту, что сделали Даннинг с Крюгером:
- Отсортировала воображаемых "людей" по результатам первого теста ("фактические способности")
- Разделила их на четыре группы в порядке возрастания результатов
- Посчитала средние результаты второго теста ("самооценка") в каждой группе
И техномагия сработала: даже при полностью случайных данных получаются паттерны, похожие на те, что показаны в исходной статье! (см. рис. 5 - 6).
Таким образом, мы действительно натолкнулись на проявление регрессии к среднему - статистический феномен, который возникает тогда, когда мы группируем данные по экстремальным значениям одной переменной и затем смотрим на вторую переменную, корреляция которой с первой не очень велика. Ожидаемо, по мере приближения коэффициента корреляции к единице, эффект практически пропадает (см. рис. 7).
Чтобы чуть лучше понять интуицию, стоящую за этим эффектом, можно представить себе такой воображаемый эксперимент: допустим, мы отбираем самых высоких людей (верхние 25% по росту) и измеряем их IQ. Учитывая, что рост и IQ слабо связаны между собой (если вообще связаны), мы, скорее всего, обнаружим, что средний IQ этих людей будет ближе к общепопуляционному среднему, чем их рост. Почему? Потому что попасть в топ-25% по росту и одновременно в топ-25% по IQ - это маловероятное событие. Большинство высоких людей будут иметь обычный IQ просто в силу статистики. То же самое будет происходить и при использовании других слабо связанных переменных.
Вышесказанного, конечно, недостаточно, чтобы утверждать, что эффект Даннинга-Крюгера полностью объясняется исключительно регрессией к среднему. Однако, мне также удалось найти статью, которая подтверждает - уже с более сложного статистического аппарата, - что эффект, продемонстрированный в исходной статье, действительно был в сильной степени подвержен влиянию этого статистического артефакта: The Dunning-Kruger effect is (mostly) a statistical artefact: Valid approaches to testing the hypothesis with individual differences data.
Также все вышесказанное не значит, что люди не переоценивают свои интеллектуальные способности - конечно, такое случается. Однако, к далеко идущим выводам, которые часто делают из подобных графиков, следует относиться с осторожностью. Как тот факт, что отношение диаметра круглой паутинки к длине её периметра всегда близко к 3,14, показывает математическое свойство окружности, а не особенность конкретной паутинки, так же и характерная форма графика с эффектом Даннинга-Крюгера может порождаться самой процедуры группировки данных, а не человеческой психологией.
#наука #математика
Кстати, заметил, что ноутбуки окончательно не нужны. В последнее время я даже графики сразу рисую в Streamlit.
Поэтому рядом с метриками у меня теперь есть интерактивная диффалка где можно сравнить как выбранные модели отвечали на один и тот же пример в бенчмарке. Всё одним промптом в курсоре, красота.
Свой личный вывод (о том, что LLM и прочий "AI" меняют в автоматизации по сравнению с обычным DS/ML) я бы описал этой картинкой.
У неё есть история. Несколько лет назад меня позвали провести для менеджеров ВТБ ликбез по машинному обучению. Тогда я придумал картинку слева, чтобы объяснить, когда ML применять, а когда нет.
Теперь у нас есть новый способ автоматизировать тупую интеллектуальную работу. Вместо обучения моделей можно что-нибудь напромптить и попросить не делать ошибок. Что поменялось принципиально?
Я думаю так: LLM это новый инструмент который отличается от обычного DS/ML бОльшей гибкостью в обмен на бОльшую стоимость и худшее качество. LLM меньше тупеют когда данные отличаются от тренировочных. К тому же систему на LLM и промптах очень легко дорабатывать и адаптировать под меняющиеся условия. Изменить промпт кратно проще, чем пересобрать датасет и заново обучить классификатор.
Кроме того автоматизация на LLM отличается по другим критериям. Например, как ты за неё платишь. Обычный ML это огромные capital expenses в начале. Один раз за дорого делаем модель, потом бесконечно получаем от неё профит по цене инференса. LLM размазывают capex по времени и превращают их в operational expenses. Вместо необходимости выложить огромную котлету сразу ты получаешь большой счет каждый месяц. Часто этот трейд-офф оправдан: с opex сильно проще работать. Более предсказуемо. Это превращает работу с ML в что-то типа юнит-экономики: главное зарабатывать на пользователе больше, чем он сжигает токенами, и экономика сходится.
В общем есть много мыслей. Если интересуют детали, то смотрите презентацию и выступление!
On the Theoretical Limitations of
Embedding-Based Retrieval
- TLDR универсальные эмбединги слабо скейлятся, нейронки нормально не репрезентят высокоранговое пространство, а BM25 да.
We give Gemini all 46 documents and all 1000 queries at once, asking it to output
the relevant documents for each query with one generation. We find that it can successfully solve
(100%) all 1000 queries in one forward pass. This is in contrast to even the best embedding models
with a recall@2 of less than 60%
12 сентября в Москве пройдёт big tech night — «ночь музеев» в мире IT. Яндекс, Сбер, X5, Т-Банк и Lamoda одновременно откроют двери своих офисов для IT-специалистов, которые хотят узнать, как устроена внутренняя кухня в разных бигтехах. Если не сможете приехать, то будет онлайн-студия с отдельной программой.
Будет три трека активностей:
— Хард-трек про всё, что связано с технологиями. Будут рассказы про искусственный интеллект, опенсорс, безопасность, разработку и не только.
Например, Павел Капля выступит с докладом «GPT-функции в Алисе: backstage» про реальный опыт замены старой-доброй классификации интентов на LLM агента.
— Софт-трек посвящён управлению командой и развитию гибких навыков.
— Фест-трек про отдых и всякий интерактив: иммерсивные экскурсии, алгоритмическая вечеринка, киберспортивный турнир, квартирник, где можно пожаловаться на своего тимлида и даже IT-стендап.
📅 Когда: 12 сентября
📍 Где: офисы Яндекса, Сбера, X5, Т‑Банка и Lamoda (Москва)
🔗 Подробности и программа
27 сентября буду смотреть PRACTICAL ML Conf 2025 от Яндекса. Это одна из самых качественных конференций по индустриальному ML с фокусом на реальных кейсах применения ML.
Доклады будут в Москве, но можно присоединиться и к онлайн трансляции. Я этому очень рад, так как не смогу присутствовать оффлайн. Чтобы смотреть трансляцию нужна регистрация!
Я слежу за этой конференцией с 2023 года. Например, в прошлом году обозревал доклад про создание LLM для кода. В этом году тоже будут доклады от компаний-лидеров ML/AI рынка, а еще кейноут про математику и язык от Андрея Окунькова – лауреата Филдсовской медали! О том, что Окуньков будет выступать на PML еще даже не написали на сайте. Так сказать, эксклюзив для нашего комьюнити. К тому же добавился отдельный трек онлайн докладов.
Чтобы вы представляли вайб программы, вот три ключевых доклада:
1. "От classifier-free guidance к диалогу: куда движется генерация изображений?" от Сергея Овчаренко из Яндекс Поиска.
2. "Оптимизация обучения и инференса моделей для генерации видео на множестве GPU" от Марии Ковалевой из Sber AI.
3. "Генеративные рекомендательные технологии: что работает в Яндексе" от Николая Савушкина из Яндекс Поиска.
Много докладов ожидаемо про применение трансформеров в разных сферах. В целом сохранился фокус на кейсах применения передового ML в бизнесе. У меня лично глаз зацепился за доклад про синтетические данные для обучения LLM от Т-Банка, потому что сейчас в пет-проекте занимаюсь примерно тем же.
В программном комитете я обнаружил аж четырех админов соседних тг каналов про ИИ 👀
Мест не очень много, регистрируйтесь заранее!
Реклама ООО «ЯНДЕКС» ИНН 7736207543
Gemini 2.5 Flash Image с редактированием изображений (которая nanobanana) просто космос какой-то
Читать полностью…Так работает: accept all invites except from people with indian-sounding names
Читать полностью…Наш русскоязычный датасет для TTS опубликован!
Сегодня выкладываем открытые корпуса на 4000+ часов речи, а еще синтезатор речи ESpeech-TTS-1
Наш датасет содержит больше 4000 часов русской речи. Статистика по корпусам:
Многоголосые:
ESpeech-podcasts - 3200 часов
ESpeech-webinars - 850 часов
Одноголосые:
ESpeech-igm - 220 часов
ESpeech-buldjat - 54 часа
ESpeech-upvote - 296 часов
ESpeech-tuchniyzhab - 306 часов
Данные лежат вот тут: https://huggingface.co/ESpeech
Техрепорт датасета доступен тут: https://github.com/Den4ikAI/ESpeech/blob/main/ESpeech_techreport.pdf
Также, мы решили провести некоторые эксперименты с TTS. Получилось обучить F5-TTS на 10000 часов речи и сделать одну из лучших по нашим замерам моделей в опенсурсе для русского языка.
Какие модели доступны?
ESpeech-TTS-1 [RL] V1 - Первая версия модели с RL
ESpeech-TTS-1 [RL] V2 - Вторая версия модели с RL
ESpeech-TTS-1 PODCASTER [SFT] - Модель обученная только на подкастах, лучше генерирует спонтанную речь
ESpeech-TTS-1 [SFT] 95K - чекпоинт с 95000 шагов (на нем основана RL V1)
ESpeech-TTS-1 [SFT] 265K - чекпоинт с 265000 шагов (на нем основана RL V2)
Лайкайте модель которая больше понравится чтобы мы понимали есть ли смысл запускать RL.
Послушать модели без скачивания можно вот здесь:
https://huggingface.co/spaces/Den4ikAI/ESpeech-TTS
Совместно с @speech_recognition_ru ещё сделали лидерборд русского ТТС, где можно глянуть метрики:
https://huggingface.co/spaces/ESpeech/open_tts_leaderboard_ru
Задать вопросы по поводу данных и модели можно в наших телеграм каналах:
/channel/den4ikresearch
/channel/voice_stuff_chat
Вы можете мне задонатить, чтобы у меня были ресурсы делать более крутые модели и датасеты:
USDT (TRC20): TEpEM4VVmGmqKHn4Xz1FxM7qZiXjWtUEUB
BTC: bc1qw5lq7fc455e47hggax6zp8txw4ru7yvsxvawv3
https://www.tbank.ru/cf/7WKnNMqWtOx
https://www.strangeloopcanon.com/p/walter
Хороший пост про (достаточно успешные) попытки научить LLM делать хорошие твиты с помощью RL. Казалось бы нет задачи проще, но насколько же это не так.
В основном про невероятную способность моделей хакать любой ревард.
Причём блог пост не про технические детали, а скорее про личный опыт. Для деталей есть статья про метод авторов.