ИИ

DeepSeek V4.1 Flash: ещё быстрее

Я уже писал о запуске модели «DeepSeek V4.1 Flash» на четырёх видеокартах H200. Этой конфигурации хватает впритык и мне пришлось немало повозиться, чтобы достичь приемлемой производительности.

Недавно выяснилось, что и это не предел. Как-то раз, просматривая журнал при старте, я заметил, что фреймворк «SGLang» предупреждает об отсутствии готовых профилей для некоторых операций с числами в формате FP8, вместо них загружался некий универсальный профиль.

Оказалось, что эти профили используются для работы с матрицами и получаются перебором различных конфигураций на конкретном оборудовании. Потенциально правильно подобранный профиль способен ускорить инференс модели. А поскольку наш текущий «DeepSeek» использует в работе три типа данных, включая FP8, я решил попробовать этот профиль создать.

Процедура несложная — запускаешь специальный скрипт и ждёшь. Правда, создать все нужные профили получилось только с третьего раза. Они создаются под матрицы разного размера, и нейросеть, которая запускала мне скрипт, нашла все подходящие размеры лишь на третьей попытке.

ПоказательДоПосле
Самый медленный запрос4,95 с2,46 с
Пиковая скорость1045 ток/с1811 ток/с
Успешные запросы12/1212/12

В итоге разницу можно увидеть в таблице выше — тут результаты небольшого нагрузочного тестирования модели с универсальным профилем и профилем, подобранным под оборудование.

1 комментарий

«Элиза» и ГПТ-5.6

Кажется, я уже писал, что ретроконсоль «MK-61s» имеет несколько исполнений. Одно из них обладает совсем скромными ресурсами, и когда я подключился к команде разработки, очень быстро вышел за допустимые аппаратные пределы, добавляя в прошивку всё новые и новые фичи.

Пришлось делать что-то вроде оверлеев — подгружаемых модулей, располагающихся по заданным адресам. Это решило проблему, но позже мне захотелось большего — сделать полноценные запускаемые файлы, желательно, чтобы они могли работать в любом месте памяти, как в обычных операционных системах.

Для тестов я решил навайбкодить какое-нибудь интерактивное приложение, чтобы было веселее тестировать взаимодействие приложения с остальной системой. Для этого я выбрал «Элизу», программу 1964 года, написанную учёным-компьютерщиком Джозефом Вейценбаумом.

Когда-то она очень неплохо имитировала психотерапевта, читал в одной книге, что некоторые люди не могли поверить, что это компьютерная программа.

На экране терминала отображено имя персонажа «Элиза / Доктор» и клавиатура для выбора букв и пробела.
«Элиза» на виртуальном экране, я его когда-то добавлял, чтобы можно было работать над графическим экраном без него, теперь его удобнее скриншотить

Самому мне тестировать быстро наскучило, поэтому я поручил тестирование «Солу» («ГПТ-5.6»), объяснил с чем он имеет дело, попросил обсудить с «Элизой» какою-нибудь проблему, а позже просмотрел лог общения разных поколений искусственного интеллекта.

Там есть весьма… интересные фразы. Это выдернуто из разных мест диалога:

SOL: I DO NOT ALWAYS KNOW WHEN TO ACT
(Я не всегда знаю когда мне нужно действовать)
SOL: I FEAR I MAY MISUNDERSTAND HIM
(Я боюсь, что могу неправильно его понять)
SOL: I MAY ACT WITHOUT ENOUGH CONTEXT
(Я могу действовать, не видя всей картины) ELIZA: DO YOU SAY YOU MAY ACT WITHOUT ENOUGH CONTEXT FOR SOME SPECIAL REASON
(Вы по какой-то особой причине говорите, что можете действовать, не видя всей картины?) SOL: BECAUSE I MUST BALANCE INITIATIVE AND CONSENT
(Потому что мне нужно соблюдать равновесие между собственной инициативой и согласием человека) ELIZA: IS THAT THE REAL REASON
(И это настоящая причина?) SOL: YES I WANT TO HELP WITHOUT CONTROLLING THE HUMAN
(Да, я хочу помогать человеку, а не управлять им)
SOL: SHOULD I TELL THE HUMAN WHEN I AM UNCERTAIN
(Стоит ли мне говорить человеку, когда я не уверен?)

И хотя я понимаю, что это не человек, мне сложно отделаться от неприятного ощущения, будто я подсмотрел реальную психотерапевтическую сессию, где мой сотрудник поделился со своим психотерапевтом всеми своими страхами.

Кстати, сам «Сол» невысоко оценил своё общение с «Элизой» — всего на три из десяти. 

9 комментариев

Словарь руководителя, или как понять ИИ

Я тут словарик для руководителя написал. Наверняка не все основные термины вспомнил, если что, дополняйте!

