3071
директор ИИ · инженер‑интегратор @eprogrammist | https://github.com/EvilFreelancer 20 лет в IT ∈ 10 лет в разработке ∈ 3 года в ML/AI ∈ 1 год - вайбмастер Бусти: https://boosty.to/evilfreelancer Пожертвования: https://pay.cloudtips.ru/p/937f48ac
ХайпGPT
В соседних чатах хайпуют на тему OpenSource моделей которые пару часов назад выпустили OpenAI под лицензией Apache. Есть две модели, толстушка на 120b и малютка на 20b, обе тянут 128к токенов контекст, обе MoE, у обоих активных параметров не очень много, поэтому они будут очень шустро работать на современном железе.
А тут можно будет почитать про их хитрый формат ответа, как по мне это какой-то камень в огород llama.
Для пользователей ollama карточка моделей тут. Квантовать на разные уровни инженеры из OpenAI не потрудились, так что пока довольствуемся одной лишь MXFP4, но тема хайповая, так что думаю в ближайшие дни или даже часы увидим репаки от всех и прежде всего Unsloth.
Аккурат под это событие команда ollama выпустила обновление движка версии 0.11.0, которое я благополучно скачал и подтянул себе на сервер модельку на 20b, добавил её в мою апишку.
На данный момент модель в ollama ещё сырая, а точнее её темплейт сырой ии требует наличия tool для получения текущей даты:
500: template: :3: function "currentDate" not defined
Хочу рассказать об одном маленьком фиксе который я добавил в проект docker-whisper-server в файл entrypoint.sh, выглядит он следующим образом:
CMD+=" -mc 0"
Собрал сервер на стенде, в процессе запуска оказалось что он не включается, отпубил всю переферию, не включается, поменял диэлектрик не включается, ослабил контакт радиатора с процессором, не т эффекта.
Решил размышлять логически, чем отличалась минимальная сборка прошлого сервера от текущего, пришел к выводу что разница была в питании процессора, взял другой провод из резерва, включаю, работает.
Дальше накинул видеокарты (арки 770е), запустил установку дебиан и в целом все ок было, пока не запустил ollama…
#server
Пришла материнская плата HUANANZHI H12D-8D, в комплекте с ней шел процессор AMD Epyc 7K62 на 48 ядер и 128 гб оперативной памяти.
Процессор выглядит прям солидно, вайб как от первых процессоров от амд на сокете ам1.
Теперь осталось докупить систему охлаждения на сокет SP3 и можно приступать к сборке, так как все остальное у меня уже есть.
#server
вайб-кодер != программист
Увидел на канале тёзки @toshoseti публикацию про турнир по вайб-кодингу, результат данного турнира меня совсем не удивил, так как оказалось, что дрессированные модельки показали не самый лучший результат.
В целом, ожидаемо.
Как говорят автомобилисты: "самое главное в автомобиле - это прослойка между рулём и сидением".
В вайб-кодинге плюс-минус то же самое, если над задачей работает бестолковый инженер, то и результат будет соответствующий, даже если нейросеть у него state-of-the-art и файнтюненная под задачу и промтами с контекстом подбодрённая.
Приведу одну занятную цитату из поста:
Для сравнения: на тесте SWE‑Bench лучшие модели показывают до 75% успешных решений на простом уровне и 34% на сложном. В K Prize ни одна из участвовавших моделей не преодолела даже 10% порог.
T-pro 2.0 – с гибридным ризонингом 🥳
Лучшая модель в своём весе среди всех открытых моделей по широкому ряду русскоязычных бенчмарков. В два раза более быстрая и дешевая чем аналоги по качеству.
Модель с рассуждениями, создана для построения сложных систем и решения сложных задач. Модель в открытом доступе, качай да используй.
– Qwen3 32B based
– Гибридный ризонинг
– Уплотненный токенайзер на русском
– Спекулятивный декодер в комплекте
– Apache 2.0 – используй как хочешь
Больше подробностей выложим в тех репорте – с бенчмарками и накопленными знаниями.
Сама модель и основные бенчмарки
Спекулятивный декодер
Новость
Хм, занятный факт удалось выявить, у gpt-4o и gemini-2.5-flash плотность токенизации отличается в полтора-два раза, то есть там где gpt-4o примет от пользователя скажем 1000 токенов и вернёт допустим 200, моделька gemini-2.5-flash примет от 1.5k до 2к токенов, и вернёт от 300 до 400, при этом генерация будет почти идентичной по количеству слов.
Согласен, что это вполне очевидная история, но я как-то даже не задумывался об этом.
Вчера вечером немного прокачал SimpleChat, добавил поддержку мобильных браузеров.
Ну и возможность редактировать сообщения заодно добавил.
Илья Козиев в Телеграм.
Просматривал ленту гитхаба, изучал, что добавляли в избранное люди на которых я подписан.
Бродил по проектам и аккаунтам и набрёл на аккаунт Ильи Козиева - это, наряду с Ильёй Гусевым и Андреем Карпатым, один из тех людей, который несколько лет назад очень сильно повлиял на рост моего скила в теме нейросетей, во многом благодаря его OpenSource проектам мне удалось преодолеть порог входа в эту тему.
И обнаружил, что Илья не так давно завёл себе телеграм-канал @inkoziev_channel, на нём он рассказывает о научных публикациях с arXiv и подмечает разные в них нюансы, в общем предлагаю поддержать автора подпиской.
Добавил MCP в SimpleChat
Спустя несколько дней мне всё же удалось подключить мой MCP сервер к моему SimpleChat чатику, однако, подключить удалось только SSE реализацию, так как поддержка Streamable HTTP в официальной TypeScript-библиотеке modelcontextprotocol/sdk">@modelcontextprotocol/sdk ещё, мягко говоря, не готова.
Ряд экспериментов показал, что function call и тулы поддерживают далеко не все модели, среди них:
- qwen3:8b (поставил её по умолчанию)
- llama3.1:8b
- с большой нятяжкой и через раз малютки llama3.2 на 1b и 3b
- ReZero-v0.1 вызывает тулы, но она глупенькая, так что ответы так себе
К сожалению модели deepseek-r1:8b на уровне ollama запрещено вызывать, хотя это странно, так как со structured output справляется отлично, тут надо будет ещё подумать.
PS. Ну и само собой вы можете указать свой публичный или локальный сервер MCP работающий в режиме SSE и пользоваться им через SimpleChat.
PPS. Реализация ещё немного сыровата, так что если тулы не будут работать, нужно перезагрузить страницу.
В последнее время в воздухе летает идея некой гибели традиционных веб-сайтов и поисковых систем. Поисковики уже внедрили ответы LLM в выдачу, радикально снижая желание пользователя кликать по ссылкам. Как веб-разработчик в прошлом, мне видится, что доменные имена станут в большей степени неким авторитетным адресом, который задает область поиска данных и собственно является названием некой уникальной базы данных, в конечном счете предназначенной для контекста LLM. А самым популярным интерфейсом взаимодействия с сайтом станет диалоговая чат-система. Мультимодальность и эволюция скорости инференса (например, приход дифуззионных LLM) может привести почти к мгновенным ответам и бесполезности статичных публикаций, ведь статья нужной для пользователя структуры будет сгенерирована быстро в нужном объеме. С одной стороны - есть уже агрегаторы типа Perplexity и ChatGPT, которые удерживают миллионы людей в своих интерфейсах от перехода на исходные сайты. С другой стороны, пользователю может быть мало общих ответов агрегатора, и может возникнуть желание перейти на сайт и продолжить диалог в рамках данных сайта какой-то тематики или корпорации. Microsoft уже делает шаги по стандартизации в этой области, представив в мае NLWeb.
NLWeb — это набор открытых протоколов и инструментов с открытым исходным кодом, предназначенный для простого создания разговорных (диалоговых) интерфейсов для веб-сайтов. Его главная цель — стать основополагающим слоем для «ИИ-Веба» (AI Web), подобно тому, как HTML стал основой для современного интернета. NLWeb — это амбициозная попытка перевести интернет от модели «кликай и переходи» к модели «спрашивай и получай ответ». Проект нацелен на создание более интуитивного, интеллектуального и «человечного» веба. Он не конкурирует с традиционными чат-ботами, а создает интегрированную экосистему, где разные инструменты выполняют свои задачи, обеспечивая бесшовный пользовательский опыт на всех цифровых платформах.
Основная функция: Позволяет пользователям и ИИ-агентам взаимодействовать с веб-сайтом с помощью естественного языка (например, задавать вопросы вроде «покажи мне рецепты веганской лазаньи»).
Как это работает:
Использование существующих стандартов: NLWeb не изобретает новый способ структурирования данных. Вместо этого он активно использует уже существующие и широко распространенные форматы, такие как Schema.org и RSS. Миллионы сайтов уже используют их для предоставления структурированной информации (о товарах, рецептах, статьях и т.д.).
Протокол MCP: NLWeb тесно связан с MCP (Model Context Protocol) — протоколом, который позволяет чат-ботам и ИИ-агентам взаимодействовать с внешними инструментами. NLWeb-сервер работает как MCP-сервер, обрабатывая запросы на естественном языке и возвращая ответы в стандартизированном формате JSON на основе Schema.org.
▫️Работает на Windows, macOS и Linux.
▫️Поддерживает популярные большие языковые модели (OpenAI, Gemini, Anthropic и др.).
▫️Интегрируется с Qdrant, Milvus, Azure AI Search и другими.
▫️Разработан как легковесное решение, которое может работать как на кластерах в дата-центрах, так и на обычном ноутбуке.
Видеообзор - https://www.youtube.com/watch?v=EF6uywH-Yzo
Наткнулся на занятный проект idb-vector позволяющий организовать векторную базу прямо в браузере.
Читать полностью…
Небольшая инструкция о том, как использовать SimpleChat с вашей локальной Ollama.
Первым делом надо сделать так чтобы Ollma запускалась с флагом OLLAMA_ORIGINS=*, например у меня дома настроено в docker-compose.yml так:
services:
ollama:
image: ollama/ollama:0.9.2
restart: unless-stopped
volumes:
- ./ollama_data:/root
environment:
OLLAMA_ORIGINS: "*"
OLLAMA_FLASH_ATTENTION: 1
ports:
- "11434:11434"
Site settings, жмём на неё (рис.1)Insecure content, указанный переключатель необходимо выставить в Allow (рис.2)http://localhost:11434/v1
/v1, в ollama по этому пути доступны эндпоинты совместимые с openai-клиентами.
Читать полностью…
Ну чтож, не зря я возился со всеми этими UI для чатиков, собрал список моментов которые меня в них разочаровали и те моменты которые мне понравились.
На основе своих наблюдений собрал небольшой проект, который назвал SimpleChat, данный проект работает полностью в браузере, на моём хостинге лежат только статичные файлы, вся же остальная работа происходит в вашем браузере, вся история тоже хранится только в браузере в LocalStorage.
Благодаря этому мой Chat UI можно использовать даже с локальными LLM движками, навроде Ollama или vLLM. По умолчанию указал api.rpa.icu и публичный ключик, но через настройки можно указать любой другой сервер, настройки сохранятся в браузере.
На русский пока не перевёл, решил пока что попробовать свои силы в разработке в формате вайбкодинга.
PS. Проект сгенерировал за пару дней при помощи Курсора
Ну вот, надо было просто немного подождать: релиз Docker‑контейнера Ollama 0.11.3 решил все проблемы с шаблоном и с памятью, модель GPT‑OSS:20B работает отлично.
Она даёт 8 токенов в секунду на RTX 4090, так себе, конечно, скорость, но пользоваться ею комфортно. Вероятно, её размер (20B параметров всего и 3.6B активных) и метод квантизации (MXFP4) специально подбирались так, чтобы можно было запустить на видеокартах с 24 ГБ VRAM.
Учитывая, что обе модели выпущены под лицензией Apache, предположу, что в ближайшем будущем мы увидим улучшения в качестве отечественных языковых моделей.
PS. Далее в планах у меня протестировать 20B на своих бенчмарках, прежде всего интересно, как она в роли роутера будет себя вести.
PPS. Модель можно попробовать на моём сайте https://chat.rpa.icu совершенно бесплатно.
Между строк
Увидел занятную публикацию "Subliminal Learning: Language models transmit behavioral traits via hidden signals in data" (arXiv:2507.14805) на канале Ряды Фурье.
Зацепила прежде всего мысль о том, что благодаря специально оформленному датасету можно в процессе дообучения привить модели нетипичное поведение, например заставить её полюбить что-то, либо же начать вести себя агрессивно, либо добиться какого-то иного эффекта (скажем "расцензурировать" модель).
При этом занятнее всего то, что сторонний наблюдатель, будь то человек или же другая нейросеть, заметить созданные скрытые смыслы в датасете не сможет, но есть и недостаток, атака работает только на моделях которые эти датасеты со скрытыми смыслами и создали.
Само собой перед запуском ollama поставил все драйверы по инструкции, установил docker и запустил контейнер, вроде всё ок, но ollama крашилась в момент запуска любой модели с ошибкой:
terminate called after throwing an instance of 'sycl::_V1::exception'
what(): No device of requested type available. Please check https://software.intel.com/content/www/us/en/develop/articles/intel-oneapi-dpcpp-system-requirements.html
Aborted (core dumped)
[ 5.927329] i915 0000:c6:00.0: [drm] Failed to resize BAR2 to 16384M (-ENOSPC)
Сегодня утром ходил покупать систему жидкостного охлаждения для процессора на сокете SP3, приобрел DEEPCOOL LT520 под сокет TR4, внимательный читатель скажет что это не одно и тоже, и будет прав, сокеты действительно отличаются, а вот крепежи для радиатора у них идентичные.
Просто я пару дней смотрел какие есть решения под SP3 и было в массе своей оверпрауснутое недоразумение, но батя - калач тертый, я помню как в нулевые мы с пацанами колхоозили крепежи из подручных средств, вот и подумал, а что если отверстия SP3 совместимы с аналогиями под тредрипер TR4 и sTRX4, пошел смотреть спеки и был приятно удивлен.
Короче выбрал самый недорогой и по TDP подходящий (с небольшим запасом) водянистый охладитель.
#server
Решился собрать себе новый GPU сервер, вырез заказал все комплектующие, так что большая часть сервера ещё едет. На данный момент ко мне приехал только корпус ExeGate Pro 13-430 потому как он был на складе.
В видеоролике мои первые впечатления от этого корпуса.
#server
Давно ничего не публиковал на моём YouTube канале, но наконец решил это исправить. Приобрёл подписку на игрушку под названием Suno и исполнил свою давнюю мечту, а именно делать каверы на любимые песни, смешивая жанры и стили.
Для первого эксперимента выбрал песню Берегом от исполнительницы ЯАVЬ, более известной как Ёлка.
Обзор "MCP для новичков"
Пожалуй это первая публикация на Хабр в которой просто и понятно, без маркетингового булщита и воды, автор разобрался сам и попытался объяснить нам, что такое MCP (Model Context Protocol), зачем он нужен, почему он работает так как работает и какие у него особенности.
Тезис, вокруг которого построена публикация:
Model Context Protocol (MCP) - это просто API, разработанный для LLM.
Бенчмарк JSON ответов LLM
Изучал исходники проекта llama.cpp и наткнулся на упоминание проекта JSONSchemaBench, если кратко то он позволяет оценить насколько точно большие языковые модели (LLM) следуют предложенной JSON-схеме ответа описанной в промте (имею ввиду structured output и function call).
Вот лидерборда JSONSchemaBench Leaderboard кому интересны циферки, а вот датасет epfl-dlab/JSONSchemaBench на Hugging Face с тестовыми семплами, авторы так же опубликовали научную работу "JSONSchemaBench: A Rigorous Benchmark of Structured Outputs for Language Models" (arXiv:2501.10868) в которой о своём эксперименте рассказали подробно.
Результаты тестов стали для меня неожиданностью (рис.1), как видно xgrammar по точности идёт на ровне с llama.cpp, а так же outlines, плюс увидел явного лидера испытаний под названием guidance, который обходит всех.
Пошёл гуглить что это за guidance такой, оказалось это проект от авторов упомянутой выше публикации, с очень удобным и понятным синтаксическим сахаром для описания схемы ответа модели (рис.2), подробнее в ридми проекта
В общем думу думаю, надо понять:
- как заюзать фичу управляемого инференса в llama.cpp по полной
- как добиться аналогичного результата на ollama
- как встроить guidance в мои текущие проекты
С большим удовольствием уже который день слушаю курс под названием "AI: от основ до трансформеров" за авторством Евгения Резникова, в нем вас ожидает 28 часов лекций наполненных зубодробительным матаном и занятными терминами, так что рекомендую послушать.
PS. Лично я пока смог только экватор преодолеть, некоторые лекции переслушиваю, на некоторых ставлю паузу и разбираюсь с формулами.
Обновил Russian Router Ranking (RRR) Leaderboard
Добавил чуть больше фильтров для удобства, плюс ссылки на веса тестируемых моделей, помимо этого сгенерировал синтетический датасет из имеющегося датасета и собрал тестовые наборы которые позволяют проверить возможности модели на 3, 5, 7 и 9 маршрутах.
Добавил несколько моделей:
- deepseek-v2 (8b на llama3.1)
- rezero-v0.1 (3b на llama 3.2)
Из занятных наблюдений: у всех протестированных моделей (от 1b до 32b) наблюдается:
- падение точности на 3 маршрутах
- плато точности в диапазоне от 5 до 7 маршрутов
- 9 маршрутов везде небольшое падение точности, полагаю это можно экстраполировать и далее
Моделями, не поддерживающими Structured Output, оказались:
- deepseek-r1 (7b на qwen 2.5)
- gigachat-20b-a3b-v1.5
- t-lite-it-1.0 (7b на qwen 2.5)
Далее думаю стоит нагенерить синтетику на 10, 20, 50 и 100 маршрутов и проверить модели уже на них, пока что у меня есть гипотеза о том, что базовые модели (без тюна под роутинг и structured output) мало годятся для задач с большим количеством маршрутов (и косвенно это намекает на количество возможных функций которые можно использовать через MCP в формате function call).
Ещё бы конечно толстушек на 70b и выше потестить, но это скорее мечты.
PS. От идеала данный тест по прежнему далёк, но уже сильно лучше чем раньше.
Выступал сегодня на Conversation со своим докладом про Workflow LLM смстемы, обошел ребят и собрал их мнения и цитаты про RAG/LLM продукты под капотом
Соответственно ими хочу поделится в первую очередь
Спасибо
Паше
Саше
Ринату
Богдану
Илье
За дельные мысли (цитаты великих)
🇷🇺 Russian Router Ranking (RRR)
Запилил небольшой бенчмарк Russian Router Ranking сокращённо (RRR) для оценки LLM-моделей на задаче маршрутизации текстов на русском языке. Это про классификацию диалогов: модель получает историю сообщений и список возможных маршрутов, и должна выбрать нужный роут, а ещё объяснить почему.
Бенчмарк сфокусирован на практической задаче, близкой к реальному использованию LLM в продакшене, когда модель не просто отвечает на вопросы, а принимает решение, куда дальше отправить запрос.
Посмотреть текущие результаты можно здесь:
https://huggingface.co/spaces/evilfreelancer/rrr-leaderboard
Сам датасет доступен тут:
https://huggingface.co/datasets/evilfreelancer/rrr-benchmark
Исходники для тестирования и скрипты лежат в репозитории:
https://github.com/EvilFreelancer/rrr-benchmark
Первичное тестирование проводил локально, через Ollama, но в планах добавить возможность работать с openai-совместимыми API, так как одной Ollama сыт не будешь.
Про MCP сервер
Развернул у себя на хосте MCP сервер, доступен по адресу: https://mcp.rpa.icu/
Токен авторизации такой же как и на API серверер:
Authorization: Bearer /channel/evilfreelancer
npx @modelcontextprotocol/inspector
Transport Type: Streamable HTTP
URL: https://mcp.rpa.icu/mcp/
Bearer Token: /channel/evilfreelancer
Философских размышлений пост
С момента начала AI-хайпа прошло уже достаточно времени. За весь этот период мне так и не удалось попробовать хотя бы один действительно завершённый, полноценно работающий продукт с нейросетью под капотом.
Во всех случаях, даже если продукт выглядит многообещающим, рано или поздно обнаруживаются недостатки, то картинки кривые генерит, то текст не тот напишет, то забудет о чём речь была два сообщения назад. Наиболее показательный пример - чат-интерфейсы с нейросетями (например ChatGPT или DeepSeek, или Qwen и так далее), в которых повсеместно присутствуют кнопки лайк/дизлайк. Это означает, что от пользователя ожидается разметка и оценка качества работы системы.
AI-содержащие продукты создают занятный прецедент, они возвели идею A/B тестирования в абсолют и конечные пользователи всегда получают полурабочий продукт, который им предлагают тестировать и сообщать об ошибках, собирая при этом фидбэк.
Ситуация становится особенно занятно, если доступ к продукту платный.
Иными словами, я оплачиваю подписку за то, чтобы тестировать неготовую систему и отдавать свой фидбэк разработчикам.
Хочешь нормальный UI для работы с нейросетями, бери курсор и делай его сам.
Набросал вот это чудо за вечер, утром настроил курсор чтобы он с React и Tailwind дружил, потом написал подробное ТЗ что хочу, и далее итеративно просил курсор сделать.
Из занятных моментов, пару раз курсор тупил и приходилось просить Qwen и DeepSeek.
Основная идея моего UI в том что у него нет бэкенда вообщем, то есть полностью в браузере работает, нужно только адрес OpenAI указать, да ключик прописать.