Разблокируйте мощь GenAI LLMs прямо на вашем локальном компьютере!

Разблокируйте мощь GenAI LLMs на вашем компьютере!

Введение

С момента выпуска GenAI LLMs мы начали использовать их как-то по-разному. Самый распространенный способ – через веб-сайты, такие как веб-сайт OpenAI для использования ChatGPT или Large Language Models через API, такие как GPT3.5 API от OpenAI, PaLM API от Google или через другие веб-сайты, такие как Hugging Face, Perplexity.ai, которые позволяют нам взаимодействовать с этими большими языковыми моделями.

Во всех этих подходах наши данные отправляются за пределы нашего компьютера. Они могут быть подвержены кибератакам (хотя все эти веб-сайты обеспечивают высочайшую безопасность, мы не знаем, что может произойти). Иногда мы хотим запускать эти большие языковые модели локально и, если возможно, настраивать их локально. В этой статье мы рассмотрим этот вопрос, а именно настройку LLMs локально с помощью Oobabooga.

Цели обучения

  • Понимание значения и вызовов развертывания больших языковых моделей на локальных системах.
  • Научиться создавать локальную настройку для запуска больших языковых моделей.
  • Исследовать, какие модели можно запускать с заданными характеристиками ЦП, ОЗУ и ВРАМ ГПУ.
  • Научиться загружать любую большую языковую модель из Hugging Face для использования локально.
  • Проверить, как выделить память ГПУ для запуска большой языковой модели.

Эта статья была опубликована в рамках Data Science Blogathon.

Что такое Oobabooga?

Oobabooga – это веб-интерфейс для генерации текста на основе больших языковых моделей. Oobabooga – это веб-интерфейс, основанный на gradio. Gradio – это библиотека на языке Python, которую широко используют энтузиасты машинного обучения для создания веб-приложений, и Oobabooga была создана с использованием этой библиотеки. Oobabooga абстрагирует все сложные вещи, необходимые для настройки при попытке запустить большую языковую модель локально. Oobabooga поставляется с множеством расширений для интеграции других функций.

С помощью Oobabooga вы можете предоставить ссылку на модель из Hugging Face, и она загрузит ее, и вы сразу начнете выводить модель. Oobabooga имеет множество функций и поддерживает различные модели, такие как GGML, GPTQ, exllama и llama.cpp. Вы можете даже загрузить LoRA (Low-Rank Adaptation) с этим пользовательским интерфейсом поверх LLM. Oobabooga позволяет обучать большую языковую модель для создания чат-ботов / LoRA. В этой статье мы рассмотрим установку этого программного обеспечения с помощью Conda.

Настройка среды

В этом разделе мы создадим виртуальную среду с использованием Conda. Чтобы создать новую среду, перейдите в командную строку Anaconda и введите следующее.

conda create -n textgenui python=3.10.9
conda activate textgenui
  • Первая команда создаст новую среду Conda/Python с именем textgenui. Согласно файлу readme Oobabooga на GitHub, они предлагают нам использовать версию Python 3.10.9. Эта команда создаст виртуальную среду с этой версией.
  • Затем, чтобы активировать эту среду и сделать ее основной (чтобы мы могли работать с ней), мы введем вторую команду для активации нашей новой созданной среды.
  • Следующий шаг – загрузить библиотеку PyTorch. PyTorch поставляется в разных вариантах, таких как версия только для ЦП и версия для ЦП+ГПУ. В этой статье мы будем использовать версию для ЦП+ГПУ, которую загрузим с помощью следующей команды.
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117

Библиотека PyTorch для ГПУ

Теперь, вышеуказанная команда загрузит библиотеку PyTorch для ГПУ. Обратите внимание, что загружаемая нами CUDA(GPU)-версия – cu117. Она может изменяться время от времени, поэтому рекомендуется посетить официальную страницу PyTorch, чтобы получить команду для загрузки последней версии. Если у вас нет доступа к ГПУ, вы можете продолжить с версией для ЦП.

Теперь измените директорию в командной строке Anaconda на ту, где вы будете загружать код. Теперь вы можете либо скачать его с GitHub, либо использовать команду git clone для клонирования репозитория Oobabooga в нужную вам директорию с помощью следующей команды.

git clone https://github.com/oobabooga/text-generation-webui
cd text-generation-webui
  • Первая команда склонирует репозиторий Oobabooga в папку, из которой мы запускаем эту команду. Все файлы будут находиться в папке с именем text-generation-uI.
  • Затем мы переходим в директорию text-generation-ui с помощью команды во второй строке. В этой директории находится файл requirement.txt, в котором содержатся все необходимые пакеты для работы больших языковых моделей и пользовательского интерфейса. Мы устанавливаем их с помощью pip.
pip install -r requirements.txt

Вышеприведенная команда установит все необходимые пакеты/библиотеки, такие как hugging face, transformers, bitandbytes, gradio и т. д., необходимые для запуска большой языковой модели. Мы готовы запустить веб-интерфейс, для этого мы можем использовать следующую команду.

python server.py

Теперь в командной строке Anaconda вы увидите URL http://localhost:7860 или http://127.0.0.1:7860. Теперь перейдите по этому URL в своем браузере, и появится пользовательский интерфейс, который будет выглядеть следующим образом:

Мы успешно установили все необходимые библиотеки для работы с text-generation-ui, и нашим следующим шагом будет загрузка больших языковых моделей.

