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

Для чего это нужно? Чтобы потратить остаток квоты перед сбросом. Я сегодня узнал о сбросе за три часа, потрачено у меня было всего 11% недельной квоты, за три часа я активировал все свои проекты — переключил на «Астру» с максимальным усилием и скоростью (скорость тоже сказывается на расходе квоты), в итоге перед обещанным сбросом потратил 95%.
Схема работает неидеально, не знаю почему. Квота сбросилась только в 11¹⁰, хотя обещали сбросить на час раньше. У меня на тот момент оставалось 2% квоты, я потихоньку продолжал тратить, хоть темп и сильно сбросил.
МК-61: подводная лодка Феликса Лазарева
Феликс Лазарев — довольно известный в определённых кругах человек, автор эмулятора «emu145», код которого используется во многих других эмуляторах советских программируемых калькуляторов.
В 2012 году он вместе с другими энтузиастами восстановил содержимое ПЗУ процессоров
Недавно в чате по советским калькуляторам с его участием развернулась небольшая дискуссия, и я не упустил возможности узнать, сохранились ли у него
К сожалению, самих программ не сохранилось — Феликс много переезжал, все тетради потерялись. Тогда у меня появилась идея: восстановить по его воспоминаниям сюжет и правила
Выбрали «Подводную лодку», которую Феликс написал примерно в 1985–1986 годах. В вчерашней переписке разобрали управление, расход воздуха, поведение эсминца и устройство экрана. Основной код написал «Сол», затем его оптимизировала и дописала «Астра». Получилось 105 команд
Море занимает восемь позиций: 8 — лодка, Е — эсминец. Справа — воздух. Управление переключателем угловых единиц: Р — погружение, ГРД — удержание глубины, Г — всплытие. На поверхности воздух прибавляется по два за кадр, на трёх глубинах расходуется по 2, 5 и 10. На второй и третьей глубине неподвижная лодка незаметна, но отсидеться там надолго не получится. Задача — выжить.
Несколько скриншотов игрового процесса, думаю любопытно взглянуть будет как вообще играли на таких калькуляторах:




Тут, кстати, есть интересная особенность, про которую я хочу рассказать тем, кто не сталкивался с такими калькуляторами. Все игры для программируемых калькуляторов можно условно разделить на два класса: пошаговые и реального времени.
Первые управляются в диалоговом режиме: вводим значения, подтверждаем, ждём следующего запроса. Для игр реального времени советская мысль придумала приспособить переключатель угловых единиц. Достоинство в том, что его положение при помощи простых формул можно выяснить, не прерывая программу.
Интересный эксперимент, как по мне, «Астра» себя очень хорошо показала в задаче оптимизации программ
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-requests | 4 | 8 | До восьми запросов одновременно |
--max-total-tokens | 262144 (256К) | 1048576 (1М) | Вчетверо больший общий кэш токенов — больше места для параллельных длинных запросов |
--cuda-graph-max-bs-decode | 4 | 8 | Подготовленные CUDA-графы для обработки до восьми запросов с меньшими накладными расходами |
«MK-61s»: область памяти «Ms»
Сегодня утром в группе, посвящённой советским программируемым калькулятором возникло очень интересное обсуждение, которое вылилось в небольшое исследовании и добавления специального режима в ретроконсоль «
Я
Ответ нашёлся в книге Я. К. Трохименко и соавторов «Программируемые микрокалькуляторы. Устройство и пользование» (1990):

В последовательной памяти калькулятора предусмотрена область Ms. Для семейства

Что
При помощи нейросети я связал эти команды с соответствующими участками микропрограммы в ретроконсоли «

