Saya telah melatih model XLNet Jepang dengan panjang urutan maksimum 512 pada Pod Cloud TPU v3–256 yang dapat digantikan yang disediakan oleh Google TFRC (gratis!), dengan kumpulan data Wikipedia bahasa Jepang. Meskipun pelatihan ini masih terlalu dini karena saya telah menghabiskan semua kredit TPU saya, saya menyempurnakan model untuk mengklasifikasikan berita Livedoor Jepang. Saya mendapat inspirasi dari kontribusi Yohei Kikuta di mana dia telah melatih dan berbagi model BERT Jepang.

Satu perangkat Cloud TPU v3–8 memiliki memori 128 GB, sedangkan Pod v3–256 memiliki memori 4 TB, yang merupakan ukuran BESAR, dan saya tidak dapat mempersiapkan lingkungan seperti itu tanpa bantuan TFRC.

Sebenarnya, sebelum adanya TPU Pod, TFRC memberi saya hingga 110 perangkat Cloud TPU selama satu bulan gratis (kebanyakan dapat dipreemptible).

Pada awalnya, saya berpikir untuk menggabungkan perangkat TPU ini agar dapat berkolaborasi dalam melatih model bahasa Jepang saya. Belakangan saya menyadari bahwa hal itu "tidak seharusnya" dilakukan seperti itu.

TPU perangkat tunggal, yaitu perangkat TPU individual yang tidak terhubung satu sama lain melalui jaringan khusus berkecepatan tinggi. Anda tidak dapat menggabungkan beberapa jenis TPU perangkat untuk berkolaborasi pada satu beban kerja.

Bagaimanapun, saya dapat melatih beberapa contoh kecil model bahasa Inggris berdasarkan tutorial transformator TPU dan repositori XLNet. Namun pra-pelatihan transformator yang lebih besar (GPT, BERT atau XLNet,…) memerlukan lebih banyak daya komputasi dan memori. Oleh karena itu saya menghubungi tim TFRC dan meminta pod TPU, menjelaskan bahwa kami akan menerbitkan model umum Jepang jika kami dapat membuat model yang bagus. Hebatnya, mereka dengan baik hati menerima permintaan saya, memberi saya akses ke pod v3–256 yang dapat digantikan selama seminggu!

Saya menghabiskan paruh pertama minggu yang sangat berharga ini untuk mempelajari perbedaan antara menggunakan pod TPU dan satu perangkat TPU. Saya perlu "memodifikasi" sedikit kode XLNet (PR #239) agar dapat berfungsi pada pod TPU. Saya juga mengetahui bahwa pod TPU preemptive tidak dimulai ulang secara otomatis setelah di-preemptive dan memerlukan perhatian saya untuk menghapus yang lama dan membuat ulang yang baru. Untuk mengeksploitasi TPU preemptif, seseorang harus membuat saluran untuk mengotomatisasi pembuatannya.

Saya melatih XLNet sebentar, tetapi kerugiannya tidak berkurang seperti yang diharapkan, kemudian saya menyadari bahwa hyperparameternya berbeda dengan yang ada di kertas XLNet. Setelah memperbaiki hyperparameter, akses pod TPU saya hanya tersisa dua hari, dan selama periode tersebut, kerugian pelatihan berkurang dari 9 menjadi di atas 1, dan masih menurun saat pod TPU dihentikan.

Pra-pelatihan model XLNet memerlukan pemrosesan awal kumpulan data Wikipedia bahasa Jepang, melatih model SentencePiece, dan membuat masukan TFRecord. Tugas ini memerlukan VM GCP tipe n1-standard-16 (16 VCPU, memori 60 GB) selama sekitar 4 jam. Total biaya VM, penyimpanan, dan logging adalah sekitar $100 dan tidak ditanggung oleh program TFRC.

Setelah menyelesaikan pra-pelatihan pada pod TPU, penyesuaian dilakukan pada "Google Colab" menggunakan "Transformers" dari HuggingFace dan "Fast-Bert" dari Kaushal Trivedi untuk mengklasifikasikan kumpulan data berita Livedoor Jepang. Panjang urutan maksimum ditetapkan ke 128 agar sesuai dengan memori GPU Colab. Sayangnya, setelah 13 epoch, validation loss masih 0,81, dan akurasi hanya 0,75.

Saya akan meminta TFRC untuk lebih banyak akses Cloud TPU. Model XLNet untuk panjang urutan maksimum 512 yang telah dilatih sebelumnya pada pod TPU v3–256 masih kurang sesuai dengan kumpulan data Wikipedia bahasa Jepang. Sementara itu, pra-pelatihan model XLNet dengan panjang urutan maksimum 128 pada satu perangkat TPU mungkin cukup untuk tugas hilir dalam mengklasifikasikan berita Jepang.

Saya juga ingin mencoba "implementasi resmi XLNet TF2", mengingat tf-nightly "mendukung" TPU, dan berharap tf.text akan disertakan dalam "resep".

Tautan