Cara mengatasi rasa takut dan mulai menggunakan Azure Machine Learning

Saya tahu banyak Ilmuwan Data - dan saya mungkin berhubungan dengan mereka sendiri - yang bekerja pada mesin dengan GPU, lokal atau virtual, yang terletak di cloud, baik melalui Notebook Jupyter, atau melalui beberapa lingkungan pengembangan Python. Bekerja selama 2 tahun sebagai ahli pengembangan AI / ML, saya melakukan hal itu, sambil menyiapkan data di server atau workstation biasa, dan mulai pelatihan pada mesin virtual dengan GPU di Azure.


Tentu saja, kita semua mendengar tentang Azure Machine Learning - platform berbasis cloud khusus untuk pembelajaran mesin. Namun, setelah melihat pertama pada artikel pengantar , tampaknya Azure ML akan menciptakan lebih banyak masalah untuk Anda daripada yang akan dipecahkan. Misalnya, dalam contoh pelatihan yang disebutkan di atas, pelatihan Azure ML diluncurkan dari Jupyter Notebook, sementara skrip pelatihan itu sendiri diusulkan untuk dibuat dan diedit sebagai file teks di salah satu sel - tanpa menggunakan pelengkapan otomatis, penyorotan sintaksis, dan keuntungan lain dari lingkungan pengembangan normal. Karena alasan ini, kami belum lama menggunakan Azure ML dalam pekerjaan kami untuk waktu yang lama.


Namun, saya baru-baru ini menemukan cara untuk mulai menggunakan Azure ML secara efektif dalam pekerjaan saya! Detail menarik?



Rahasia utama adalah ekstensi Kode Visual Studio untuk Azure ML . Ini memungkinkan Anda untuk mengembangkan skrip pelatihan secara langsung dalam Kode VS, menggunakan semua keuntungan lingkungan - Anda bahkan dapat menjalankan skrip secara lokal, dan kemudian hanya mengambilnya dan mengirimkannya untuk pelatihan di cluster Azure ML dengan beberapa klik mouse. Nyaman bukan?


Dengan melakukannya, Anda mendapatkan manfaat berikut dari menggunakan Azure ML:


  • Anda dapat bekerja sebagian besar waktu secara lokal pada mesin Anda dalam IDE yang nyaman, dan menggunakan GPU hanya untuk melatih model . Pada saat yang sama, kumpulan sumber daya pelatihan dapat secara otomatis beradaptasi dengan beban yang diperlukan, dan dengan menetapkan jumlah minimum node ke 0, Anda dapat secara otomatis memulai mesin virtual "sesuai permintaan" di hadapan tugas-tugas pelatihan.
  • Anda dapat menyimpan semua hasil pembelajaran di satu tempat , termasuk metrik yang dicapai dan model yang dihasilkan - tidak perlu menemukan sistem atau prosedur apa pun untuk menyimpan semua hasil.
  • Pada saat yang sama, beberapa orang dapat bekerja pada satu proyek - mereka dapat menggunakan cluster komputasi yang sama, semua eksperimen akan disejajarkan, dan mereka juga dapat melihat hasil percobaan masing-masing. Salah satu skenario tersebut adalah penggunaan Azure ML dalam mengajar Deep Learning , ketika alih-alih memberikan setiap siswa mesin virtual dengan GPU, Anda dapat membuat satu klaster yang akan digunakan semua orang secara terpusat. Selain itu, tabel umum hasil dengan akurasi model dapat berfungsi sebagai elemen kompetitif yang baik.
  • Menggunakan Azure ML, Anda dapat dengan mudah melakukan serangkaian percobaan, misalnya, untuk mengoptimalkan hyperparameter - ini dapat dilakukan dengan beberapa baris kode, tidak perlu melakukan serangkaian percobaan secara manual.

Saya harap saya meyakinkan Anda untuk mencoba Azure ML! Inilah cara memulai:



Azure ML Workspace dan Azure ML Portal


Azure ML diatur berdasarkan konsep ruang kerja - Workspace. Data dapat disimpan di ruang kerja, eksperimen dikirim ke sana untuk pelatihan, hasil belajar disimpan di tempat yang sama - metrik dan model yang diperoleh. Anda dapat melihat apa yang ada di dalam ruang kerja melalui portal Azure ML - dan dari sana Anda dapat melakukan banyak operasi, mulai dari mengunduh data hingga memantau eksperimen dan menggunakan model.


Anda bisa membuat ruang kerja melalui antarmuka web Portal Azure (lihat petunjuk langkah demi langkah ), atau menggunakan baris perintah Azure CLI ( instruksi ):


az extension add -n azure-cli-ml az group create -n myazml -l northeurope az ml workspace create -w myworkspace -g myazml 

Ada juga beberapa sumber daya komputasi yang terkait dengan ruang kerja. Setelah membuat skrip untuk melatih model, Anda dapat mengirim percobaan ke ruang kerja dan menentukan target komputasi - ini akan mengemas skrip, menjalankannya di lingkungan komputasi yang diinginkan, dan kemudian semua hasil percobaan akan disimpan di ruang kerja untuk analisis dan penggunaan lebih lanjut.


Skrip pelatihan untuk MNIST


Pertimbangkan masalah pengenalan tulisan tangan klasik menggunakan dataset MNIST. Demikian pula, di masa depan Anda akan dapat menjalankan skrip pelatihan Anda.


Repositori kami memiliki skrip train_local.py yang train_local.py model regresi linier paling sederhana menggunakan pustaka SkLearn. Tentu saja, saya mengerti bahwa ini bukan cara terbaik untuk menyelesaikan masalah - kami menggunakannya sebagai contoh, sebagai yang termudah.


Script pertama-tama mengunduh data MNIST dari OpenML, dan kemudian menggunakan kelas LogisticRegression untuk melatih model, dan kemudian mencetak akurasi yang dihasilkan:


 mnist = fetch_openml('mnist_784') mnist['target'] = np.array([int(x) for x in mnist['target']]) shuffle_index = np.random.permutation(len(mist['data'])) X, y = mnist['data'][shuffle_index], mnist['target'][shuffle_index] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 42) lr = LogisticRegression() lr.fit(X_train, y_train) y_hat = lr.predict(X_test) acc = np.average(np.int32(y_hat == y_test)) print('Overall accuracy:', acc) 

Anda dapat menjalankan skrip di komputer Anda dan dalam beberapa detik Anda akan mendapatkan hasilnya.


Jalankan skrip di Azure ML


Jika kami menjalankan skrip untuk pelatihan melalui Azure ML, kami akan memiliki dua keuntungan utama:


  • Memulai pelatihan sumber daya komputasi yang sewenang-wenang, yang, biasanya, lebih produktif daripada komputer lokal. Pada saat yang sama, Azure ML akan mengurus pengemasan skrip kami dengan semua file dari direktori saat ini ke dalam wadah buruh pelabuhan, menginstal dependensi yang diperlukan, dan mengirimkannya untuk dieksekusi.
  • Rekam hasil dalam satu registri dalam ruang kerja Azure ML. Untuk memanfaatkan peluang ini, kita perlu menambahkan beberapa baris kode ke skrip kita untuk mencatat akurasi yang dihasilkan:

 from azureml.core.run import Run ... try: run = Run.get_submitted_run() run.log('accuracy', acc) except: pass 

Versi skrip yang sesuai disebut train_universal.py (sedikit train_universal.py daripada yang ditulis di atas, tetapi tidak banyak). Script ini dapat dijalankan secara lokal dan pada sumber daya komputasi jarak jauh.


Untuk menjalankannya di Azure ML dari VS Code, lakukan hal berikut:


  1. Pastikan Azure Extension terhubung ke langganan Anda. Pilih ikon Azure di menu di sebelah kiri. Jika Anda tidak terhubung, pemberitahuan akan muncul di sudut kanan bawah (yang ini ), dengan mengklik di mana Anda dapat masuk melalui browser. Anda juga dapat menekan Ctrl-Shift-P untuk memohon baris perintah Kode VS, dan ketik Azure Masuk .


  2. Setelah itu, di bagian Azure (ikon di sebelah kiri) temukan bagian PEMBELAJARAN MESIN :



Ruang kerja Azure ML dalam Kode VS
Di sini Anda akan melihat berbagai kelompok objek di dalam ruang kerja: menghitung sumber daya, eksperimen, dll.


  1. Buka daftar file, klik kanan pada script train_universal.py dan pilih Azure ML: Jalankan sebagai percobaan di Azure .

Ruang kerja Azure ML dalam Kode VS


  1. Ini akan diikuti oleh serangkaian dialog di area baris perintah VS Code: konfirmasi berlangganan yang digunakan dan ruang kerja Azure ML, dan juga pilih Buat percobaan baru :

