Tutorial: Pengembangan model di stasiun kerja cloud

Pelajari cara mengembangkan skrip pelatihan dengan buku catatan di stasiun kerja cloud Azure Pembelajaran Mesin. Tutorial ini mencakup dasar-dasar yang Anda butuhkan untuk memulai:

  • Menyiapkan dan mengonfigurasi stasiun kerja cloud. Stasiun kerja cloud Anda didukung oleh instans komputasi Azure Pembelajaran Mesin, yang telah dikonfigurasi sebelumnya dengan lingkungan untuk mendukung berbagai kebutuhan pengembangan model Anda.
  • Gunakan lingkungan pengembangan berbasis cloud.
  • Gunakan MLflow untuk melacak metrik model Anda, semuanya dari dalam buku catatan.

Prasyarat

Untuk menggunakan Azure Pembelajaran Mesin, Anda memerlukan ruang kerja terlebih dahulu. Jika Anda tidak memilikinya, selesaikan Buat sumber daya yang Anda perlukan untuk mulai membuat ruang kerja dan pelajari selengkapnya tentang menggunakannya.

Mulai dengan Notebook

Bagian Notebooks di ruang kerja Anda adalah tempat yang baik untuk mulai mempelajari tentang Azure Pembelajaran Mesin dan kemampuannya. Di sini Anda dapat menyambungkan ke sumber daya komputasi, bekerja dengan terminal, dan mengedit dan menjalankan Jupyter Notebooks dan skrip.

  1. Masuk ke Studio Azure Machine Learning.

  2. Pilih ruang kerja Anda jika belum dibuka.

  3. Di navigasi kiri, pilih Buku Catatan.

  4. Jika Anda tidak memiliki instans komputasi, Anda akan melihat Membuat komputasi di tengah layar. Pilih Buat komputasi dan isi formulir. Anda dapat menggunakan semua default. (Jika Anda sudah memiliki instans komputasi, Anda akan melihat Terminal di tempat itu. Anda akan menggunakan Terminal nanti dalam tutorial ini.)

    Screenshot shows how to create a compute instance.

Menyiapkan lingkungan baru untuk pembuatan prototipe (opsional)

Agar skrip Anda berjalan, Anda harus bekerja di lingkungan yang dikonfigurasi dengan dependensi dan pustaka yang diharapkan kode. Bagian ini membantu Anda membuat lingkungan yang disesuaikan dengan kode Anda. Untuk membuat kernel Jupyter baru yang tersambung dengan notebook Anda, Anda akan menggunakan file YAML yang menentukan dependensi.

  • Unggah file.

    File yang Anda unggah disimpan dalam berbagi file Azure, dan file-file ini dipasang ke setiap instans komputasi dan dibagikan dalam ruang kerja.

    1. Unduh file lingkungan conda ini, workstation_env.yml ke komputer Anda dengan menggunakan tombol Unduh file mentah di kanan atas.
    1. Pilih Tambahkan file, lalu pilih Unggah file untuk mengunggahnya ke ruang kerja Anda.

      Screenshot shows how to upload files to your workspace.

    2. Pilih Telusuri dan pilih file.

    3. Pilih file workstation_env.yml yang Anda unduh.

    4. Pilih Unggah.

    Anda akan melihat file workstation_env.yml di bawah folder nama pengguna Anda di tab File . Pilih file ini untuk mempratinjaunya, dan lihat dependensi apa yang ditentukannya. Anda akan melihat konten seperti ini:

    name: workstation_env
    # This file serves as an example - you can update packages or versions to fit your use case
    dependencies:
      - python=3.8
      - pip=21.2.4
      - scikit-learn=0.24.2
      - scipy=1.7.1
      - pandas>=1.1,<1.2
      - pip:
        - mlflow-skinny 
        - azureml-mlflow
        - psutil>=5.8,<5.9
        - ipykernel~=6.0
        - matplotlib
    
  • Buat kernel.

    Sekarang gunakan terminal Azure Pembelajaran Mesin untuk membuat kernel Jupyter baru, berdasarkan file workstation_env.yml.

    1. Pilih Terminal untuk membuka jendela terminal. Anda juga dapat membuka terminal dari bilah perintah kiri:

      Screenshot shows open terminal tool in notebook toolbar.

    2. Jika instans komputasi dihentikan, pilih Mulai komputasi dan tunggu hingga instans berjalan.

      Screenshot shows how to start compute if it's stopped.

    3. Setelah komputasi berjalan, Anda akan melihat pesan selamat datang di terminal, dan Anda dapat mulai mengetik perintah.

    4. Lihat lingkungan conda Anda saat ini. Lingkungan aktif ditandai dengan *.

      conda env list
      
    5. Jika Anda membuat subfolder untuk tutorial ini, cd ke folder tersebut sekarang.

    6. Buat lingkungan berdasarkan file conda yang disediakan. Dibutuhkan beberapa menit untuk membangun lingkungan ini.

      conda env create -f workstation_env.yml
      
      
    7. Aktifkan lingkungan baru.

       conda activate workstation_env
      
    8. Validasi lingkungan yang benar aktif, lagi cari lingkungan yang ditandai dengan *.

      conda env list
      
    9. Buat kernel Jupyter baru berdasarkan lingkungan aktif Anda.

      python -m ipykernel install --user --name workstation_env --display-name "Tutorial Workstation Env" 
      
    10. Tutup jendela terminal.

