Я продолжаю изучать механики вокруг LLM. На этом этапе я решил попробовать сделать новую модель с нуля и запустить ее с помощью llama.cpp. Для примера я решил сделать генеративную модель которая умеет генерировать тексты Шекспира. Это по сути классика от Андрея Корпатого. В общем то на пару с GPT это вополне получилось. Я кратко опишу как это работает и полную инструкцию которую сгенерировал GPT приложу как обычно.
1. Вам понадобитса примерно полтора гига и можно обучать как на проце так и на GPU.
2. Вам понадобится настроить llama.cpp как и раньше - плюс настроить pytorch.
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential cmake git wget curl python3 python3-venv python3-pip htop
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install transformers accelerate sentencepiece numpy tqdm safetensors
3. Скачиваем все тексты шекспира в виде одного файла. https://www.gutenberg.org/cache/epub/100/pg100.txt
4. Убираем из файла лишний текст (заголовки всякие)
5. Преобразуем текст в токены (токенизатор в инструкции)
6. Обучаем модель на токенах. Это у меня на GTX 1060 заняло 4 часа.
7. Конвертируем из текущего формата модели (HF называется - папка с бинарем и парой json) в GGUF (это делает тулза из llama.cpp)
8. Квантование модели - смысл в оптимизации. Если по простому, то для обучения нужны float коэффициенты, а для быстрой работы удобнее хранить вместо float пару целых чисел (числитель, знаминатель) - это и есть квантование.
9. Можно запускать llama-cli в неинтерактивном режиме - в режиме генерации - и все работает:
.\build\bin\Release\llama-completion.exe -m C:\models\shk_q4_k_m.gguf -p "To be..." -n 200 -c 256
Это прям модель с нуля. Да простая, да 4 часа. Но все таки прикольно - можно во всем хорошо разобраться.
Попробуйте сами.
Удачи и хорошего вам дня!