Небольшое руководство к коду https://github.com/johnsmith0031/alpaca_lora_4bit
Создано: 22.03.2023
Содержимое файла может обновляться
Всё было проверено на Windows 10 22H2 в WSL. Для Linux последовательность действий должна быть аналогичной
- Включить WSL 2.0. Подробнее здесь - https://learn.microsoft.com/ru-ru/windows/wsl/install
- Установить Ubuntu 22.04.2LTS (вероятно подойдёт любой дистрибутив Ubuntu)
- NVIDIA GPU Drivers + CUDA Toolkit 11.7 + CUDA Toolkit 11.7 WSL Ubuntu
- Miniconda for Linux - https://docs.conda.io/en/latest/miniconda.html
- Создайте скрипт (или возьмите из репозитория) для воссоздания симлинков к 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
- Сохраните его как fix_cuda.sh в директории $HOME
- Сделайте файл исполняемым
chmod u+x $HOME/fix_cuda.sh
- Уберите необходимость использования пароля при выполнении
sudo
sudo visudo
В редакторе замените строку
%sudo ALL=(ALL:ALL) ALL
на
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
Сохраните файл (Ctrl+O
) и закройте редактор (Ctrl+X
)
Проверить что всё работает можно выполнив sudo -ll
. Команда должна отработать без предварительного запроса пароля
- Автоматизируйте применение фикса при каждом входе
echo 'sudo $HOME/fix_cuda.sh' >> ~/.bashrc
- После установки 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
К счастью, эти изменения постоянные
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>
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
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
- llama-7b:
- https://huggingface.co/Neko-Institute-of-Science/LLaMA-7B-4bit-128g
- https://huggingface.co/sardukar/llama7b-4bit-v2
- llama-13b:
- https://huggingface.co/Neko-Institute-of-Science/LLaMA-13B-4bit-128g
- https://huggingface.co/sardukar/llama13b-4bit-v2
- llama-30b:
- llama-65b:
- llama-7b - https://huggingface.co/decapoda-research/llama-7b-hf-int4
- llama-13b - https://huggingface.co/decapoda-research/llama-13b-hf-int4
- llama-30b - https://huggingface.co/decapoda-research/llama-30b-hf-int4
- 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
Полный список 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
- Отредактируйте
server.py
. В начало файла добвьте код:
import custom_monkey_patch # apply monkey patch
import gc
- Отредактируйте
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)
- Восстановить пути для работы
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
- Запустить WebUI
python server.py