Bagikan melalui


Menyiapkan AutoML untuk melatih model pemrosesan bahasa alami

BERLAKU UNTUK:Ekstensi ml Azure CLI v2 (saat ini)Python SDK azure-ai-ml v2 (saat ini)

Dalam artikel ini, Anda akan mempelajari cara melatih model pemrosesan bahasa alami (NLP) dengan ML otomatis di Azure Machine Learning. Anda dapat membuat model NLP dengan ML otomatis melalui Azure Pembelajaran Mesin Python SDK v2 atau Azure Pembelajaran Mesin CLI v2.

ML otomatis mendukung NLP yang memungkinkan profesional ML dan ilmuwan data membawa data teks mereka sendiri dan membangun model kustom untuk tugas NLP. Tugas NLP mencakup klasifikasi teks multi-kelas, klasifikasi teks multi-label, dan pengenalan entitas bernama (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 dioprasionalkan dalam skala besar menggunakan kemampuan MLOps Azure Pembelajaran Mesin.

Prasyarat

BERLAKU UNTUK: Ekstensi Azure CLI ml v2 (saat ini)

  • 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 GPU untuk komputasi pelatihan. Untuk membuat ruang kerja, lihat Membuat sumber daya ruang kerja. Untuk informasi lebih lanjut, lihat ukuran mesin virtual yang dioptimalkan GPU untuk informasi 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 CLI v2 telah terinstal. Untuk panduan memperbarui dan menginstal versi terbaru, lihat Menginstal dan menyiapkan CLI (v2).

  • Dengan mengikuti artikel ini, Anda diasumsikan memiliki pemahaman akan penyiapan percobaan pembelajaran mesin otomatis. Ikuti petunjuk untuk 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 Sintaksis pekerjaan AutoML Deskripsi
Klasifikasi teks multi-kelas CLI v2: text_classification
SDK v2: 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 CLI v2: text_classification_multilabel
SDK v2: 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".
Pengenalan Entitas Bernama (NER) CLI v2:text_ner
SDK v2: text_ner()
Ada beberapa tag yang mungkin untuk token secara berurutan. Tugasnya adalah memprediksi tag untuk semua token untuk setiap urutan.

Misalnya, mengekstrak entitas khusus domain dari teks yang tidak terstruktur, seperti kontrak atau dokumen keuangan.

Pembatasan nilai

Ambang batas adalah fitur multi-label yang memungkinkan pengguna untuk memilih batas probabilitas prediksi yang akan menghasilkan label positif. Nilai yang lebih rendah memungkinkan lebih banyak label, yang lebih disukai ketika pengguna lebih mengutamakan daya ingat, tetapi opsi ini dapat menyebabkan lebih banyak kesalahan positif. Nilai yang lebih tinggi memungkinkan lebih sedikit label dan karenanya lebih baik bagi pengguna yang peduli dengan presisi, tetapi opsi ini dapat menyebabkan lebih banyak negatif palsu.

Menyiapkan data

Untuk eksperimen NLP dalam ML otomatis, Anda dapat menghadirkan data dalam format .csv 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 ini menyediakan detail untuk format data yang diterima untuk setiap tugas.

Beberapa 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"

Label majemuk

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 untuk 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 adalah "['cs.AI']", 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 Bernama (NER)

Tidak seperti multi-kelas atau multi-label, yang menggunakan format himpunan data .csv, 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 model melatih, ML otomatis menerapkan pemeriksaan validasi data pada data input untuk memastikan bahwa data dapat diolah sebelumnya dengan benar. Jika salah satu dari pemeriksaan ini gagal, prosesnya akan gagal dan menampilkan 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 Setidaknya 50 sampel pelatihan diperlukan
Multi-kelas dan Multi-label Data pelatihan dan data validasi harus memiliki
- Kumpulan kolom yang sama
- Urutan kolom yang sama dari kiri ke kanan
- Jenis 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 kelas jamak Tidak
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 tidak boleh memiliki label 1 dan label '1'
Hanya NER - File tidak boleh dimulai dengan baris kosong
- Setiap baris harus berupa baris kosong, atau mengikuti format {token} {label}, di mana ada tepat satu spasi antara token dan label dan tanpa spasi kosong setelah label
- Semua label harus dimulai dengan I-, B-, atau tepatnya O. Peka huruf besar/kecil
- Tepat satu baris kosong antara dua sampel
- Tepat satu baris kosong di akhir file

Mengonfigurasi eksperimen

Kemampuan NLP dari ML otomatis dipicu melalui pekerjaan dengan jenis automl tertentu, yang merupakan alur kerja yang sama untuk pengajuan eksperimen ML otomatis untuk tugas-tugas klasifikasi, regresi, dan peramalan. Anda akan mengatur parameter seperti yang Anda lakukan untuk eksperimen tersebut, seperti experiment_name, compute_name 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 lebih dari 10% sampel dalam himpunan data Anda berisi lebih dari 128 token, sampel tersebut dianggap rentang panjang.
    • Untuk menggunakan fitur teks rentang panjang, Anda harus menggunakan SKU NC6 atau lebih tinggi/lebih baik untuk GPU seperti: seri NCv3 atau seri ND .

BERLAKU UNTUK: Ekstensi Azure CLI ml v2 (saat ini)

Untuk pekerjaan ml otomatis CLI v2, Anda mengonfigurasi eksperimen Anda dalam file YAML seperti berikut ini.

Pengaturan bahasa

Sebagai bagian dari fungsi NLP, ML otomatis mendukung 104 bahasa dengan memanfaatkan model DNN teks yang telah dilatih sebelumnya untuk bahasa tertentu 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 teks model
Klasifikasi teks multi-label "eng"
"deu"
"mul"
BERT Bahasa Inggris tidak terbungkus
BERT Jerman
BERT Multibahasa

Untuk semua bahasa lainnya, pembelajaran mesin otomatis menerapkan BERT multibahasa
Klasifikasi teks multi-kelas "eng"
"deu"
"mul"
Bahasa Inggris BERT cased
BERT Multibahasa

Untuk semua bahasa lainnya, pembelajaran mesin otomatis menerapkan BERT multibahasa
Pengenalan Entitas Bernama (NER) "eng"
"deu"
"mul"
Bahasa Inggris BERT cased
BERT Jerman
BERT Multibahasa

Untuk semua bahasa lainnya, pembelajaran mesin otomatis menerapkan BERT multibahasa

BERLAKU UNTUK: Ekstensi Azure CLI ml v2 (saat ini)

Anda dapat menentukan bahasa himpunan data di bagian fiturisasi file YAML konfigurasi. BERT juga digunakan dalam proses fiturisasi pelatihan eksperimen ML otomatis, pelajari selengkapnya tentang integrasi dan fiturisasi BERT di AutoML (SDK v1).

featurization:
   dataset_language: "eng"

Pelatihan yang didistribusikan

Anda juga dapat menjalankan eksperimen NLP dengan pelatihan terdistribusi pada kluster komputasi Azure Pembelajaran Mesin.

BERLAKU UNTUK: Ekstensi Azure CLI ml v2 (saat ini)

Kirim pekerjaan AutoML

BERLAKU UNTUK: Ekstensi Azure CLI ml v2 (saat ini)

Untuk mengirimkan pekerjaan AutoML, Anda dapat menjalankan perintah CLI v2 berikut dengan jalur ke file .yml, nama ruang kerja, grup sumber daya, dan ID langganan Anda.


az ml job create --file ./hello-automl-job-basic.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]

