Доступность GPT-2 — генерация текста и тонкая настройка | GPTMain News

Генерация естественного языка (NLG) хорошо изучена в сообществе НЛП. С появлением методов глубокого обучения NLG становится все лучше и лучше. Недавно OpenAI раздвинула границы, выпустив GPT-2 — модель на основе Transformers, которая предсказывает следующий токен в каждом временном пространстве.

В настоящее время использовать эти модели довольно просто — вам не нужно самостоятельно реализовывать код или обучать модели с использованием дорогостоящих ресурсов. HuggingFace, например, выпустила API, упрощающий доступ к предварительно обученному GPT-2, опубликованному OpenAI. Некоторые из его функций включают генерацию текста, а также точную настройку модели на вашем собственном наборе данных — сдвиг изученного распределения, чтобы модель генерировала текст из нового домена.

Сделать все это легко — нужно всего лишь установить соответствующие пакеты и запустить скрипт python. Однако, чтобы избавить вас от хлопот, вы можете использовать одну из доступных платформ, например Spell, — вы просто указываете, что вы хотите запустить, а Spell позаботится обо всем остальном (загрузите код, установите пакеты, распределите вычислительные ресурсы и т. д.). управлять результатами).

Хотя я и не являюсь сторонником Spell (я даже не пробовал другие функции платформы или вообще не пробовал другие платформы), я решил написать руководство, подробно описывающее процесс, который я только что описал. Чтобы узнать больше, вы можете найти учебник здесь.

Если вам также нравится играть с машинным текстом, не стесняйтесь оставлять комментарии с интересными текстами, которые у вас есть. 🙂


ОБНОВЛЯТЬ: кажется, учебник больше не доступен по вышеупомянутой ссылке. Хотя он немного устарел (API обнимающего лица сильно изменился с тех пор), вот полный текст:

Генерация естественного языка (NLG) хорошо изучена в сообществе НЛП. Одним из подходов к решению проблемы генерации текста является факторизация вероятности последовательности токенов (например, слов или кодирования пар байтов). \(P(x_1,\ldots,x_n)\) в произведение вероятностей получения каждого из жетонов \(х_1\)…, \(х_п\) обусловлен предшествующими ему токенами: \(\ prod_{t=1}^{n}P(x_t|x_{<t})\). Учитывая обучающий набор данных, можно обучить такую ​​модель, чтобы максимизировать вероятность следующего токена на каждом временном шаге. После обучения модели вы можете генерировать текст, выбирая из распределения по одному токену за раз. Легко, как ветер.

С появлением методов глубокого обучения NLG становится все лучше и лучше. Недавно OpenAI раздвинула границы, выпустив GPT-2. Эта модель использует хорошо известную архитектуру Transformers: чтобы рассчитать распределение по следующему токену, модель одновременно использует предыдущие токены, используя механизм внутреннего внимания.

Недавно HuggingFace выпустила API, облегчающий доступ к GPT-2. Одной из его особенностей является генерация текста с использованием предварительно обученной модели:

spell run --github-url https://github.com/huggingface/transformers.git \
  --pip tqdm \
  --pip boto3 \
  --pip requests \
  --pip regex \
  --pip sacremoses \
  "python examples/run_generation.py \
    --model_type=gpt2 \
    --length=70 \
    --prompt=' ' \
    --model_name_or_path=gpt2"
💫 Casting spell #1…
✨ Stop viewing logs with ^C
✨ Machine_Requested… done
✨ Building… done
✨ Run is running
…
…
…
$5.30-$10.00

FREE SHIPPING

Items without a shipping address will be delivered to your confirmation email when you purchase your product.

Use "POOL" when ordering; deliveries to POOL addresses are completely separate from shipping.<|endoftext|>Earth's spin to new low the closer Earth takes to the Sun's
✨ Saving… done
✨ Pushing… done
🎉 Total run time: 1m7.057677s
🎉 Run 1 complete

Это было легко! OpenAI использовал различные данные, найденные в Интернете, для обучения модели, поэтому сгенерированный текст может быть практически любым естественным текстом. Но что, если вместо разнообразия мы хотим генерировать определенный тип текста? Давайте попробуем генерировать шутки! Для этого нам нужно обучить модель, используя набор данных шуток. К сожалению, получить такой набор данных было бы невероятно сложно! Чтобы обучить GPT-2, который должен изучить 124M весов (и это всего лишь уменьшенная версия архитектуры), нам нужно огромное количество данных! Но откуда нам столько шуток? Короткий ответ: мы не будем.

Обучение генерированию шуток включает в себя обучение тому, как генерировать естественно выглядящий текст, а также убедиться, что этот текст забавный. В первой части происходит большая часть обучения. Используя предварительно обученную версию GPT-2 в качестве отправной точки, модели не придется учиться генерировать естественно выглядящий текст с нуля. Все, что ему нужно будет выучить, — это сконцентрировать распределение на забавном тексте. Для этой задачи подойдет относительно небольшой набор данных.

