Найти Ρ‚Π΅ΠΌΡƒ
МашинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅

🎱 GPT2 для классификации тСкста с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Hugging Face πŸ€— Transformers

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ : https://github.com/gmihaila/ml_things/issues

Hugging Face Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для использования GPT2 Π² Π·Π°Π΄Π°Ρ‡Π°Ρ… классификации.

МнС Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ GPT2 для классификации, поэтому я Ρ€Π΅ΡˆΠΈΠ» ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это руководство, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ структуру с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ модСлями трансформСров.

Основная идСя: ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ GPT2 являСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€Π°, послСдний Ρ‚ΠΎΠΊΠ΅Π½ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прогнозирования ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΎΠΊΠ΅Π½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° Π²Ρ…ΠΎΠ΄ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ послСдний Ρ‚ΠΎΠΊΠ΅Π½ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ содСрТит всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для прСдсказания. ИмСя это Π² Π²ΠΈΠ΄Ρƒ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для прогнозирования Π² Π·Π°Π΄Π°Ρ‡Π΅ классификации вмСсто Π·Π°Π΄Π°Ρ‡ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ.

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встраиваниС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ‚ΠΎΠΊΠ΅Π½Π° для прогнозирования, ΠΊΠ°ΠΊ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Π² Bert, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ послСднСго Ρ‚ΠΎΠΊΠ΅Π½Π° для прогнозирования с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GPT2.

Благодаря послСднСму обновлСнию HuggingFace Transformers ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€ GPT2 для этого.

Π§Ρ‚ΠΎ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎΠ± этой ΡΡ‚Π°Ρ‚ΡŒΠ΅?

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ PyTorch для Ρ‚ΠΎΡ‡Π½ΠΎΠΉ настройки Π½Π°ΡˆΠΈΡ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ трансформСров, Π»ΡŽΠ±Ρ‹Π΅ знания ΠΎ PyTorch ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹.

Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ трансформСров.

Набор Π΄Π°Π½Π½Ρ‹Ρ…

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ рассказано ΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ трансформСров Π½Π° настраиваСмом Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π― Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстныС ΠΎΠ±Π·ΠΎΡ€Ρ‹ Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ², ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, с ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΎΠΉ Β«Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Π·ΠΎΡ€Π° Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ²Β».

ОписаниС Π½Π° сайтС Бтэнфорда:

Π­Ρ‚ΠΎ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… для Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ классификации Ρ‚ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, содСрТащий Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большС Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Π΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Π½Π°Π±ΠΎΡ€Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΡ‹ прСдоставляСм Π½Π°Π±ΠΎΡ€ ΠΈΠ· 25 000 ΠΊΡ€Π°ΠΉΠ½Π΅ полярных ΠΎΠ±Π·ΠΎΡ€ΠΎΠ² Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ² для обучСния ΠΈ 25 000 для тСстирования. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π½Π΅ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. ΠŸΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½Ρ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ исходного тСкста ΠΈ ΡƒΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° слов. Π‘ΠΌ. Π€Π°ΠΉΠ» README, содСрТащийся Π² выпускС, для Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ этот Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…? Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ это простой для понимания ΠΈ использования Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… для классификации. Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎ настроСниях всСгда интСрСсно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Код

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ займСмся ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ! ΠœΡ‹ рассмотрим ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ячСйку кодирования Π² записной ΠΊΠ½ΠΈΠΆΠΊΠ΅ ΠΈ опишСм, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ это Π·Π° ΠΊΠΎΠ΄ ΠΈ ΠΊΠΎΠ³Π΄Π° это Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ, - ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π― сдСлал этот Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ простым, Ссли Π²Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ячСйку ΠΊΠΎΠ΄Π° Π² своСм собствСнном Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π΅ Python.

Когда я ΡƒΡ‡ΡƒΡΡŒ Π½Π° ΡƒΡ€ΠΎΠΊΠ°Ρ…, я всСгда ΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ воспроизвСсти Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ΄ рядом с пояснСниями.

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… Large Movie Review ΠΈ распакуйтС Π΅Π³ΠΎ локально.

-2

Установка

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вСсь ΠΊΠΎΠ΄ ΠΈΠ· Hugging Face, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ transformers. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ, я ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽ Π΅Π΅ прямо с GitHub. https://github.com/huggingface/transformers

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ml_things, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, связанных с ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ. Π― создал эту Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ объСм ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° машинного обучСния. https://github.com/gmihaila/ml_things

-3

Imports

Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для этой записной ΠΊΠ½ΠΈΠΆΠΊΠΈ. ΠžΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для этой записной ΠΊΠ½ΠΈΠΆΠΊΠΈ:

- set_seed (123) - ВсСгда ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ фиксированноС Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ число для воспроизводимости.

- epochs - количСство эпох обучСния (Π°Π²Ρ‚ΠΎΡ€Ρ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ ΠΎΡ‚ 2 Π΄ΠΎ 4).

- batch_size - ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² - Π² зависимости ΠΎΡ‚ максимальной Π΄Π»ΠΈΠ½Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ памяти GPU. ΠŸΡ€ΠΈ Π΄Π»ΠΈΠ½Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ 512 ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΠ· 10 ΠžΠ‘Π«Π§ΠΠ«Π₯ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ cuda. Для нСбольшой Π΄Π»ΠΈΠ½Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΠ· 32 ΠΈ Π²Ρ‹ΡˆΠ΅. max_length - дополняСт ΠΈΠ»ΠΈ усСкаСт тСкстовыС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹. Π― ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽ 60, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²ΠΊΡƒ.

- device - графичСский процСссор для использования.

- model_name_or_path - имя ΠΌΠΎΠ΄Π΅Π»ΠΈ трансформСра - Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ модСль. ΠŸΡƒΡ‚ΡŒ ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈ трансформСра - Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ Π²Π°ΡˆΡƒ модСль с локального диска. Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ я Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ модСль gpt2.

- label_ids - Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΈ ΠΈΡ… id - это Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для прСобразования строковых ΠΌΠ΅Ρ‚ΠΎΠΊ Π² числа.

- n_labels - Бколько ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π² этом Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° классификационной .

-4

Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

МнС нравится Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС классы ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² этом Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π΅, Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ чистый внСшний Π²ΠΈΠ΄ Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π°:

MovieReviewsDataset (Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…)

Если Π²Ρ‹ Ρ€Π°Π½ΡŒΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с PyTorch, это Π²ΠΏΠΎΠ»Π½Π΅ стандартно. Нам Π½ΡƒΠΆΠ΅Π½ этот класс для чтСния Π² нашСм Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° тСкстов с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ.

Π’ этом классС ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ содСрТимоС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ fix_text, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Unicode ΠΈ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ настроСния.

Π― Π±ΡƒΠ΄Ρƒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ всС тСксты ΠΈ надписи Π² списки.

Класс PyTorch Dataset состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… основных частСй:

init (), Π³Π΄Π΅ ΠΌΡ‹ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ тСкст ΠΈ ΠΌΠ΅Ρ‚ΠΊΠΈ Π² числа.

len (), Π³Π΄Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ количСство ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ. Π­Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ len (MovieReviewsDataset ()).

getitem () всСгда ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² качСствС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° int, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдставляСт, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² слСдуСт Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΈΠ· нашСго Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…. Если Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 3, ΠΌΡ‹ Π²Π΅Ρ€Π½Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· нашСго Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 3.

-5
-6

Gpt2ClassificationCollator

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ этот класс для создания сборщика Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² DataLoader для создания Π½Π°Π±ΠΎΡ€ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² модСль. Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ΠΌΠ΅Ρ‚ΠΎΠΊ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для прСобразования тСкстов ΠΈ ΠΌΠ΅Ρ‚ΠΎΠΊ Π² числа.

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ для нас, Hugging Face ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π» всС ΠΈ заставил Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π΄Π΅Π»Π°Ρ‚ΡŒ всю Ρ‚ΡΠΆΠ΅Π»ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ (Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ тСкст Π½Π° Ρ‚ΠΎΠΊΠ΅Π½Ρ‹, Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒ, ΡƒΡΠ΅ΠΊΠ°Ρ‚ΡŒ, ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСкст Π² числа) ΠΈ ΠΎΡ‡Π΅Π½ΡŒ прост Π² использовании!

Π­Ρ‚ΠΎΡ‚ класс Data Collator состоит ΠΈΠ· Π΄Π²ΡƒΡ… основных частСй:

