Канадский инженер‑программист и видеоблогер Энтони Систилли из канадского Брамптона рассказал, что к нему приехала полиция после того, как он собрал камеру автоматического распознавания номерных знаков (ALPR) — подобие системы Flock.
Привет! Если вы читаете эту статью, то у вас возникла такая же проблема как и у многих сейчас. Срочно надо скачать все и сразу. А по одной фоточке выгружать это конечно такое себе. И хоть есть локальное приложение Яндекс Диск для Windows для других ОС, а у меня к примеру Linux, установить его возможности нет. В общем понимать надо. Сложить руки нам никак нельзя, задачу надо решать и решать оперативно! Поэтому за пару часов, мы с агентом накидали вам свое творение, не судите строго, но все работает. Пользуйтесь на здоровье.
Я всегда знал, что разработка для встраиваемых систем (embedded) является не тривиальным делом, но даже не представлял, насколько С++ код в реальных enterprise-проектах может быть... скажем так, перегруженным. Тем интереснее попытаться исправить хотя бы кусочек такого кода, тем более что сегодня у нас есть прилежный цифровой помощник.
Справится ли искусственный интеллект с рефакторингом кода, от которого у обычного разработчика дёргается глаз? И в чём нейросети пока ещё безоговорочно уступают человеку? Заглядывайте под кат, там много боли, костылей, D-Bus и немного С++ и однопоточной асинхронности (async single-threaded).
Где у новостного бота заканчивается дубль и начинается новая информация?
Хочу обсудить такую задачу: Python-бот собирает посты из 30 Telegram-каналов и делает дайджест. Повторов много, но пропустить уточнение хуже, чем оставить лишний абзац. Исходники и ссылки хранятся отдельно.
Синтетический пример:
А: «Сервис N выпустит версию 5.0 14 октября. Бесплатный лимит — 200 запросов».
Б: тот же анонс другими словами и без цифры про лимит.
В: «Выход версии 5.0 перенесли на 21 октября».
Г: автор поста А исправил 200 на 20, не создавая новую публикацию.
Б можно свернуть в ссылку на дополнительный источник. В нужно оставить как изменение события. Г требует пересмотреть уже сохранённый факт. При этом все четыре текста могут оказаться очень близкими по смыслу.
Поэтому я бы сначала группировал публикации вокруг события и сохранял их версии, а уже внутри группы решал, какие факты повторяются, какие добавились и какие противоречат друг другу. Но тогда возникает следующий вопрос: как проверить, что сама группировка не склеила два разных события одного сервиса?
Для эксперимента задам ограничения: до 2000 постов в сутки, VPS с 2 vCPU и 4 ГБ RAM, не больше 20 обращений и 200 тысяч входных токенов внешней LLM в день. Можно обрабатывать пачками. В дайджесте у каждого факта должна остаться ссылка на конкретный пост и версия текста, из которой он взят.
Рассматриваю два варианта: дешёвая группировка по тексту с последующей проверкой изменений через LLM или извлечение фактов из всей пачки до удаления повторов. У первого риск потерять важное ещё на предварительном фильтре. У второго — потратить бюджет и получить ошибку уже при извлечении.
Как бы вы построили этот конвейер и небольшой проверочный набор? Особенно интересны случаи, на которых похожесть текстов обманывает. Какую ошибку допустили бы осознанно и чем измеряли бы, что новая версия бота стала лучше?
В какой момент Telegram-бот имеет право сказать «задача отменена»?
Хочу разобрать мысленный эксперимент с Python + aiogram, PostgreSQL и несколькими воркерами. Бот собирает PDF. Пользователь может отменить работу и сразу запустить новую. Генерация долгая, сам файл отправляется через Telegram.
Неприятная гонка:
Воркер закончил PDF, проверил в базе: задача активна, версия диалога совпадает.
Начал отправлять документ. Сетевой запрос завис.
Пользователь нажал «Отменить». Бот записал отмену и ответил «Отменено».
Старый запрос завершился, PDF появился в чате уже после этого ответа.
Номер версии отсекает устаревшую работу до отправки, но между проверкой и внешним действием остаётся окно. Держать блокировку диалога на всё время загрузки тоже не хочется: тогда отмена сама ждёт сеть. Отмена Python-задачи ещё требует понять, успел ли удалённый сервис принять файл.
Я вижу два разных обещания пользователю. Первое: после подтверждения отмены новые действия по этой задаче не запускаются, но уже начатая отправка ещё может завершиться. Второе: после подтверждения в чате вообще не появится старый результат.
Первое проще честно описать. Для второго пока не понимаю, где провести границу между состоянием в базе и доставкой сообщения. Удаление уже пришедшего документа тоже не убирает момент, когда пользователь его увидел.
Какой контракт вы бы выбрали для такого бота и как реализовали бы его при нескольких воркерах? Интересует конкретный порядок действий при отмене, отправке и перезапуске процесса. И тест, который воспроизводит именно эту гонку, а не просто проверяет флаг cancelled.
Hermes Agent я использую как основной «агентный комбайн». Долгое время он крутился на DeepSeek, но захотелось экспериментов с LLM - первое за что взялся GigaChat от Сбера: русский язык, российская юрисдикция и огромное количество токенов "за красивые глаза". Казалось бы, делов-то - подставить ключ в конфиг. Но не тут-то было.
Сегодня вышло обновление HalChat for Android v1.0.4 (AI in every phone!) Благодаря новым технологиям, стало возможно запускать даже 8 млрд. модели на бюджетных телефонах Среднее время ответа ИИ на Honor X7b составляет от 3 до 4 минут Можно почти одновременно общаться в одном чате как на ПК, так и на мобильном устройстве
Самое трудное было это перенести систему плагинов на Android. Она может работать в оффлайн режиме, что позволяет общаться с ИИ без интернета (но пока отключено)
Кроме этого были добавлены статусы сообщениям (доставлено или отправлено) Добавлены статусы пользователя в личном чате
Было проведено много работы над багами, оптимизацией, улучшением синхронизации и обновлению системы файлов. На этой неделе я расскажу как я смог запустить в браузере 27b модель с минимальными потерями. И как я дообучил модель для HalChat.
Дизайн-система передаёт AI решения команды через правила, примеры и проверки. На кейсах Builder и Miro разбираю, почему наличия документации ещё недостаточно и что помогает связать инструкцию с результатом.
Руководитель финтех-направления Яндекса Дмитрий Пирогов сообщил, что компания продолжает восстанавливать работу Яндекс Пэй после повреждения ещё одного дата-центра во Владимире минувшей ночью.
Монетизация Налогового кодекса и "цифровая крепость": куда уходит открытость гос-API?
В предыдущем посте https://habr.com/ru/posts/1079618/ был рассказ, как сделать бесплатную замену фирменному сервису 1С:Контрагент. Сразу после этого начали происходить события предсказанные заранее и карму кто-то обнуляет, поэтому, думаю, здесь мне тоже не долго осталось - читааают ...
Впрочем, это было в сторону, я здесь не для этих разговоров.
Предыдущий пост получился слишком длинный и не "влез" в формат поста. Это его продолжение вторая и третья части.
В процессе работы с DaData меня накрыл один философский вопрос.
Парадокс осмотрительности
ФНС требует от бизнеса "должной осмотрительности" при выборе контрагентов. Вы обязаны проверить, существует ли фирма, не является ли она "однодневкой", не участвует ли в цепочках и т.д. Это требование закона (в трактовке ФНС). И тут возникает главный парадокс: данные ЕГРЮЛ и ЕГРИП по определению являются открытыми, но доступ к ним через API ФНС платный и, соответственно, требует авторизации.
Как так-то? Почему государственная структура "торгует" данными, которые сама же требует проверять по открытым источникам? Кто получает эту плату? Мы оказываемся в ситуации, когда нас фактически вынуждают покупать услуги у налоговой, чтобы соблюсти требования этой же налоговой. Что это - какая-то новая "монетизация Налогового кодекса"?
От открытого мира к цифровой крепости
Глядя на всё это, я вспоминаю, как было лет 10-15 тому назад. В те времена, напомню, фирма 1С пыталась сделать платную автоматическую загрузку курсов валют в типовых конфигурациях. С этой целью вместо использовавшегося сервиса РосБизнесКонсалтинга, был открыт аналогичный на сервере 1c.ru, но с логином/паролем от "диска 1С:ИТС" (платный сервис фирмы 1С Инженерно-Техническое Сопровождение - требуется для всех типовых конфигураций, кроме базовых, ~ от 1500-3000 / в месяц). Добавлена новая обработка, а старая, хотя и осталась в конфигурации, была удалена из всех меню и автозапусков, а для ее запуска нужно было пройти "квалификационный тест юзера" на опытность - лохи вообще думали, что ее удалили из конфигурации. По сути, одна прокладка была заменена другой, поскольку, ни РБК, ни Желтая фирма курсы валют не формируют - это прерогатива ЦБ РФ.
Каюсь, это мояразработка обломала тогда им этот кайф. Это была бесплатная разработка, которая брала данные напрямую по API сервера ЦБ РФ, минуя все прокладки. Описание API ЦБ РФ было открытым, подробным и доступным. Разработка даже получила функционал, которого не было в типовых конфигурациях - автоматический ввод в справочник новых валют со всеми кодами и названиями, диаграммы курсов за выбранный период и еще пару приколов для программистов:
Дело в том, что т.н. отчеты/обработки в 1С 7.7 могут иметь не только форму, но и таблицу прикрепленную к ней (там и рисовались диаграммы и другая полезная информация, кстати, а вы знаете почему 9 ноября назван Днём изобретателя в немецкоговорящих странах? - каждый хабровец обязан это знать имхо). "Задать" привязку таблицы к форме можно только на этапе конфигурирования - обработка может быть или с таблицей или без. Мне "удалось" штатным способом менять эту опцию в пользовательском режиме (в режиме Предприятие). И еще один трюк для разработчика: если добавить мою загрузку курсов в любую типовую конфигурацию, она заменит типовую загрузку, не меняя ни одного байта типовой конфигурации и новый релиз не может это отменить и вернуть платность.
скрин всех загрузок курсов валют, запущенных одновременно
Тогда государство (в лице ЦБ РФ) предоставляло инструменты для прозрачности и автоматизации. Сегодня всё изменилось.
Яркий пример - бывший ФСС. После поглощения ПФРом и превращения в СоцФонд (СФР), они полностью закрыли данные о формате электронных листов нетрудоспособности. Этот формат и описание шлюза ФСС всегда были в открытом доступе. Мало того что они помешались на многоуровневом шифровании при "диалоге" по API, так еще и засекретили сами протоколы. Мы перешли от концепции "Государство как сервис" к концепции "Государство как закрытая крепость".
Нет, это не очередной пост о важности постановки целей и планирования, в пятницу, у нас в регионе произошло событие, подобного которому, не было уже 53 года.
Если спросить тимлида «сколько story points команда сделает в следующем спринте?», чаще всего ответ будет такой: «Ну, в прошлый раз было около 300, давай возьмём столько же». Потом выясняется, что двое уходят в отпуск, один новичок ещё не разогнался, а треть времени съедят баги. Спринт заканчивается авралом, задачи доделывают в последние два дня, и этот аврал попадает в статистику как «нормальная скорость команды». Следующий план строится уже на нём.
Я руковожу кросс-функциональной командой внутреннего продукта в крупной компании: аналитика, дизайн, фронтенд, бэкенд и QA, около десяти человек. Около двух лет я планирую спринты по формуле, а не по ощущениям. Ниже расскажу, как устроен расчёт, какие у него ограничения и насколько он точен на реальных цифрах.
МБД Tantor XData позволяет построить частную инфраструктуру database-as-a-service (DBaaS) непосредственно в дата-центре заказчика. Решение объединяет возможности корпоративной машины баз данных с облачной моделью предоставления ресурсов и инструментами интеллектуального мониторинга. Развёртывание под ключ, включая поставку стойки и интеграцию с существующей ИТ-инфраструктурой через API, занимает от трёх дней.
Налоги, импортные сборы и правила владения могут создавать разницу в ценах в десятки тысяч долларов между городами.
На этом графике сравниваются цены на новые автомобили в 30 крупных городах на основе данных Deutsche Bank и Numbeo. Цены указаны в долларах США и основаны на модели Volkswagen Golf 1.5 или аналогичном новом автомобиле.
Москва, как и вся Россия, - рекордный относительно других стран рост за 10 лет (+134%).
Цены выше Лондона и многих городов Швейцарии. Париж и Нью-Йорк далеко позади.
Я искренне считаю, что в хорроры нужно играть исключительно осенью и зимой, а на остальные релизы отвести другое время.
А еще я до сих пор уверен, что жанр находится на грани смерти и переполнен откровенно плохими релизами.
Но, собственно, как говорится, критикуешь — предлагай, и поэтому сегодня я собрал несколько крепких и свежих проектов в жанре, которые точно стоит опробовать между крупными релизами этой безумной осени.
В первой статье я показал несколько опытов с небольшой моделью (её размер влезает в обычную домашнюю видеокарту) вокруг одного вопроса: может ли такая модель становиться умнее со временем — не раздуваясь до огромных размеров, а за счёт памяти, аккуратного дообучения и проверки ответов. Но я тогда не сказал, ради чего всё это и что это вообще часть чего-то большего.
Теперь раскрою карты. Эти опыты — не сами по себе. Это шаги к новой архитектуре, над которой я работаю; я зову её LANN-4 (если расшифровать — нейросеть, которая учится всю «жизнь», с небольшим неизменным «мозгом» и вынесенной наружу памятью). И сразу честно: самой этой архитектуры ещё нет — она не выбрана и не построена. Небольшие модели в опытах — это подопытные инструменты, а не LANN-4. Готовую новую модель я не показываю. Я показываю исследование на пути к ней — и то, что получилось и что НЕ получилось.
А не получилось вот что. Мы проверили: если одну и ту же небольшую модель подучивать на примерах несколько раз подряд, будет ли она от раза к разу становиться всё лучше? Короткий ответ: нет. Первый раунд подучивания даёт заметный прирост, а дальше рост останавливается. Накопления не вышло.
И есть вопрос, в котором мне реально нужна ваша помощь: прежде чем тратить примерно сутки работы видеокарты на решающую проверку, я хочу, чтобы вы попробовали найти дыру в её устройстве.
Xiaomi выкатила tabular foundation модель. Убийца CatBoost от создателей пылесосов? 📱⚡️
Xiaomi выкатила в открытый доступ Xiaomi-TabLDM — табличную foundation-модель, которая якобы затыкает за пояс CatBoost, LightGBM и предыдущие попытки в табличный deep learning (TabPFN, TabFM). Модель действительно мощная и берет призовые места на бенчмарках TabArena и OpenML-CTR23. Но если залезть под капот репозитория, выясняется занятная вещь: перед нами не просто «одна большая умная нейросеть», а ядреный соревновательный AutoML-пайплайн, завернутый в обертку инференса трансформера с MoE.
Что накрутили в архитектуре 🏗
Для тех, кто пропустил эволюцию табличных сеток: TabLDM работает по принципу контекстного обучения (ICL). Вы вызываете стандартный для scikit-learn метод clf.fit(X_train, y_train), но модель не обучает веса. Она просто готовит входные данные. На инференсе и обучающая выборка, и тестовые объекты скармливаются в трансформер за один проход: y_pred = model(X_train, y_train, X_test). Весь опыт модель получила заранее на претрейне — причем Xiaomi учила ее исключительно на синтетических данных, сгенерированных структурными каузальными моделями (SCM).
Регрессия, кстати, предсказывает не одно число, а сразу 999 квантилей, которые потом сглаживаются сплайнами и обобщенным распределением Парето (GPD) через оценщик Пикандса для моделирования тяжелых хвостов. По хардкору, крч.
Грязный секрет бенчмарков: возвращение на Kaggle 🕵️♂️
А теперь смотрим на то, за счет чего модель на самом деле выбивает высокие скоры на бенчмарках.
В коде есть флаг enhance_candidates=True (включен по умолчанию). Когда вы вызываете fit(), библиотека втихую запускает внутри себя: — Стратифицированный K-Fold кросс-валидацию; — Генерацию пачки представлений датасета: перемешивание признаков через латинские квадраты, квантильные трансформации, Gaussian Rank нормализацию; — Автоматическое вычисление SVD-компонент и генерацию попарных произведений числовых признаков; — Сбор out-of-fold предсказаний по всем этим группам кандидатов; — И вишенка на торте: решение задачи неотрицательных наименьших квадратов (scipy.optimize.nnls) для подбора оптимальных весов ансамбля!
То есть модель буквально берет классические приемы с Kaggle десятилетней давности, автоматизирует их и выдает взвешенный ансамбль. Плохо ли это? Нет, это чертовски эффективно с точки зрения метрик. Но называть это «чистым предиктом одной нейросети» — лукавство. Это полноценный ансамблевый комбайн на этапе инференса.
💼 Катить ли это в прод?
Если у вас табличка на 1 000 – 3 000 строк, где лень крутить Optuna и подбирать пайплайн нормализации — TabLDM выдаст околосотовое качество из коробки прямо в один predict().
Но если у вас в проде крутятся 200 000+ строк, никакой кластер H100 с FlashAttention вас не спасет от чудовищных накладных расходов. Пока трансформер будет задыхаться от сложности контекста и роутинга экспертов, CatBoost или LightGBM на обычном CPU досчитают за две секунды и займут свои пару мегабайт памяти.
Хорошая игрушка для быстрых бейзлайнов и датасетов скромного размера. Но градиентный бустинг на пенсию пока не собирается.
Нет, речь пойдет не про высокочастотную торговлю на бирже, но я буду использовать аналогию, чтобы стало понятно почему и как я думал. Собственно, мое мнение HFT прошел полный путь холодной войны. Изначально суть высокочастотной торговли заключалась в алгоритмах, они должны были быть достаточно простыми и при этом максимально эффективными. Выигрыш получал тот, кто успел «просчитать» быстрее других. Сначала это были секунды, потом доли секунд и в итоге алгоритмы начали зашивать в процессоры сетевых карт, чтобы максимально быстро реагировать на входящие данные и генерировать нужные сделки. На настоящий момент можно признать, что этот способ заработка практически умер, поскольку у всех приблизительно одна скорость обсчета и генерации, а следовательно результат начал зависеть от непредсказуемых факторов — по сути рулетка. Где сейчас живет HFT правильно, он ушел в более сложные FPGA и арбитраж на десятки бирж. Алгоритмы стали значительно сложнее, разнообразней и ушли от простых формул с простыми решениями.
Я ни в коем случае не призываю никого делать то, что будет описано ниже, более того — все это лишь фантазия и она не имеет ничего общего с реальностью. Но давайте немного пофантазируем на почве состояния перегретого пара — ИИ и почему его так сильно боятся.
Для начала рассмотрим как обстояли дела в прошлом, скажем честно очень недалеком прошлом, буквально вчера...
У нас есть разработчик который пилит какой‑то сервис, для нас сейчас не столь важно какой, но пусть это будет FTP‑сервер, тем более что это близко к тому что творилось в wuftp в недалеком прошлом. Разработчика будут звать Роб, вполне себе разработческое имя. И он пилит его не тяп‑ляп, а нормально. Тестирует все что может, старается оберегать свое детище от взломов, переполнений и при этом сохранить скорость и вменяемый размер.
Ранее часть файлов на «Яндекс Диске» у пользователей стала недоступна (они отображаются в интерфейсе, но не скачиваются, у некоторых также пропали превью). В «Код.ру» получили комментарий от «Яндекса» по этой ситуации. В «Яндексе» намеренно ограничили часть возможностей сервисов «Яндекс 360», включая «Диск», чтобы снизить нагрузку на инфраструктуру и сохранить работоспособность основных функций.
Постараюсь вкратце и по делу сугубо. Первое что сразу хочется сказать: спасибо автору!) За рамку: у кода есть цена написания и цена владения, и разъехались они в разные стороны. Также отдельно за то, что он сам оговаривает свои источники, про отчёты Veracode особенно честно. Бухгалтерию беру у него, а тезис ниже мой: следующая строчка счёта приходит не коду, а прогнозам. Нового уже от себя добавляю: перенос механизма с кода на дискурс и то, как выглядит цена владения не в новостях, а на примере моих двух обезличенных проектах.
Почему прогнозы об ИИ стали такими дешёвыми
«Создать дёшево, проверить дорого» не мой механизм. Автор показал его на мейнтейнерах открытых проектов, включая curl: отчёт о несуществующей уязвимости пишется за минуты и несколько центов, а проверять его живому человеку часы. Я механизм не открываю. Смотрю, докуда он дотягивается...
До прогнозов. Сразу оговорюсь: дёшево прогнозировали всегда, от фантастики до страхов перед автоматизацией, пожалуй задолго до нейросетей. ИИ не изобрёл дешёвый прогноз, он убрал последнюю цену = ту самую цену упаковки. Правдоподобную заметку с цифрами и тоном эксперта теперь можно реально штамповать пачками за центы токенов, однако проверка осталась где была = найти первоисточник и выяснить, кто заплатил за исследование.
В комментариях к той статье справедливо возражали многие: проверка тоже дешевеет. Для кода так и есть = у него есть независимый якорь, ответ, который не зависит от мнения модели. У прогноза же якоря нет. Нет теста, который упадёт, если обещанное не наступит, и никто не платит за ошибку. Похоже, а точнее как показала практика многих, дёшево производить можно не только текст, но и безответственность.
В начале сентября я провёл вканале интерактив: предложил подписчикам написать в комментариях свою профессию и пообещал каждому прислать эскиз системы в Obsidian под его работу. Эскиз — это буклет на 3 страницы: какие разделы нужны хранилищу юриста, психолога или инженера, как между ними ходит информация и какими плагинами это собирается. Профессию назвали 20 человек. Каждому ушёл буклет в личку, дальше пошли переписки и записи на консультации. Через неделю я уже не помнил, кому что отправил и кому обещал ответить. До этого лидов я не вёл никак, их было мало и все помещались в голове. Отдельный сервис заводить не хотелось: задачи, клиентские проекты и заметки по встречам у меня и так в Obsidian. В этой статье расскажу, как я собрал CRM на плагине Operon и что в нём допилил. Следующие раунды интерактива буду объявлять в канале.