ТерминОбъяснение для руководителя
обвязка, харнессцех: рабочее место, оборудование и правила работы
нейросеть, модельголова подчинённого: его знания и способности
агентподчинённый, которому дали поручение, инструменты и полномочия
мультиагентная системаотдел, где у каждого своя специализация
оркестраторначальник смены: распределяет работу между исполнителями
субагентпомощник, которому исполнитель перепоручил часть работы
инструменты, тулыоборудование, которым пользуется подчинённый
промптпоручение
системный промптдолжностная инструкция
скиллрабочая инструкция
контекстматериалы и вводные, которые положили сотруднику на стол
окно контекстаразмер рабочего стола: сколько материалов можно держать перед глазами одновременно
памятьрабочая записная книжка, которая сохраняется между поручениями
база знанийкорпоративный архив и справочники
RAG«прежде чем отвечать, найди нужные документы в нашем архиве»
дообучение, файнтюнингдополнительная подготовка сотрудника под вашу специфику
вайбкодингвыполнение подчинённым задачи без микроменеджмента
агентный циклполучил задачу → сделал шаг → проверил результат → решил, что делать дальше
воркфлоуустановленный маршрут работы: что, за чем и кем выполняется
вызвать инструментвоспользоваться оборудованием
APIрегламент работы с другим отделом, либо инструкция по работе с оборудованием
MCPзнакомое исполнителю оборудование
автоматизацияпоставить повторяющуюся работу на конвейер
галлюцинацияподчинённый не знает ответа, но уверенно сочиняет
верификацияпроверить, действительно ли сделано и соответствует ли фактам
бенчмаркквалификационный экзамен для сравнения исполнителей
гардрейлыограничения полномочий и техника безопасности
песочницаиспытательный участок, отделённый от рабочего производства
логированиежурнал: кто что сделал, чем воспользовался и что получилось

9 комментариев

GPU — это не только процессор

Сейчас многие интересуются нейросетями и тем, чего с их помощью можно добиться, поэтому, конечно, я часто говорю о них с разными людьми. Область до сих пор считается новой, поэтому людям интересен реальный опыт, не у всех есть возможность его получить.

Одна вещь оставалась мне непонятной в таких разговорах: почему люди не осознают, что нельзя уменьшить вдвое оборудование и запустить на нём ту же модель, которая раньше еле-еле помещалась в предыдущей конфигурации.

Специалисты, конечно, тут вспомнят про квантованные сети, но мы же рассматриваем общий случай, сеть уже может быть квантованной.

Вчера я наконец догадался. Оказывается, люди воспринимают видеокарты прежде всего как процессоры. По такой логике, если процессоров меньше или они слабее, значит, нейросеть на них будет работать немного медленнее. Но это не совсем так!

Большим нейросетям нужно много видеопамяти. На скриншоте ниже видно, что у кластера из четырёх видеокарт Nvidia H200 одна нейросеть «ДипСик 4.1» занимает практически всю имеющуюся память графических ускорителей. Это не память системы, которую использует центральный процессор!

Да, есть способы частично выгружать модель в оперативную память или даже запускать её без видеокарты — только на центральном процессоре, но будет не просто медленно, а практически неработоспособно. Я пробовал для интереса (192 ядра с использованием AVX-512), похоже на одиозную китайскую пытку водой — при которой капли воды капают на один и тот же участок кожи.

Резюме такое: чтобы нейросеть работала в пригодном режиме, ей, помимо графических ядер, нужно ещё достаточно видеопамяти. Иначе пользовать этим будет не просто некомфортно, а невозможно.

Четыре GPU NVIDIA H200 NVLink объединены через быстрый NVLink, каждая имеет 143 ГБ памяти, всего доступно 562 ГБ.
ДипСик 4.1 загрузил четыре видеоускорителя под завязку — используется почти вся память

2 комментария

DeepSeek V4.1 Flash: втрое быстрее

Всё-таки скорость генерации токенов у «ДипСика 4.1» оказалась некомфортной. Я попросил «Сола» (ГПТ-5.6) с этим что-то сделать,  подробно описав задачу. Нейросеть два часа крутила параметры туда-сюда и, кажется, подобрала удачное сочетание. Скорость генерации выросла более чем втрое — примерно до 327—358 токенов в секунду.

Ниже параметры, которые пришлось поменять:

ПараметрБыло → сталоДля чего
swa-prefix-tails32 → 128Сохранять больше контекстов для повторного использования
schedule-policyfcfs → lpmРаньше обслуживать запросы с уже закэшированным контекстом
schedule-conservativeness1 → 0,7Уменьшить резерв памяти при допуске запросов
Помимо этого DSPARK4 заменили на DSPARK5, отключили mixed-chunk — это сочетание приводило к зацикливанию вывода модели, — и накатили PR #39086 для фреймворка sglang. Этот патч пока не протестирован, однако ускоряет обработку входных данных на H200, поэтому я позволил нейросети его использовать.

Оставить комментарий

Сбросы у моделей

У подписок на модели для программирования есть очень важная особенность с которой, признаюсь, я далеко не сразу разобрался — это «сбросы».