Contoh kode

Eksplorasi model dan penyetelan nilai hiperparameter (pratinjau)

Penting

Fitur ini masih 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 terbatas.

Untuk mengetahui informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.

AutoML NLP memungkinkan Anda menyediakan daftar model dan kombinasi hiperparameter, melalui ruang pencarian hyperparameter dalam konfigurasi. Hyperdrive menghasilkan beberapa eksekusi anak, yang masing-masing merupakan eksekusi penyempurnaan untuk model NLP tertentu dan serangkaian nilai hiperparameter yang dipilih dan disapu berdasarkan ruang pencarian yang disediakan.

Algoritma model yang didukung

Semua model DNN teks pra-terlatih yang saat ini tersedia di AutoML NLP untuk penyempurnaan tercantum di bawah ini:

  • bert-base-cased
  • bert-large-uncased
  • bert-base-multilingual-cased
  • bert-base-german-cased
  • bert-large-cased
  • distilbert-base-cased
  • distilbert-base-uncased
  • roberta-base
  • roberta-large
  • distilroberta-base
  • xlm-roberta-base
  • xlm-roberta-large
  • xlnet-base-cased
  • xlnet-large-cased

Perhatikan bahwa model besar lebih besar dari rekan-rekan dasarnya. Mereka biasanya lebih berkinerja, tetapi membutuhkan lebih banyak memori dan waktu GPU untuk pelatihan. Dengan demikian, persyaratan SKU mereka lebih ketat: sebaiknya jalankan pada VM seri ND untuk hasil terbaik.

