Bagikan melalui


Memicu alur pembelajaran mesin

BERLAKU UNTUK: Python SDK azureml v1

Dalam artikel ini, Anda akan mempelajari cara menjadwalkan alur untuk dijalankan di Azure secara terprogram. Anda dapat membuat jadwal berdasarkan waktu yang berlalu atau pada perubahan sistem file. Jadwal berbasis waktu dapat digunakan untuk mengurus tugas rutin, seperti pemantauan untuk drift data. Jadwal berbasis perubahan dapat digunakan untuk bereaksi terhadap perubahan yang tidak teratur atau tidak dapat diprediksi, seperti data baru yang diunggah atau data lama yang diedit. Setelah mempelajari cara membuat jadwal, Anda akan mempelajari cara mengambil dan menonaktifkannya. Terakhir, Anda akan mempelajari cara menggunakan layanan Azure lainnya, Azure Logic App dan Azure Data Factory, untuk menjalankan alur. Azure Logic App memungkinkan logika atau perilaku pemicu yang lebih kompleks. Alur Azure Data Factory memungkinkan Anda memanggil alur pembelajaran mesin sebagai bagian dari alur perencanaan data yang lebih besar.

Prasyarat

Memicu alur dengan Azure Machine Learning SDK untuk Python

Untuk menjadwalkan alur, Anda memerlukan referensi ke ruang kerja, pengidentifikasi alur yang diterbitkan, dan nama eksperimen tempat Anda ingin membuat jadwal. Anda bisa mendapatkan nilai-nilai ini dengan kode berikut:

import azureml.core
from azureml.core import Workspace
from azureml.pipeline.core import Pipeline, PublishedPipeline
from azureml.core.experiment import Experiment

ws = Workspace.from_config()

experiments = Experiment.list(ws)
for experiment in experiments:
    print(experiment.name)

published_pipelines = PublishedPipeline.list(ws)
for published_pipeline in  published_pipelines:
    print(f"{published_pipeline.name},'{published_pipeline.id}'")

experiment_name = "MyExperiment" 
pipeline_id = "aaaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" 

Membuat jadwal

Untuk menjalankan alur secara berulang, Anda akan membuat jadwal. Sebuah Schedule mengasosiasi alur, percobaan, dan pemicu. Pemicunya dapat berupaScheduleRecurrence yang menjelaskan waktu tunggu di antara pekerjaan atau jalur Datastore yang menetapkan direktori untuk melihat perubahan. Dalam kedua kasus, Anda akan memerlukan pengidentifikasi alur dan nama eksperimen untuk membuat jadwal.

Di bagian atas file Python, impor kelas Schedule dan ScheduleRecurrence:


from azureml.pipeline.core.schedule import ScheduleRecurrence, Schedule

Membuat jadwal berbasis waktu

Konstruktor ScheduleRecurrence memiliki argumen frequency yang diperlukan, yang harus merupakan salah satu string berikut: "Menit", "Jam", "Hari", "Minggu", atau "Bulan". Konstruktor juga memerlukan argumen bilangan bulat interval yang menentukan jumlah unit frequency yang harus berjalan di antara awal jadwal. Argumen opsional memungkinkan Anda lebih spesifik tentang waktu mulai, sebagaimana dirinci dalam dokumen ScheduleRecurrence SDK.

Buat Schedule yang memulai pekerjaan setiap 15 menit:

recurrence = ScheduleRecurrence(frequency="Minute", interval=15)
recurring_schedule = Schedule.create(ws, name="MyRecurringSchedule", 
                            description="Based on time",
                            pipeline_id=pipeline_id, 
                            experiment_name=experiment_name, 
                            recurrence=recurrence)

Membuat jadwal berbasis perubahan

Alur yang dipicu oleh perubahan file mungkin lebih efisien daripada jadwal berbasis waktu. Saat Anda ingin melakukan sesuatu sebelum file diubah atau saat file baru ditambahkan ke direktori data, Anda dapat melakukan prapemrosesan file tersebut. Anda dapat memantau semua perubahan pada penyimpanan data atau dalam direktori tertentu pada penyimpanan data. Jika Anda memantau direktori tertentu, perubahan dalam subdirektori dari direktori tersebut tidak akan memicu pekerjaan.

Catatan

Jadwal berbasis perubahan hanya mendukung pemantauan penyimpanan Blob Azure.

Untuk membuat Schedule yang reaktif terhadap file, Anda harus mengatur parameter datastore dalam panggilan ke Schedule.create. Untuk memantau folder, atur argumen path_on_datastore.

Argumen polling_interval memungkinkan Anda menentukan frekuensi dalam hitungan menit saat penyimpanan data diperiksa jika ada perubahan.

Jika alur dibangun dengan DataPath PipelineParameter, Anda dapat mengatur variabel tersebut ke nama file yang diubah dengan mengatur argumen data_path_parameter_name.

datastore = Datastore(workspace=ws, name="workspaceblobstore")

reactive_schedule = Schedule.create(ws, name="MyReactiveSchedule", description="Based on input file change.",
                            pipeline_id=pipeline_id, experiment_name=experiment_name, datastore=datastore, data_path_parameter_name="input_data")

Argumen opsional saat membuat jadwal

Selain argumen yang dibahas sebelumnya, Anda dapat mengatur argumen status ke "Disabled" untuk membuat jadwal yang tidak aktif. Akhirnya, continue_on_step_failure memungkinkan Anda melewati Boolean yang akan mengambil alih perilaku kegagalan default alur.

Menampilkan alur terjadwal Anda

Di browser Web, buka Azure Machine Learning. Dari bagian Titik Akhir panel navigasi, pilih Titik akhir alur. Tindakan ini membawa Anda ke daftar alur yang diterbitkan di Ruang Kerja.