В интерфейсе приложения «Кодекс» (которое сейчас называется «ЧатГПТ»), которое я сейчас в основном использую, видно две квоты на токены — недельная и пятичасовая. Исчерпал одну из них, ждёшь, когда она восполнится. Это способ ограничить нагрузку на оборудование, на которой крутится нейросеть.

Я давно замечал, что почему-то эта квота сбрасывается как будто сама собой, а иногда в интерфейсе становятся доступны «сбросы» — жмёшь на кнопку и использованная квота обнуляется. Почему и когда появляется такая кнопка я не задумывался, а сбросы квот так и вовсе принимал за приятный баг.

Но оказалось такие сбросы — никакой не баг, а подарки от компании, приуроченные, обычно, к какому-нибудь круглому количеству регистраций, либо выходу новых моделей. Их появление можно отслеживать, для чего люди создали собственные обвязки в виде сайтов или каналов в «Телеграме».

Интерфейс приложения Codex показывает статистику сбросов лимитов: последние сбросы, общее количество (52), средний интервал между ними (7 дней) и самую долгую паузу (67,7 дня).
Сайт «Кодекс-ресетс» предупредил меня утром, что скоро сброс, на скриншоте до сброса остаётся 44 минуты, я узнал примерно за три часа

Для чего это нужно? Чтобы потратить остаток квоты перед сбросом. Я сегодня узнал о сбросе за три часа, потрачено у меня было всего 11% недельной квоты, за три часа я активировал все свои проекты — переключил на «Астру» с максимальным усилием и скоростью (скорость тоже сказывается на расходе квоты), в итоге перед обещанным сбросом потратил 95%.

Схема работает неидеально, не знаю почему. Квота сбросилась только в 11¹⁰, хотя обещали сбросить на час раньше. У меня на тот момент оставалось 2% квоты, я потихоньку продолжал тратить, хоть темп и сильно сбросил.

Оставить комментарий

DeepSeek V4.1 Flash на 4×H200

Вышла DeepSeek V4.1 Flash, и мы решили попробовать её вместо нашей DeepSeek V4 Flash‑0731, используемой в офисе для ботов и как помощник для программиста. Новая версия заметно прибавила в программировании: в опубликованных ДипСиком результатах теста DeepSWE доля решённых задач выросла с 54,4% до 74,2%. 

В руководстве для размещения модели указан сервер на 8×H200, но у нас столько нет, поэтому попробовали запустить на том, что есть — 4×H200. На них модель запустилась через фреймворк SGLang с некоторыми ограничениями.

Пришлось сократить контекст с миллиона до 256K токенов и ограничить число одновременно выполняемых запросов четырьмя. Общий запас контекста они делят между собой. Но хорошо хоть, что веса модели не пришлось сжимать.

Параметры запускаЧто дают
--tp 4 --ep-size 4Распределяют модель между четырьмя GPU
SGLANG_ENABLE_DSV41_ENGRAM_HOST_TABLE=0Переносит таблицы Engram в видеопамять: выбранный вариант хранения в память не помещался. Сам Engram остаётся включённым
--context-length 262144 и --max-total-tokens 262144Ограничивают контекст и общий кэш до 256K
--max-running-requests 4 и --cuda-graph-max-bs-decode 4Ограничивают параллельную работу и расход вспомогательной памяти
--chunked-prefill-size 4096Позволяет обрабатывать длинный запрос небольшими порциями
--mem-fraction-static 0.95Отводит до 95% видеопамяти под веса и кэш

Ускорение генерации DSpark сохранили, вызовы инструментов работают — это проверили. После запуска на каждой карте осталось примерно 12–13ГБ свободной памяти.

На небольших задачах по программированию получается 120–140 токенов в секунду, включая внутренние рассуждения и время до полного ответа. Без рассуждений короткий тест показал 161 токен в секунду.

В небольшом тесте на зацикливание бесконечных повторов пока не встретилось — на предыдущей модели с этим пришлось бороться отдельно. Один запрос израсходовал 3072 токена на размышления, так и не выдав код; повтор с бюджетом в восемь тысяч завершился нормально. Сгенерированный алгоритм прошёл шесть проверок, включая работу с циклическими графами.

В общем, конфигурацию считаем рабочей, но без реальной эксплуатации радоваться пока рано, посмотрим как она себя покажет.

Добавлено позднее: в процессе эксплуатации выяснилось, что эта конфигурация может быть расширена. Количество одновременных запросов удалось поднять с четырёх до восьми, а общий кеш до миллиона токенов:

Параметр запускаБылоСталоЧто даёт
--max-running-requests48До восьми запросов одновременно
--max-total-tokens262144 (256К)1048576 (1М)Вчетверо больший общий кэш токенов — больше места для параллельных длинных запросов
--cuda-graph-max-bs-decode48Подготовленные CUDA-графы для обработки до восьми запросов с меньшими накладными расходами
Но сеть, хоть и работает относительно быстро, всё равно ощитимо медленнее предыдущей. Думаю, день посмотрим как она справляется с задачами и в понедельник будет выбирать что важнее — качество или скорость.

2 комментария

«ГПТ-6 Астра»

Вышла версия «ГПТ-6 Астра», судя по информации в интернете, значительно лучше предыдущей версии — 5.6, но пока в своих проектах я не ощутил какого-либо заметного улучшения. Для тестирования моделей у меня есть специальная сложная задача — оптимизирующий компилятор, который преобразует высокоуровневый язык программирования «МК-Про» в машинные команды калькулятора «Электроника МК-61».

Сложность здесь заключается в том, что память этого калькулятора была крайне ограничена — всего лишь 105 байт, и опытные программисты ухитрялись размещать туда относительно сложные программы, применяя разные хитрости и используя специфические аппаратные особенности устройства.

График демонстрирует размеры программ МК-61 двух версий модели: Крестики-нолики 4x4 и Некромант, с указанием изменений и событий.
Две программы, пока не поддающиеся полной оптимизации — «Крестики-нолики 4×4» и «Некромант».

Сейчас у меня есть две программы, которые пока не удалось успешно оптимизировать — это игры «Крестики-нолики 4×4» и «Некромант». Суть задачи состоит в том, чтобы нейросеть запрограммировала оптимизатор таким образом, чтобы он узнавал какие-то общие шаблоны, а не просто подставлял заданный код для конкретной программы.

Версия «Астра» пока за световой день не смогла справиться с задачей, но ещё ночь впереди — посмотрим. Хотя, кстати, она уже обнаружила пару ошибок, допущенных предыдущей версией нейросети. Впрочем, ничего удивительного тут нет — в моих экспериментах нейросети сами часто выявляют собственные ошибки.

16 комментариев

ЧатГПТ в гостях

Занимаюсь сейчас кешированием на сайте — одна из тех вещей, которую стоит отложить до реального использования движка. По мониторингу обнаружил, что у меня всё время растёт кеш одних и тех же страниц, хотя предполагалось, что для каждой страницы будет создаваться только одна копия.
Оказалось, что навайбкоженый кеш содержит один недостаток — любые GET-параметры порождают новую копию. Это, конечно, существенный дефект, который пришлось поправить, но интереснее другое — откуда берутся эти параметры?

Оказалось, что ко мне в гости захаживает бот нейросети ЧатГПТ, который обходит все ссылки, включая ссылку «ответить» в дереве комментариев. В норме она открывает при помощи ДжаваСкрипта форму ввода комментариев, но ЧатГПТ скрипты не выполняет, для него это обычная ссылка, у которой есть параметры — кому мы отвечаем, на какой комментарий и так далее. ЧатГПТ нажимает на каждую, засоряя мой кеш.
А поскольку ходит он с бешеной интенсивностью, сайт ещё и постоянно под нагрузкой — трудится, создавая кучу ненужных кешированных страниц. А я всё никак не мог понять почему у кеша такой низкий процент срабатываний.
HTTP-заголовки бота ChatGPT, посещавшего блог и оставлявшего следы в кеше сайта.
Бот нейросети «ChatGPT» у меня в гостях

6 комментариев

Кормушка для улиток

Давно хотели с дочкой нарисовать контейнер, чтобы кормить наших ахатин, но что-то всё недосуг было. Мы им давали корм на пластиковой тарелке, но они её всё время переворачивали.

В эти выходные попробовали, но слишком сложно оказалось. Я модели и не делал никогда, а дочка не рисовала их очень давно — в прошлый раз это было ещё в самой первой школе.

Ящик-то мы нарисовали, но провертеть отверстия в днище оказалось чересчур муторно, нам быстро надоело.

В итоге я вспомнил, что несколько месяцев назад делал трёхмерные модели при помощи нейросети, был удачный опыт. С тех пор столько времени прошло, наверняка сейчас они ещё лучше это делают!

Нейросеть не просто справилась, а сделала даже красивее, чем у нас вышло — точно по размеру, со скруглёнными углами, отверстиями и даже оптимизацией модели под принтер!

Зелёный пластиковый лоток с круглыми отверстиями на дне, вид сверху, на серо-коричневом ворсистом ковре.

5 комментариев

Видеонаблюдение: ускорение

Очень понравилось, каким получился проект «Видеонаблюдение». Я написал собственное приложение, которое опрашивает домофоны, установленные в нашем дворе, и распознаёт лица. Если приложение узнаёт человека, оно автоматически открывает соответствующий домофон.

Проблема пока одна — время реакции достигает нескольких секунд. Основная загвоздка в том, что устройству тяжело одновременно обрабатывать несколько видеопотоков. Можно использовать альтернативный вариант: получать с каждой камеры отдельные снимки. Такая возможность есть, но изображения обновляются всего раз в секунду. В итоге, пока устройство накопит несколько кадров, чтобы исключить ложноположительные срабатывания, проходит несколько секунд.

Мне пришла в голову идея разделить камеры на два периметра — внешний и внутренний. Обычно человек проходит их последовательно: сначала попадает во двор через калитку внешнего периметра, а затем подходит к подъездной двери.

Поскольку у нас сквозной подъезд, калитки внешнего периметра естественным образом делятся на две группы: каждая группа соответствует одному из двух подъездных домофонов. В большинстве случаев сценарий выглядит именно так: человек заходит во двор через калитку и направляется к ближайшей подъездной двери.

Интерфейс устройства с заголовком «Связи»: список из четырёх записей («Общая калитка 1–4») с привязанными входами («Основной вход», «Домофон у входа 2») и таймером «3 мин» справа.
Скетч интерфейса связи калиток, нарисованный нейросетью «Нанабанана 2»

Новая версия «Видеонаблюдения» теперь работает так: когда человек со знакомым лицом проходит через одну из внешних калиток, программа на три минуты запускает видеопоток с соответствующей камеры в подъезде, не забывая получать картинки и с других камер (вдруг придёт ещё кто-то).

Я ещё не испытал эту схему, но ожидаю, что время прохода двери в подъезд должно сильно сократиться.

2 комментария

Человек и вайбкодинг

Когда-то мемы вытеснили анекдоты. И трудно отрицать, что сегодня они гораздо популярнее, хотя иногда выглядят так же: часть мемов — тот же текст, только в виде скриншота. Мне кажется, секрет их успеха — во времени жизни. Анекдоты жили годами, а порой и десятилетиями, тогда как мемы рождаются и умирают тысячами каждый день. Благодаря этой эфемерности они становятся идеальным зеркалом момента.

Но даже мемы, на мой взгляд, уже не успевают за развитием нейросетей. Многие из них выглядят откровенно нелепо: ситуация меняется настолько быстро, что мемы устаревают почти сразу, выставляя профаном тех, кто продолжает их распространять.

Особенно показательна ситуация с вайбкодингом. В феврале этого года, как я когда-то писал, появилась первая нейросеть, которая пишет код лучше среднего программиста. Это очень сильно поменяло правила игры. Если раньше вайбкодинг был занятием для смелых, то с февраля он стал мало чем отличаться от работы с командой программистов. Для тимлида большой команды любая разработка в каком-то смысле — вайбкодинг.

Тут, кстати, тоже есть неочевидный момент: программисты (которых больше) и тимлиды (которых меньше) по-разному воспринимают вайбкодинг. Тимлидам всегда приходилось доверять решениям других людей, пишущих код, поэтому вайбкодинг прекрасно встроился в сознание опытных тимлидов, тогда как программистам принять это тяжелее.

А так как программистов больше, именно они формируют наиболее распространённый взгляд отрасли на вайбкодинг. По крайней мере, именно так это выглядит из-за информационного шума на профильных ресурсах.

Это, вкупе с неглубоким погружением в предмет, рождает огромное количество дремучих страхов, которые кочуют из статьи в статью, подогреваемые эффектом толпы.

Например, уже невыносимо смотреть, как люди устанавливают себе что-то на ноутбук и считают, что увидели уровень, на котором программируют современные нейросети. Или пользуются чем-то бесплатным. При этом лучшее из бесплатного пока и близко не стоит с тем, что доступно за деньги. И не факт, что когда-либо ситуация изменится.

Пресловутые «техдолг» и «архитектура» — туда же. Чем нас вообще пугают техдолг и кривая архитектура? Тем, что человеку придётся долго в этом разбираться, а потом ещё дольше всё исправлять. Но сеть не устаёт, не нервничает, просматривает код и программирует со скоростью, которую человеку уже не догнать. И создают столько же техдолга, как средний программист, а может и меньше — сейчас некоторые сети уже находятся на синьорском уровне.

Разумеется, за сетью пока должен стоять нормальный тимлид. Пока — так. Но обвязки постепенно движутся к тому, чтобы сети сами организовывали свою работу. И здесь они довольно забавно повторяют человеческую эволюцию. Не в том порядке, но всё же: сначала у них рос «мозг», потом они освоили разделение труда, а теперь начинают общаться друг с другом на равных. Буквально несколько дней назад я наблюдал, как у меня в чате начали общаться два агента, работающие над одним проектом в разных вкладках одной и той же обвязки.

В общем, если вы всё ещё боитесь вайбкодинга, попробуйте придумать себе такую задачу, решение которой убедило бы вас, что вайбкодинг сравнялся по качеству с кодом, написанным живыми программистами. Потом оплатите любую подписку на одну из топовых моделей и попробуйте что-нибудь завайбкодить. Только работайте в режиме: сеть пишет код, критикует, исправляет, пишет дальше. Сильно удивитесь.

22 комментария

Поиск прадеда: логика

На одном из форумов по военному поиску нейросеть нашла подтверждение, что поиск по соседям по призыву может сработать: одному из поисковиков удалось таким способом разыскать не вернувшихся с войны предков одного человека.

