Этот проект предоставляет скрипты для генерации текста с использованием архитектуры модели. Он включает утилиты для 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.