Jika Anda mencari cara untuk mengatur, mengelola, dan mencatat langkah-langkah dan operasi selama proses pelatihan dan tidak ingin menggunakan PyTorch Lightning, tidak perlu mencari lagi

Kami akan membagi logika manajer pelatihan menjadi beberapa tahap dengan mengikuti hierarki klasik penyiapan pelatihan:

  • Tahap paling tinggi adalah pelatihan yang dijalankan, yang mencakup seluruh pelatihan untuk satu set hyper-parameter (jumlah epoch, konfigurasi model, kecepatan pembelajaran, pengoptimal, dll.)
  • Selanjutnya, kita memiliki epoch, tahapan ini mewakili satu lintasan dari keseluruhan kumpulan data melalui model kita
  • Untuk setiap periode, kami memiliki dua langkah: langkah pelatihandan langkah validasi. Pada langkah pelatihan, kami melakukan pembelajaran sebenarnya dengan gerakan maju dan mundur, dan dalam validasi, kami menghitung metrik yang dipilih untuk sampel penahan.

Sebagai bonus, saya juga akan menunjukkan kepada Anda metode untuk menghasilkan setiap kumpulan parameter proses dari daftar nilai yang tersedia (petunjuk: produk Cartesian).

Proses Pelatihan

Pertama, mari kita tentukan proses pelatihan yang sudah menggunakan Manajer sehingga kita memiliki contoh bagaimana cara penggunaannya, ini akan membantu nanti ketika kita mendefinisikan fungsi sebenarnya.

Manajer Jalankan

Selanjutnya, mari kita pikirkan informasi apa yang kita ingin agar dikumpulkan dan dicatat oleh Manajer kita sehingga kita mempunyai gambaran tentang bagaimana tampilan RunManager:

  • Kami ingin tahu apa zaman saat ini dan dijalankan
  • Kerugian rata-rata per zaman
  • Akurasi per zaman (kita dapat menggunakan metrik lain: F1, presisi, perolehan, MSE, MAE, dll.)
  • Berapa lama epoch dan jangka waktu yang dibutuhkan
  • Akan menyenangkan juga untuk mencatat semuanya ke tensorboard

Untuk kerugian dan akurasi, kami ingin memisahkannya menjadi pelatihan dan validasi, sehingga kami dapat lebih memahami performa model sebenarnya.

Jalankan dan Epoch Dimulai

Seperti yang saya sebutkan di awal artikel ini, kita memiliki dua loop utama, loop luar yang mencakup semua kombinasi hyperparameter dengan membuat set yang menentukan proses tertentu (kita akan segera melihat cara menghasilkannya) dan loop dalam yang mengulangi berdasarkan jumlah periode (yang juga merupakan hyperparameter potensial), bagian tempat pembelajaran berlangsung.

Oleh karena itu, kita perlu memberi sinyal kepada RunManager saat proses baru dan epoch baru dimulai untuk mengelompokkan data sesuai kebutuhan dan menyetel ulang variabel berbasis status.

Bonus

Selama proses pelatihan model pembelajaran mesin, beberapa parameter tidak dapat dibedakan dan menentukan proses pembelajaran pada tingkat yang lebih tinggi. Kami menyebutnya, hiperparameter.

Biasanya, tidak ada cara untuk menentukan nilai terbaiknya, jadi kami hanya perlu mencoba semuanya (penafian: ada beberapa metode untuk meningkatkan penelusuran tetapi ini berada di luar cakupan artikel ini).

Singkatnya, tugas kita adalah menghasilkan semua kemungkinan kombinasi dari nilai yang kita usulkan untuk hyperparameter, kombinasi ini menentukan setiap proses. Untuk ini, kita akan menggunakan fungsi product dari paket python itertools bawaan:

from itertools import product
h_params = {
    "lr": [0.001, 0.0001],
    "num_epochs": [10, 50]
}
runs = []
for run in product(*h_params.values()):
    runs.append(run)

Epoch dan Jalankan Berakhir

Selanjutnya kita akan membahas beberapa tahapan dalam satu langkah, semuanya terkait satu sama lain dan akan lebih masuk akal.

Sebelumnya kita telah melihat metode untuk menandakan permulaan suatu proses dan suatu zaman. Di setiap epoch, kami harus melakukan iterasi pada seluruh kumpulan data, karena berbagai alasan terkait optimasi komputasi dan konvergensi, kami melakukannya secara batch (penurunan gradien stokastik mini-batch). Oleh karena itu, kami harus mencatat beberapa informasi terkait langkah ini ke RunManager, yang akan membantu kami menghitung kerugian keseluruhan dan akurasi untuk keseluruhan epoch.

Setelah periode tersebut selesai, kita harus menghitung metrik yang disebutkan di atas, menyimpannya ke koleksi lokal dan mencatatnya ke Tensorboard. Kami akan memiliki dua sub-langkah, untuk pelatihan dan validasi:

Akhirnya

Setelah semuanya selesai, Anda akan memiliki plot tensorboard yang bagus untuk menganalisis performa model dan riwayat log setiap zaman yang dapat Anda masukkan ke dalam kerangka data pandas atau simpan ke disk sebagai CSV atau JSON.

Kesimpulan

Proses pelatihan yang disajikan di sini cukup umum, namun hal ini menunjukkan bahwa dengan menggunakan modul tipe RunManager Anda dapat memiliki kode yang lebih bersih dan mudah dipahami.

Seperti yang saya sebutkan di awal artikel Anda harus memeriksa juga memeriksa Pytorch Lightning.

Terima kasih telah membaca, saya harap artikel ini bermanfaat bagi Anda dan jika Anda ingin tetap mengetahui berita pemrograman dan pembelajaran mesin terbaru serta beberapa meme berkualitas baik :), Anda dapat mengikuti saya di Twitter di sini atau terhubung di LinkedIn "di sini".

Referensi