init (), Π³Π΄Π΅ ΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ наши ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈ Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ для Π΄Π»ΠΈΠ½Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

call () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² качСствС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² Π½Π°ΡˆΡƒ модСль. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, наш Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π΄Π΅Π»Π°Π΅Ρ‚ это Π·Π° нас ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π² модСль ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: модСль (** Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅). ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π΄ΠΎΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ модСль, я Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ» ΠΌΠ΅Ρ‚ΠΊΠΈ.

-7
-8

train(dataloader, optimizer_, scheduler_, device_)

Π― создал эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ DataLoader (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ DataLoader создаСтся ΠΈΠ· нашСго ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° Dataset * с использованиСм класса ** MovieReviewsDataset). По сути, это ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ эпохи ΠΏΠΎ всСму Π½Π°Π±ΠΎΡ€Ρƒ Π΄Π°Π½Π½Ρ‹Ρ….

Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Π΄Π°Π½Π½Ρ‹Ρ… создаСтся ΠΈΠ· PyTorch DataLoader, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Π΅Ρ€Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, созданный ΠΈΠ· класса MovieReviewsDataset, ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠΎΡ€ΠΌΠΈΡ‚ΡŒ Π½Π°ΡˆΡƒ модСль ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…!

Optimizer_ ΠΈ scheduler_ ΠΎΡ‡Π΅Π½ΡŒ распространСны Π² PyTorch. Они Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для обновлСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² нашСй ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ скорости обучСния Π²ΠΎ врСмя обучСния. Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π³ΠΎ, Π½ΠΎ я Π½Π΅ Π±ΡƒΠ΄Ρƒ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² подробности. На самом Π΄Π΅Π»Π΅ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ огромная ΠΊΡ€ΠΎΠ»ΠΈΡ‡ΡŒΡ Π½ΠΎΡ€Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π° этими функциями стоит ΠžΠ§Π•ΠΠ¬ ΠœΠΠžΠ“Πž, ΠΎ Ρ‡Π΅ΠΌ Π½Π°ΠΌ Π½Π΅ ΠΎ Ρ‡Π΅ΠΌ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ. Бпасибо, PyTorch!

Π’ процСссС ΠΌΡ‹ отслСТиваСм фактичСскиС ΠΈ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ вмСстС с потСрями.

-9
-10
-11

validation(dataloader, device_)

Π― Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ Π±Π΅Π· обновлСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° ΠΈ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΉ части Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°. Нам Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ всС эти ΠžΠ§Π•ΠΠ¬ рСсурсоСмкиС Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π²Π°ΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·Ρ‹ нашСй ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ DataLoader Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Ρ‚ΠΈΠΈ для ΠΏΠΎΠ΄Π°Ρ‡ΠΈ Π² Π½Π°ΡˆΡƒ модСль.

Π’ процСссС я ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽ фактичСскиС ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈ прСдсказанныС ΠΌΠ΅Ρ‚ΠΊΠΈ вмСстС с потСрями.

-12
-13
-14

МодСль Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ‚Ρ€Π΅Ρ… основных частСй ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ прСобразоватСля GPT2: ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ я Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ gpt2 ΠΈΠ· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… трансформСров HuggingFace. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ GP2, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅.

ΠŸΡ€ΠΈ создании model_config я упомяну количСство ΠΌΠ΅Ρ‚ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½Ρ‹ для ΠΌΠΎΠ΅ΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ классификации. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° настроСния: ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, ΠΌΠ½Π΅ понадобятся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ для num_labels.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° довольно стандартно ΠΏΡ€ΠΈ использовании Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Transformers. ПослС создания Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° для этого ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ° критичСски Π²Π°ΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²Π»Π΅Π²ΠΎ tokenizer.padding_side = "left" ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½ заполнСния Π² tokenizer.eos_token, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся исходным Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠΌ ΠΊΠΎΠ½Ρ†Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ GPT2. Π­Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ваТная Ρ‡Π°ΡΡ‚ΡŒ этого руководства, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ GPT2 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ послСдний Ρ‚ΠΎΠΊΠ΅Π½ для прогнозирования, поэтому Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ввСсти Π΅Π³ΠΎ Π²Π»Π΅Π²ΠΎ.