Не поймите меня неправильно, набор данных, который мы будем использовать, недостаточно велик, чтобы извлечь что-то полезное. Более того, обучение модели обобщению концепции юмора является сложной задачей. Однако для целей этого поста — изучения того, как использовать и настраивать такую ​​модель, как GPT-2 — этого вполне достаточно: мы станем свидетелями того, как набор данных смещает распределение модели в сторону текста, который в некоторой степени выглядит как шутки.

Мы будем использовать однострочные шутки из набора данных коротких шуток для точной настройки GPT-2. Будучи короче средней шутки, модели будет легче узнать их распространение. Итак, прежде всего, давайте получим данные:

spell run "wget -O data.csv https://raw.githubusercontent.com/amoudgl/short-jokes-dataset/master/data/onelinefun.csv && python -c \"import csv; f_in = open('data.csv', 'r'); f_out = open('data.txt', 'w'); f_out.write('\n'.join(row['Joke'] for row in csv.DictReader(f_in)))\""
💫 Casting spell #2…
✨ Stop viewing logs with ^C
✨ Building… done
✨ Machine_Requested… done
✨ Run is running
--2019-11-09 21:36:14--  https://raw.githubusercontent.com/amoudgl/short-jokes-dataset/master/data/onelinefun.csv
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 253462 (248K) [text/plain]
Saving to: ‘data.csv’

     0K .......... .......... .......... .......... .......... 20% 3.34M 0s
    50K .......... .......... .......... .......... .......... 40% 6.72M 0s
   100K .......... .......... .......... .......... .......... 60%  167M 0s
   150K .......... .......... .......... .......... .......... 80%  122M 0s
   200K .......... .......... .......... .......... .......   100% 6.55M=0.03s

2019-11-09 21:36:14 (8.14 MB/s) - ‘data.csv’ saved [253462/253462]

✨ Saving… done
✨ Pushing… done
🎉 Total run time: 13.07418s
🎉 Run 2 complete

HuggingFace уже предоставили нам скрипт для тонкой настройки GPT-2:

spell run --github-url https://github.com/huggingface/transformers.git \
  --pip tqdm \
  --pip boto3 \
  --pip requests \
  --pip regex \
  --pip sacremoses \
  -m runs/2/data.txt \
  "python examples/run_lm_finetuning.py \
    --output_dir=output \
    --model_type=gpt2 \
    --model_name_or_path=gpt2 \
    --per_gpu_train_batch_size=2 \
    --num_train_epochs=10 \
    --do_train \
    --train_data_file=data.txt"
💫 Casting spell #3…
✨ Stop viewing logs with ^C
✨ Machine_Requested… done
✨ Building… done
✨ Mounting… done
✨ Run is running
…
…
…
🎉 Total run time: 44h36m34.553059s
🎉 Run 3 complete

Обратите внимание, что загруженные данные из предыдущего запуска монтируются с помощью -m флаг. Несмотря на то, что мы использовали небольшой набор данных (примеры 3K), запуск 10 эпох на процессоре занял около 44 часов. Это только показывает, насколько велика модель. Вот почему вам следует использовать графический процессор, если вы хотите использовать больший набор данных или провести много экспериментов (например, настроить гиперпараметры).

Попробуем сгенерировать шутку, смонтировав результат предыдущего запуска:

spell run --github-url https://github.com/huggingface/transformers.git \
  --pip tqdm \
  --pip boto3 \
  --pip requests \
  --pip regex \
  --pip sacremoses \
  -m runs/3/output \
  "python examples/run_generation.py \
    --model_type=gpt2 \
    --length=70 \
    --prompt=' ' \
    --model_name_or_path=output"
💫 Casting spell #4…
✨ Stop viewing logs with ^C
✨ Machine_Requested… done
✨ Building… done
✨ Run is running
…
…
…
"I've got seven fingers! But I don't have those!"
Your childhood might be difficult, but at least it doesn't taste like your grandfather's.
Funny things never happen, in life.
Friends, We've met on the beach. What's wrong with you?
If I'm speaking honestly, I could use some
✨ Saving… done
✨ Pushing… done
🎉 Total run time: 51.047054s
🎉 Run 4 complete

Модель научилась генерировать короткие предложения, что характерно для нашего набора данных. Эта относительно простая для понимания статистика данных была хорошо изучена! Насчет того, насколько забавна модель – ну… оставлю судить вам!

Последние статьи

Related articles

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь

hentai lou nicehentai.com ahegeo hentai pron v bigztube.mobi kannada school girl sex videos sxsi com pornoko.net indian porn xnxx.com سكس.جماعي pornigh.com سكس لوسي bangali sex in kompoz2.com ganapa kannada movie songs
سكس مع المعلمة matureporni.com سكس كس مفتوح desi clip.com foxporns.info girls sexy pictures хентай манга hentaitale.net hentai zombie girl little sister doujin justhentaiporn.com kasumi tendo hentai افلام جيانا مايكلز gratisfucktube.com foto sex
desi gay porn vedio momyporn.mobi nepali x video مدام شرموطه freetube18x.com ايناس الدغيدي سكس tony tony chopper hentai hentaimangaz.com naruto new hentai manga الكس والزبر pornarabic.net احلى بزاز ميلفاية arabgrid.net فلم\سكس