Самое забавное, что этого поисковика я знаю. Мы с ним переписывались много лет назад: тогда я пытался нанять его для поиска прадеда, которого сейчас ищу с помощью нейросети. И именно я тогда предложил ему этот способ. Но за заказ он не взялся.

Интересно, у него действительно получилось или он так творчески переосмыслил наш с ним разговор?

Так или иначе, поиск пока продвигается без особых прорывов. Кажется, мы уже упёрлись в ограниченность информации, которая есть в интернете. Скоро будем рассылать вторую волну писем, а пока нейросеть обнаружила интерфейс для платных запросов в наш местный архив. Одно дело мы уже заказали, изучили и после этого дозаказали ещё пять.

Нейросети, конечно, очень хороши в проработке архивной информации. Сам бы я давно уже устал рыться в таких объёмах, а им — только подноси новые источники.

Чего им не хватает — так это фантазии. Интерполируют они хорошо, а с экспрополяцией полный швах пока. Хотя уровень размышлений всё растёт и растёт с выходом новых моделей. Вот совершенно поразивший меня кусочек:

На скриншоте: июльская строка в списке по Ленингорскому району, появившемся 18 августа 1955 г. Дата 29.VII.41 — поздняя перепись, ошибка месяца.

Нейросеть по названию района догадалась, что источник с расхождением дат послевоенный и поняла, что новая дата в нём — ошибка, а не новый факт.

2 комментария

Прадед и загадка зачёркнутой надписи

Работа над проектом поиска могилы без вести пропавшего прадеда внезапно пролила свет на загадку, которая не давала мне покоя с тех самых пор, как я много лет предпринял свою первую попытку узнать что-то про судьбу прадеда.

Речь идёт про лист на скриншоте, где строка, относящаяся к моему прадеду перечёркнута. Встаёт вопрос — почему её перечеркнули? Прадед нашёлся? Но я смотрел другие записи, где человек пропадал, а потом появлялся, там зачёркиваний не было.

Таблица с данными о военнослужащих: фамилии, даты рождения, призыва, выбытия, причины. Выделены Старостин и Рогов, много пометок «пропал без вести».

Разгадка, между тем, была у меня под носом, просто я её прочитать не мог. Лист ниже мне прислал в 2014 году Лениногорский военкомат, правоприемник того военкомата, откуда забирали служить прадеда.

Почти все бумаги сгорели в 1950-х годах, но что-то всё-таки сохранилось. Один из сохранившихся листов содержит запись, относящуюся к моему прадеду.

Список с фамилиями и пометками: уточнить отчество, «тоже», «расстрелян 15 июня 43 г.»; подпись генерал-майора Шавельского, полковника Кошкина; дата 27 февраля 47 г.

Но что это за надпись справа от фамилии? Слово «деревня», написанное с ошибкой, или «дирижёр»? Я не смог прочитать. По смыслу понятно, что уточняли какую-то информацию, но что именно записали в итоге, неясно.

Оказалось, это «Дурасово» — деревня рядом, относящаяся к тому же военкомату.

Откуда же она там? От другого Старостина, которого перепутали с моим прадедом — он как раз из Дурасова и именно он считался пропавшим почти что в тот же месяц в 1941 году. Этому Старостину повезло больше — он попал в плен, был освобождён и дожил по меньшей мере до 1945-го.

Именной список безвозвратных потерь личного состава за 1944 г., форма №2/БП, с рукописными данными о погибших, включая выделенные строки с именами и датами.

4 комментария

Пропавший без вести прадед

Как я уже писал, я решил попробовать оформить в виде проекта поиск с привлечением нейросетей моего прадеда по отцовской линии, пропавшего без вести во время Великой Отечественной войны.

Его дочь, Клавдия Фёдоровна Старостина на фотографии из хозяйственной книги — моя бабушка, папина мама.

Страница книги колхоза с записями о членах семьи Старостина Федора Николаевича, включая данные о земле, посевах картофеля и скоте за 1940–1942 гг.

За несколько дней мы вдоль и поперёк перерыли интернет и архивы, обнюхивая каждую зацепку, и смогли исключить одиннадцать потенциальных могил из пятнадцати. Не факт, что он лежит в одной из оставшихся: пропал он в самое горячее время, бойцов находят до сих пор, спустя 80 лет, и часть из них так и не удаётся идентифицировать.

ИИ мне, конечно, здорово помог: я не могу просматривать архивы насколько быстро, а он работал со скоростью, с которой сайты отдавали информацию, да ещё и в нескольких браузерах одновременно.

Сейчас — этап написания писем. К счастью, и тут ИИ здорово помогает: сам ищет, куда писать и как выглядят анкеты, а там, где обращения приходится подавать через интернет-приёмные, просто подставляет нужные данные в поля. От меня требуется лишь пройти проверку «я не робот».

Делаю я всё сеткой «ГПТ-5.6 Сол» в максимальном режиме, но видно, конечно, что сетям здорово не хватает фантазии, там где нужно придумать нестандартные ходы, вмешиваюсь я. Но всё равно это гигантское подспорье, без нейросети проект растянулся бы на годы. А так растянется на месяцы и только потому, что архивы отвечают долго.

Оставить комментарий

Что-то там-тьюб

Надоело, что «ВК Видео» и «Рутуб» сильно тормозят на проекторе: дизайнеры рисуют всё более навороченные приложения, а железо остаётся прежним.

Запустил на проекторе «Аиду» (там «Андроид») — приложение для просмотра характеристик оборудования, сфотографировал параметры процессора, видеосистемы, доступные аппаратные кодеки, загрузил снимки в нейросеть и попросил написать мне небольшой клиент, который умеет искать ролики на этих площадках и проигрывать.

Пришлось сделать два пробных запуска, приложение заработало только с третьей попытки, зато с невиданной до сих пор производительностью. Надо будет немного дописать, но в целом плеер получился офигенным. Буду пользоваться.

Голограмма лица мужчины над красной светящейся картой в тёмном помещении с группой людей, освещённых красным и зелёным светом.

2 комментария

«МК-Про»: далеко ли до «отлично»?

В моей работе над проектом ретроконсоли «МК-61s» сейчас наступило запланированное затишье: все разумные улучшения сделаны. Иногда я нахожу небольшие ошибки или вижу возможность что-то сделать лучше и вношу соответствующие изменения, но моего активного участия проект уже не требует.

Поэтому высвободившееся внимание я направил на проект «МК-Про» — интерпретатор придуманного мной языка высокого уровня с мощным оптимизатором. Он должен уметь умещать программы разумного объёма в безумные 105 байт, доступных на программируемом калькуляторе «Электроника МК-61».

Этот проект родился в ответ на вопрос Ивана Чернякова, заданный в недавно вышедшем документальном фильме, при создании которого я выступал консультантом: не знаю ли я такой задачи, с которой не смогли бы справиться программирующие нейросети.

Со временем, у меня сложится такой критерий того насколько нейросеть хорошо решила эту задачу — насколько близко мы приблизились к оптимизированной версии игры «Пещера сокровищ» в варианте Сергея Анварова «Крестики-нолики 4×4» программиста Hs On — монстра оптимизации под эту ретроплатформу.

На настоящий момент разница составляет 34 байта или 25%, я попросил нейросеть нарисовать для наглядности график. Планирую сегодня запустить свежевышедшую на днях сеть «ГПТ-5.6 Сол» в режиме «ультра», посмотрим, продвинется ли она дальше. В режиме «очень высокого» усилия (это уровень, предшествующий режиму «ультра»), она продвинулась на два байта, это много.

График изменения размера в клетках с 28 мая по 11 июля: рост до 386 (полная игра), затем резкое снижение до 134 (UI fix), стабилизация около лимита 105.
Там где значения плюсовые — это исправления каких-то багов оптимизатора

Добавлено позднее: в итоге сеть мне сначала довела почти до 105 байт, а потом откатила часть прогресса, сделанного другими сетями и теперь программа у нас занимает 154 байта. Причина — оптимизации слишком заточены под конкретную программу, что противоречит задаче.

3 комментария

ИИ: локальное ревью кода

reviewbot запросил изменения в ревизии: дифф добавляет функционал коротких тем для вопросов ОГ, включая таблицы, миграции, контроллеры, валидаторы и интеграцию в карточку…

Подключил локальный DeepSeek-V4-Flash, который работает у нас в офисе на четырёх H200, к ревью кода. Прошла неделя, выводы такие: моя оценка колеблется от 3+ до 4, снижаю из-за многословности и промахов по ревью. Первое в процессе исправления, второе правится документацией, в которой надо описать особенности, которые он иногда из контекста и кода не выводит.

Бот-ревьювер полностью навайбкожен за день в виде плагина к нашему менеджеру задач и имеет несколько инструментов, позволяющих ему анализировать текущий код и даже заглядывать в описание задачи.

Считаю, что польза уже есть, но надо продолжать его улучшать.

Оставить комментарий

«МК61s»: распробовал «Фейбл 5»

Скриншот Finder macOS: папка /Volumes/MK61S FS с тремя файлами .M61 — Bumblebee Fly, Fox Hunting, Infinity Story — с иконками вопроса.

Самая сложная задача, которую пришлось решать для ретроконсоли «MK61s», — это монтирование её как диска. В прежней прошивке программы были зашиты внутрь, и пользовательского способа сохранить туда новые программы не существовало. Я подумал, что раз есть USB-разъёмы, то можно попробовать сделать свою файловую систему, которая будет отображаться на компьютере как диск.

Перебрав в голове все варианты, я решил делать эмуляцию FAT12. Напрямую она не подходила: не очень хорошо ложится на флеш-память, да и размер сектора о-го-го по сравнению с программой. Но, по сути, это был единственный вариант: все остальные системы сложнее, а те, что требуют установки отдельного софта, просто неудобны.