Загрузка и вывод моделей

В этом разделе мы скачаем большую языковую модель из Hugging Face, а затем попробуем использовать ее для вывода и общения с LLM. Для этого перейдите к разделу Model (Модель), расположенному в верхней панели пользовательского интерфейса. Здесь откроется страница модели, которая будет выглядеть следующим образом:

Скачать пользовательскую модель

Здесь, справа, мы видим «Скачать пользовательскую модель или LoRA»; ниже находится текстовое поле с кнопкой загрузки. В это текстовое поле необходимо указать путь к модели на веб-сайте Hugging Face, который будет загружен пользовательским интерфейсом. Давайте попробуем это сделать на примере. Для этого я скачаю модель Nous-Hermes, основанную на недавно выпущенной модели Llama 2. Для этого я перейду на страницу этой модели на Hugging Face, которую можно увидеть ниже

Таким образом, я загружу модель GPTQ объемом 13B (эти модели требуют наличия графического процессора для работы; если вам нужна только версия для ЦП, вы можете воспользоваться моделями GGML), которая является квантованной версией модели Nous-Hermes 13B на основе модели Llama 2. Чтобы скопировать путь, вы можете нажать кнопку копирования. Теперь нам нужно прокрутить вниз, чтобы увидеть разные квантованные версии модели Nous-Hermes 13B.

Здесь, например, мы выберем версию gptq-4bit-32g-actorder_True модели Nous-Hermes-GPTQ. Теперь путь для этой модели будет «TheBloke/Nous-Hermes-Llama2-GPTQ:gptq-4bit-32g-actorder_True», где часть перед «:» указывает наименование модели, а часть после «:» указывает тип квантованной версии модели. Теперь мы вставим это в текстовое поле, которое мы видели ранее.

Теперь мы нажимаем кнопку загрузки, чтобы скачать модель. Это займет некоторое время, так как размер файла составляет 8 ГБ. После загрузки модели нажмите кнопку обновления, находящуюся слева от кнопки Загрузить, чтобы обновить страницу. Затем выберите модель, которую вы хотите использовать, из выпадающего списка. Если модель является версией для ЦП, вы можете нажать кнопку Загрузить, как показано ниже.

Модель GPU VRAM

Если вы используете модель GPU-типа, например, GPTQ, которую мы загрузили здесь, нам необходимо выделить VRAM GPU из модели. Поскольку размер модели составляет около 8 ГБ, мы выделим примерно 10 ГБ памяти для нее (у меня достаточно VRAM GPU, чтобы предоставить 10 ГБ). Затем мы нажимаем на кнопку “Загрузить”, как показано ниже.

Теперь, после нажатия кнопки “Загрузить”, переходим на вкладку “Сессия” и меняем режим. Режим будет изменен с “по умолчанию” на “чат”. Затем мы нажимаем кнопки “Применить” и “Перезапустить”, как показано на картинке.

Теперь мы готовы делать выводы с нашей моделью, то есть мы можем начать взаимодействовать с загруженной моделью. Теперь перейдите на вкладку “Генерация текста”, и она будет выглядеть примерно так

Пришло время протестировать нашу большую модель языка Nous-Hermes-13B, которую мы загрузили из Hugging Face через пользовательский интерфейс генерации текста. Давайте начнем разговор.

Мы видим из приведенного выше, что модель действительно работает хорошо. Она не делает ничего слишком творческого, то есть не галлюцинирует. Она правильно отвечает на мои вопросы. Мы видим, что мы попросили большую модель языка сгенерировать код Python для поиска чисел Фибоначчи. LLM написал работающий код на Python, соответствующий введенным данным. Кроме того, он даже дал мне объяснение того, как это работает. Таким образом, вы можете загружать и запускать любую модель через пользовательский интерфейс генерации текста, все это локально, обеспечивая конфиденциальность ваших данных.

Заключение

В этой статье мы рассмотрели пошаговый процесс загрузки пользовательского интерфейса генерации текста, который позволяет нам взаимодействовать с большими моделями языка непосредственно в нашей локальной среде, не подключаясь к сети. Мы изучили, как загружать модели определенной версии из Hugging Face и узнали, какие квантованные методы поддерживает текущее приложение. Таким образом, любой может получить доступ к большой модели языка, даже к последней LlaMA 2, которую мы видели в этой статье, большой модели языка, основанной на недавно выпущенной LlaMA 2.

Основные выводы

Некоторые из основных выводов из этой статьи включают:

  • Пользовательский интерфейс генерации текста от Oogabooga может быть использован на любой системе с любой операционной системой, будь то Mac, Windows или Linux.
  • Этот интерфейс позволяет нам непосредственно получать доступ к различным большим моделям языка, даже к недавно выпущенным, от Hugging Face.
  • Даже квантованные версии различных больших моделей языка поддерживаются этим интерфейсом.
  • С помощью этого пользовательского интерфейса генерации текста можно загружать даже большие модели языка, работающие только на CPU, что позволяет пользователям без доступа к GPU использовать LLM.
  • Наконец, так как мы запускаем пользовательский интерфейс локально, данные / чат с моделью остаются только в локальной системе.

Часто задаваемые вопросы

Медиа, показанное в этой статье, не принадлежит Analytics Vidhya и используется по усмотрению автора.