Anda sekarang memiliki kernel baru. Selanjutnya Anda akan membuka buku catatan dan menggunakan kernel ini.

Membuat notebook

  1. Pilih Tambahkan file, dan pilih Buat file baru.

    Screenshot: Create new file.

  2. Beri nama notebook baru Anda develop-tutorial.ipynb (atau masukkan nama pilihan Anda).

  3. Jika instans komputasi dihentikan, pilih Mulai komputasi dan tunggu hingga instans berjalan.

    Screenshot shows how to start compute if it's stopped.

  4. Anda akan melihat buku catatan tersambung ke kernel default di kanan atas. Beralih untuk menggunakan kernel Tutorial Workstation Env jika Anda membuat kernel.

Mengembangkan skrip pelatihan

Di bagian ini, Anda mengembangkan skrip pelatihan Python yang memprediksi pembayaran default kartu kredit, menggunakan himpunan data pengujian dan pelatihan yang disiapkan dari himpunan data UCI.

Kode ini digunakan sklearn untuk pelatihan dan MLflow untuk mencatat metrik.

  1. Mulailah dengan kode yang mengimpor paket dan pustaka yang akan Anda gunakan dalam skrip pelatihan.

    import os
    import argparse
    import pandas as pd
    import mlflow
    import mlflow.sklearn
    from sklearn.ensemble import GradientBoostingClassifier
    from sklearn.metrics import classification_report
    from sklearn.model_selection import train_test_split
  2. Selanjutnya, muat dan proses data untuk eksperimen ini. Dalam tutorial ini, Anda membaca data dari file di internet.

    # load the data
    credit_df = pd.read_csv(
        "https://azuremlexamples.blob.core.windows.net/datasets/credit_card/default_of_credit_card_clients.csv",
        header=1,
        index_col=0,
    )
    
    train_df, test_df = train_test_split(
        credit_df,
        test_size=0.25,
    )
  3. Siapkan data untuk pelatihan:

    # Extracting the label column
    y_train = train_df.pop("default payment next month")
    
    # convert the dataframe values to array
    X_train = train_df.values
    
    # Extracting the label column
    y_test = test_df.pop("default payment next month")
    
    # convert the dataframe values to array
    X_test = test_df.values
  4. Tambahkan kode untuk mulai pencatatan otomatis dengan MLflow, sehingga Anda dapat melacak metrik dan hasilnya. Dengan sifat iteratif pengembangan model, MLflow membantu Anda mencatat parameter dan hasil model. Lihat kembali eksekusi tersebut untuk membandingkan dan memahami performa model Anda. Log juga menyediakan konteks saat Anda siap untuk berpindah dari fase pengembangan ke fase pelatihan alur kerja Anda dalam Azure Pembelajaran Mesin.

    # set name for logging
    mlflow.set_experiment("Develop on cloud tutorial")
    # enable autologging with MLflow
    mlflow.sklearn.autolog()
  5. Melatih model.

    # Train Gradient Boosting Classifier
    print(f"Training with data of shape {X_train.shape}")
    
    mlflow.start_run()
    clf = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1)
    clf.fit(X_train, y_train)
    
    y_pred = clf.predict(X_test)
    
    print(classification_report(y_test, y_pred))
    # Stop logging for this model
    mlflow.end_run()

    Catatan

    Anda dapat mengabaikan peringatan mlflow. Anda masih akan mendapatkan semua hasil yang perlu Anda lacak.

Iterate

Sekarang setelah Anda memiliki hasil model, Anda mungkin ingin mengubah sesuatu dan mencoba lagi. Misalnya, coba teknik pengklasifikasi yang berbeda:

# Train  AdaBoost Classifier
from sklearn.ensemble import AdaBoostClassifier

print(f"Training with data of shape {X_train.shape}")

mlflow.start_run()
ada = AdaBoostClassifier()

ada.fit(X_train, y_train)

y_pred = ada.predict(X_test)

print(classification_report(y_test, y_pred))
# Stop logging for this model
mlflow.end_run()

Catatan

Anda dapat mengabaikan peringatan mlflow. Anda masih akan mendapatkan semua hasil yang perlu Anda lacak.

Memeriksa hasil

Sekarang setelah Anda mencoba dua model yang berbeda, gunakan hasil yang dilacak oleh MLFfow untuk memutuskan model mana yang lebih baik. Anda dapat mereferensikan metrik seperti akurasi, atau indikator lain yang paling penting untuk skenario Anda. Anda dapat menyelami hasil ini secara lebih rinci dengan melihat pekerjaan yang dibuat oleh MLflow.

  1. Di navigasi kiri, pilih Pekerjaan.

    Screenshot shows how to select Jobs in the navigation.

  2. Pilih tautan untuk Tutorial kembangkan di cloud.

  3. Ada dua pekerjaan berbeda yang ditampilkan, satu untuk setiap model yang Anda coba. Nama-nama ini dibuat secara otomatis. Saat Anda mengarahkan mouse ke atas nama, gunakan alat pensil di samping nama jika Anda ingin mengganti namanya.

  4. Pilih tautan untuk pekerjaan pertama. Nama muncul di bagian atas. Anda juga dapat mengganti namanya di sini dengan alat pensil.

  5. Halaman menunjukkan detail pekerjaan, seperti properti, output, tag, dan parameter. Di bawah Tag, Anda akan melihat estimator_name, yang menjelaskan jenis model.

  6. Pilih tab Metrik untuk melihat metrik yang dicatat oleh MLflow. (Harapkan hasil Anda berbeda, karena Anda memiliki set pelatihan yang berbeda.)

    Screenshot shows metrics for a job.

  7. Pilih tab Gambar untuk melihat gambar yang dihasilkan oleh MLflow.

    Screenshot shows images for a job.

  8. Kembali dan tinjau metrik dan gambar untuk model lain.

Membuat skrip Python

