Введение
Быстрая настройка — это метод, который использует замороженные предварительно обученные языковые модели для последующих задач, что сводит к минимуму хранение каждой задачи и использование памяти на этапе обучения, и это полезно для больших языковых моделей (LLM), таких как GPT2, T5, GPT-J, GPT-NEO, GPT-NEOX, GPT-20B, GPT3 и т. д., где модель настолько велика, что тонкая настройка становится сложной или очень дорогой.
Параметры предварительно обученной языковой модели замораживаются, и на этапе обучения обновляются только параметры встраивания для конкретной задачи.
Описание задачи каким-то образом включается в фактическое входное предложение. Описание задачи называется подсказкой, поскольку оно предлагает модели выполнить конкретную задачу.
Преимущества оперативной настройки
Размер больших предварительно обученных языковых моделей постоянно растет. В то время как для точной настройки этих моделей потребуется больше памяти, точные модели также становятся больше, поэтому хранение и вывод точной копии модели для каждой последующей задачи будет непомерно дорогим. В то время как быстрая настройка потребует меньше памяти, а размер модели с быстрой настройкой также меньше по сравнению с моделью с точной настройкой.
Недостаток оперативной настройки
- Быстрая настройка требует больше времени на обучение, чем точная настройка
- Разработка подсказок, чтобы модель могла понять
Здесь, в этом уроке, мы узнаем, как вывести модель с быстрой настройкой для анализа тональности. Для этого вам понадобится модель с быстрой настройкой, для выполнения быстрой настройки вы можете проверить наш колаб-файл Быстрая настройка большой языковой модели. Как только вы получите модель с быстрой настройкой, вы можете выполнить следующие шаги, чтобы выполнить вывод.
Требования к ресурсам
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 г.