Bagikan melalui


Pengujian untuk DevOps LUIS

Penting

LUIS akan dihentikan pada 1 Oktober 2025 dan mulai 1 April 2023 Anda tidak akan dapat membuat sumber daya LUIS baru. Sebaiknya migrasikan aplikasi LUIS Anda ke pemahaman bahasa percakapan untuk mendapatkan manfaat dari dukungan produk berkelanjutan dan kemampuan multibahasa.

Teknisi perangkat lunak yang mengembangkan aplikasi Language Understanding (LUIS) dapat menerapkan praktik DevOps seputar kontrol sumber, pembuatan otomatis, pengujian, dan pengelolaan rilis dengan mengikuti panduan ini.

Dalam metodologi pengembangan perangkat lunak yang cerdas, pengujian memainkan peran integral dalam membangun perangkat lunak berkualitas. Setiap perubahan signifikan pada aplikasi LUIS harus disertai dengan pengujian yang dirancang untuk menguji fungsi baru yang dibangun pengembang ke dalam aplikasi. Pengujian ini dicentang diperiksa dalam repositori kode sumber beserta sumber .lu aplikasi LUIS Anda. Implementasi perubahan selesai ketika aplikasi memenuhi pengujian.

Pengujian adalah bagian penting dari alur kerja CI/CD. Saat perubahan pada aplikasi LUIS diusulkan dalam permintaan pull (PR) atau setelah perubahan digabungkan dengan cabang utama Anda, alur kerja CI harus menjalankan pengujian untuk memastikan bahwa pembaruan belum menyebabkan regresi apa pun.

Cara melakukan pengujian Unit dan pengujian Batch

Ada dua jenis pengujian yang berbeda untuk aplikasi LUIS yang perlu Anda lakukan dalam alur kerja integrasi berkelanjutan:

  • Pengujian unit - Pengujian yang relatif sederhana yang memverifikasi fungsionalitas utama aplikasi LUIS Anda. Pengujian unit lolos jika niat yang diharapkan dan entitas yang diharapkan ditampilkan untuk ungkapan uji yang ditentukan. Semua pengujian unit harus lolos agar eksekusi pengujian berhasil diselesaikan.
    Pengujian semacam ini mirip dengan Pengujian interaktif dapat Anda lakukan di portal LUIS.

  • Pengujian Batch - Pengujian batch adalah pengujian komprehensif pada model terlatih Anda saat ini untuk mengukur performanya. Tidak seperti pengujian unit, pengujian batch tidak lulus|gagal pengujian. Harapan dengan pengujian batch bukanlah setiap pengujian akan menampilkan niat dan entitas yang diharapkan. Akan tetapi, pengujian batch membantu Anda melihat akurasi setiap niat dan entitas dalam aplikasi dan membantu Anda melakukan perbandingan seiring Anda melakukan penyempurnaan.
    Pengujian semacam ini sama dengan Pengujian Batch yang dapat dilakukan secara interaktif di portal LUIS.

Anda dapat menggunakan pengujian unit dari awal proyek Anda. Pengujian batch hanya benar-benar bernilai setelah Anda mengembangkan skema aplikasi LUIS dan Anda sedang berupaya menyempurnakan akurasinya.

Untuk pengujian unit dan batch, pastikan bahwa ungkapan pengujian Anda dipisahkan dari ungkapan pelatihan. Jika menguji data yang sama dengan yang Anda latih, Anda akan mendapatkan kesan palsu bahwa aplikasi Anda bekerja dengan baik jika hanya terlalu cocok dengan data pengujian. Pengujian pasti tidak terlihat oleh model untuk menguji sejauh mana performa generalisasinya.

Menulis pengujian

Saat Anda menulis serangkaian tes, untuk setiap pengujian, Anda harus menentukan:

  • Ungkapan pengujian
  • Niat yang diharapkan
  • Entitas yang diharapkan.

Gunakan sintaks file batch LUIS untuk menentukan grup pengujian dalam file berformat JSON. Contohnya:

[
  {
    "text": "example utterance goes here",
    "intent": "intent name goes here",
    "entities":
    [
        {
            "entity": "entity name 1 goes here",
            "startPos": 14,
            "endPos": 23
        },
        {
            "entity": "entity name 2 goes here",
            "startPos": 14,
            "endPos": 23
        }
    ]
  }
]

Beberapa alat uji, seperti NLU. DevOps juga mendukung file pengujian berformat LUDown.

Merancang pengujian unit

Pengujian unit harus dirancang untuk menguji fungsionalitas utama aplikasi LUIS. Dalam setiap perulangan atau percepatan pengembangan aplikasi, Anda harus menulis jumlah pengujian yang memadai untuk memastikan bahwa fungsi utama yang Anda terapkan dalam perulangan bekerja dengan benar.

Dalam setiap pengujian unit, untuk ungkapan pengujian yang ditentukan, Anda dapat:

  • Menguji bahwa niat yang benar ditampilkan
  • Menguji bahwa entitas 'kunci' - entitas yang penting untuk solusi Anda - ditampilkan.
  • Menguji bahwa skor prediksi untuk niat dan entitas melampaui ambang batas yang Anda tentukan. Misalnya, Anda dapat memutuskan bahwa Anda hanya akan menganggap bahwa pengujian bisa dikatakan lulus jika skor prediksi untuk niat dan entitas utama Anda melebihi 0,75.

Dalam pengujian unit, sebaiknya Anda menguji bahwa entitas utama Anda telah ditampilkan dalam respons prediksi, tetapi untuk mengabaikan positif palsu. Positif palsu adalah entitas yang ditemukan dalam respons prediksi tetapi yang tidak ditentukan dalam hasil yang diharapkan untuk pengujian Anda. Dengan mengabaikan positif palsu, pengujian unit tidak begitu sulit ditulis sementara Anda masih dapat fokus pada pengujian bahwa data yang merupakan kunci untuk solusi Anda ditampilkan dalam respons prediksi.

Tip

Alat NLU.DevOps mendukung semua kebutuhan pengujian LUIS Anda. Perintah compare saat digunakan dalam mode pengujian unit akan menegaskan bahwa semua pengujian lulus, dan akan mengabaikan hasil positif palsu untuk entitas yang tidak diberi label dalam hasil yang diharapkan.

Merancang Pengujian batch

Set pengujian batch harus berisi sejumlah besar kasus pengujian, yang dirancang untuk menguji semua niat dan semua entitas di aplikasi LUIS Anda. Lihat Pengujian batch di portal LUIS untuk informasi tentang cara menentukan set pengujian batch.

Menjalankan pengujian

Portal LUIS menawarkan fitur untuk membantu pengujian interaktif:

  • Pengujian interaktif memungkinkan Anda mengirimkan contoh ungkapan dan mendapatkan respons dari niat dan entitas yang dikenali LUIS. Anda memverifikasi keberhasilan pengujian melalui inspeksi visual.

  • Pengujian batch menggunakan file pengujian batch sebagai input untuk memvalidasi versi terlatih aktif Anda untuk mengukur akurasi prediksinya. Pengujian batch membantu Anda melihat akurasi setiap niat dan entitas dalam versi aktif Anda.

Menjalankan pengujian dalam alur kerja build otomatis

Fitur pengujian interaktif di portal LUIS berguna, tetapi untuk DevOps, pengujian otomatis yang dilakukan dalam alur kerja CI/CD membawa persyaratan tertentu:

  • Alat pengujian harus dijalankan dalam langkah alur kerja pada server build. Hal ini berarti alat harus dapat dijalankan di baris perintah.
  • Alat pengujian harus dapat menjalankan sekelompok pengujian terhadap titik akhir dan secara otomatis memverifikasi hasil yang diharapkan terhadap hasil aktual.
  • Jika pengujian gagal, alat pengujian pasti menampilkan kode status untuk menghentikan alur kerja dan "menggagalkan build".

LUIS tidak menawarkan alat baris perintah atau API tingkat tinggi yang menawarkan fitur-fitur ini. Sebaiknya Anda menggunakan alat NLU.DevOps untuk menjalankan pengujian dan memverifikasi hasil, baik di baris perintah maupun selama pengujian otomatis dalam alur kerja CI/CD.

Kemampuan pengujian yang tersedia di portal LUIS tidak memerlukan titik akhir yang diterbitkan dan merupakan bagian dari kemampuan penulisan LUIS. Saat menerapkan pengujian dalam alur kerja build otomatis, Anda harus menerbitkan versi aplikasi LUIS untuk diuji ke titik akhir agar alat pengujian seperti NLU. DevOps dapat mengirim permintaan prediksi sebagai bagian dari pengujian.

Tip

  • Jika Anda menerapkan solusi pengujian dan kode penulisan Anda sendiri untuk mengirim ungkapan uji ke titik akhir, perlu diingat bahwa jika Anda menggunakan kunci penulisan LUIS, tingkat transaksi yang diizinkan dibatasi pada 5TPS. Sebagai gantinya, batasi kecepatan pengiriman atau gunakan kunci prediksi.
  • Saat mengirim kueri pengujian ke titik akhir, jangan lupa untuk menggunakan log=false dalam string kueri permintaan prediksi Anda. Hal ini untuk memastikan bahwa ungkapan pengujian Anda tidak dicatat oleh LUIS dan menghasilkan daftar ulasan ungkapan titik yang disajikan oleh fitur pembelajaran aktif LUIS dan, akibatnya, ditambahkan secara tidak sengaja ke ungkapan pelatihan aplikasi Anda.

Menjalankan Pengujian unit di baris perintah dan alur kerja CI/CD

Anda dapat menggunakan paket NLU.DevOps untuk menjalankan pengujian di baris perintah:

  • Gunakan perintah pengujian NLU.DevOps untuk mengirim pengujian dari file pengujian ke titik akhir dan untuk mengambil hasil prediksi aktual dalam file.
  • Gunakan perintah perbandingan NLU.DevOps untuk membandingkan hasil aktual dengan hasil yang diharapkan yang ditentukan dalam file pengujian input. Perintah compare menghasilkan output pengujian NUnit, dan jika digunakan dalam mode pengujian unit dengan menggunakan bendera --unit-test, akan menegaskan bahwa semua pengujian lulus.

Menjalankan Pengujian batch di baris perintah dan alur kerja CI/CD

Anda dapat menggunakan paket NLU.DevOps untuk menjalankan pengujian batch di baris perintah.

  • Gunakan perintah pengujian NLU.DevOps untuk mengirim pengujian dari file pengujian ke titik akhir dan untuk mengambil hasil prediksi aktual dalam file, seperti halnya dalam pengujian unit.
  • Gunakan perintah perbandingan NLU. DevOps Mode pengujian performa untuk mengukur performa aplikasi. Anda juga dapat membandingkan kinerja aplikasi Anda berdasarkan tolok ukur performa dasar, misalnya, hasil dari penerapan terbaru dengan rilis utama atau terbaru. Dalam Mode pengujian performa, perintah compare menghasilkan output pengujian NUnit dan hasil pengujian batch menghasilkan format JSON.

Pelatihan non-deterministik LUIS dan efek terhadap pengujian

Saat LUIS melatih model, seperti niat, ia membutuhkan data positif - ungkapan pelatihan berlabel yang telah Anda masukkan untuk melatih aplikasi untuk model - dan data negatif - data yang bukan merupakan contoh yang valid terkait penggunaan model tersebut. Selama pelatihan, LUIS membuat data negatif satu model dari semua data positif yang Anda berikan untuk model lain, tetapi dalam beberapa kasus yang ketidakseimbangan data dapat ditimbulkan. Untuk menghindari ketidakseimbangan ini, LUIS mengambil sampel subset data negatif dengan cara non-deterministik untuk mengoptimalkan set pelatihan yang lebih seimbang, peningkatan performa model, dan waktu pelatihan yang lebih cepat.

Hasil pelatihan non-deterministik ini adalah bahwa Anda mungkin mendapatkan respons prediksi yang agak berbeda antara sesi pelatihan yang berbeda, biasanya untuk niat dan/atau entitas tempat skor prediksi tidak terlalu tinggi.

Jika Anda ingin menonaktifkan pelatihan non-deterministik untuk versi aplikasi LUIS yang Anda bangun untuk tujuan pengujian, gunakan API pengaturan Versi dengan pengaturan UseAllTrainingData diatur ke true.

Langkah berikutnya