Sekarang buat skrip Python dari buku catatan Anda untuk pelatihan model.

  1. Pada toolbar buku catatan, pilih menu.

  2. Pilih Ekspor sebagai> Python.

    Screenshot shows exporting a Python file from the notebook.

  3. Beri nama file train.py.

  4. Lihat file ini dan hapus kode yang tidak Anda inginkan dalam skrip pelatihan. Misalnya, simpan kode untuk model yang ingin Anda gunakan, dan hapus kode untuk model yang tidak Anda inginkan.

    • Pastikan Anda menyimpan kode yang mulai melakukan autologging (mlflow.sklearn.autolog()).
    • Anda mungkin ingin menghapus komentar yang dibuat secara otomatis dan menambahkan lebih banyak komentar Anda sendiri.
    • Saat Anda menjalankan skrip Python secara interaktif (di terminal atau buku catatan), Anda dapat menyimpan baris yang menentukan nama eksperimen (mlflow.set_experiment("Develop on cloud tutorial")). Atau bahkan beri nama yang berbeda untuk melihatnya sebagai entri yang berbeda di bagian Pekerjaan . Tetapi ketika Anda menyiapkan skrip untuk pekerjaan pelatihan, baris tersebut tidak akan berfungsi dan harus dihilangkan - definisi pekerjaan menyertakan nama eksperimen.
    • Saat Anda melatih satu model, garis untuk memulai dan mengakhiri eksekusi (mlflow.start_run() dan mlflow.end_run()) juga tidak diperlukan (tidak akan berpengaruh), tetapi dapat dibiarkan jika Anda mau.
  5. Setelah selesai dengan pengeditan, simpan file.

Anda sekarang memiliki skrip Python untuk digunakan untuk melatih model pilihan Anda.

Menjalankan skrip Python

Untuk saat ini, Anda menjalankan kode ini pada instans komputasi, yang merupakan lingkungan pengembangan Azure Pembelajaran Mesin Anda. Tutorial: Melatih model menunjukkan kepada Anda cara menjalankan skrip pelatihan dengan cara yang lebih dapat diskalakan pada sumber daya komputasi yang lebih kuat.

  1. Di sebelah kiri, pilih Buka terminal untuk membuka jendela terminal.

    Screenshot shows how to open a terminal window.

  2. Lihat lingkungan conda Anda saat ini. Lingkungan aktif ditandai dengan *.

    conda env list
    
  3. Jika Anda membuat kernel baru, aktifkan sekarang:

    conda activate workstation_env
    
  4. Jika Anda membuat subfolder untuk tutorial ini, cd ke folder tersebut sekarang.

  5. Jalankan skrip pelatihan Anda.

    python train.py
    

Catatan

Anda dapat mengabaikan peringatan mlflow. Anda masih akan mendapatkan semua metrik dan gambar dari autologging.

Memeriksa hasil skrip

Kembali ke Pekerjaan untuk melihat hasil skrip pelatihan Anda. Perlu diingat bahwa data pelatihan berubah dengan setiap pemisahan, sehingga hasilnya juga berbeda antara eksekusi.

Membersihkan sumber daya

Jika Anda berencana untuk melanjutkan sekarang ke tutorial lain, lewati ke Langkah berikutnya.

Menghentikan instans komputasi

Jika Anda tidak akan menggunakannya sekarang, hentikan instans komputasi:

  1. Di studio, di area navigasi kiri, pilih Komputasi.
  2. Di tab atas, pilih Instans komputasi
  3. Pilih instans komputasi dalam daftar.
  4. Di toolbar atas, pilih Hentikan.

Menghapus semua sumber daya

Penting

Sumber daya yang Anda buat sebagai prasyarat untuk tutorial dan artikel cara penggunaan Azure Machine Learning lainnya.

Jika Anda tidak berencana menggunakan sumber daya yang sudah Anda buat, hapus sehingga Anda tidak dikenakan biaya apa pun:

  1. Dari portal Microsoft Azure, pilih Grup sumber daya dari sisi sebelah kiri.

  2. Dari daftar, pilih grup sumber daya yang Anda buat.

  3. Pilih Hapus grup sumber daya.

    Screenshot of the selections to delete a resource group in the Azure portal.

  4. Masukkan nama grup sumber daya. Kemudian pilih Hapus.

Langkah berikutnya

Pelajari lebih lanjut tentang:

Tutorial ini menunjukkan kepada Anda langkah-langkah awal pembuatan model, membuat prototipe pada komputer yang sama tempat kode berada. Untuk pelatihan produksi Anda, pelajari cara menggunakan skrip pelatihan tersebut pada sumber daya komputasi jarak jauh yang lebih kuat: