Кодируйте быстрее с ИИ

Автоматическая генерация кода с использованием GPT-2

О GPT-2

GPT-2 расшифровывается как «Генеративный прогнозирующий трансформатор». Это модель с открытым исходным кодом, обученная более чем 1,5 миллиардам параметров для генерации следующей последовательности текста для заданной последовательности.

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

«Слишком опасно для освобождения».

Эта фраза была опубликована в заявлении для прессы OpenAI, сопровождающем их объявление о выпуске своей языковой модели GPT-2 в феврале 2019 года.

Угроза дезинформации, управляемой искусственным интеллектом, стала огромной проблемой, которая остается нерешенной в сегодняшней постфактуальной информационной экосистеме, особенно с недавним выпуском более мощного GPT-3.

«Сегодня Организация Объединенных Наций призвала к немедленному выводу всего ядерного оружия из мира».

Предложение, которое вы только что прочитали, не было написано ни мной, ни редактором. Это предложение было написано GPT-2

GPT-2 - это 1,5-битная языковая модель на основе преобразователя, обученная в базе данных из 8 миллионов веб-страниц. Он был обучен просто предсказывать следующее слово в 40 ГБ текста в Интернете. Из-за некоторых проблем была выпущена очень маленькая модель, с которой исследователи могли поэкспериментировать.

Рабочий механизм ГПТ-2

  • Генеративный: это означает, что модель была обучена предсказывать следующий токен в заданной последовательности токенов. Модель получает много необработанного текста, а затем ее просят сгенерировать больше текста с использованием статистических функций, которые, конечно же, включают реализацию различных уровней и механизмов, таких как RNN-LSTM и механизм внимания.
  • Предварительное обучение: OpenAI обучил большую и мощную модель языкового преобразователя, чтобы использовать ее для таких задач, как суммирование, нейронный машинный перевод и т. д. Теперь модель была обучена на 40 ГБ текста, известного как WebText. .

  • Трансформатор: GPT-2 построен с использованием слоев блоков преобразователя декодера.

Архитектура GPT-2 основана на концепции трансформаторов.

Механизм, на котором работает GPT-2, включает в себя архитектуру кодировщика-декодера на основе преобразователя для изучения входных и выходных зависимостей.

Чтобы сгенерировать следующий результат в заданной последовательности, модель должна иметь на входе ранее сгенерированные данные.

  • GPT-2 обладает отличной способностью адаптироваться к контексту текста и, таким образом, генерирует реалистичный и последовательный вывод.
  • Модель работает, добавляя каждый токен к последовательности входных данных по мере ее создания. На следующем этапе эта новая последовательность становится входными данными для модели. Эта идея называется «авторегрессия». Это одна из идей, которые сделали РНС неоправданно эффективными.

В чем смысл автоматической генерации кода?

Автоматическая генерация кода в основном включает завершение последовательности кодов на основе предыдущих вводов и прошлых привычек пользователя.

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

Шаги по настройке GPT-2 для генерации кода:

1. Клонирование необходимых репозиториев

  • Здесь мы клонируем репозиторий auto_coding, который содержит код и сценарии для точной настройки модели GPT-2 для автоматической генерации кода.
  • Нам необходимо предоставить обучающие примеры в виде скриптов (Примеры: Python, C, C ++, Java и Javascript).
  • Для точной настройки нашей модели GPT-2 мы использовали скрипты из примеров scikit-learn.
!rm -rf auto_coding
!git clone https://github.com/aasthaengg/auto_coding && cd auto_coding && pip install -r requirements.txt && cd dataset && git clone http://github.com/scikit-learn/examples.git && python convert.py — segment_len 256 — stride 10 — dev_size 0.1

2. Скачивание необходимых скриптов

Теперь мы загружаем сценарий convert.py.

Этот скрипт содержит код для преобразования наших примеров в обучающие данные в формате, ожидаемом нашей моделью.

!wget https://raw.githubusercontent.com/aasthaengg/auto_coding/master/dataset/convert.py && cp convert.py /content/auto_coding/dataset/

3. Переход к нужному направлению.

Здесь мы выполняем скрипт convert.py с длиной сегмента 256, шагом 10 и размером разработки 10%.

90% данных будут использованы для обучения, а оставшиеся 10% - для тестирования нашей модели.

!cd auto_coding && cd dataset && python convert.py — segment_len 256 — stride 10 — dev_size 0.1

4. Выполнение обучающих скриптов и выбор модели как distilgpt2

У нас есть разные версии моделей, доступных для точной настройки. Здесь для точной настройки выбран distilgpt2. Если у вас достаточно вычислительных ресурсов и огромный набор данных, они могут выбрать версию с большим количеством параметров.

!cd /content/auto_coding && python train.py — model_select distilgpt2

5. Модель обучена. Давайте посмотрим на модель

После завершения обучения нам нужно выполнить скрипт interact.py. Этот скрипт запустит модель в целях тестирования. Необходимо предоставить входные данные, и модель будет предсказывать последовательность.

!python interact.py

Как этот вариант использования помогает техническим специалистам?

  • Это решение уже используется в промышленности. Это позволяет разработчикам кодировать быстрее, нажимая клавиши на 47% меньше. Это помогает разработчикам работать более продуктивно.
  • Кроме того, если блок кода уже написан ранее, пользователю просто нужно сделать несколько штрихов идентичных слов, и пользователь получит автоматически заполненный блок кодов.
  • Согласно некоторым обзорам, это помогло разработчикам сократить отрезок времени, поскольку они пишут только 70–80% кода, а остальные 20–30% кода генерируются автоматически.
  • Со всеми этими преимуществами отрасль также экономит значительное количество времени.

Ограничения GPT-2

  • GPT-2 не может использоваться для обработки сложных и длинных языковых образований.

Если кто-то хочет создать последовательность текста, относящуюся к определенной области, такой как литература, финансы или медицина, он не сможет работать хорошо.

  • Есть определенные ограничения по вычислительным ресурсам. Чтобы обучить такую ​​огромную модель с миллиардами параметров, нам требуются очень дорогие вычислительные ресурсы для обучения, чтобы модель могла работать лучше.

Взгляд писателя на архитектуру GPT

  • Без сомнения, GPT - удивительное изобретение в области обработки естественного языка, но его возможности до сих пор неизвестны, поскольку полная предварительно обученная модель никогда не была выпущена OpenAI из-за некоторых серьезных угроз.
  • Для выполнения этой задачи по автоматической генерации кода я использовал distil-GPT2 из-за его небольшого размера и относительно менее затратной настройки модели. Мы ограничили размер генерации последовательности до 15 для более эффективного и четкого предсказания.
  • Если кто-то задумывается об использовании модели GPT-2 с большим количеством параметров, то размер последовательности можно соответственно увеличить с учетом вычислительных ресурсов.

Я хорошо осведомлен о дополнительных рисках, таких как возможность использования способности GPT-3 генерировать текст, подобный человеческому, для фишинга, мошенничества, рассылки спама, распространения ложных новостей или других мошеннических действий. Следовательно, следует использовать такие модели, помня об этике.

Мы должны использовать искусственный интеллект, чтобы улучшить свою жизнь, а не заниматься какой-либо преступной деятельностью.

Заключение

Поздравляем с тем, что вы дочитали этот блог до конца! Большое спасибо, что нашли время прочитать это. Я надеюсь, что это было полезно для вас.

Понравились ли вам суперсилы GPT-2? Пожалуйста, дайте мне знать в разделе комментариев, где мы будем благодарны за все мысли и идеи.