Обработка показывает, как языковая модель осваивает язык: внутри неё лежат двенадцать стадий обучения одной и той же модели, и один ваш вопрос задаётся каждой стадии по очереди. Результат читается таблицей сверху вниз.
Никакого интернета, ключей и обращений наружу. Модель целиком лежит внутри файла обработки и считается процессором вашей машины. Код открыт.
Что она делает
Прогнать по всем шагам. Главная кнопка. Вводите вопрос, получаете таблицу: шаг обучения, потеря на этом шаге, ответ этими весами и время счёта. На нулевом шаге модель выдаёт случайные буквы, на последнем отвечает по делу, а между ними видно, в каком порядке она осваивает язык.
Что внутри. Размеры модели, число параметров, сколько снимков лежит в файле. Числа одинаковы на всех шагах, и это главное наблюдение: обучение не меняет ни размер модели, ни её устройство, меняются только значения в таблицах.
Сравнить веса двух шагов. Насколько числа разъехались между первым и последним снимком и сколько работы пришлось на хвост обучения.
Как обучить свою. Вторая закладка формы: что поставить, как править набор пар вопрос-ответ, как положить свои веса в обработку и почему обучение идёт не внутри 1С. Цена обучения на встроенном языке посчитана прямо в обработке из размеров модели и замеренной скорости счёта, поэтому пересчитается сама, если модель заменить.
Какую задачу это закрывает
Прямой пользы в учётной работе никакой. Это демонстрация принципа для тех, кому надоело слышать про нейросети общими словами и хочется посмотреть, из чего они устроены, на знакомом языке и на своей машине.
Практический выход всё же есть, и он в понимании границ. Посмотрев, как модель на промежуточных шагах уверенно выдаёт имена методов, которых в платформе нет, вы будете иначе читать ответы больших моделей про ваш код.
Что внутри технически
Трансформер, посчитанный с нуля на встроенном языке: только массивы, соответствия и циклы. Без внешних компонент, без ONNX, без HTTP и без Native API.
- 21 984 числа, ужатых до одного байта каждое;
- два слоя, две головы внимания, размер вектора 32;
- алфавит 37 символов, контекст 96 символов;
- двенадцать стадий обучения: шаги 0, 50, 100, 200, 350, 500, 800, 1 200, 2 000, 4 000, 8 000 и 12 000;
- обучающий набор - 40 пар вопрос-ответ, ответом служит имя из платформы.
Веса каждой стадии лежат отдельным двоичным макетом внутри файла, поэтому обработка самодостаточна: класть рядом ничего не надо.
Как пользоваться
Открыть обработку, ввести вопрос в поле и нажать "Прогнать по всем шагам". Один прогон по всем двенадцати стадиям занимает около минуты: модель считает ответ посимвольно, и каждый символ стоит десятки тысяч умножений.
Модель знает только строчные русские буквы, пробел, точку, двоеточие и знак вопроса. Остальные символы она физически не видит, они просто выбрасываются.
Самое интересное получается, когда спрашиваешь то, чему её не учили: отказываться она не умеет и отвечает всегда, с той же уверенностью, что и на знакомый вопрос.
Ограничения, названные честно
- Модель зазубрила сорок фраз. Отложенной выборки нет, полезных ответов ждать не стоит.
- Ответ считается секунды, а не миллисекунды: это чистый встроенный язык без всякой оптимизации под матричную арифметику.
- Обучение внутри 1С не сделано и сделано не будет. Один шаг обучения стоил бы около шести минут, весь прогон - пятьдесят одни сутки.
- Скорость заметно зависит от того, включена ли отладка на сервере: разница почти двукратная.
Проверено
Платформа 8.3.27, клиент-серверный вариант. На файловой базе не проверял, но обработка не обращается ни к базе, ни к сети, поэтому разницы быть не должно. Прикладных объектов конфигурации она не касается вообще, так что конфигурация любая.
Ответы обработки сверены с журналом обучения посимвольно: на десяти стадиях из двенадцати текст совпал буква в букву, на двух разошёлся из-за того, что веса ужаты до байта. Протокол сверки лежит в исходниках.
Частые вопросы
Это работает без интернета? Да, целиком. Обработка никуда не обращается, весь расчёт идёт на вашей машине.
Можно обучить её на своих данных? Да, инструкция лежит на второй закладке формы. Нужен Python и две библиотеки, обучение занимает около четырёх минут на обычном ноутбуке, готовые веса кладутся в макеты обработки через конфигуратор.
Почему ответы такие короткие и странные? Потому что модель в двадцать четыре килобайта. Для осмысленных ответов нужны миллиарды параметров, и считаться они будут часами.
Будет ли версия под обычные формы? Если попросят в комментариях, сделаю.
Разбор того, что происходит внутри между стадиями, - в статье-паровозе к этой обработке.
Вступайте в нашу телеграмм-группу Инфостарт