Halaman alur AML

Di halaman ini Anda dapat melihat informasi ringkasan tentang semua alur di Ruang Kerja: nama, deskripsi, status, dan sebagainya. Telusuri dengan mengeklik di alur. Pada halaman yang dihasilkan, terdapat detail selengkapnya tentang alur Anda dan Anda dapat menelusuri paling detail pekerjaan individu.

Menonaktifkan alur

Jika Anda memiliki Pipeline yang diterbitkan tetapi tidak terjadwal, Anda dapat menonaktifkannya dengan:

pipeline = PublishedPipeline.get(ws, id=pipeline_id)
pipeline.disable()

Jika alur dijadwalkan, Anda harus membatalkan jadwal terlebih dahulu. Ambil pengidentifikasi jadwal dari portal atau dengan menjalankan:

ss = Schedule.list(ws)
for s in ss:
    print(s)

Setelah Anda menemukan schedule_id yang ingin Anda nonaktifkan, jalankan:

def stop_by_schedule_id(ws, schedule_id):
    s = next(s for s in Schedule.list(ws) if s.id == schedule_id)
    s.disable()
    return s

stop_by_schedule_id(ws, schedule_id)

Jika Anda kemudian menjalankan Schedule.list(ws) lagi, Anda akan mendapatkan daftar kosong.

Menggunakan Azure Logic Apps untuk pemicu kompleks

Aturan atau perilaku pemicu yang lebih kompleks dapat dibuat menggunakan Azure Logic App.

Untuk menggunakan Azure Logic App untuk memicu alur Machine Learning, Anda memerlukan titik akhir REST untuk alur Pembelajaran Mesin yang diterbitkan. Buat dan terbitkan alur Anda. Kemudian temukan titik akhir REST dari PublishedPipeline Anda dengan menggunakan ID alur:

# You can find the pipeline ID in Azure Machine Learning studio

published_pipeline = PublishedPipeline.get(ws, id="<pipeline-id-here>")
published_pipeline.endpoint 

Membuat aplikasi logika di Azure

Sekarang buat instans Azure Logic App. Setelah aplikasi logika Anda disediakan, gunakan langkah-langkah ini untuk mengonfigurasi pemicu untuk alur Anda:

  1. Buat identitas terkelola yang ditetapkan sistem untuk memberi aplikasi akses ke Ruang Kerja Azure Machine Learning Anda.

  2. Buka tampilan Perancang Logic App dan pilih templat Logic App Kosong.

    Templat kosong

  3. Dalam Perancang, cari blob. Pilih pemicu Saat blob ditambahkan atau dimodifikasi (properti saja) dan tambahkan pemicu ini ke Logic App Anda.

    Menambahkan pemicu

  4. Isi info koneksi untuk akun penyimpanan Blob yang ingin Anda pantau untuk penambahan atau modifikasi blob. Pilih Kontainer untuk dipantau.

    Pilih Interval dan Frekuensi ke polling untuk pembaruan yang sesuai untuk Anda.

    Catatan

    Pemicu ini akan memantau Kontainer yang dipilih tetapi tidak memantau subfolder.

  5. Tambahkan tindakan HTTP yang akan berjalan saat blob baru atau yang dimodifikasi terdeteksi. Pilih + Langkah Baru, lalu cari dan pilih tindakan HTTP.

Mencari tindakan HTTP

Gunakan pengaturan berikut untuk mengonfigurasi tindakan Anda:

Pengaturan Nilai
Tindakan HTTP POST
URI titik akhir ke alur yang diterbitkan yang Anda temukan sebagai Prasyarat
Mode autentikasi Identitas Terkelola
  1. Siapkan jadwal Anda untuk menetapkan nilai DataPath PipelineParameter apa pun yang mungkin Anda miliki:

    {
      "DataPathAssignments": {
        "input_datapath": {
          "DataStoreName": "<datastore-name>",
          "RelativePath": "@{triggerBody()?['Name']}" 
        }
      },
      "ExperimentName": "MyRestPipeline",
      "ParameterAssignments": {
        "input_string": "sample_string3"
      },
      "RunSource": "SDK"
    }
    

    Gunakan DataStoreName yang Anda tambahkan ke ruang kerja sebagai Prasyarat.

    Pengaturan HTTP

  2. Pilih Simpan dan kini jadwal Anda telah siap.

Penting

Jika Anda menggunakan kontrol akses berbasis peran Azure (RBAC Azure) untuk mengelola akses ke alur Anda, atur izin untuk skenario alur Anda (pelatihan atau penilaian).

Memanggil alur pembelajaran mesin dari alur Azure Data Factory

Dalam alur Azure Data Factory, aktivitas Alur Eksekusi Pembelajaran Mesin menjalankan alur Azure Machine Learning. Anda dapat menemukan aktivitas ini di halaman penulisan Data Factory di kategori Pembelajaran Mesin:

Cuplikan layar menunjukkan aktivitas alur ML di lingkungan penulisan Azure Data Factory

Langkah berikutnya

Dalam artikel ini, Anda menggunakan Azure Machine Learning SDK untuk Python guna menjadwalkan alur dengan dua cara berbeda. Satu jadwal diulang kembali berdasarkan waktu jam yang telah berlalu. Pekerjaan jadwal lainnya jika file dimodifikasi pada Datastore tertentu atau di dalam direktori di penyimpanan tersebut. Anda melihat cara menggunakan portal untuk memeriksa jalur alur dan pekerjaan individu. Anda mempelajari cara menonaktifkan jadwal sehingga alur berhenti berjalan. Terakhir, Anda membuat Azure Logic App untuk memicu alur.

Untuk informasi selengkapnya, lihat: