Комментарии 5
Исходный код: https://github.com/virex-84/LLMGPT2
Добавил выбор всех доступных "ускорителей" на выбор при запуске программы: CPU, OpenCL, CUDA.
Скрытый текст

Анализ корпуса - показывает какую модель можно сделать на основе данного корпуса.
Скрытый текст

Так же добавил авто-конфигуратор модели: конфигурация модели создается исходя из текущего корпуса.
Ну и собственно все классы были оптимизированы для ускорения обучения.
Два чая этому господину :-)
Это же просто модель, которая выучила все немногочисленные диалоги?
Если что то вне этих диалогов задать то будет необъяснимый набор букв в ответе?
Это реализация gpt-2 архитектуры использующая для обучения OpenCL (CUDA, CPU), с возможностью экспорта в gguf. Для наглядности была выбрана минимально возможная конфигурация, что бы любой мог повторить обучение с нуля на своем железе. Вне этих диалогов будет мусор.
Но никто не мешает вам увеличить конфигурацию и корпус, и получить более осмысленную модель.
З.Ы. на github кто-то уже попробовал обучить микро модель на Nvidia RTX 3090, через CUDA.
Исходный код: https://github.com/virex-84/LLMGPT2
Добавил выбор всех доступных "ускорителей" на выбор при запуске программы: CPU, OpenCL, CUDA.
Скрытый текст

Анализ корпуса - показывает какую модель можно сделать на основе данного корпуса.
Скрытый текст

Так же добавил авто-конфигуратор модели: конфигурация модели создается исходя из текущего корпуса.
Ну и собственно все классы были оптимизированы для ускорения обучения.
Очень круто! Это поймёт тот, который проделал подобный путь.
Увидел Вашу следущую за этой статью и попал сюда.
Про RustGPT я тоже узнал и решил попробовать. (Даже для этого прочитал несколько книг по Rust, многому научился.)
Еще были форки у проекта, например: https://github.com/ryancinsight/RustGPT Было у него здорово, но под конец он запутался в куче всего.
Но авторы их забросили. Спустя время, я понял, почему...
В общем, хотя я смог находить физические адреса в памяти, где "сидит" модель, но на Rust было сложно.
Начал делать на языке C. Он мне "роднее".
Мне нужно (почти всегда) докопаться до основы, Поэтому начал с самого-самого малого.
Получилось с генерацией имен из букв, как у Андрея Карпаты.
Запустил на Raspberry Pi на "голом железе".
Кстати, на Rust и Python работает очень медленно, по сравнению с C. Например, у Карпаты на его Macbook с M4 (кажется) обучение было за минуту, На Raspberry Pi Zero 2W - 6 секунд.
Rust тоже "тормозил" нещадно.
Цель такая - сделать некоторую микроштуку, чтобы можно было с ней слегка общаться.
Монолитные модели не привлекают, поэтому сразу ориентировался на обучение "на лету".
То есть, вводим предложение, обучаем, модель потом уже знает эти данные. Словарь тоже можно дополнять в диалоге.
Кстати, Microsoft тоже задавалась вопросом о "минимальности" модели. Загнали Tiny Stories (сказки) в модель ~ 10 Мб.
Еще что - тут пишут, что модель будет знать только то, чему ее обучили. Но хотелось бы это немного дополнить.
Модель может "обобщать", это - один из критериев правильной работы.
Наппример, в исходных данных есть строки:
cat tom
tom cat
he tom
he cat
cat drinks milk
cat eats mouse
dog maga
maga dog
she maga
she dog
dog drinks water
dog eats meat
Кот (самец) по кличке Том пьет молоко и ест мышь
Собака (самка) Мага пьет воду и ест мясо
Причем написано, что кот ест и пьет, и что собака ест и пьет.
Модель выдает, что "он" (или "Том") пьет молоко, а "она" ( или "Мага") пьет воду.

Видно время обучения, косинусное сходство между "он" его кличкой, котом, собакой и ее кличкой. И про "нее" тоже. Потом модель делает инференс про "молодую девочку".
Программа ~ 71 Кбайт, текст - 500 строк.
Потом добавил настройку по инструкциям, Страны, города, столицы стран и животные из стран.
Capital of England | London
Capital of France | Paris
Capital of Italy | Roma
Это - образцы, символ "|" - разделитель инструкции (не участвует в обучении) и правильного ответа модели (обучается).
По этому шаблону из трех строк модель потом понимает и выдает столицы других стран. И животных из них. Причем, достаточно всего 64 строк обучающего текста!
В исходном RustGPT работает, мягко говоря, неправильно, не проводит аналогий.
Спасибо Вам и удачи!
P.S. Рабаотать с текстом на Хабре слегка непривычно, поэтому огрехи

Обучение LLM с нуля на c# и экспорт в GGUF. OpenCL против CUDA