MK-61s: обвязка на PicoCalc

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

Решил реализовать заведомо непрактичную, но давно засевшую у меня в голове идею — запустить внутри ретроконсоли «МК-61s» какую-нибудь нейросеть. Наверное месяц крутил эту мысль в голове, но ничего достойного реализации мне в голову не приходило, пока вчера ночью не осенило — надо сделать обвязку («харнесс») для программирования на языке «Электроника МК-61»!

Для этого я выбрал русскоязычную модель «Flourish-3M», у которой около трёх миллионов параметров и попробовал дообучить её на Nvidia B200 синтаксису «МК-61». 

Даже сеть таких скромных размеров в памяти ретроконсоли не поместилась бы, несмотря на то, что я выбрал самую мощную аппаратную платформу, которая у меня есть — «ПикоКалк», поэтому пришлось её квантировать до четырёх бит.

Так же я пробовал сети побольше с квантированием до двух бит, а так же несколько вариантов гибридного квантирования, по соотношению сообразительность/размер выиграла эта конфигурация.

Было использовано 462 листинга, материалы девяти книг и несколько сотен синтетических упраженений. Полученные программы выполнялись в эмуляторе.

На видеокарте NVIDIA B200 запущено три процесса Python, использующих почти всю память GPU.
Процесс обучения нейросети; большая часть памяти занята «Квеном», который помогал корректировать обучение

Чтобы ускорить матричные вычисления, пришлось использовать предвычисленные таблицы — LUT и оба ядра процессора (все остальные процессы в этот момент замирают), разогнанные с 125 до 250 МГц.

Несмотря на все усилия, скорость генерации невелика  — около 4,67 секунды на токен. Математического сопроцессора нет, всё считается ядрами центрального процессора.

На экране консоли отображено число 0,374666 — результат вычисления синуса угла 22 градуса программой, написанной ИИ Flourish-3M специально для калькулятора MK-61.
Игру эта сеть не напишет, ей бы с синусом справиться!

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

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

Комментарии 11

Алексей Сугоняев № 1
А можно просьбу с ошибкой?
Евгений Степанищев автор № 2
Сети дать задание с ошибкой? Ну она ж слабенькая
Алексей Сугоняев № 3
Нет как выглядят ответы с ошибкой, Вы писали что их там больше 50%
Евгений Степанищев автор № 4
А, просто неправильно решает
Алексей Сугоняев № 5
Евгений Степанищев, да вот такой ответ где решение будет не правильным, не осталось примера?
Евгений Степанищев автор № 7
Алексей Сугоняев, Запрос: Вычисли (X+1)*(X+1)

Ответ: FF 01 01 65 10 FF 01 02 12 50
при X = -3 этот код выдаёт -1

(это ответ в токенах)
Dmitry Smirnov № 10
А калькулятор от семико не брал?

А то был хайп, потом разоаьотчики поссорились с сообществом.

Но была попытка римейка

И эмулятор есть
Евгений Степанищев автор № 11
Нет, не брал, да зачем он мне? Я про него читал лет 10 назад, когда музеем вычислительной техники занимался, думал прикупить для музея.