Skip to content
/ Mind2 Public

GPT-2 текстогенерация на TensorFlow 1.x. Безусловная и интерактивная генерация, BPE, top-k/p sampling.

License

Notifications You must be signed in to change notification settings

SynvexAI/Mind2

Repository files navigation

Mind2 Text Generation

Этот проект предоставляет скрипты для генерации текста с использованием архитектуры модели. Он включает утилиты для Byte Pair Encoding (BPE), определение модели, стратегии сэмплирования и скрипты для безусловной и интерактивной условной генерации текста.

Файлы

  • encoder.py: Обрабатывает Byte Pair Encoding (BPE) для токенизации и детокенизации текста.
  • model.py: Определяет архитектуру модели GPT-2 на основе Transformer с использованием TensorFlow.
  • sample.py: Реализует стратегии сэмплирования, такие как top-k и top-p (nucleus sampling), для генерации токенов из логитов вывода модели.
  • generate_unconditional_samples.py: Скрипт для генерации текстовых сэмплов безусловно, начиная с токена по умолчанию (<|endoftext|>).
  • interactive_conditional_samples.py: Скрипт, который позволяет пользователям вводить промпт и интерактивно генерировать продолжения текста.

Предварительные требования

  1. Python: Рекомендуется Python 3.7+.

  2. TensorFlow: Этот код основан на TensorFlow 1.x. Убедитесь, что у вас установлена совместимая версия (например, tensorflow==1.15 или tensorflow-gpu==1.15).

  3. Другие библиотеки: Установите необходимые пакеты Python:

    pip install numpy regex fire
  4. Веса модели и словарь: Вам необходимо загрузить предварительно обученные файлы модели GPT-2. Обычно они включают:

    • encoder.json: Отображение словаря.
    • hparams.json: Гиперпараметры модели.
    • vocab.bpe: Правила слияния байтовых пар.
    • Файлы чекпоинтов модели (например, model.ckpt.data-00000-of-00001, model.ckpt.index, model.ckpt.meta).

    Создайте следующую структуру каталогов:

    models/
    └── <model_name>/  (например, 124M)
        ├── encoder.json
        ├── hparams.json
        ├── model.ckpt.data-00000-of-00001
        ├── model.ckpt.index
        ├── model.ckpt.meta
        └── vocab.bpe
    

    Замените <model_name> на фактический размер модели (например, 124M, 355M и т.д.). Эти файлы можно найти в официальном репозитории OpenAI GPT-2 или других источниках, предоставляющих совместимые модели.

Использование

Безусловная генерация

Для генерации текстовых сэмплов без конкретного промпта:

python generate_unconditional_samples.py --model_name <model_name> [options]

Пример:

python generate_unconditional_samples.py --model_name 124M --nsamples 2 --length 100

Интерактивная условная генерация

Для генерации текста на основе ваших промптов:

python interactive_conditional_samples.py --model_name <model_name> [options]

Пример:

python interactive_conditional_samples.py --model_name 124M --nsamples 1 --length 150

Скрипт запросит у вас ввод текста: Model prompt >>>

Общие параметры командной строки

  • --model_name: (Строка) Какую модель использовать (например, 124M). По умолчанию 124M.
  • --seed: (Целое число) Начальное значение для генераторов случайных чисел для воспроизводимости.
  • --nsamples: (Целое число) Количество возвращаемых сэмплов. Для безусловной генерации 0 означает генерацию неограниченно.
  • --batch_size: (Целое число) Количество батчей (влияет на скорость/память).
  • --length: (Целое число) Количество токенов в сгенерированном тексте. Если None, определяется гиперпараметрами модели.
  • --temperature: (Float) Контролирует случайность. Меньшее значение — менее случайный результат, большее — более случайный. По умолчанию 1.
  • --top_k: (Целое число) Учитывает только k наиболее вероятных токенов. 0 означает отсутствие ограничений. По умолчанию 0.
  • --top_p: (Float) Nucleus sampling. Учитывает наименьший набор токенов, чья кумулятивная вероятность превышает p. По умолчанию 1.
  • --models_dir: (Строка) Путь к родительской папке, содержащей подпапки моделей. По умолчанию models.

Благодарности

Огромное спасибо OpenAI за GPT-2 — вы настоящие сигмы в мире искусственного интеллекта. Именно благодаря вашей открытой реализации мы вообще тут что-то кодим, играемся с нейросетями и притворяемся, что понимаем, как это всё работает. Без вас мы бы сейчас, возможно, писали регулярки вручную или, страшно сказать, читали документацию. Так что низкий поклон, лайк, репост и звезда на GitHub от SynvexAI. P.S. Да пребудет с вами CUDA и минимальный loss.

About

GPT-2 текстогенерация на TensorFlow 1.x. Безусловная и интерактивная генерация, BPE, top-k/p sampling.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages