
Selamat datang di perpustakaan transfer NLP, kerangka kerja yang dibangun di atas Pytorch untuk mempromosikan eksperimen yang dapat direproduksi dan transfer pembelajaran di NLP
Anda dapat memiliki ikhtisar API tingkat tinggi pada notebook Colab ini, yang menunjukkan cara menggunakan kerangka kerja pada beberapa contoh. Semua contoh berbasis DL pada notebook ini menyematkan sela pelatihan Tensorboard dalam sel!
Untuk contoh finetuning model pra-terlatih, kami menyediakan tutorial singkat yang dapat dieksekusi tentang Bertclassifier Finetuning di Colab Notebook ini
mkvirtualenv transfernlp
workon transfernlp
git clone https://github.com/feedly/transfer-nlp.git
cd transfer-nlp
pip install -r requirements.txt
Untuk menggunakan transfer NLP sebagai perpustakaan:
# to install the experiment builder only
pip install transfernlp
# to install Transfer NLP with PyTorch and Transfer Learning in NLP support
pip install transfernlp[torch]
atau
pip install git+https://github.com/feedly/transfer-nlp.git
Untuk mendapatkan negara terbaru sebelum rilis baru.
Untuk menggunakan transfer NLP dengan contoh terkait:
git clone https://github.com/feedly/transfer-nlp.git
pip install -r requirements.txt
Dokumentasi API dan gambaran umum perpustakaan dapat ditemukan di sini
Inti perpustakaan terbuat dari pembangun percobaan: Anda mendefinisikan berbagai objek yang dibutuhkan percobaan Anda, dan loader konfigurasi membangunnya dengan cara yang baik. Untuk penelitian yang dapat direproduksi dan studi ablasi yang mudah, perpustakaan kemudian menegakkan penggunaan file konfigurasi untuk percobaan. Karena orang memiliki selera yang berbeda untuk apa yang merupakan file percobaan yang baik, perpustakaan memungkinkan untuk percobaan yang ditentukan dalam beberapa format:
Di Transfer-NLP, file konfigurasi eksperimen berisi semua informasi yang diperlukan untuk mendefinisikan sepenuhnya percobaan. Di sinilah Anda akan memasukkan nama dari berbagai komponen yang akan digunakan percobaan Anda, bersama dengan hiperparameter yang ingin Anda gunakan. Transfer-NLP memanfaatkan inversi pola kontrol, yang memungkinkan Anda untuk mendefinisikan kelas / metode / fungsi apa pun yang Anda butuhkan, kelas ExperimentConfig akan membuat kamus dan membuat objek Anda sesuai.
Untuk menggunakan kelas Anda sendiri di dalam Transfer-NLP, Anda perlu mendaftarkannya menggunakan dekorator @register_plugin . Alih -alih menggunakan registri yang berbeda untuk setiap jenis komponen (model, loader data, vektoris, pengoptimal, ...), hanya satu registri yang digunakan di sini, untuk menegakkan kustomisasi total.
Jika Anda menggunakan transfer NLP sebagai ketergantungan dev saja, Anda mungkin ingin menggunakannya saja secara deklaratif, dan hubungi register_plugin() pada objek yang ingin Anda gunakan pada waktu berjalan eksperimen.
Berikut adalah contoh bagaimana Anda dapat mendefinisikan percobaan dalam file YAML:
data_loader:
_name: MyDataLoader
data_parameter: foo
data_vectorizer:
_name: MyVectorizer
vectorizer_parameter: bar
model:
_name: MyModel
model_hyper_param: 100
data: $data_loader
trainer:
_name: MyTrainer
model: $model
data: $data_loader
loss:
_name: PyTorchLoss
tensorboard_logs: $HOME/path/to/tensorboard/logs
metrics:
accuracy:
_name: Accuracy
Objek apa pun dapat didefinisikan melalui kelas, metode atau fungsi, diberikan parameter _name diikuti oleh parameternya sendiri. Eksperimen kemudian dimuat dan dipakai menggunakan ExperimentConfig(experiment=experiment_path_or_dict)
Beberapa pertimbangan:
Parameter default dapat dilewati dalam file percobaan.
Jika suatu objek digunakan di tempat yang berbeda, Anda dapat merujuknya menggunakan simbol $ , misalnya di sini objek trainer menggunakan data_loader yang dipakai di tempat lain. Tidak diperlukan pemesanan objek.
Untuk jalur, Anda mungkin ingin menggunakan variabel lingkungan sehingga mesin lain juga dapat menjalankan eksperimen Anda. Dalam contoh sebelumnya, Anda akan menjalankan EG ExperimentConfig(experiment=yaml_path, HOME=Path.home()) untuk membuat instantiate eksperimen dan mengganti $HOME dengan jalur rumah mesin Anda.
Instantiasi konfigurasi memungkinkan untuk pengaturan kompleks dengan dikt / daftar bersarang
Anda dapat melihat tes untuk contoh pengaturan percobaan yang dapat dibangun oleh config loader. Selain itu, kami memberikan eksperimen yang dapat dijalankan dalam experiments/ .
Untuk eksperimen pembelajaran yang mendalam, kami menyediakan BaseIgniteTrainer di transfer_nlp.plugins.trainers.py . Pelatih dasar ini akan mengambil model dan beberapa data sebagai input, dan menjalankan pipa pelatihan utuh. Kami memanfaatkan perpustakaan Pytorch-Ignite untuk memantau acara selama pelatihan (mencatat beberapa metrik, memanipulasi tingkat pembelajaran, model pos pemeriksaan, dll ...). Log Tensorboard juga disertakan sebagai opsi, Anda harus menentukan jalur parameter sederhana tensorboard_logs dalam file konfigurasi. Kemudian jalankan saja tensorboard --logdir=path/to/logs di terminal dan Anda dapat memantau eksperimen Anda saat pelatihan! Tensorboard hadir dengan utilitas yang sangat bagus untuk melacak norma -norma bobot model Anda, histogram, distribusi, memvisualisasikan embeddings, dll jadi kami sangat menyarankan untuk menggunakannya.

Kami menyediakan kelas SingleTaskTrainer yang dapat Anda gunakan untuk pengaturan yang diawasi yang berurusan dengan satu tugas. Kami sedang mengerjakan kelas MultiTaskTrainer untuk menangani pengaturan multi -tugas, dan SingleTaskFineTuner untuk model finetuning model besar.
Berikut adalah beberapa kasus penggunaan untuk transfer NLP:
ExperimentRunner memungkinkan untuk menjalankan set eksperimen Anda secara berurutan, dan menghasilkan pelaporan yang dipersonalisasi (Anda hanya perlu mengimplementasikan metode report Anda di kelas ReporterABC khusus)Module Pytorch dan membiarkan pelatih berurusan dengan bagian pelatihan (sambil tetap mengendalikan sebagian besar parameter pelatihan melalui file percobaan)Saat bereksperimen dengan model / data Anda sendiri, pelatihan mungkin memakan waktu. Untuk mendapatkan pemberitahuan ketika pelatihan Anda selesai atau macet, Anda dapat menggunakan knockknock perpustakaan sederhana oleh orang-orang di HuggingFace, yang menambahkan dekorator sederhana ke fungsi berjalan Anda untuk memberi tahu Anda melalui Slack, E-mail, dll.
Perpustakaan telah terinspirasi oleh pembacaan "pemrosesan bahasa alami dengan Pytorch" oleh Delip Rao dan Brian McMahan. Eksperimen dalam experiments , blok bangunan kosa kata dan tetangga terdekat diambil atau diadaptasi dari kode yang disediakan dalam buku ini.