Algoritma model yang didukung - HuggingFace (pratinjau)

Dengan backend baru yang berjalan di alur Azure Pembelajaran Mesin, Anda juga dapat menggunakan model klasifikasi teks/token apa pun dari HuggingFace Hub untuk Klasifikasi Teks, Klasifikasi Token yang merupakan bagian dari pustaka transformator (seperti microsoft/deberta-large-mnli). Anda juga dapat menemukan daftar model yang dikumpulkan di registri model Azure Pembelajaran Mesin yang telah divalidasi dengan komponen alur.

Menggunakan model HuggingFace apa pun akan memicu eksekusi menggunakan komponen alur. Jika model warisan dan HuggingFace digunakan, semua eksekusi/uji coba akan dipicu menggunakan komponen.

Hyperparameter yang didukung

Tabel berikut menjelaskan hiperparameter yang didukung AutoML NLP.

Nama Parameter Deskripsi Sintaks
langkah akumulasi gradien Jumlah operasi mundur yang gradiennya akan diringkas sebelum melakukan satu langkah penurunan gradien dengan memanggil fungsi langkah pengoptimal.

Ini untuk menggunakan ukuran batch yang efektif, yang gradient_accumulation_steps kali lebih besar dari ukuran maksimum yang sesuai dengan GPU.
Harus berupa nilai bilangan bulat positif.
laju pembelajaran Tingkat pembelajaran awal. Harus berupa float dalam rentang (0, 1).
Penjadwal Tingkat Pembelajaran Jenis penjadwal tingkat pembelajaran. Harus memilih dari linear, cosine, cosine_with_restarts, polynomial, constant, constant_with_warmup.
model_name Nama salah satu model yang didukung. Harus memilih dari bert_base_cased, bert_base_uncased, bert_base_multilingual_cased, bert_base_german_cased, bert_large_cased, bert_large_uncased, distilbert_base_cased, distilbert_base_uncased, roberta_base, roberta_large, distilroberta_base, xlm_roberta_base, xlm_roberta_large, xlnet_base_cased, xlnet_large_cased.
number_of_epochs Jumlah epoch pelatihan. Harus berupa nilai bilangan bulat positif.
ukuran_batch_pelatihan Ukuran batch pelatihan. Harus berupa nilai bilangan bulat positif.
ukuran_batch_validasi Ukuran batch validasi. Harus berupa nilai bilangan bulat positif.
rasio pemanasan Rasio total langkah pelatihan yang digunakan untuk pemanasan linier dari 0 ke learning_rate. Harus berupa float dalam rentang [0, 1].
penurunan bobot Nilai penurunan bobot ketika pengoptimal adalah sgd, adam, atau adamw. Harus berupa float dalam rentang [0, 1].

Semua hiperparameter diskrit hanya memungkinkan distribusi pilihan, seperti bilangan bulat yang bertipe training_batch_size dan string yang bertipe model_name pada hiperparameter. Semua hiperparameter berkelanjutan seperti learning_rate mendukung semua distribusi.

Atur pengaturan pembersihan Anda

Anda dapat mengonfigurasi semua parameter terkait penyapuan. Beberapa subruang model dapat dibangun dengan hiperparameter yang bersifat kondisional terhadap model masing-masing, seperti yang terlihat pada setiap contoh penyesuaian hiperparameter.

Opsi distribusi diskrit dan kontinu yang sama yang tersedia untuk berbagai pekerjaan HyperDrive umum didukung di sini. Lihat semua sembilan opsi dalam Penyetelan hyperparameter model

BERLAKU UNTUK: Ekstensi Azure CLI ml v2 (saat ini)

limits: 
  timeout_minutes: 120  
  max_trials: 4 
  max_concurrent_trials: 2 

sweep: 
  sampling_algorithm: grid 
  early_termination: 
    type: bandit 
    evaluation_interval: 10 
    slack_factor: 0.2 

search_space: 
  - model_name: 
      type: choice 
      values: [bert_base_cased, roberta_base] 
    number_of_epochs: 
      type: choice 
      values: [3, 4] 
  - model_name: 
      type: choice 
      values: [distilbert_base_cased] 
    learning_rate: 
      type: uniform 
      min_value: 0.000005 
      max_value: 0.00005 

Teknik pengambilan sampel untuk penyapuan

Saat menyapu hiperparameter, Anda perlu menentukan metode pengambilan sampel yang digunakan untuk menyapu ruang parameter yang ditentukan. Saat ini, metode pengambilan sampel berikut didukung dengan parameter sampling_algorithm:

