Введение

Быстрая настройка — это метод, который использует замороженные предварительно обученные языковые модели для последующих задач, что сводит к минимуму хранение каждой задачи и использование памяти на этапе обучения, и это полезно для больших языковых моделей (LLM), таких как GPT2, T5, GPT-J, GPT-NEO, GPT-NEOX, GPT-20B, GPT3 и т. д., где модель настолько велика, что тонкая настройка становится сложной или очень дорогой.

Параметры предварительно обученной языковой модели замораживаются, и на этапе обучения обновляются только параметры встраивания для конкретной задачи.

Описание задачи каким-то образом включается в фактическое входное предложение. Описание задачи называется подсказкой, поскольку оно предлагает модели выполнить конкретную задачу.

Преимущества оперативной настройки

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

Недостаток оперативной настройки

  1. Быстрая настройка требует больше времени на обучение, чем точная настройка
  2. Разработка подсказок, чтобы модель могла понять

Здесь, в этом уроке, мы узнаем, как вывести модель с быстрой настройкой для анализа тональности. Для этого вам понадобится модель с быстрой настройкой, для выполнения быстрой настройки вы можете проверить наш колаб-файл Быстрая настройка большой языковой модели. Как только вы получите модель с быстрой настройкой, вы можете выполнить следующие шаги, чтобы выполнить вывод.

Требования к ресурсам

Colab Pro:
25 ГБ ОЗУ
2 виртуальных ЦП
Графический процессор T4

Прежде чем выводить модель с быстрой настройкой, вы должны убедиться, что в вашей системе установлены все необходимые пакеты. Выполните следующие шаги, чтобы установить все необходимые пакеты:

Установить Апекс

git clone https://github.com/ericharper/apex.git
cd apex
git checkout nm_v1.11.0
pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" --global-option="--fast_layer_norm" --global-option="--distributed_adam" --global-option="--deprecated_fused_adam" ./

Установите инструментарий Nemo

apt-get update && apt-get install -y libsndfile1 ffmpeg
pip install Cython
pip install nemo_toolkit['all']

Загрузите файл .nemo модели gpt.

После того, как вы установили пакеты, теперь мы будем загружать модель. В этом руководстве мы используем большую модель nemo_gpt1.3B_fp16.nemo для оперативной настройки. Вы можете загрузить nemo_gpt1.3B_fp16.nemo, как показано ниже:

wget https://huggingface.co/nvidia/nemo-megatron-gpt-1.3B/resolve/main/nemo_gpt1.3B_fp16.nemo

Клонируйте репозиторий Nemo с GitHub

git clone https://github.com/NVIDIA/NeMo.git
cd NeMo/examples/nlp/language_modeling

Вывод

Чтобы выполнить вывод, запустите файл megatron_gpt_prompt_learning_eval.py, как показано ниже.

python megatron_gpt_prompt_learning_eval.py \
    +virtual_prompt_model_file=PATH_TO_NEMO_PROMPT_LEARNING_MODEL_FILE \
    gpt_model_file=PATH_TO_FROZEN_GPT_MODEL_FILE \
    inference.greedy=True \
    inference.add_BOS=False \
    trainer.devices=1 \
    trainer.num_nodes=1 \
    tensor_model_parallel_size=1 \
    pipeline_model_parallel_size=1 \
    pred_file_path=PATH_WHERE_PRED_TEXT_FILE_WILL_BE_SAVED \
    data_paths=[path/to/prompt_1.json, path/to/prompt_2.json] 

+virtual_prompt_model_file= Путь к файлу .nemo с настроенной подсказкой
gpt_model_file = Путь к файлу .nemo модели gpt
data_paths = Список файлов json или jsonl, содержащих входные данные тестирования

Примечание. В файле json должны быть ключи, соответствующие полям, указанным в шаблоне запроса, который используется на этапе обучения.

Например, шаблон подсказки на этапе обучения выглядит следующим образом:

"<|VIRTUAL_PROMPT_0|> {sentence} sentiment: {label}"
{"taskname": "sentiment", "sentence": "some text"}

Вход

Пример файла json выглядит так, как показано ниже
Prompt_1.json

{"taskname": "sentiment", "sentence": "The movie was not good."},

Выход

При выполнении вывода будет создан текстовый файл, содержащий результаты. Ниже приведен пример текстового файла.
results.txt

The movie was not good. sentiment: negative

Первоначально опубликовано на конференции Быстрая настройка больших языковых моделей с логическим выводом 2 января 2023 г.