Pavel Zloi
Открыть в Telegram
20+ лет в IT, 4+ в AI/ML Мой курс про Cursor AI: https://stepik.org/course/294150/promo Сооснователь: https://neuraldeep.ru/ Контакт: @eprogrammist https://github.com/EvilFreelancer https://boosty.to/evilfreelancer https://pay.cloudtips.ru/p/937f48ac
Больше4 716
Подписчики
+724 часа
+1107 дней
+18730 дней
Архив постов
4 722
Repost from Валера Ковальский
Давно была идея сделать нейрорадио на базе локальных моделей, просто эксперимент, ничего более.
https://studio.neuraldeep.ru/radio
Модель: https://huggingface.co/ACE-Step/Ace-Step1.5
4 722
Байки Neuradeep #1
Раз уж мы тут с Валерой @neuraldeep договорились немножечко ИИнфоцыганить, ловите технарский пост с ретроспективой сложностей NeuralDeep, о проблеме на движках vLLM, на которую наши пользователи жаловались последний месяц и которую мы никак не могли впоймать, ещё про драйверы и про телеметрию, но обо всё по порядку.
Qwen 3.8 на RTX 4090 48Гб вставал колом на картинках
Где-то с конца сентября начала октября движки Qwen3.8-27B малого лейна NeuralDeep (это наш второй московский ДЦ) на парах RTX 4090 время от времени замирали, только на одном московском сервере сторож за сутки перезапусках их 11 раз. Полезли в логи, видим на входе движка висят запросы, часть ждёт в очереди с причиной capacity, KV-кеш заполнен от силы на пятую часть, а карта показывает 0% утилизации при 20 ваттах потребления.
При этом самое занятное, что процесс vLLM жив,
/health отвечает 200, в логе ядра ни Xid, ни AER, просто перестают расти счётчики токенов и баста. Клиенты с картинками в запросах ловили 502 или ждали ответ по 10-15 минут. Такой же движок в другом ДЦ на другом железе флапал точно так же, так что железо мы исключили быстро.
Оказалось, в vLLM 0.27.1 кеш энкодера жёстко равен шагу планировщика (encoder_cache_size = max_num_batched_tokens), шаг у нас был 4096 токенов, а картинка около 2 Мпикс занимает примерно 2048, то есть на весь движок в кеш влезают две картинки.
И вот приходит запрос с 3-4 картинками, у которого попадание в префиксный кеш обрывается посреди картинки, её надо перекодировать целиком, места нет, и планировщик выдаёт запросу ноль токенов, пока место не освободится. Освобождать некому, соседи держат свои картинки и ждут того же, и движок крутит пустые шаги. Патч одной строки в scheduler.py берёт кеш энкодера как максимум из шага и VLLM_NDT_ENCODER_CACHE_TOKENS, по четыре картинки на слот выходит 32768 токенов. Заодно по всему парку выставили --limit-mm-per-prompt в четыре картинки и одно видео, теперь пятая сразу получает 400.
Если у вас мультимодальная модель на vLLM с префиксным кешем, посчитайте, сколько картинок максимального размера влезает в кеш энкодера при вашем --max-num-batched-tokens, и сравните с числом слотов, умноженным на лимит картинок в запросе. Кеш меньше - вы в зоне риска.
По метрикам проблему можно заметить сразу, запросы копятся в waiting при почти пустом KV-кеше и простаивающей карте, и смотреть тогда надо в планировщик. Держите рядом с движком py-spy (профайлер питоновского кода), у нас его не было, а с ним пустые шаги планировщика видны в первом же дампе. Восемь минут ожидания до перезапуска движка сторожем тоже многовато, порог лучше держать в районе двух трёх минут. И фикс должен жить в рецепте образа и в спеке движка, иначе первое же пересоздание из старой спеки молча его откатит.
Про 580 драйвер от Nvidia
На некоторых серверах экспортеры переставали выгружать данные о состоянии GPU.
Симптоматика была такая, всё работало отлично, vLLM загружался, скорость в порядке, и в какой-то момент ядро теряло GSP одной из карт (Xid 119, затем Xid 154 с требованием ресета), сброс не помогал, а карту возвращала только полная перезагрузка сервера. При этом у нас были сервер, установленные раньше всех, у которых проблем не было.
Решили провести аудит и сравнить, чем полностью исправные серверы отличаются от неисправных, помимо версий некоторых пакетов и ядра заметили, что очень сильно отличается версия драйверов Nvidia. На стабильных серверах были драйверы 580 и ниже, на неисправных 605 и выше.
Далее всё было просто, делаем даунгрейд до нужной версии, фиксируем в политика APT чтобы пакетный менеджер даже не помышлял об обновлении драйверов.
Судя по всему модифицированные 4090 в следствии модификации плохо работают на более свежих дровах.
Очень нужная и полезная телеметрия
Проводя в очередной раз аудит на одном из московских ДЦ увидели в логах заблокированные запросы на stats.vllm.ai, меня это очень сильно удивило, так как ранее мы в настройках движков vLLM создавали файл do_not_track, которым мы выключали отправку телеметрии раньше. Логи появились аккурат после обновления до новой версии vLLM. Разница была лишь в том, что раньше движки мы ставили прямо в ОС, а теперь решили использовать docker композиции и по всей видимости забыли cоздать нужные файлы при переносе.
При этом движки пересоздали из нового образа без VLLM_NO_USAGE_STATS=1 и DO_NOT_TRACK=1, файл do_not_track, которым их глушили раньше, остался в старых инсталляциях, и vLLM снова начал слать на stats.vllm.ai отчёт о железе и модели плюс heartbeat каждые 10 минут. Сейчас переключатели прописаны и в образе, и в спеке, и на уровне файрвола блокировка стоит.
И учтите, vLLM понимает только DO_NOT_TRACK=1, с true он продолжает отправлять статистику, статистика эта включает в себя время запуска, информацию о железе, в том числе и видеокартах, запущенную модель, количество токенов и многое многое другое.
Кстати, между делом прокачал мой скил gpu-server-setup, добавил туда подсказки для агента, чтобы он не забывал эту самую телеметрию отключать при установке.
Послесловие
Такое вот небольшое ретро получилось, есть ещё очень много нюансов с которыми сталкиваемся каждый день и которые стараемся по-всякому решать, если рубрика зайдёт буду и дальше травить всякие инженерные байки, stay tuned.4 722
+2
Достал с полки одну древнюю материнку, когда-то, лет десять назад, она была у меня в десктопе, ну и захотелось поднять её и настроить на ней проксик. Думаю что добру пропадать. Но возник нюанс, корпуса под нее нет, а брать модный дорогой не хочется.
Прикупил себе корпус DEXP DCV-200B, согласен что это не та тема о которой имеет смысл говорить, но это лучший micro ATX корпус из всех что у меня были. Ничего лишнего, все что надо есть, легкий, просторный, продуваемый.
#server
4 722
Repost from Валера Ковальский
Как заработать на агентах в 2027 году?
Ох инфоцыганством пахнуло :)
Что там с бизнесом, ребят?
Вы же эксперты или так лежа на диване промпты кидаете в агентов?
В общем давно мы с Пашей сидели в тени со своим neuraldeep.ru
Первое, я наконец решил рассказать, как и с кем запускал этот проект и сколько всего пришлось решить по пути.
Второе, я решил наконец рассказать, сколько и как такое может приносить денег, если вы решили сделать «бомж-цод».
Третье, мы покопаемся в кишках наших с Пашей настроек, особенно у агентов, и узнаем, как же в итоге мы из запроса в ТП катим на прод.
И как такая махина начала потреблять 1млн рублей в месяц чисто на операционные расходы
Допом расскажем про планы и то как вообще это можно масштабировать дальше
Думаю, что будем с Пашей писать по одному посту в неделю и раскрывать по чуть-чуть + будет парочка стримов(надо зафиксировать опыт и провести рефлексию), что же было за эти 6 месяцев не так и что бы я поменял, если бы начал 6 месяцев назад с текущими знаниями и скиллами!
Так же я недавно записал подкаст про neuraldeep.ru очень подробно и во всех тонкостях с очень крутыми ребятами Сергей и Артем (ждем монтажа)
Подписывайтесь на меня и на Пашу чем больше положительных реакций, тем больше полезной инфы мы раскроем!
4 722
На ночь поставил агенту задачку разобраться с тем как запустить GigaAM на карточках Intel A770 через XPU, по ходу дела подготовил небольшой PR для родного движка этой модели и прокачал мой docker-gigaam-server под XPU.
4 722
Холсты Coddy в формате Obsidian
Понравилось мне публиковать небольшие анонсы новых прикольных фишечек в Coddy Agent, поэтому видимо будет частая рубрика теперь.
И так, в веб-интерфейсе Coddy появился интерактивный холст, это файл
.canvas в формате JSON Canvas, в котором хранит свои холсты Obsidian, так что файл открывается в обеих программах, совместимость по формату полная, это я прям внимательно проверял.
Холст открывается в окне "Файлы", просто пишете агенту прямо под доской в строке вводе что можно сделать, к примеру у демке попросил нарисовать карту офисной сети с роутером, двумя коммутаторами и десятью машинами, и агент записал в файл карточки, группы и связи.
HTML-страница от агента встаёт на холст живым фреймом. В режиме комментариев выбираете элемент страницы и пишете, что с ним сделать. Я попросил перенести машину на другой коммутатор и добавить принтер, и агент поправил и страницу, и карту. Фреймы работают в песочнице, без доступа к API и кукам веб-интерфейса. А один активный пользователь Coddy уже используя эту фичу умудрился даже написал небольшую игру для детей.
Подробнее о canvas-файлах в документации.4 722
Внезапная мысль пришла, а что если положить
AGENTS.md в корень операционной системы и запустить агента из корня из под учетки с sudo. Запускать как системный сервис. Это же получится AgentOS полноценный.4 722
Поскольку проекту NeuralDeep нужно много видеокарт я решил возобновить эксперименты с сервером на паре Intel Arc A770, благо в последнее время всякие гпт да опусы сильно умнее стали, а ещё появились всякие проекты типа страта про глубокую кастомизацию инференс движков под свое железо, в общем есть надежда, что теперь получится.
Но на этот решил взять свежее железо платформы и актуальный процессор, накинуть побольше оперативки и когфигурять все через агентов.
Выбрал материнку Gigabyte B550 Gaming X v2, процессор AMD 3500X (шестиядерник), сразу нашел что в биосе точно можно включить Re-bar и Above 4gb, а еще что точно можно отключить secure boot, плюс что процессор точно умеет в avx2.
#server
4 722
Развитие TUI у Coddy
Раньше в консоли Coddy картинку приходилось давать путём к файлу, чтобы агент её прочитал, теперь её можно вставить из буфера обмена.
В консоли жмёте Ctrl+V (или Alt+V, если терминал забирает Ctrl+V под свою вставку), и Coddy достаёт картинку из буфера. Если есть X-дисплей, поверх терминала открывается окно разметки. В консоли картинка видна в промпте маркером
[image #1], а веб-интерфейс показывает в той же сессии карточку с превью, которая открывается целиком.
Подробнее в документации
Исходники тут: https://github.com/coddy-project/coddy-agent
Инструкция по установке тут: https://coddy.dev/ru/4 722
Первый на моей памяти случай скама через комменты под PR на GitHub, обнаружил эту прелесть в репозитории Coddy Agent вот тут, естественно автор сразу получил бан. Случай занятный икак ловко это придумано.
4 722
SWE-2 после нескольких недель работы
Сегодня по первоначальным условиям должна была закончиться акция с "безлимитным" доступом к SWE-2 в Devin, однако, на странице тарифов теперь стоит 16 октября, продлили на недельку, но я не стану отходить от плана и итоги нескольких недель работы подведу сейчас.
Виндсёрфинг
Начнём с начала, подписку за $20 брал 19 сентября, когда исчерпал лимиты Codex и Claude Code, и с тех пор пользовался SWE-2 почти каждый день через Coddy, родной Devin CLI и Windsurf IDE.
Поначалу казалось, что ей можно доверить сложную разработку. Главный критерий у меня простой - понять, как сделать фичу по дизайну, и выполнить задачу без постоянных поправок. SWE-2 для этой роли оказалась слабее, чем мне нужно. Она пишет рабочий код и проходит тесты, но неточно соблюдает требования, особенно в интерфейсе. Ей нужны подробная спецификация и ручной контроль. Иногда проще исправить руками что она там написала чем пытаться объяснить. В моих аналогичных задачах модели OpenAI и Anthropic справлялись с этим лучше.
У Kimi K3, на которой построена SWE-2, в каталоге Devin заявлен миллион токенов контекста, а у SWE-2 всего 262 тысячи. В сентябре примерно через раз инференс останавливался на 150-180 тысячах токенов, и без
/compact продолжить не удавалось. 22 сентября сам нашёл в логах stop_reason=max_tokens от API. Поставил в Coddy предел 150 тысяч и автоматическое сжатие на 95%, после этого работа продолжилась без ошибок. Причину остановок я не установил, полагаю какая-то багулина на стороне Devin. Само сжатие SWE-2 переносила хорошо - в одной сессии прошла восемь сжатий и довела задачу до конца. Длительные задачи получались, но работать в одном большом контексте без сжатия не выходило.
По скорости SWE-2 не самая быстрая моделька, кто пользовался Kimi K3 через подписку Monshot на старте помнят какая у неё была скорость, вот у SWE-2 примерно так же.
Бай зе вей, из-за частого сжатия моделька периодически забывала над чем работала и начинала пытаться делать то, что уже сделано или искать то, что она уже нашла, но это в целом ожидаемо на таком малом контексте.
В браузере через Playwright MCP моделька через агента сама делала скриншоты и разобралась с rich messages телеграмовским без подсказок. Но текст к ним писала со слопом даже при подключённых скилах, а мою /logika при этом игнорировал. В Coddy как-то раз она правила менюшку выбора гитовых веток, чтобы показывать известный список сразу и обновлять его в фоне. Написала два падающих регрессионных теста, внесла правку, после чего прошёл полный UI-набор тестов, при этом ушла в цикл и несколько десятков раз повторяла один и тот же план, пришлось стопорить и дальнейшую работу я переключил на другую модель.
Лучше всего SWE-2 показала себя на схеме, в которой Opus или GPT-5.6 Sol декомпозируют задачу и проверяют результат, а SWE-2 выполняет отдельные части как субагент. Так я работал с микросервисами для трёх контуров Kubernetes, запускал четырёх исполнителей разом. SWE-2 делала свою часть, а я и другие модели контролировали результат.
С 30 сентября на параллельных запусках SWE-2 стали часто приходить ответы 429, для работы пришлось ограничиться двумя потоками и прежнюю схему с четырьмя исполнителями уже не получалось использовать, апишка стала предлагать перейти на более дорогую подписку, чего мне делать не хотелось.
Кстати 30 сентября я ещё упёрся в "бесконечные" лимиты, в моём аккаунте тогда окно сбрасывалось раз в 21 час, а до ближайшего сброса оставалось около получаса, после него я продолжил работу.
Для кворума кросс-ревью SWE-2 тоже пригодилась, у неё иногда бывают очень полезные находки, которые допускают Fable и Astra, как особое мнение то что надо.
А вот работать с геоблоком неудобно, в моём случае необходим туннель из-за географических ограничений. Ещё из недостатков в том, что веб-сервис после входа отправлял подключать GitHub и выбирать репозитории. Без привязки не получалось даже добраться до оплаты счёта. Подключать репозитории ради знакомства с моделью и оплаты считаю лишним.
По самостоятельной работе SWE-2 для меня осталась примерно на уровне базовой Kimi K3 и требует внимательной формулировки запросов, Cognition подтверждает, что дообучила Kimi K3 для этой модели, в том числе с помощью обучения с подкреплением, но что-то я дообучения не почувствовал, возможно его не было.
Послесловие
Лично для меня основой для агента она не стала, с необходимостью туннеля, лимитами, посредственными для моих задач ответами и меньшим, чем у Kimi K3, контекстом SWE-2 подойдёт не всем.
Подписку пока отменять не буду. Посмотрю, что получится у SWE-линейки на более сильной Kimi и с лучшим дообучением под агентные циклы. Хотя при доступной самой Kimi без геоблока ещё пока порефлексирую на тему того, за какие преимущества SWE я готов платить.4 722
/nd-search скил поиска и чтения страниц через NeuralDeep
У NeuralDeep есть Search API, который работает на том же
sk- ключе, что и модели. Через него агент ищет в интернете, читает страницу по ссылке, обходит несколько страниц одного сайта и ищет по нашей базе телеграм-каналов. Квота у поиска своя, лимиты на LLM он не трогает.
Одних адресов ручек агенту мало. Ему надо понимать, какую звать в какой момент, что делать, если страница ответила 404 или 422, и почему одну страницу не стоит читать краулингом, у которого отдельная квота, по дневному лимиту раз в десять меньше поисковой, а с кошелька он стоит дороже. Сниппеты в выдаче короткие, около 150 символов, и опираться на них как на факты не стоит. Поэтому сначала идёт поиск, затем чтение пары отобранных ссылок, а краулинг только когда нужен целый раздел сайта, например документация.
Всё это я упаковал в скил nd-search.
Внутри инструкция для агента и маленький клиент на чистом Python без зависимостей. Ключ клиент берёт из параметра --api-key, а если его нет, из переменной окружения NEURALDEEP_API_KEY. Ответ печатает компактным текстом, ошибки раскладывает по кодам выхода, так что агент сам отличает битую ссылку от кончившейся квоты и от сбоя на стороне сервиса.
В Claude Code скил ставится из моего каталога rpa-skills парой команд.
/plugin marketplace add EvilFreelancer/rpa-skills /plugin install nd-search@rpa-skillsВ Coddy Agent маркетплейс подключать не нужно, каталог rpa-skills встроен в него как системный источник. Достаточно синхронизировать скилы командой ниже или кнопкой Sync all в настройках, в разделе Skills.
coddy skills syncДальше кладёте ключ из кабинета neuraldeep.ru в
NEURALDEEP_API_KEY и просите агента обычными словами, скажем "найди, как в vLLM включить speculative decoding, и прочитай доку". Агент сначала ищет:
python3 scripts/nd_search.py web "vllm speculative decoding docs" -n 3Потом открывает первую ссылку и получает основной текст страницы в markdown, без простыни HTML с меню и скриптами. Здесь вышло почти 14 тысяч символов, в контекст агент берёт столько, сколько ему нужно:
$ python3 scripts/nd_search.py read https://docs.vllm.ai/en/stable/features/speculative_decoding/ --max-chars 300Бывает, что сайт с антиботом не отдаёт текст ни одним способом. Тогда скрипт выходит с кодом 3, и агент берёт следующую ссылку из выдачи, а не стучится в ту же самую. Поиск есть на всех тарифах NeuralDeep, на бесплатном тоже, без него только API-only тариф Coder. Сколько осталось, показывает
nd_search.py quota.
Реп: https://github.com/EvilFreelancer/nd-search
Каталог скилов: https://github.com/EvilFreelancer/rpa-skills
Документация Search API: https://neuraldeep.ru/docs#search4 722
tgfake - Telegram Bot API для тестирования ботов
Изначально сей жил внутри Coddy Agent, и созданы был так как нам с Антоном @foxyminds нужен был локальный Telegram Bot API, на котором можно нормально гонять тесты агентика без токена, служебных чатов, сети и попыток угадать, как Telegram отреагирует на пограничный запрос.
Проект симулирует не только успешные ответы реализованных методов API, но и характерные ошибки и ограничения: нельзя отредактировать сообщение без изменений, ответить на неизвестный callback или передать слишком длинный
callback_data и так далее.
Короче, пилили мы пилили и постепенно стало понятно, что стенд полезен не только Coddy, поэтому приняли решение вынесли его в отдельный реп, доступный всем.
Заюзать tgfake можно использовать несколькими способами. К примеру скачать статичный бинарник для Linux, macOS или Windows, или поднять стенд прямо внутри Go-теста через httptest, или подключить GitHub Action, который установит и при необходимости запустит сервер в workflow.
Есть и режим для ботов, которые ходят в языковые модели, для этого добавили флаг --llm, он поднимает сценарную OpenAI-совместимую заглушку с /v1/chat/completions, которая умеет выдавать ответы по правилам, воспроизводить tool calls и отвечать через SSE-стриминг. Получается полноценный контур для e2e-теста бота, который одновременно работает с Telegram и моделью, но не требует ни Telegram, ни ключа к LLM.
Сорсы тут: https://github.com/EvilFreelancer/tgfake4 722
Repost from Константин Доронин
Сентябрь ознаменовался бумом decision-моделей.
Всё началось с Jev, который доступен только через API. То есть на передачу данных можно потратить больше времени, чем на работу модели.
Я тоже попробовал decision-модели. Но только те, что работают локально.
А потом узнал, что модель FRIDA Decisions всего на 0.8 миллиарда параметров выбивает в бенчмарках результаты, сравнимые с Jev.
Приятно ещё и то, что мы с создателями модели говорим на одном языке. Так что можно обсудить, как им удалось достичь таких результатов.
А также поговорить о том, как использовать FRIDA Decisions так, чтобы получить от неё наибольший эффект.
Всё это мы сделаем в формате стрима, на который я позвал людей, непосредственно причастных к созданию FRIDA:
Александр Абрамов – автор канала Dealer.AI
Артём Снегирёв – ML Engineer в Sber AI.
Дата и время проведения стрима: Четверг, 8 октября, 18:00 (GMT+3)
Место проведения стрима: мой YouTube-канал
Добавить событие в календарь
Увидимся на стриме! :)
@kdoronin_blog
