Sistem pemberi rekomendasi dari awal, chatbots, dan lainnya
Setelah terjun ke jurang data tekstual, pada bulan Oktober tahun ini kami melatih model ruGPT-3 - model untuk bahasa Rusia berdasarkan arsitektur dari OpenAI. Tapi apa kemampuan model ini? Pada artikel ini, kami akan mengumpulkan contoh pertama penerapan model - dan mencoba yang baru.
Kami menyajikan hasil pertama dari model terlatih terbesar, ruGPT-3 Large, yang dikembangkan bekerja sama dengan tim SberDevices , Sber.AI , dan SberCloud . Mari jelajahi batas-batas penerapannya bersama Anda.
Pada AI Journey tahun ini, kami menyiapkan kompetisi aplikasi ruGPT-3 - solusi apa pun yang menggunakan model, dinilai dalam tiga skala - inovasi, keterlibatan emosional, dan penerapan bisnis - dapat dikirimkan ke trek.
Spoiler:
1 juta rubel untuk tempat pertama
Bagaimana cara melatih model untuk tugas baru?
Model dan kodenya ada di repositori sberbank-ai : Anda dapat menggunakan pustaka transformer atau Megatron-LM.
Pada artikel ini, saya memberikan contoh menggunakan huggingface / transformer - kode untuk kasus diberikan di sini:
- Model Laptop Colab yang Disempurnakan
- Hanya Menghasilkan Laptop Colab
Kartu model di pustaka transformer: Besar Sedang Kecil
Ketika Anda menjalankan skrip pembuatan, lebih mudah untuk melakukan Jalankan semua - lalu tunggu sebentar sementara model dimuat.
Skrip di sel terakhir akan meminta Anda untuk memasukkan awal teks - benih favorit saya: "Ilmuwan Brasil telah menemukan spesies unicorn kerdil langka yang hidup di barat Jutlandia." Kami mendapatkan : Hanya ruGPT-3 Small yang cocok dengan laptop Colab, jadi lebih baik menggunakan kartu dengan memori lebih dari 14 Gb.
ruGPT-3 Small: , . Agence France-Presse. , Pygmaliona (. Pygmaliona pygmalioni), . 30 , β 1 . . , .
Ngomong-ngomong, selama kompetisi berlangsung, kami memberikan akses fasilitas Christofari kepada peserta lintasan!
Untuk peserta trek ruGPT-3, kami telah mengalokasikan 100 akun - di setiap akun 1 GPU Tesla V100-SXM3 32 Gb gratis selama kompetisi.
Bagaimana cara saya mendapatkan akun?
1) Daftar untuk trek ruGPT-3 (AI 4 Humaniora) ods.ai/tracks/aij2020
2) Tulis surat pendek dengan nama tim Anda dan tugaskan ke AIJ_ruGPT-3@sberbank.ru
Few-Shot vs Fine Tuning
Dalam kasus model generatif besar seperti arsitektur mirip GPT, ada beberapa cara untuk "menanganinya".
?
Melatih ulang model besar bisa sangat mahal, jadi cara "berkomunikasi" dengan mereka memungkinkan Anda menghindari hal itu. Inti dari pemrograman seed adalah untuk memilih contoh yang telah disiapkan dan permulaan untuk generasi, sehingga model selanjutnya menghasilkan apa yang dibutuhkan.
Memilih hyperparameter "seed" dan generator (temperature, top_n, top_k), adalah mungkin untuk mendapatkan jawaban yang cukup dapat diterima karena hanya pelatihan awal model.
Contoh seed dengan 1 contoh dan deskripsi masalah.
Kami akan menguji kedua metode dalam praktik - kami akan mencoba memecahkan masalah populer dari awal, dan yang spesifik - dengan pelatihan tambahan.
Sistem pemberi rekomendasi
Mari kita buat sistem rekomendasi tanpa pelatihan: kita akan mengirimkan ke ruGPT-3 Informasi besar tentang preferensi pengguna dalam bentuk teks, dan kita akan melihat bagaimana model melanjutkannya. Kami dapat menghasilkan banyak opsi sekaligus untuk mendapatkan lebih banyak rekomendasi.
Rekomendasi Film: Lumayan! Setidaknya film tampaknya dihasilkan sesuai dengan benihnya. Karena saya bukan penikmat sinema Soviet, saya bahkan tidak tahu film "Tiga tambah dua", tetapi itu benar. Untuk generasi, kami menggunakan peretasan berikut - kami secara khusus menyediakan teks dengan tanda kutip terbuka untuk memaksa model menghasilkan nama yang tepat, dan juga memotong semua yang tidak perlu setelah kalimat pertama. Rekomendasi Musik:
: β ββ, ββ, β
ruGPT-3 Large: β ββ, ββ, β β, β β, β β.
ruGPT-3 Large: β ββ, ββ, β β, ββ, ββ (, , , ).
ruGPT-3 Large: β ββ, ββ, ββ .β
: : β β, β
ruGPT-3 Large: : β β, β β β β.
ruGPT-3 Large: : β β, β β.
ruGPT-3 Large: : β β, β β, β β .
: β , β β, β #( , )
ruGPT-3 Large: , β β, ββ ββ.
ruGPT-3 Large: , β β, ββ β β.
ruGPT-3 Large: , β β, ββ, β β, β β, ββ ββ.
Hasilnya berbeda sepanjang waktu - Anda berpotensi dapat menghasilkan varian N, mengekstrak semua nama grup dan mengumpulkan Penghitung yang paling populer - voila, sistem rekomendasi dari awal.
Menghasilkan ulasan
Mari kita ambil tugas yang lebih sulit - mari membuat model meniru seseorang dalam diskusi atau toko: Seperti yang Anda lihat, untuk topik yang tersebar luas di Internet, model dapat menghasilkan teks yang koheren tanpa pelatihan. Tetapi di mana masih tidak ada cara tanpa pelatihan tambahan? Ada 3 kasus seperti itu:
: β .
- β
ruGPT-3 Large: β .
- . , .β
: β .
β
ruGPT-3 Large: β .
.
, .
, , . , , .β
: .
"1+1"
ruGPT-3 Large: .
"1+1" β , . . . . " ", .
- format data kompleks - jika, selama pembuatan tanpa pelatihan, Anda kehilangan kualitas karena pembuatan dalam format yang salah - masalah NER, pembuatan kode, kalkulasi simbolik, dll .;
- , β QA , , , ;
- , , , β , .
StackOverflow
Mari kita tingkatkan tingkat kerumitan: unduh [stack overflow] bahasa Rusia (https://ru.stackoverflow.com/) dan coba buat sistem tanya jawab. Akankah kita dapat segera mempelajari gaya jawaban, dan pengetahuan, dan beberapa bahasa pemrograman? Tidak mudah untuk langsung mendapatkan hasil yang bagus dalam soal taoki, tapi kita bisa bersenang-senang - lebih dari 5 epoch, sang model telah belajar mereproduksi gayanya, menjadi sangat bingung dalam konten. Tetapi saya mempelajari tautan ke dokumentasi dengan baik - hasil yang cukup bagus selama 5 era pembelajaran.
Format pelatihan: kami mengirimkan teks pertanyaan dan jawaban terbaik dalam format Q: "blabla" A: "blabla". (sebenarnya tidak ada pustaka seperti itu, model menghasilkan tautan ke dokumentasi)
Q: python?
A: : push.log("Shalom").
- , .
set.log()**)
rGet = puts.random(extents) log.findIndex(puts.current) void join($window, command='unsetMainServer onManager') }
,
Q: python?
A: import pycode as pyc;
// ( href=https://docs.python.org/3/library/pycode.html )
Untuk tugas semacam itu, Anda dapat memasukkan argumen tambahan - misalnya, nama bagian / subjek / bahasa pemrograman, yang ingin Anda jawab, dan melatih model pada data dengan format {"parameter": "value", "question": "text_question", "answer": "Answer_text"}.
Mengenai kode dan teksnya, kami memiliki file segera - mungkin seseorang akan melakukannya dengan lebih baik di trek? Sudah ada implementasi yang cukup berhasil pada model bahasa Inggris dengan kode: menulis kode-html elemen halaman web, menghasilkan template Figma.
Mencoba bahasa lain! Twitter dan lainnya
Bahasa utama pengajaran model adalah bahasa Rusia, tetapi apakah mungkin untuk menerapkan model dalam tugas multibahasa? Beberapa bahasa lain selalu termasuk dalam sampel pelatihan dari web, jadi masih ada harapan. Pendekatan langsung dengan seed menunjukkan bahwa model mengetahui sedikit tentang model bahasa Inggris: Yah, hampir: Kadang-kadang tidak berfungsi sama sekali: Mengapa tidak berlatih dengan data bahasa Inggris murni: Saya mengambil set data klasifikasi teks twitter dari kompetisi Kaggle. Setelah 5 periode pada 5 ribu komentar pertama (20 menit di Colab ), kami mendapatkan generasi komentar yang sangat beracun dalam bahasa Inggris yang cukup lumayan:
ruGPT-3 Large:
β> cat
β> dog
β> pear
β> coder
β> cat
β> dog
β> pear
β> Python
β> cat
β> dog
β> pear
β> bunch #
β> dog
β> cat
β> dog
Context >>> Is it
ruGPT-3 Small: Is it's the case that #Microsoft is using #SAP to manage #Microsoftβs business?
Context >>> It is
ruGPT-3 Small: It is the only one that I've been trying to do. Siri is on the verge of death, and I'm not aware of why she has to be on the verge.
Context >>> Why
ruGPT-3 Small: Why do I go here? I'm wondering if I can use the #Microsoft Windows 8 Pro for the #WindowsPhone phone? Thanks!
Sistem dialog
Tanpa pra-pelatihan, penerapan model ke sistem dialog bekerja cukup baik: model dapat melakukan fungsi chit-chat (tidak membicarakan apa-apa), mengobrol bebas tentang berbagai topik. Dengan pelatihan tambahan tentang skenario dan domain tertentu, Anda dapat mengimplementasikan aplikasi bisnis.
Contoh di bawah ini adalah contoh dialog tanpa pelatihan, pada topik yang fokusnya sempit - dukungan penyedia Internet.
Pembibitan: 2 baris pertama - generasi selanjutnya. Tentu saja, tanpa pra-pelatihan, model tidak memiliki gagasan eksplisit tentang skrip dan skrip spesialis dukungan, namun, bahkan permulaan yang dingin seperti itu sudah menunjukkan cara standar untuk "mencari tahu apa yang terjadi - nongkrong - mengalihkan panggilan". Anda dapat mengingat yang klasik:
User1: , ! ?
User2: .
User1: ?
User2: 500
User1: ?
User2: . .. .
User1: ?
User2: . , - ...
User1: , , , , ?
User2:
User1: , . , .
User2: , . .
User1: . , , .
User2: , , ?
User1: ?
User2: . .
User1: ?
User2:
User1: . .
User1: , . - .
User2: , .
User1:
User2:
User1: «», 656, , .
User2: , 766β1669, : , , , , , , ?
User1: 1 . , , .
User2: , , , - ?
User1: , 1 . , - , , , . .
User2: , , , , - .
User1: .
User2: , ?
User1: , , .
User2: , , .
Secara umum, "Anda harus bersabar." Model tersebut bahkan ingat bahwa nama User1 adalah Dmitry, dan User2 mengucapkan selamat tinggal kepadanya.
Alih-alih kesimpulan
Untuk terus mengembangkan arah model generatif dan memperbaiki arsitektur dalam masalah NLP, selalu perlu untuk memahami batasan penerapan teknologi tertentu - dan relevansinya.
Sekarang, dengan setiap rilis arsitektur serupa - Reformer, Longformer, BigBird, dll. - kami melihat model besar yang sudah dilatih sebelumnya dengan cara yang sedikit baru, memberikan tantangan baru bagi mereka.
Selain kasus-kasus di atas, ruGPT-3 tentunya dapat diterapkan dan bermanfaat dalam praktik-praktik seperti:
- augmentasi data teks untuk tugas ML
- model dialog untuk otomatisasi
- tugas penjumlahan generatif
- penulisan ulang, pembuatan berita, catatan olahraga berdasarkan informasi terstruktur.
Semoga demo dan modelnya bermanfaat bagi komunitas - dan menyenangkan!
Dan tentunya kami tunggu keputusan bapak di jalur ruGPT-3 hingga akhir tanggal 22 November!