Jenis pengambilan sampel Sintaks Pekerjaan AutoML
Pengambilan Sampel Acak random
Pengambilan Sampel Grid grid
Pengambilan Sampel Bayes bayesian

Anggaran eksperimen

Anda dapat secara opsional menentukan anggaran eksperimen untuk pekerjaan pelatihan AutoML NLP Anda menggunakan timeout_minutes parameter dalam limits - jumlah waktu dalam hitungan menit sebelum eksperimen berakhir. Jika tidak ada yang ditentukan, batas waktu eksperimen default adalah tujuh hari (maksimum 60 hari).

AutoML NLP juga mendukung trial_timeout_minutes, jumlah waktu maksimum dalam menit uji coba individu dapat berjalan sebelum dihentikan, dan max_nodes, jumlah maksimum simpul dari kluster komputasi pendukung yang akan digunakan untuk pekerjaan tersebut. Parameter ini juga termasuk dalam bagian .limits

BERLAKU UNTUK: Ekstensi Azure CLI ml v2 (saat ini)

limits: 
  timeout_minutes: 60 
  trial_timeout_minutes: 20 
  max_nodes: 2 

Kebijakan penghentian dini

Anda dapat mengakhiri eksekusi berkinerja buruk secara otomatis menggunakan kebijakan penghentian dini. Penghentian dini meningkatkan efisiensi komputasi, menghemat sumber daya komputasi yang seharusnya dihabiskan untuk konfigurasi yang kurang menjanjikan. AutoML NLP mendukung kebijakan penghentian dini menggunakan early_termination parameter . Jika tidak ada kebijakan penghentian yang ditentukan, semua konfigurasi dijalankan hingga selesai.

Pelajari lebih lanjut tentang cara mengonfigurasi kebijakan penghentian dini untuk sapuan hiperparameter Anda.

Sumber daya untuk sapuan

Anda dapat mengontrol sumber daya yang dihabiskan untuk sapuan hiperparameter Anda dengan menentukan max_trials dan max_concurrent_trials untuk sapuan.

Pengaturan Detil
max_trials Parameter jumlah maksimum konfigurasi yang akan dicakup. Harus bilangan bulat antara 1 dan 1000. Saat menjelajahi hanya hiperparameter default untuk algoritma model tertentu, atur parameter ini menjadi 1. Nilai default adalah 1.
max_concurrent_trials Jumlah maksimum proses yang dapat berjalan bersamaan. Jika ditentukan, harus bilangan bulat antara 1 dan 100. Nilai default adalah 1.

CATATAN:
  • Jumlah eksekusi bersamaan terjaga pada sumber daya yang tersedia dalam target komputasi yang ditentukan. Pastikan bahwa target komputasi memiliki sumber daya yang tersedia untuk konkurensi yang diinginkan.
  • max_concurrent_trials dibatasi hingga max_trials secara internal. Misalnya, jika pengguna menetapkan max_concurrent_trials=4, max_trials=2, nilai akan diperbarui secara internal sebagai max_concurrent_trials=2, max_trials=2.
  • Anda dapat mengonfigurasi semua parameter terkait pembersihan seperti yang ditunjukkan dalam contoh ini.

    BERLAKU UNTUK: Ekstensi Azure CLI ml v2 (saat ini)

    sweep:
      limits:
        max_trials: 10
        max_concurrent_trials: 2
      sampling_algorithm: random
      early_termination:
        type: bandit
        evaluation_interval: 2
        slack_factor: 0.2
        delay_evaluation: 6
    

    Masalah Umum

    Menangani skor rendah, atau nilai kerugian yang lebih tinggi:

    Untuk himpunan data tertentu, terlepas dari tugas NLP, skor yang dihasilkan mungkin sangat rendah, kadang-kadang bahkan nol. Skor ini disertai dengan nilai kerugian (loss) yang lebih tinggi yang menyiratkan bahwa jaringan neural gagal mencapai konvergensi. Skor ini dapat terjadi lebih sering pada SKU GPU tertentu.

    Meskipun kasus seperti itu jarang terjadi, mereka mungkin dan cara terbaik untuk menanganinya adalah dengan memanfaatkan penyetelan hiperparameter dan memberikan berbagai nilai yang lebih luas, terutama untuk hiperparameter seperti tingkat pembelajaran. Hingga kemampuan penyetelan hyperparameter kami tersedia dalam produksi, kami sarankan pengguna yang mengalami masalah ini untuk menggunakan kluster komputasi NC6 atau ND6. Kluster ini biasanya memiliki hasil pelatihan yang cukup stabil.

    Langkah berikutnya