Menyiapkan AutoML untuk melatih model pemrosesan bahasa alami dengan Python (pratinjau)
BERLAKU UNTUK:SDK Python azureml v1
Penting
Fitur ini sedang dalam pratinjau umum. Versi pratinjau ini disediakan tanpa perjanjian tingkat layanan, dan tidak disarankan untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan yang dibatasi.
Untuk mengetahui informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.
Pada artikel ini, Anda belajar cara melatih model pemrosesan bahasa alami (NLP) dengan ML otomatis di Python SDK Azure Machine Learning.
ML otomatis mendukung NLP yang memungkinkan ML profesional dan ilmuwan data untuk membawa data teks mereka sendiri dan membangun model khusus untuk tugas-tugas seperti, klasifikasi teks multi-kelas, klasifikasi teks multi-label, dan pengenalan entitas karakter (NER).
Anda dapat berintegrasi dengan mulus dengan kemampuan pelabelan data Azure Machine Learning untuk memberi label data teks anda atau membawa data berlabel yang ada. ML otomatis menyediakan opsi untuk menggunakan pelatihan terdistribusi pada kluster komputasi multi-GPU untuk pelatihan model yang lebih cepat. Model yang dihasilkan dapat dioptimalisasikan dalam skala besar dengan memanfaatkan kemampuan MLOps Azure Machine Learning.
Prasyarat
Langganan Azure. Jika Anda tidak langganan Azure, daftar untuk mencoba versi gratis atau berbayar Azure Machine Learning hari ini.
Ruang kerja Azure Machine Learning dengan komputasi pelatihan GPU. Untuk membuat ruang kerja, lihat Membuat sumber daya ruang kerja. Lihat Ukuran mesin virtual yang dioptimalkan GPU untuk detail lebih lanjut tentang instans GPU yang disediakan oleh Azure.
Peringatan
Dukungan untuk model multibahasa dan penggunaan model dengan panjang urutan maksimum yang lebih panjang diperlukan untuk beberapa kasus penggunaan NLP, seper himpunan data non-inggris dan dokumen jarak jauh. Akibatnya, skenario ini mungkin memerlukan memori GPU yang lebih tinggi agar pelatihan model berhasil, seperti seri NC_v3 atau seri ND.
Azure Machine Learning Python SDK yang diinstal.
Untuk menginstal SDK Anda dapat baik,
Buat instans komputasi, yang secara otomatis menginstal SDK dan dikonfigurasi sebelumnya untuk alur kerja ML. Lihat Membuat dan mengelola instans komputasi Azure Machine Learning untuk informasi selengkapnya.
Instal
automl
paket sendiri, yang mencakup instalasi default SDK.
Penting
Perintah Python dalam artikel ini memerlukan versi paket
azureml-train-automl
terbaru.- Pasang paket
azureml-train-automl
terbaru ke lingkungan lokal Anda. - Untuk detail tentang paket
azureml-train-automl
terbaru, lihat catatan rilis.
Dengan mengikuti artikel ini, Anda diasumsikan memiliki pemahaman akan penyiapan percobaan pembelajaran mesin otomatis. Ikuti tutorial atau cara melihat pola desain percobaan pembelajaran mesin otomatis utama.
Pilih tugas NLP Anda
Tentukan tugas NLP apa yang ingin Anda selesaikan. Saat ini, ML otomatis mendukung tugas NLP jaringan saraf dalam berikut.
Tugas | Sintaks AutoMLConfig | Deskripsi |
---|---|---|
Klasifikasi teks multi-kelas | task = 'text-classification' |
Ada beberapa kelas yang mungkin dan setiap sampel dapat diklasifikasikan sebagai tepat satu kelas. Tugasnya adalah memprediksi kelas yang benar untuk setiap sampel. Misalnya, mengklasifikasikan naskah film sebagai "Komedi" atau "Romantis". |
Klasifikasi teks multi-label | task = 'text-classification-multilabel' |
Ada beberapa kelas yang mungkin dan setiap sampel dapat diberikan sejumlah kelas. Tugasnya adalah memprediksi semua kelas untuk setiap sampel Misalnya, mengklasifikasikan naskah film sebagai "Komedi", atau "Romantis", atau "Komedi dan Romantis". |
Named Entity Recognition (NER) | task = 'text-ner' |
Ada beberapa tag yang mungkin untuk token secara berurutan. Tugasnya adalah memprediksi tag untuk semua token untuk setiap urutan. Misalnya, mengekstraksi entitas khusus domain dari teks tidak terstruktur, seperti kontrak atau dokumen keuangan |
Menyiapkan data
Untuk eksperimen NLP dalam ML otomatis, Anda dapat membawa himpunan data Azure Machine Learning dengan .csv
format untuk tugas klasifikasi multi-kelas dan multi-label. Untuk tugas NER, file dua kolom .txt
yang menggunakan spasi sebagai pemisah dan mematuhi format CoNLL didukung. Bagian berikut memberikan detail tambahan untuk format data yang diterima untuk setiap tugas.
Multi-kelas
Untuk klasifikasi multi-kelas, himpunan data dapat berisi beberapa kolom teks dan tepatnya satu kolom label. Contoh berikut hanya memiliki satu kolom teks.
text,labels
"I love watching Chicago Bulls games.","NBA"
"Tom Brady is a great player.","NFL"
"There is a game between Yankees and Orioles tonight","MLB"
"Stephen Curry made the most number of 3-Pointers","NBA"
Multi-label
Untuk klasifikasi multi-label, kolom himpunan data akan sama dengan multi-kelas, namun ada persyaratan format khusus untuk data di kolom label. Dua format dan contoh yang diterima ada di tabel berikut.
Opsi format kolom label | Beberapa label | Satu label | Tidak ada label |
---|---|---|---|
Teks biasa | "label1, label2, label3" |
"label1" |
"" |
Daftar Python dengan tanda kutip | "['label1','label2','label3']" |
"['label1']" |
"[]" |
Penting
Pengurai yang berbeda digunakan untuk membaca label untuk format ini. Jika Anda menggunakan format teks biasa, gunakan abjad, numerik, dan '_'
saja dalam label Anda. Semua karakter lain diakui sebagai pemisah label.
Misalnya, jika label Anda "cs.AI"
, itu dibaca sebagai "cs"
dan "AI"
. Sedangkan dengan format daftar Python, labelnya "['cs.AI']"
adalah, yang dibaca sebagai "cs.AI"
.
Contoh data untuk multi-label dalam format teks biasa.
text,labels
"I love watching Chicago Bulls games.","basketball"
"The four most popular leagues are NFL, MLB, NBA and NHL","football,baseball,basketball,hockey"
"I like drinking beer.",""
Contoh data untuk multi-label dalam daftar Python dengan format kutipan.
text,labels
"I love watching Chicago Bulls games.","['basketball']"
"The four most popular leagues are NFL, MLB, NBA and NHL","['football','baseball','basketball','hockey']"
"I like drinking beer.","[]"
Pengenalan Entitas Karakter (NER)
Tidak seperti multi-class atau multi-label, yang mengambil .csv
format dataset, pengenalan entitas bernama memerlukan format CoNLL. File harus berisi tepat dua kolom dan di setiap baris, token dan label dipisahkan oleh satu spasi.
Contohnya,
Hudson B-loc
Square I-loc
is O
a O
famous O
place O
in O
New B-loc
York I-loc
City I-loc
Stephen B-per
Curry I-per
got O
three O
championship O
rings O
Validasi data
Sebelum pelatihan, ML otomatis menerapkan pemeriksaan validasi data pada data input untuk memastikan bahwa data dapat diproses sebelumnya dengan benar. Jika salah satu dari pemeriksaan ini gagal, eksekusi gagal dengan pesan kesalahan yang relevan. Berikut ini adalah persyaratan untuk lulus pemeriksaan validasi data untuk setiap tugas.
Catatan
Beberapa pemeriksaan validasi data berlaku untuk pelatihan dan set validasi, sedangkan yang lain hanya berlaku untuk set pelatihan. Jika himpunan data pengujian tidak dapat lulus validasi data, itu berarti bahwa ML otomatis tidak dapat menangkapnya dan ada kemungkinan kegagalan inferensi model, atau penurunan kinerja model.
Tugas | Pemeriksaan validasi data |
---|---|
Semua tugas | - Set pelatihan dan validasi harus disediakan - Setidaknya diperlukan 50 sampel pelatihan |
Multi-kelas dan Multi-label | Data pelatihan dan data validasi harus memiliki - Kumpulan kolom yang sama - Urutan kolom yang sama dari kiri ke kanan - Tipe data yang sama untuk kolom dengan nama yang sama - Setidaknya dua label unik - Nama kolom unik dalam setiap himpunan data (Misalnya, kumpulan pelatihan tidak dapat memiliki beberapa kolom bernama Usia) |
Hanya multi-kelas | Tidak ada |
Multi-label saja | - Format kolom label harus dalam format yang diterima - Setidaknya satu sampel harus memiliki 0 atau 2+ label, jika tidak maka harus menjadi tugas multiclass - Semua label harus dalam str atau int format, tanpa tumpang tindih. Anda seharusnya tidak memiliki label 1 dan label '1' |
Hanya NER | - File tidak boleh dimulai dengan baris kosong Setiap baris harus merupakan garis kosong, atau ikuti format {token} {label} , di mana ada tepat satu ruang antara token dan label dan tidak ada ruang putih setelah label - Semua label harus dimulai dengan I- , B- , atau tepatnya O . Peka huruf besar/kecil- Tepat satu garis kosong antara dua sampel - Tepat satu baris kosong di akhir file |
Mengonfigurasi percobaan
Kemampuan NLP ML otomatis dipicu melalui AutoMLConfig
, yang merupakan alur kerja yang sama untuk mengirimkan eksperimen ML otomatis untuk tugas klasifikasi, regresi, dan peramalan. Anda akan mengatur sebagian besar parameter seperti yang Anda lakukan untuk eksperimen tersebut, seperti task
, compute_target
dan input data.
Namun, ada perbedaan utama:
- Anda dapat mengabaikan
primary_metric
, karena hanya untuk tujuan pelaporan. Saat ini, ML otomatis hanya melatih satu model per eksekusi untuk NLP dan tidak ada pemilihan model. - Parameter
label_column_name
hanya diperlukan untuk tugas klasifikasi teks multi-kelas dan multi-label. - Jika sebagian besar sampel dalam himpunan data Anda berisi lebih dari 128 kata, itu dianggap rentang jauh. Untuk skenario ini, Anda dapat mengaktifkan opsi teks rentang jauh dengan
enable_long_range_text=True
parameter diAutoMLConfig
Anda. Jika Anda melakukan tindakan tersebut, performa model ditingkatkan, tetapi waktu pelatihan akan menjadi lebih lama.
automl_settings = {
"verbosity": logging.INFO,
"enable_long_range_text": True, # # You only need to set this parameter if you want to enable the long-range text setting
}
automl_config = AutoMLConfig(
task="text-classification",
debug_log="automl_errors.log",
compute_target=compute_target,
training_data=train_dataset,
validation_data=val_dataset,
label_column_name=target_column_name,
**automl_settings
)
Pengaturan bahasa
Sebagai bagian dari fungsi NLP, ML otomatis mendukung 104 bahasa yang memanfaatkan model DNN teks pra-pelatihan bahasa dan multibahasa, seperti keluarga model BERT. Saat ini, pilihan bahasa default ke bahasa Inggris.
Tabel berikut merangkum model apa yang diterapkan berdasarkan jenis tugas dan bahasa. Lihat daftar lengkap bahasa yang didukung dan kodenya.
Jenis tugas | Sintaks untuk dataset_language |
Algoritma model teks |
---|---|---|
Klasifikasi teks multi-label | 'eng' 'deu' 'mul' |
BERT Bahasa Inggris tidak terbungkus BERT Jerman BERT Multibahasa Untuk semua bahasa lainnya, ML otomatis menerapkan BERT multibahasa |
Klasifikasi teks multi-kelas | 'eng' 'deu' 'mul' |
Bahasa Inggris BERT cased BERT Multibahasa Untuk semua bahasa lainnya, ML otomatis menerapkan BERT multibahasa |
Pengenalan Entitas Karakter (NER) | 'eng' 'deu' 'mul' |
Bahasa Inggris BERT cased BERT Jerman BERT Multibahasa Untuk semua bahasa lainnya, ML otomatis menerapkan BERT multibahasa |
Anda dapat menentukan bahasa himpunan data FeaturizationConfig
Anda di. BERT juga digunakan dalam proses fiturisasi pelatihan percobaan ML otomatis, mempelajari lebih lanjut tentang integrasi BERT dan fiturisasi dalam ML otomatis.
from azureml.automl.core.featurization import FeaturizationConfig
featurization_config = FeaturizationConfig(dataset_language='{your language code}')
automl_config = AutomlConfig("featurization": featurization_config)
Pelatihan yang didistribusikan
Anda juga dapat menjalankan eksperimen NLP dengan pelatihan terdistribusi pada kluster komputasi Azure Machine Learning. Ini dihandel secara otomatis oleh ML otomatis saat parameter max_concurrent_iterations = number_of_vms
dan enable_distributed_dnn_training = True
disediakan dalam pengaturan selama percobaan AutoMLConfig
Anda.
max_concurrent_iterations = number_of_vms
enable_distributed_dnn_training = True
Dengan demikian, jadwalkan pelatihan terdistribusi dari model NLP dan secara otomatis menskalakan ke setiap GPU di mesin virtual atau sekelompok mesin virtual Anda. Jumlah maksimum mesin virtual yang diizinkan adalah 32. Pelatihan ini dijadwalkan dengan jumlah mesin virtual yang memiliki kekuatan dua.
Buku catatan contoh
Lihat contoh notebok untuk contoh kode terperinci untuk setiap tugas NLP.
Langkah berikutnya
- Pelajari selengkapnya tentang cara dan tempat menerapkan model.
- Memecahkan masalah eksperimen ML otomatis.