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-графы для обработки до восьми запросов с меньшими накладными расходами |
МК-61: подводная лодка Феликса Лазарева
Феликс Лазарев — довольно известный в определённых кругах человек, автор эмулятора «emu145», код которого используется во многих других эмуляторах советских программируемых калькуляторов.
В 2012 году он вместе с другими энтузиастами восстановил содержимое ПЗУ процессоров
Недавно в чате по советским калькуляторам с его участием развернулась небольшая дискуссия, и я не упустил возможности узнать, сохранились ли у него
К сожалению, самих программ не сохранилось — Феликс много переезжал, все тетради потерялись. Тогда у меня появилась идея: восстановить по его воспоминаниям сюжет и правила
Выбрали «Подводную лодку», которую Феликс написал примерно в 1985–1986 годах. В вчерашней переписке разобрали управление, расход воздуха, поведение эсминца и устройство экрана. Основной код написал «Сол», затем его оптимизировала и дописала «Астра». Получилось 105 команд
Море занимает восемь позиций: 8 — лодка, Е — эсминец. Справа — воздух. Управление переключателем угловых единиц: Р — погружение, ГРД — удержание глубины, Г — всплытие. На поверхности воздух прибавляется по два за кадр, на трёх глубинах расходуется по 2, 5 и 10. На второй и третьей глубине неподвижная лодка незаметна, но отсидеться там надолго не получится. Задача — выжить.
Несколько скриншотов игрового процесса, думаю любопытно взглянуть будет как вообще играли на таких калькуляторах:




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