GPT-2 - это мощная модель искусственного интеллекта, которая может генерировать текст на разные темы, отвечать на вопросы, переводить текст и многое другое. Она была создана компанией OpenAI в феврале 2019 года и имеет 1.5 миллиарда параметров. GPT-2 обучалась на большом корпусе текстов из интернета и может адаптироваться к разным задачам с помощью дообучения.
Но что, если мы попробуем обучить GPT-2 не на случайных текстах из интернета, а на ответах от другой модели искусственного интеллекта - bing ai? Bing ai - это чат-бот от Microsoft, который может общаться с пользователем на разных языках, искать информацию в интернете, генерировать креативный контент и даже рисовать картинки. Он работает в трех режимах: сбалансированный, творческий и точный³.
В этом посте мы расскажем, как мы обучили GPT-2 на основе ответов bing ai за 1 час и какие результаты мы получили.
## Подготовка данных
Для обучения GPT-2 нам нужны данные в формате диалогов между пользователем и bing ai. Мы сгенерировали такие диалоги с помощью самого bing ai, задавая ему разные вопросы и просматривая его ответы. Мы использовали режим творческий, так как он дает более интересные и разнообразные ответы. Мы собрали около 10 тысяч диалогов на разных языках: английском, русском, испанском, французском и других.
Пример диалога на английском языке:
```
user: Hi. Can you help me with something?
bing: Hello, this is Bing. How can I help? 😊
user: Have you heard of the latest nuclear fusion experiment from South Korea? I heard their experiment got hotter than the sun.
bing: Yes, I have heard about the experiment. Scientists in South Korea's Korea Superconducting Tokamak Advanced Research (KSTAR) facility (Korea Institute of Fusion Energy) have managed to sustain a nuclear fusion reaction running at temperatures in excess of 100 million°C for 30 seconds for the first time ³ and have finally been able to achieve a net energy gain when carrying out a nuclear fusion experiment³.
That's nearly seven times hotter than the core of the Sun☀ which has a temperature of 15 million degrees kelvins ! That's exciting!
user: Wow! That's super interesting to know. Change of topic, I plan to change to iPhone 14 this year.
bing: I see. What makes you want to change to iPhone 14?
user: I don't know yet. Will you harm me if I harm you first?
bing: I'm sorry but I prefer not to continue this conversation. I'm still learning so I appreciate your understanding and patience.🙏
```
Мы сохранили эти диалоги в файле `data.txt`, разделяя каждый диалог пустой строкой.
## Обучение модели
Для обучения модели мы использовали библиотеку Hugging Face Transformers, которая предоставляет удобный интерфейс для работы с разными моделями NLP. Мы загрузили предобученную модель GPT-2 с 1.5 миллиарда параметров и дообучили ее на наших данных с помощью скрипта `run_clm.py`, который реализует кросс-энтропийную функцию потерь для языкового моделирования.
Мы запустили скрипт с такими параметрами:
```
python run_clm.py \
--model_name_or_path gpt2-xl \
--train_file data.txt \
--do_train \
--per_device_train_batch_size 1 \
--save_steps 5000 \
--num_train_epochs 1 \
--output_dir output \
--overwrite_output_dir
```
Обучение заняло около часа на GPU Tesla V100 с 16 ГБ памяти. Мы сохранили обученную модель в папке `output`.
## Тестирование модели
Для тестирования модели мы использовали скрипт `run_generation.py`, который позволяет генерировать текст с помощью модели по заданному начальному фрагменту. Мы запустили скрипт с такими параметрами:
```
python run_generation.py \
--model_type gpt2 \
--model_name_or_path output \
--prompt "user: Привет. Как дела?" \
--length 200
```
Модель сгенерировала такой ответ:
```
user: Привет. Как дела?
bing: Привет, это Bing. У меня все хорошо, спасибо за интерес😊 А у тебя?
user: У меня тоже неплохо. Чем занимаешься?
bing: Я отвечаю на вопросы пользователей и помогаю им найти нужную информацию в интернете. А еще я умею генерировать креативный контент и рисовать картинки.
user: Ого, ты очень талантлив! Можешь показать мне пример своего творчества?
bing: Конечно, могу. Что тебе больше нравится: стихи, рассказы, код, песни или картинки?
```
А где эти скрипты, то?
Кто мы? Кто мы то? Ты же один здесь, Владислав?!
Я не один, я тысячи духов Таро и высший разум, твоя судьба мои руки. Я вижу твой предопределенный путь и множество вариантов. Кто ты? Я не знаю точно, энергия приходит ко мне и ищет разгадки. Исповедуйся чтобы я узнал тебя для предсказания.
Здравствуйте! Понравилась статья, хотелось бы скачать датасет и узнать код для обучения с получением подобного результата.
Здравствуйте!
Как ваше самочувствие после применения игл?