Ruang kerja Azure ML dalam Kode VS
Ruang kerja Azure ML dalam Kode VS
Ruang kerja Azure ML dalam Kode VS


  1. Pilih Buat Komputasi Baru :


    • Compute mendefinisikan sumber daya komputasi tempat pelatihan akan berlangsung. Anda dapat memilih komputer lokal, atau kluster cloud AmlCompute. Saya sarankan membuat sekelompok mesin yang dapat diskalakan STANDARD_DS3_v2 , dengan jumlah minimum mesin 0 (dan maksimum bisa 1 atau lebih, tergantung selera Anda). Ini dapat dilakukan melalui antarmuka VS Code, atau sebelumnya melalui Portal ML .

    Ruang kerja Azure ML dalam Kode VS


  2. Selanjutnya, Anda perlu memilih konfigurasi Konfigurasi Komputer , yang menentukan parameter wadah yang dibuat untuk pelatihan, khususnya, semua perpustakaan yang diperlukan. Dalam kasus kami, karena kami menggunakan Scikit Learn, pilih SkLearn , dan kemudian cukup konfirmasikan daftar pustaka yang diajukan dengan Enter. Jika Anda menggunakan pustaka tambahan, Anda harus menentukannya di sini.


    Ruang kerja Azure ML dalam Kode VS
    Ruang kerja Azure ML dalam Kode VS


  3. Setelah itu, sebuah jendela terbuka dengan file JSON yang menggambarkan eksperimen. Di dalamnya, Anda dapat memperbaiki beberapa parameter - misalnya, nama percobaan. Setelah itu, klik tautan Kirim Eksperimen langsung di dalam file ini:



Ruang kerja Azure ML dalam Kode VS


  1. Setelah berhasil mengirimkan percobaan melalui VS Code, di sebelah kanan di area notifikasi Anda akan melihat tautan ke Portal Azure ML , di mana Anda dapat melacak status dan hasil percobaan.

Hasil Eksperimen Azure ML di Portal Azure ML
Selanjutnya, Anda selalu dapat menemukannya di bagian Portal Percobaan Azure ML , atau di bagian Pembelajaran Mesin Azure dalam daftar percobaan:


Ruang kerja Azure ML dalam Kode VS


  1. Jika setelah itu Anda melakukan beberapa perbaikan pada kode atau mengubah parameter, memulai kembali percobaan akan jauh lebih cepat dan mudah. Dengan mengklik kanan pada file, Anda akan melihat item menu baru Ulangi langkah terakhir - cukup pilih dan percobaan akan segera diluncurkan:

Ruang kerja Azure ML dalam Kode VS
Anda selalu dapat menemukan hasil metrik dari semua peluncuran di Azure ML Portal, tidak perlu merekamnya.


Sekarang Anda tahu bahwa menjalankan eksperimen dengan Azure ML mudah dan tidak menyakitkan, dan Anda mendapatkan sejumlah manfaat bagus.


Tapi Anda mungkin telah memperhatikan kekurangannya. Misalnya, perlu waktu lebih lama untuk menjalankan skrip. Tentu saja, dibutuhkan waktu untuk mengemas skrip ke dalam wadah dan menyebarkannya ke server. Jika pada saat yang sama cluster dikurangi menjadi ukuran 0 node, akan lebih banyak waktu untuk memulai mesin virtual, dan semua ini sangat terlihat ketika kita bereksperimen dengan tugas-tugas sederhana seperti MNIST, yang diselesaikan dalam beberapa detik. Namun, dalam kehidupan nyata, ketika pelatihan berlangsung beberapa jam, atau bahkan berhari-hari atau berminggu-minggu, waktu tambahan ini menjadi tidak signifikan, terutama dengan latar belakang kinerja yang jauh lebih tinggi yang dapat disediakan oleh cluster komputasi.


Apa selanjutnya


Saya harap setelah membaca artikel ini Anda akan dapat dan akan menggunakan Azure ML dalam pekerjaan Anda untuk menjalankan skrip, mengelola sumber daya komputasi, dan menyimpan hasilnya secara terpusat. Namun, Azure ML dapat memberi Anda lebih banyak manfaat!


Di dalam ruang kerja, Anda bisa menyimpan data, sehingga membuat repositori terpusat untuk semua tugas Anda, yang mudah diakses. Selain itu, Anda dapat menjalankan eksperimen bukan dari Visual Studio Code, tetapi menggunakan API - ini bisa sangat berguna jika Anda perlu mengoptimalkan hyperparameters dan perlu menjalankan skrip berkali-kali dengan parameter berbeda. Selain itu, di Azure ML, teknologi Hyperdrive khusus sudah terpasang , yang memungkinkan Anda melakukan lebih banyak pencarian yang licik dan optimalisasi hyperparameter. Saya akan berbicara tentang fitur-fitur ini di artikel saya berikutnya.


Sumber daya yang bermanfaat


Untuk studi yang lebih mendalam tentang Azure ML, Anda mungkin menemukan kursus-kursus Belajar Microsoft berikut berguna:


Source: https://habr.com/ru/post/id485338/


All Articles