Как дообучить LLaMA бесплатно и без программирования: как создать тупого друга
Прошло уже около полугода как Meta* случайно слили свою языковую модель LLaMA. А недавно они сами выложили в открытый доступ ее 2-ую версию. Для понимания масштаба — на обучение Meta* потратили более 3 311 616 GPU часов. Это примерно 378 лет работы одной мощной видеокарты. В этой статье я расскажу как я смог бесплатно и без мощного железа дообучить LLaMA на диалогах с друзьями в ВК, чтобы сделать чат бота, который копирует наш стиль общения, оживляет разговор в чате и просто пишет странные и смешные вещи. В статье будет мало терминов, тут я простым языком расскажу как вы можете обучить большую языковую модель.
Те, кто интересовался темой языковых моделей, уже, наверное, знают, что первую версию llama энтузиасты почти сразу после слива оптимизировали для работы на обычных процессорах и на нейроускорителях Apple, которые стоят в их процессорах. При этом на M1 процессоре LLaMA стала работать очень быстро, выдавая более 10 токенов(токен — это слово, часть слова или буква) в секунду, это быстрее чем бесплатный ChatGPT на тот момент. Еще через пару недель ее дообучили ребята из Стэнфорда, чтобы она понимала концепцию вопрос-ответ и могла давать ответы и выполнять задачи.
Что потребуется для запуска нейронки
Есть две версии модели: LLaMA и LLaMA 2. LLaMA есть в размерах 7B, 13, 30B, 65B, LLaMA 2 — в размерах 7B, 13B и 70B. 7B весит примерно 13 гб, 65B — 120 гб. Но не торопитесь ужасаться, во-первых, как я уже писал, ее можно запустить не только на видеокарте, она хорошо работает и на процессоре, а во вторых, для запуска на обычных компьютерах применяют квантизацию (quantization) — это сжатие всех весов нейронов. В оригинальной версии вес каждого нейрона 16 бит, но их сжимают до 8, 4 и даже до 2 бит. Чаще всего используют сжатие до 4 бит, LLaMA 7B при таком сжатии весит 3.9 гб и требует немного больше 4 гб оперативной памяти и обычный процессор.
Что будем обучать и что потребуется
В данной статье я покажу как я дообучал LLaMA 7B и LLaMA 2 7B. Если готовы заплатить за аренду видеокарт, то можете обучить и модели покрупнее. Обучение будем проводить для нейронки в оригинальном размере (16 битовые веса), создав Lora модуль (не буду тут рассказывать, что это, если вкратце, то это алгоритм обучающий лишь несколько дополнительных слоев для нейросети, которые корректируют ее работу, это намного менее требовательно, чем полное дообучение). Для этого пока обязательно нужна видеокарта, то есть нужно около 15 гб видеопамяти.
На этом можно было бы остановиться, подумав, что за такое железо точно придется платить. Но пока изучал эту тему, я увидел, что один парень на гитхабе написал о возможности запустить обучение бесплатно на Google Colab. Честно говоря, я был в шоке, когда понял что google совершенно бесплатно дает доступ к машине с 13.6 гб оперативки, с Nvidia Tesla T4 на 16 гб видеопамяти, около 78 гб хранилища и очень быструю сеть (скорость загрузки нейросети там доходила до 200 мегабайт в секунду). Конечно всю эту радость дают не навсегда, а на неопределенный срок, и отнять это могут в любой момент. У меня получалось обучать по часа 4.
Данные для обучения
Для обучения я взял историю диалога с друзьями в ВК. В ВК можно получить по запросу все данные о себе, которые у них есть, в том числе истории всех переписок. Чтобы подготовить полученные данные, я воспользовался первым попавшимся на github репозиторием для парсинга сообщений в бэкапе вк и сделал форк с изменениями для создания датасета. Через код в Jypyter вы сможете получить json файл с датасетом для обучения.
Обучение
Для обучения можно воспользоваться этим проектом, я сделал от него форк, добавив шаблон для обучения на простом тексте (оригинальный репозиторий имеет шаблоны только для обучения концепции вопрос-ответ). Вот мой форк и вот проект которые вы можете запустить в гугл колабе, он подтянет мой форк. В первых нескольких полях вы можете поменять папку на Google Disk, куда будут сохраняться результаты обучения, нужно не меньше 300 мб. Также можете вместо модели «sharpbai/Llama-2-7b-hf» выбрать другую, например llama 7b первой версии (decapoda-research/llama-7b-hf), найти вы их можете на huggingface. Лучше всего брать те, которые разбиты на множество файлов (такие требуют меньше памяти при загрузке). Те, что не разбиты, не всегда загружаются на бесплатном google colab (требуется больше памяти).
Пакеты не всегда ставятся сразу в виртуальной машине, не стоит пугаться, иногда требуется нажать Runtime -> Restart runtime. На второй раз пакеты ставятся успешно.
После того как языковая модель скачается и загрузится в память, вы можете воспользоваться веб интерфейсом, чтобы настроить параметры обучения.
Ссылка будет выведена в формате: Running on public URL: https://.
Сразу можете переходить во вкладку Fine tuning, в поле Template выставлять «my_sample», в поле Format «JSON Lines». my_sample — это тот простой шаблон промптов, который я добавил, в нем нет ничего кроме input и output. Далее нужно либо скопировать содержимое файла датасета, либо открыть его, скопировав на машину google colab.
После можете посмотреть превью данных для обучения во вкладке Preview. Еще на этой вкладке браузер меньше тупит, не пытаясь отобразить все данные для обучения.
Остается только выставить параметры обучения, в целом можно оставить по умолчанию, но вот поля, которые я менял:
Max Sequence Length — Влияет на максимальную длину текста в наборе датасета. Все данные из датасета, длина которых превышает эту, не будут использоваться в обучении. (На русском почти всегда длина это количество букв). Очень большое число может привести к переполнению памяти на бесплатной машине.
Train on Inputs — Эту галочку лучше поставить, чтобы модель обучалась и на input тексте, и на output.
Micro Batch Size — Грубо говоря, указывает количество данных, которое берется для обучения за раз. Очень большое число может привести к переполнению памяти на бесплатной машине. Я оставлял в основном 8.
Gradient Accumulation Steps — Не разбирался как работает, но я поднимал до двух. Судя по описанию, ускоряет обучение, как и Micro Batch Size, но не увеличивает потребляемый объем памяти.
Epochs — Количество эпох обучения. Можно смело ставить больше, все равно остановим обучение руками, или гугл сам остановит машину часа через 4.
Learning Rate — Коэффициент обучаемости, влияет на скорость, но слишком большой может привести к плохому обучению, я оставлял 0.0003.
Saved Checkpoints Limit — Максимальное число чекпоинтов, ставьте побольше.
Steps Per Save — Количество шагов перед сохранением бэкапа. Ставьте 200-300, чтобы почаще сохраняться и меньше терять в случае отключения машины гуглом.
LORA Model Name — Название папки на гугл диск, в которую будут сохраняться бэкапы.
Позже еще понадобится раздел Continue from Model для продолжения обучения с последнего чекпоинта.
В процессе обучения вы будете видеть примерно такой график. Я обычно дожидался ошибки примерно до 1.1. Дольше у меня не хватало терпения).
Теперь, зная как можно бесплатно дообучить llama, вы можете создать тупого бота симулирующего участника в диалоге с друзьями, он, конечно, не будет кидать мемы и понимать глубокий смысл, но может поугорать за компанию или написать тупую шутку. Можно попробовать сделать что-то и посерьезнее, например, ПО системы для написания ответов на письма или откликов на фриланс бирже. Применений может быть много, но стоит понимать что LLaMA 7B все же плоховата в работе с русским, так как мало его учила.
Спасибо больше за внимание, надеюсь статья была для вас полезна!
Я выложил пару сравнений работы дообученной и простой llama 2 7B в телеграм канале, который недавно создал, буду стараться там регулярно выкладывать интересные мысли про программирование, нейросети и информационную безопасность.
Также выложу там инфу про то, как я поднял llama на raspberry pi для бота в телеграмме.
How to run LLAMA on Windows 11
Today, we’re going to run LLAMA 7B 4-bit text generation model (the smallest model optimised for low VRAM). I’ll try to be as brief as possible to get you up and running quickly. I’m assuming you have Nvidia graphic card with CUDA support, but it’s also possible to run on AMD cards and on CPU only (people have it running even on Raspberyy Pi), you just need specific PyTorch version. But enough words, let’s start.
Steps
-
and install Visual Studio Build Tools, we’ll need it to build 4-bit kernels PyTorch CUDA extensions written in C++. Select checkboxes as shown on the screenshoot below:
- Install miniconda
- Go to Start menu and launch x64 Native Tools Command Prompt for VS
- Now we need to enable conda in the opened command prompt window. For that, execute the following command:
where $USERNAME is your Windows user name.
- Go to the desired directory when you would like to run LLAMA, for example your user folder
- Create and activate conda environment
- Install git
- Install Cuda Toolkit 11.7
- Install PyTorch
- Clone Oobabooga text generation web UI git repository
- Go inside the cloned directory and create repositories folder
- Clone GPTQ-for-LLaMa git repository, we’ll need it to run 4-bit model
- Now the hardest part. We’re going to build 4-bit CUDA kernels with C++ compiler. Here I run into tricky issue I was fighting quite much time. The thing is that after compiling sources we need to use linker to complete the build and it turned out that there are two link.exe files: the linker’s one and link.exe in miniconda enviroinment directory that emulates link Linux command. Keeping that in mind, we can just rename miniconda’s link.exe and avoid “substitution”. Go to the Library\usr\bin\ of llama env and rename link.exe to link2.exe as on the picture below
- Now let’s build CUDA 4-bit kernels
- Go back to the text web ui root folder
- It’s time to get the model weights
- We also need a pre-converted 4-bit model. Download llama-7b-4bit.pt file and place it into models folder. Here’s how it should look:
- Run the web UI
- Open UI in the browser by clicking on URL in the terminal window
Bonus step: run in chat mode
If you prefer ChatGPT like style, run the web UI with —chat or —cai-chat parameter:
Wrapping up
That’s it! Now you can dive in and explore bigger models and 8-bit models. Please see links in the references section for further readings.
Как бесплатно, без регистрации и VPN пользоваться GPT-4, LLaMa-2, DaVinci в одном приложении на ПК
Это единственный метод, который мне понравился в работе с ChatGPT-4, ибо OpenAI задолбали блокировать мои аккаунты. Проблемы есть, но терпимые и не критичные.
В этой статье вы узнаете, как бесплатно и без регистрации, в удобном интерфейсе и с подобранными надстройками пользоваться всеми перечисленными в заголовке языковыми моделями.
Когда я нашел этот способ, то у меня был лишь один вопрос: почему я не пользовался этим раньше? А действительно, почему? Да просто не хотелось снова копаться в файлах запуска и искать нужные сервисы, чтобы подрубиться к ним по api.
Но сегодня у нас с вами не будет этих проблем, ибо я расскажу все последовательно и понятным языком.
Недостаток сборки, кстати, состоит в том, что режим работы моделей через интернет работает через раз, а контекст при его активации сбрасывается. Зато ChatGPT-4 в стандартном оффлайн-режиме фурычит просто отменно!
Спасибо разработчику, который модифицировал данное решение для людей и поддерживает его работоспособность.
dalai — Самый простой способ запустить LLaMA на вашем локальном компьютере
Большая языковая AI-модель LLaMA, которая может поспособствовать исследователям и разработчикам исправить и улучшить AI-инструменты, для избежания в будущем « возможности создания дезинформации, токсичности и предвзятости».
Установка данной программы на Мак
Шаг 1. Установите node.js >= 18 ( Если на вашем Mac еще не установлен node.js, обязательно установите node.js >= 10 )
Шаг 2.1. Установить модели
В настоящее время поддерживаются двигатели llama и alpaca.
Для добавления alpaca (пока что есть только модель 7B) :
Для загрузки модели llama вы можете запустить:
npx dalai llama install 7B 13B
Теперь перейдите к шагу 3.
Шаг 2.2. Устранение неполадок
Обычно вам не нужен этот шаг, но если выполнение приведенных выше команд ничего не делает и сразу завершается, это означает, что что-то пошло не так, потому что некоторые из необходимых модулей не установлены в вашей системе. В этом случае попробуйте выполнить следующие действия:
1. Установите homebrew, если он не установлен на вашем компьютере, используя инструкцию (https://brew.sh/) или запустив:
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
2. После установки homebrew установите следующие зависимости:
brew install cmake
brew install pkg-config
3. На всякий случай, можно обновить NPM:
Теперь вернитесь к шагу 2.1 и попробуйте снова запустить команды npx dalai.
Шаг 3. Запустите веб-интерфейс. Выполните следующую команду, чтобы запустить сервер веб-интерфейса:
затем откройте http://localhost:3000 в своем браузере. Готово.
Установка данной программы на Windows
Шаг 1. Установите Microsof Visual Studio перед установкой Dalai.
ВАЖНО. При установке Visual Studio обязательно выделите 3 параметра – Python development, Node.js development, desktop development with C++
Шаг 2.1. Установить модели
ВАЖНО. В Windows обязательно запускайте все команды в cmd. НЕ запускайте в powershell, так как он имеет излишне строгие разрешения и делает сценарий неработоспособным.
В настоящее время поддерживаются двигатели llama и alpaca.
Для добавления alpaca (пока что есть только модель 7B) откройте свое cmd и введите:
Для загрузки модели llama откройте свое cmd и введите:
npx dalai llama install 7B 13B
Шаг 2.2. Устранение неполадок (необязательно)
Если описанные выше шаги не увенчались успехом, попробуйте установить Node.js и Python отдельно. После этого откройте PowerShell и введите “python”, чтобы увидеть, существует ли приложение. А также введите “node”, чтобы увидеть, существует ли приложение. Убедившись, что они оба существуют, попробуйте еще раз.
Шаг 3. Запустите веб-интерфейс. Выполните следующую команду, чтобы запустить сервер веб-интерфейса (убедитесь, что вы запускаете его, cmdа не PowerShell!):
затем откройте http://localhost:3000 в своем браузере. Готово.
Установка данной программы на Linux
Шаг 1. Вам необходимо убедиться, что у вас установлены правильные версии Python и Node.js.
Для питона версия 3.10 или ниже (не 3.11) – Python <= 3.10. (pytorch и другие библиотеки еще не поддерживаются в последней версии)
Для Node.js >= 18. Убедитесь, что версия 18 или выше
Шаг 2. Установить модели
В настоящее время поддерживаются двигатели llama и alpaca.
Для добавления alpaca (пока что есть только модель 7B) :
Для загрузки модели llama вы можете запустить:
npx dalai llama install 7B 13B
Шаг 3. Запустите веб-интерфейс. Выполните следующую команду, чтобы запустить сервер веб-интерфейса: