Skip to content

Latest commit

 

History

History
190 lines (162 loc) · 8.1 KB

README-RU.md

File metadata and controls

190 lines (162 loc) · 8.1 KB

alpaca_lora_4bit_readme русская версия

English version

Небольшое руководство к коду https://github.com/johnsmith0031/alpaca_lora_4bit

Создано: 22.03.2023

Содержимое файла может обновляться

Всё было проверено на Windows 10 22H2 в WSL. Для Linux последовательность действий должна быть аналогичной

Подготовка:

  1. Включить WSL 2.0. Подробнее здесь - https://learn.microsoft.com/ru-ru/windows/wsl/install
  2. Установить Ubuntu 22.04.2LTS (вероятно подойдёт любой дистрибутив Ubuntu)
  3. NVIDIA GPU Drivers + CUDA Toolkit 11.7 + CUDA Toolkit 11.7 WSL Ubuntu
  4. Miniconda for Linux - https://docs.conda.io/en/latest/miniconda.html

NVidia CUDA Toolkit фикс для bitsandbytes

  1. Создайте скрипт (или возьмите из репозитория) для воссоздания симлинков к CUDA библиотекам - https://forums.developer.nvidia.com/t/wsl2-libcuda-so-and-libcuda-so-1-should-be-symlink/236301
#!/bin/bash
cd /usr/lib/wsl/lib
rm libcuda.so libcuda.so.1
ln -s libcuda.so.1.1 libcuda.so.1
ln -s libcuda.so.1 libcuda.so
ldconfig
  1. Сохраните его как fix_cuda.sh в директории $HOME
  2. Сделайте файл исполняемым
chmod u+x $HOME/fix_cuda.sh
  1. Уберите необходимость использования пароля при выполнении sudo
sudo visudo

В редакторе замените строку

%sudo   ALL=(ALL:ALL) ALL

на

%sudo   ALL=(ALL:ALL) NOPASSWD:ALL

Сохраните файл (Ctrl+O) и закройте редактор (Ctrl+X)

Проверить что всё работает можно выполнив sudo -ll. Команда должна отработать без предварительного запроса пароля

  1. Автоматизируйте применение фикса при каждом входе
echo 'sudo $HOME/fix_cuda.sh' >> ~/.bashrc
  1. После установки CUDA Toolkit for WSL Ubuntu необходимо отредактировать два файла:
  • /etc/environment чтобы продолжить текст переменной PATH= строкой :/usr/local/cuda-11.7/bin
  • /etc/ld.so.conf.d/cuda-11-7.conf для добавления в конец файла новой строки /usr/local/cuda-11.7/lib64 К счастью, эти изменения постоянные

Установка:

1. Создайте новое окружение conda

conda update -n base conda
conda create -n <YOUR_ENV_NAME_HERE> python=3.10
# Последние две строки необязательные и нужны для ускорения процесса установки библиотек
# Подробнее - https://www.anaconda.com/blog/a-faster-conda-for-a-growing-community
conda install -n base conda-libmamba-solver
conda config --set solver libmamba

Активируйте созданное окружение:

conda activate <YOUR_ENV_NAME_HERE>

2. Установите библиотеки

conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia

Вначале попробуйте установить CUDA Toolkit из пакета cudatoolkit

conda install -c conda-forge cudatoolkit=11.7

Если это не помогло, тогда используйте cudatoolkit-dev

conda install -c conda-forge cudatoolkit-dev=11.7
conda install -c conda-forge ninja
conda install -c conda-forge accelerate
conda install -c conda-forge sentencepiece
# Для oobabooga/text-generation-webui
conda install -c conda-forge gradio
conda install markdown
# Для finetuning
conda install datasets -c conda-forge

3. Клонируйте репозиторий alpaca_lora_4bit

git clone https://github.com/johnsmith0031/alpaca_lora_4bit
cd alpaca_lora_4bit
pip install -r requirements.txt
git clone https://github.com/oobabooga/text-generation-webui.git text-generation-webui-tmp
mv -f text-generation-webui-tmp/{.,}* text-generation-webui/
rmdir text-generation-webui-tmp

4. Скачайте модель

GPTQv2 модели:

  1. llama-7b:
  1. llama-13b:
  1. llama-30b:
  1. llama-65b:

GPTQv1 модели (устаревшие):

  1. llama-7b - https://huggingface.co/decapoda-research/llama-7b-hf-int4
  2. llama-13b - https://huggingface.co/decapoda-research/llama-13b-hf-int4
  3. llama-30b - https://huggingface.co/decapoda-research/llama-30b-hf-int4
  4. llama-65b - https://huggingface.co/decapoda-research/llama-65b-hf-int4
# Navigate to text-generation-webui dir:
cd text-generation-webui
# Download quantized model
python download-model.py --text-only decapoda-research/llama-13b-hf
mv models/llama-13b-hf ../llama-13b-4bit
wget https://huggingface.co/decapoda-research/llama-13b-hf-int4/resolve/main/llama-13b-4bit.pt ../llama-13b-4bit.pt

5. Скачайте LoRA-модуль

Полный список LoRA-модулей можно найти здесь - https://github.com/tloen/alpaca-lora#resources

# Download LoRA and place it where the custom_monkey patch expects it to be
python download-model.py samwit/alpaca13B-lora
mv loras/alpaca13B-lora ../alpaca13b_lora

6. Используйте модель

  1. Отредактируйте server.py. В начало файла добвьте код:
import custom_monkey_patch # apply monkey patch
import gc
  1. Отредактируйте custom_monkey_patch.py для возможности загрузки GPTQv2 моделей

Важно:

  • groupsize должен совпадать с использованным при создании модели. Пример ниже для значения 128. Если модель была создана без использования ключа --groupsize, то значение должно быть -1
  • LoRA-модули, созданные для GPTQv1 моделей могут давать мусор на выходе
-    config_path = '../llama-13b-4bit/'
-    model_path = '../llama-13b-4bit.pt'
-    lora_path = '../alpaca13b_lora/'
+    config_path = '/path/to/model/config'
+    model_path = '/path/to/model.safetensors'
+    lora_path = '/path/to/lora'
+
+    autograd_4bit.switch_backend_to('triton')

     print("Loading {} ...".format(model_path))
     t0 = time.time()

-    model, tokenizer = load_llama_model_4bit_low_ram(config_path, model_path, groupsize=-1, is_v1_model=True)
+    model, tokenizer = load_llama_model_4bit_low_ram(config_path, model_path, groupsize=128, is_v1_model=False)
  1. Восстановить пути для работы autograd_4bit с custom_monkey_patch
ln -s ../autograd_4bit.py ./autograd_4bit.py
ln -s ../matmul_utils_4bit.py matmul_utils_4bit.py
ln -s ../triton_utils.py triton_utils.py
ln -s ../custom_autotune.py custom_autotune.py
  1. Запустить WebUI
python server.py