Надо упомянуть, что до этой же памяти энтузиасты добирались и без работающих команд обмена — с помощью «пустышек», особых некорректных чисел. Они сбивали поиск служебной метки в кольцевой памяти, заставляя обычные стековые операции обращаться к участкам Ms. Так удавалось сохранять дополнительные числа сверх паспортного количества регистров. Сколько именно зависело от модели калькулятора и самих чисел.
Правда, так можно было сохранить всего несколько цифр, полностью использовать этот участок памяти этим способом невозможно. Да и такой способ работы с ним занимает слишком много команд, в реальной программе его использовать крайне сложно. Одну из статей, описывающих этот способ, можно найти в «Технике — молодёжи», № 7 за 1986 год.
Жаль, что разработчики не довели эту задумку до серии, расширение памяти в полтора раза и обмен регистров — это, думаю, подарок, о котором программисты того времени не могли и мечтать.
ПРОЛ-2: небольшое исследование
Думаю, ожидаемо, что меня заинтересовал язык
На выходных я провёл небольшое исследование, которое уже принесло свои плоды. Я попытался найти людей, которые могли иметь отношение к разработке этого языка, и написал каждому электронное письмо. Ответили два человека, за что им большое спасибо.
Одна из них — Татьяна Алексеевна Полилова, ведущий научный сотрудник Института прикладной математики им. М. В. Келдыша РАН, — даже прислала мне две брошюры по системе САПО ПРОЛОГ (это другой ПРОЛОГ, не имеющий отношения к логическому языку программирования).
Я ещё не успел детально изучить эти материалы, но, кажется, они косвенно подтверждают мою версию о назначении конструкции 1T. Не могу сказать, что теперь уверен в этом на 100%, но, похоже, она действительно выделяет некие такты, отведённые для работы процессов.
Ниже я привожу цитаты из брошюры «Средства отладки в инструментальной системе




99 бутылок: ПРОЛ-2
Иван Черняков, которого я консультировал в процессе создания фильма о программируемом калькуляторе «Электроника
«Буран» решал задачу многоразового возвращаемого орбитального корабля: вывести аппарат на орбиту, доставить людей или груз, выполнить работу в космосе и вернуть корабль на Землю для потенциального повторного использования.
В фильме упомянуты несколько
Разумеется мне немедленно захотелось найти хоть
Итак, судя по сохранившемуся тексту, «ПРОЛ‑2» — императивный язык управления для системы реального времени. Современному программисту его запись напомнит Паскаль: присваивание :=, блоки НАЧАЛО и КОНЕЦ, явно объявляемые типы, условия и циклы, но с русскими ключевыми словами.
Помимо обычных вычислений язык поддерживал процессы и исполнителей, выдачу команд оборудованию, ожидание событий, паузы и обработку прерываний. Характерная особенность — в объявлениях нелокальных переменных отдельно перечислялись процедуры, которым разрешалось их читать и изменять: ограничения доступа входили непосредственно в описание данных.
Вот какая «песня» у меня получилась:
% ПЕСНЯ О ПИВЕ. НАПИСАНА СТЕПАНИЩЕВЫМ Е. В. HTTPS://BOLKNOTE.RU
МОДУЛЬ ПИВО ТЕСТ;
ПРОЦЕСС ПИВО;
ПЕСНЯ:1T;
КОНЕЦ
ИСПОЛНИТЕЛЬ ПЕСНЯ;
N:ЦЕЛ(0..99);
НАЧАЛО
N:=99;
<<КУПЛЕТ>>
ПЕЧАТЬ(/,N,' БУТЫЛОК ПИВА НА СТЕНЕ',/);
ПЕЧАТЬ(N,' БУТЫЛОК ПИВА!',/);
ПЕЧАТЬ('ВОЗЬМИ ОДНУ, ПУСТИ ПО КРУГУ',/);
N:=N-1;
ПЕЧАТЬ(N,' БУТЫЛОК ПИВА НА СТЕНЕ!',/);
ЕСЛИ N>0 ТО НА КУПЛЕТ;
ПЕЧАТЬ(/,'НЕТ БУТЫЛОК ПИВА НА СТЕНЕ!',/);
ПЕЧАТЬ('НЕТ БУТЫЛОК ПИВА!',/);
ПЕЧАТЬ('ПОЙДИ В МАГАЗИН И КУПИ ЕЩЁ,',/);
ПЕЧАТЬ('99 БУТЫЛОК ПИВА НА СТЕНЕ!',/);
ВЫЙТИ ПЕСНЯ;
КОНЕЦ
Почти все строки, думаю, понятны, я бы только одну строку прокомментировал — ПЕСНЯ:1T. Эту конструкцию я перенёс из найденного листинга, но что она точно значит, я сказать не могу. Похоже на выделение тактов для выполнения параллельных подпрограмм. Но так ли это, пока неизвестно.
«ГПТ-6 Астра»
Вышла версия
Сложность здесь заключается в том, что память этого калькулятора была крайне ограничена — всего лишь 105 байт, и опытные программисты ухитрялись размещать туда относительно сложные программы, применяя разные хитрости и используя специфические аппаратные особенности устройства.
Сейчас у меня есть две программы, которые пока не удалось успешно оптимизировать — это игры
Версия «Астра» пока за световой день не смогла справиться с задачей, но ещё ночь впереди — посмотрим. Хотя, кстати, она уже обнаружила пару ошибок, допущенных предыдущей версией нейросети. Впрочем, ничего удивительного тут нет — в моих экспериментах нейросети сами часто выявляют собственные ошибки.
«Стюарт Блум не смог спасти вселенную»
Посмотрел первые семь серий нового сериала «Стюарт Блум не смог спасти вселенную» — остальные пока не вышли. Начиналось очень бодро, но, честно сказать, стало уже скучновато, и даже интрига в конце последней на данный момент серии не спасает. Не то чтобы до зевоты скучно, просто повествование забуксовало.
В титрах шестой серии меня немного развлёк коврик со скрытым посланием, но, к сожалению, его довольно легко расшифровать, хотя бы rot13 могли бы сверху добавить или
Сериал, конечно, довольно проходной, да и сюжет отчасти слизан с сериала девяностых «Скользящие», но очень хочется, чтобы последние три серии оставили приятное послевкусие,

Как идёт разработка движка блога
Ожидания у меня, конечно, были примерно такие: за
Реальность оказалась совсем другой. Каждый элемент на экране приходится многократно передвигать
Очень сильно помогает, что я его себе поставил — так гораздо проще понять что нужно доделывать сразу, а на что можно обратить внимание когда основное будет сделано. Например, оказалось, что вопросы кеширования и производительности надо решать не откладывая.
Решил, что торопиться не буду, пусть идёт в своём темпе, так что когда будет выпуск первой версии, пока не скажу. Думаю, через 2—4 недели, примерно так.
'

MK-61s: новый экран
В прошлый раз он вообще не запустился — на старте не подавал никаких признаков жизни. Ждал я его из Китая очень долго, специально подготовил прошивку, да и деньги потраченные жалко… Разочаровался, конечно, но отправил на тестирование коллеге, вдруг получится разобраться, в чём проблема.

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

«МК-61s»: новые команды
Меня тут один читатель натолкнул на идею рассказать вот о чём.
Что можно было бы дёшево улучшить
Под улучшением я тут подразумеваю
Ретроконсоль «
Позже в одном из эмуляторов появился и ответ на вопрос, заданный в начале этой заметки.
Позже Сергей Фролов провёл эксперимент и, как результат, в некоторые эмуляторы были добавлены семь дополнительных ячеек памяти и дополнительный регистр f. Казалось бы, не бог весть что, но не в том случае, когда доступно всего 105 ячеек.
Я разобрал очень много оптимизаций для своего другого проекта — языка высокого уровня
Так что семь байт и ещё один регистр — это очень большое подспорье.
В «
Дополнено 22 августа: оказывается, эксперимент провёл не Сергей Фролов. Статью я напишу позже. Мне сегодня сделали операцию, отхожу, ещё и горло заболело
«0W-Tube»: 0.7.3
Неделю назад выпустил новую версию «
На таких видеохостингах валяется куча всякого мусора, но бывают и фильмы. Чтобы отличить одно от другого, я оставляю в результатах только полнометражные видеофайлы.
Не буду утверждать, что PeerTube даёт
«МК-61s»: новый экран
Дошёл сегодня новый экран для ретроконсоли «
Купил WEH001602AGPP5N00100: у него есть оба режима — более простой
Сегодня экран от него доехал до меня, но не заработал — не подаёт никаких признаков жизни. Мы попробовали отладить его дистанционно, я даже в одном месте припаял другое питание, но всё тщетно.
Он, судя по статьям, вообще довольно проблемное устройство, на «Хабре» есть несколько статей, ему посвящённых. Мы их с нейросетью проштудировали и заранее подготовили прошивку с обходом всех известных проблем. Жалко не помогло. Впрочем, он может оказаться просто неисправным. Чтобы проверить, нужна «Ардуинка», а у меня её нету.
Отправил экран обратно, тому же сокоманднику, который мне контакты паял, у него всё есть, посмотрим, жив ли экран или просто не подходит.
«Sarcophagus»: многопользовательский режим
Дочка всё хотела присоединиться ко мне в «Саркофагусе» — играла сначала рядом на своём ноутбуке, а потом стала проситься ко мне в игру. Ну что мне, жалко что ли? Два дня работы нейросети и два вечера тестирования и появилась вполне рабочая версия многопользовательской игры. Двухпользовательской, если быть точным.
Играть можно только в паре и только в локальной сети. Второй игрок именуется «призраком» (поэтому он такой белый) и входит в чужой мир только с разрешения хозяина. «Призрак» может делать то же, что и основной игрок, но взаимодействовать между собой, по сути, не могут — проходят друг сквозь друга и не разговаривают.
Чтобы подключиться нужно запустить две копии на разных устройствах, одному из игроку загрузить мир, а второму — дождаться обнаружения «астральной связи», установить которую можно нажатием клавиши «J».
Распознаватель «Тессеракт»
При помощи нейросети протестировал пятую версию «Тессеракта» — проекта с открытым исходным кодом для распознавания текста. Тестировал на двух скачанных книжках, текст которых был переведён в картинки и искусственно зашумлён.
Мы до сих пор используем четвёртую версию, и у меня была надежда, что в пятой версии режим rus+eng, в котором одновременно распознаются русский и английский тексты, работает не так отвратительно, как в предыдущей версии.
Надежда не оправдалась. «Пятёрка» по качеству в этом режиме даже уступает «четвёрке», хотя во всех режимах работает значительно быстрее.
«МК-61s»: класси́к
Когда я только присоединился к проекту разработки ретроконсоли «
Позже оказалось, что только экранов может быть три разновидности, одна из которых даже имеет графический режим. Чтобы посмотреть как всё на нём смотрится, мне пришлось сделать его эмуляцию, которая транслирует видео ретроконсоли в приложение, запущенное у меня на ноуте.
К сожалению это не даёт понимание как в точности будет выглядеть изображение на реальном экране. А это мешает мне всерьёз заняться шрифтами графического режима — я совсем не уверен, что в жизни всё будет так же хорошо, как на моём виртуальном экране.
И вот, наконец, ко мне едет образец с графическим экраном, плюс заказанный графический двухстрочный экран для той консоли, которая у меня на руках — хочу побаловаться с графическим режимом и там тоже.
«Sarcophagus»: доделки
Дочка в выходные иногда приходила ко мне в кабинет посмотреть, как я прохожу игру «Саркофагус»: проверить, везде ли всё переведено на русский и нет ли
Сначала ей было лишь немного любопытно, но когда я начал прокапываться вниз, а потом ещё и строить себе жилище из скрафченных блоков, семя слабенького интереса упало на благодатную почву,
Сегодня она принесла ко мне свой ноутбук и попросила поставить ей «ту игру, где из блоков строить можно». Поставил, только в исходниках
Пока я играл, дочка тоже времени не теряла: разровняла себе площадку под будущий дом и попробовала сделать бассейн из природного озерца, но разлила воду, потому что случайно снесла одну из стенок.
Игру я потихоньку дополировываю. Поправил всякие мелочи,
Игра «Sarcophagus»
В десятые годы Дима Смирнов, известный на заре интернета блогер, увлёкся игровым дизайном. В тот момент, насколько я помню, он выпустил несколько карточных игр и пару компьютерных.
Тогда я почти перестал его читать: игровой дизайн мне был неинтересен. Тем не менее иногда я всё же заглядывал к нему в блог. Он человек талантливый, кроме того, мы
В 2019 году он выпустил игру «Саркофагус». Мне очень хотелось поиграть: понравилась идея, но, к сожалению, не вышло. Игра на английском, а моего уровня и сейчас не хватает, чтобы играть в неё комфортно. За прошедшие годы я сделал две попытки, но быстро грустнел от обилия незнакомых слов.
Я вообще мало во что играю, иногда паузы длятся годами, поэтому не то чтобы я сильно страдал от невозможности в неё поиграть. Но недавно подумал: почему бы не перевести её на русский при помощи нейросетей?
Попутно пришлось поправить ещё несколько багов. Наверное, нашёл пока не все, но не скажу, что это
Сама игра — симулятор жизни бессмертного чувака, который ходит по подземельям, населённым разными тварями, сражается с ними, собирает всякое, из чего можно крафтить различные предметы.
Я не так далеко прошёл, но по скриншотам на сайте игры понятно, что дальнейшая перспектива — крепкое хозяйство: огородик,
Подробного описания у игры нет, но так и задумано. Смысл как раз в том, чтобы искать, экспериментировать и выяснять как всё работает.
Если хотите поиграть, локализованную версию с исправлением багов можно скачать из моего репозитория, там же есть небольшое описание на двух языках.