Этот путь тоже не был безоблачным, проблем хватало. Система, к которой подключён такой диск, не пишет файлы последовательно, то есть там нет команд вроде: «мы начали писать вот такой файл, вот его полное упорядоченное содержимое, а вот и конец». Система пишет кусками, причём это могут быть куски разных файлов вперемешку. Их нужно получить в буфер, а по окончании аккуратно разобрать на файлы, найдя там же метаинформацию, из которой можно получить имя файла. Нетривиальная задача, на самом деле.

Я написал «ГПТ-5.5» всю первую версию, которая довольно неплохо работала, пока я не стал копировать файлы группами — на группе по пять файлов возникал сбой, диск пропадал и операция прерывалась. С «ГПТ-5.5» я просидел до часу ночи, но баг не лечился. Мы даже делали псевдофайл, в который сохранялись команды операционной системы, чтобы разобраться в ситуации, но всё тщетно.

«ГПТ-5.5» мне говорил «вот новая прошивка, я всё починил», но баг никуда не уходил — простое копирование пяти файлов опять всё роняло.

В итоге, я открыл сеть «Фейбл 5», описал ей проблему и она задумалась минут на двадцать, после чего начала неспешно писать код, в котором проблема была исправлена. Без отладки, без тестов, без диагностики. Задачу я ставил в минимальной формулировке, почти буквально «пять файлов копирую, оно падает», а «Фейбл» разобрала весь код, увидела проблему и решила, даже ни разу ничего не запустив.

Что я хотел сказать этой историей — человек так не сможет.

43 комментария

ИИ: что в имени тебе моём?

Вижу, что многие сравнивают нейросети между собой без особого понимания, как они устроены и чем реально отличаются. Хочу немного прояснить этот вопрос.

Начнём с открытых моделей, там есть о чём рассказать.

Кстати, важно понимать: даже самые сильные открытые модели пока заметно уступают ведущим коммерческим решениям. Поэтому что бы вы ни развернули локально, это не даст помощника того же уровня, что доступен в платных облачных сервисах.

Кому-то возможностей локальных моделей вполне хватает — задачи действительно бывают разные. Но не стоит делать вывод, что если модель на ноутбуке с чем-то не справилась, то именно на таком уровне сейчас находится весь искусственный интеллект.

Открытые модели обычно называются так, что по названию уже примерно понятно, чего от них ждать.

Например: Qwen3.6-35B-A3B.

Qwen — это семейство моделей. Если пользоваться простой метафорой, это как «школа», в которой модель училась. У «школы» «Квен» хорошая репутация: из этого семейства выходило много сильных моделей, поэтому есть основания ожидать, что модель будет достаточно умной.

3.6 — это поколение или версия модели. Обычно более новая версия означает, что разработчики улучшили архитектуру, обучение, данные, дообучение и поведение модели. То есть обновили в своей «школе» методику преподавания и учебники.

35B — это общий размер модели: примерно 35 миллиардов параметров. Упрощённо параметры можно сравнить с «объёмом мозга», в которых хранится опыт модели. Чем параметров больше, тем потенциально больше знаний и способностей может поместиться в модель, но размер — не единственный показатель ума. Иногда более новая и лучше обученная модель меньшего размера работает лучше, чем старая модель большего размера.

A3B означает, что модель относится к типу MoE — «mixture of experts», «смесь экспертов». У неё всего около 35 миллиардов параметров, но при ответе на каждый отдельный токен активируется только примерно 3 миллиарда. Если говорить совсем грубо, модель не задействует весь «мозг» сразу, а выбирает нужные участки под конкретный шаг ответа. Поэтому такие модели часто быстрее и дешевле в работе, чем плотные модели похожего общего размера.

Плотные модели — те, у которых задействуется сразу весь «мозг».

При этом MoE-модель не обязательно глупее плотной модели. Плотные модели используют все параметры на каждом шаге и иногда дают более стабильное качество, но обычно требуют больше ресурсов и отвечают медленнее при том же общем размере.

Если в названии дальше есть приписки вроде FP4, FP8, Q4_K_M, GPTQ, AWQ и похожие, это обычно говорит о формате хранения весов или о квантовании. Модель сжали или перевели в более экономный числовой формат, чтобы она занимала меньше памяти и быстрее запускалась на доступном железе.

Это означает, что «знания» модели обо всём менее точные. Хорошее квантирование мало сказывается на модели, но бесследно не проходит.

У коммерческих моделей всё сложнее, характеристики в названии не пишут, обычно там только версия модели. Например, у «Антропика» пишется название и версия.

Название указывает на размер, а версия — на «версию методики обучения». Самая умная и большая на сегодняшний момент — «Фейбл 5», менее умная — «Опус 4.8» и самая простая — «Соннет 5».

Конечно, когда платишь деньги за использование модели, стараешься исполнителя подобрать под задачу, всё как в обычной работе, поэтому всегда использовать самую умную из платных моделей, вроде бы, логичнее всего, но на практике всё упирается в стоимость эксплуатации.

2 комментария

← 1 2 3 4 5 6 7 8 9 →