Простая в использовании обертка для моделей трансформаторов GPT-2 124M, 345M, 774M и 1,5B
Что это такое • Установка • Начало работы
Сделано Ришабхом Ананд • https://rish-16.github.io
GPT-2-это модель обработки естественного языка, разработанная OpenAI для генерации текста. Это преемник модели GPT (генеративный предварительно обученный трансформатор), обученная 40 ГБ текста из Интернета. В нем есть модель трансформатора, которая была обнаружена вниманием, - это все, что вам нужна, в 2017 году. Модель имеет 4 версии - 124M
, 345M
, 774M
и 1558M
, которые различаются с точки зрения количества обучающих данных, прикрепленных к нему и количеству параметров, которые они содержат.
Модель 1.5B в настоящее время является крупнейшей доступной моделью, выпущенной OpenAI.
Наконец, gpt2-client
-это обертка вокруг исходного репозитория gpt-2
, которая имеет такую же функциональность, но с большей доступом, понятием и утилизацией. Вы можете поиграть со всеми четырьмя моделями GPT-2 менее чем в пяти строках кода.
*Примечание . Эта клиентская обертка никоим образом не несет ответственности за любые ущерб, нанесенные прямо или косвенно. Любые имена, места и объекты, на которые ссылаются модель, являются вымышленными и не стремятся к реальным организациям или организациям. Образцы нефильтрованы и могут содержать оскорбительное содержание. Пользовательский усмотрение рекомендуется.*
Установите клиент через pip
. В идеале gpt2-client
хорошо поддерживается для Python> = 3,5 и TensorFlow> = 1.x. Некоторые библиотеки могут потребоваться переустановлен или обновлять флаг --upgrade
через pip
, если используется Python 2.x.
pip install gpt2-client
Примечание:
gpt2-client
не совместим с TensorFlow 2.0, попробуйте TensorFlow 1.14.0
1. Загрузите веса модели и контрольно -пропускные пункты
from gpt2_client import GPT2Client
gpt2 = GPT2Client ( '124M' ) # This could also be `355M`, `774M`, or `1558M`. Rename `save_dir` to anything.
gpt2 . load_model ( force_download = False ) # Use cached versions if available.
Это создает каталог, называемый models
в текущем рабочем каталоге и загружает веса, контрольные точки, модель JSON и гиперпараметры, требуемые моделью. После того, как вы позвонили в функцию load_model()
, вам не нужно вызывать ее снова, предполагая, что файлы закончили загрузку в каталоге models
.
ПРИМЕЧАНИЕ. SET
force_download=True
, чтобы перезаписать существующие веса кэшированной модели и контрольные точки
2. Начните генерировать текст!
from gpt2_client import GPT2Client
gpt2 = GPT2Client ( '124M' ) # This could also be `355M`, `774M`, or `1558M`
gpt2 . load_model ()
gpt2 . generate ( interactive = True ) # Asks user for prompt
gpt2 . generate ( n_samples = 4 ) # Generates 4 pieces of text
text = gpt2 . generate ( return_text = True ) # Generates text and returns it in an array
gpt2 . generate ( interactive = True , n_samples = 3 ) # A different prompt each time
Из вышеупомянутой выборки вы можете видеть, что варианты генерации очень гибки. Вы можете смешивать и сочетать в зависимости от того, какой текст вам нужен, будь то несколько кусков или по одному с подсказками.
3. Создание текста из партии подсказок
from gpt2_client import GPT2Client
gpt2 = GPT2Client ( '124M' ) # This could also be `355M`, `774M`, or `1558M`
gpt2 . load_model ()
prompts = [
"This is a prompt 1" ,
"This is a prompt 2" ,
"This is a prompt 3" ,
"This is a prompt 4"
]
text = gpt2 . generate_batch_from_prompts ( prompts ) # returns an array of generated text
4. тонкая настройка GPT-2 в пользовательские наборы данных
from gpt2_client import GPT2Client
gpt2 = GPT2Client ( '124M' ) # This could also be `355M`, `774M`, or `1558M`
gpt2 . load_model ()
my_corpus = './data/shakespeare.txt' # path to corpus
custom_text = gpt2 . finetune ( my_corpus , return_text = True ) # Load your custom dataset
Чтобы точно настроить GPT-2 к вашему пользовательскому корпусу или набору данных, идеально подходит для GPU или TPU. Google Colab-это один из таких инструментов, который вы можете использовать для повторного обучения/настройки своей пользовательской модели.
5. Кодирование и декодирование текстовых последовательностей
from gpt2_client import GPT2Client
gpt2 = GPT2Client ( '124M' ) # This could also be `355M`, `774M`, or `1558M`
gpt2 . load_model ()
# encoding a sentence
encs = gpt2 . encode_seq ( "Hello world, this is a sentence" )
# [15496, 995, 11, 428, 318, 257, 6827]
# decoding an encoded sequence
decs = gpt2 . decode_seq ( encs )
# Hello world, this is a sentence
Предложения, улучшения и улучшения всегда приветствуются! Если у вас есть какие -либо проблемы, пожалуйста, поднимите один в разделе «Проблемы». Если у вас есть улучшение, подайте проблему, чтобы обсудить предложение перед созданием PR.
Все идеи - независимо от того, насколько возмутительно - добро пожаловать!
Открытый исходный код действительно веселый. Ваши пожертвования побуждают меня воплотить в жизнь свежие идеи. Если заинтересован в поддержке моих начинаний с открытым исходным кодом, пожалуйста, сделайте пожертвование-это очень много значит для меня!
Грань