HuggingFace ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π» Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π·Π° нас ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ классификации Π² модСль GPT2. ΠŸΡ€ΠΈ создании ΠΌΠΎΠ΄Π΅Π»ΠΈ я использовал GPT2ForSequenceClassification. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ нас Π΅ΡΡ‚ΡŒ собствСнный ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ заполнСния, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для ΠΌΠΎΠ΄Π΅Π»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ model.config.pad_token_id. НаконСц, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ модСль Π½Π° устройство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Ρ€Π°Π½Π΅Π΅.

-15
-16

Набор Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ΄Π±ΠΎΡ€Ρ‰ΠΈΠΊ

Π—Π΄Π΅ΡΡŒ я создаю Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… PyTorch ΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Data Collator, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π½Π°ΡˆΡƒ модСль.

Π—Π΄Π΅ΡΡŒ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ класс MovieReviewsDataset для создания Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… PyTorch, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ тСксты ΠΈ ΠΌΠ΅Ρ‚ΠΊΠΈ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ числа Π² Π½Π°ΡˆΡƒ модСль, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ тСксты ΠΈ ΠΌΠ΅Ρ‚ΠΊΠΈ Π² числа. Π­Ρ‚ΠΎ Ρ†Π΅Π»ΡŒ ΠΏΠΎΠ΄Π±ΠΎΡ€Ρ‰ΠΈΠΊΠ°! Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… PyTorch, ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΈΡ… Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Data Collator для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для нашСй ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Π― Π΄Π΅Ρ€ΠΆΡƒ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€ подальшС ΠΎΡ‚ Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… PyTorch, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄ Π±Ρ‹Π» Ρ‡ΠΈΡ‰Π΅ ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ структурирован. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… PyTorch ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прямо Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±Π΅Π· использования сборщика Π΄Π°Π½Π½Ρ‹Ρ….

Π― Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ тСкстовый Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, сколько обучСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ пСрСобучСния. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ выяснитС, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π΄Π°ΡŽΡ‚ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ со всСм Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ….

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для форматирования Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… PyTorch Dataset Π² соотвСтствии с Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ для GPT2.

-17

Π― создал ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ для использования PyTorch Π² ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ. Π― использовал Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнныС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ модСлями трансформСров.

Π― ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Π» количСство ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… эпох ΠΈ Π²Ρ‹Π·Π²Π°Π» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ обучСния ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

Π― ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ эпохи, ΠΊΠ°ΠΊ Keras: train_loss: - val_loss: - train_acc: - valid_acc.

ПослС обучСния постройтС ΠΊΡ€ΠΈΠ²Ρ‹Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡŒ ΠΈ точности для обучСния ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π“Ρ€Π°Ρ„ΠΈΠΊΠΈ обучСния ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ странно: Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ начинаСтся Π²Ρ‹ΡˆΠ΅, Ρ‡Π΅ΠΌ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ обучСния, Π° ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ Π½ΠΈΠΆΠ΅, Ρ‡Π΅ΠΌ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΏΡ€ΠΈ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… просто ΠΏΡ€ΠΎΡ‰Π΅ для части ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈΠ»ΠΈ слишком слоТно для части обучСния ΠΈΠ»ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это руководство посвящСно использованию GPT2 для классификации, я Π½Π΅ Π±ΡƒΠ΄Ρƒ слишком Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… ΠΌΠΎΠ΄Π΅Π»ΠΈ.

-18
-19
-20
-21

ΠžΡ†Π΅Π½ΠΊΠ°

ИмСя Π΄Π΅Π»ΠΎ с классификациСй, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΎΡ†Π΅Π½ΠΊΡƒ F1.

Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ являСтся confusion matrix.

-22
-23
-24

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Если Π²Ρ‹ дошли Π΄ΠΎ этого мСста, ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΠ΅ΠΌ! 🎊 ΠΈ спасибо! πŸ™ Π·Π° ваш интСрСс ΠΊ ΠΌΠΎΠ΅ΠΌΡƒ руководству!

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ этот ΠΊΠΎΠ΄ ΡƒΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя , ΠΎΠ½ ΡƒΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ прост Π² использовании.

ΠΊΠΎΠ΄ : https://github.com/gmihaila/ml_things/issues