Этот проект предоставляет скрипты для генерации текста с использованием архитектуры модели. Он включает утилиты для 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: Скрипт, который позволяет пользователям вводить промпт и интерактивно генерировать продолжения текста.
- 
Python: Рекомендуется Python 3.7+. 
- 
TensorFlow: Этот код основан на TensorFlow 1.x. Убедитесь, что у вас установлена совместимая версия (например, tensorflow==1.15илиtensorflow-gpu==1.15).
- 
Другие библиотеки: Установите необходимые пакеты Python: pip install numpy regex fire 
- 
Веса модели и словарь: Вам необходимо загрузить предварительно обученные файлы модели 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.