Bagaimana untuk mengatasi ketakutan dan mula menggunakan Pembelajaran Mesin Azure

Saya mengenali ramai Saintis Data - dan saya mungkin salah seorang daripada mereka sendiri - yang bekerja pada mesin GPU, tempatan atau maya, yang terletak di awan, sama ada melalui Jupyter Notebook atau melalui beberapa jenis persekitaran pembangunan Python. Bekerja selama 2 tahun sebagai pakar pembangun AI/ML, saya melakukan perkara ini dengan tepat, sambil menyediakan data pada pelayan biasa atau stesen kerja, dan menjalankan latihan pada mesin maya dengan GPU dalam Azure.

Sudah tentu, kita semua pernah mendengar tentangnya Pembelajaran Mesin Azure β€” platform awan khas untuk pembelajaran mesin. Walau bagaimanapun, selepas pandangan pertama di artikel pengenalan, nampaknya Azure ML akan mencipta lebih banyak masalah untuk anda daripada menyelesaikannya. Sebagai contoh, dalam tutorial yang dinyatakan di atas, latihan tentang Azure ML dilancarkan daripada Buku Nota Jupyter, manakala skrip latihan itu sendiri dicadangkan untuk dibuat dan diedit sebagai fail teks dalam salah satu sel - sementara tidak menggunakan pelengkapan automatik, sintaks menonjolkan, dan kelebihan lain dari persekitaran pembangunan biasa. Atas sebab ini, kami telah lama tidak menggunakan Azure ML dalam kerja kami.

Walau bagaimanapun, saya baru-baru ini menemui cara untuk mula menggunakan Azure ML dengan berkesan dalam kerja saya! Berminat dengan butirannya?

Bagaimana untuk mengatasi ketakutan dan mula menggunakan Pembelajaran Mesin Azure

Rahsia utama ialah Sambungan Kod Visual Studio untuk Azure ML. Ia membolehkan anda membangunkan skrip latihan terus dalam Kod VS, memanfaatkan sepenuhnya persekitaran - dan anda juga boleh menjalankan skrip secara tempatan dan kemudian menghantarnya ke latihan dalam kelompok Azure ML dengan beberapa klik. Mudah, bukan?

Dengan berbuat demikian, anda mendapat faedah berikut daripada menggunakan Azure ML:

  • Anda boleh bekerja pada kebanyakan masa secara tempatan pada mesin anda dalam IDE yang mudah, dan gunakan GPU hanya untuk latihan model. Pada masa yang sama, kumpulan sumber latihan boleh menyesuaikan secara automatik kepada beban yang diperlukan, dan dengan menetapkan bilangan minimum nod kepada 0, anda boleh secara automatik memulakan mesin maya "atas permintaan" dengan adanya tugas latihan.
  • Anda boleh menyimpan semua hasil pembelajaran di satu tempat, termasuk metrik yang dicapai dan model yang terhasil - tidak perlu menghasilkan beberapa jenis sistem atau pesanan untuk menyimpan semua hasil.
  • Dalam kes ini, Berbilang orang boleh bekerja pada projek yang sama - mereka boleh menggunakan kluster pengkomputeran yang sama, semua eksperimen akan dibariskan dalam baris gilir, dan mereka juga boleh melihat hasil percubaan masing-masing. Satu senario sedemikian ialah menggunakan Azure ML dalam pengajaran Pembelajaran Dalamapabila bukannya memberikan setiap pelajar mesin maya dengan GPU, anda boleh membuat satu kelompok yang akan digunakan oleh semua secara berpusat. Di samping itu, jadual umum keputusan dengan ketepatan model boleh berfungsi sebagai elemen persaingan yang baik.
  • Dengan Azure ML, anda boleh menjalankan satu siri eksperimen dengan mudah, contohnya, untuk pengoptimuman hiperparameter - ini boleh dilakukan dengan beberapa baris kod, tidak perlu menjalankan satu siri eksperimen secara manual.

Saya harap saya meyakinkan anda untuk mencuba Azure ML! Begini caranya untuk bermula:

Azure ML Workspace dan Azure ML Portal

Azure ML disusun mengikut konsep kawasan kerja - ruang kerja. Data boleh disimpan di ruang kerja, eksperimen dihantar kepadanya untuk latihan, hasil latihan juga disimpan di sana - metrik dan model yang dihasilkan. Anda boleh melihat apa yang ada di dalam ruang kerja melalui Portal ML Azure - dan dari situ anda boleh melakukan banyak operasi, mulai daripada memuatkan data hingga memantau eksperimen dan menggunakan model.

Anda boleh mencipta ruang kerja melalui antara muka web Portal Azure (Lihat. arahan langkah demi langkah), atau menggunakan baris arahan Azure CLI (Directions):

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

Juga dikaitkan dengan ruang kerja adalah beberapa sumber pengkomputeran (Kirakan). Sebaik sahaja anda telah mencipta skrip untuk melatih model, anda boleh hantar eksperimen untuk dilaksanakan ke ruang kerja, dan nyatakan mengira sasaran - dalam kes ini, skrip akan dibungkus, dijalankan dalam persekitaran pengkomputeran yang diingini, dan kemudian semua hasil percubaan akan disimpan dalam ruang kerja untuk analisis dan penggunaan selanjutnya.

Pembelajaran skrip untuk MNIST

Pertimbangkan masalah klasik pengecaman digit tulisan tangan menggunakan set data MNIST. Begitu juga, pada masa hadapan, anda boleh menjalankan mana-mana skrip latihan anda.

Terdapat skrip dalam repositori kami train_local.py, yang kami latih model regresi linear termudah menggunakan perpustakaan SkLearn. Sudah tentu, saya faham bahawa ini bukan cara terbaik untuk menyelesaikan masalah - kami menggunakannya sebagai contoh, sebagai yang paling mudah.

Skrip mula-mula memuat turun data MNIST daripada OpenML dan kemudian menggunakan kelas LogisticRegression untuk melatih model, dan kemudian mencetak ketepatan yang terhasil:

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 boleh menjalankan skrip pada komputer anda dan mendapatkan hasilnya dalam beberapa saat.

Jalankan skrip dalam Azure ML

Jika kami menjalankan skrip latihan melalui Azure ML, kami akan mempunyai dua kelebihan utama:

  • Menjalankan latihan pada sumber pengkomputeran sewenang-wenangnya, yang, sebagai peraturan, lebih produktif daripada komputer tempatan. Pada masa yang sama, Azure ML sendiri akan menguruskan pembungkusan skrip kami dengan semua fail daripada direktori semasa ke dalam bekas docker, memasang kebergantungan yang diperlukan dan menghantarnya untuk pelaksanaan.
  • Tulis hasil pada satu pendaftaran di dalam ruang kerja Azure ML. Untuk memanfaatkan ciri ini, kami perlu menambah beberapa baris kod pada skrip kami untuk merekodkan ketepatan yang terhasil:

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

Versi skrip yang sepadan dipanggil train_universal.py (ia adalah sedikit lebih licik daripada yang ditulis di atas, tetapi tidak banyak). Skrip ini boleh dijalankan secara tempatan dan pada sumber pengkomputeran jauh.

Untuk menjalankannya dalam Azure ML daripada Kod VS, anda perlu melakukan perkara berikut:

  1. Pastikan Sambungan Azure disambungkan kepada langganan anda. Pilih ikon Azure daripada menu di sebelah kiri. Jika anda tidak disambungkan, pemberitahuan akan muncul di sudut kanan bawah (macam ni), dengan mengklik yang anda boleh masuk melalui penyemak imbas. Anda juga boleh klik Ctrl-Shift-P untuk memanggil baris arahan VS Code, dan taip Log Masuk Azure.

  2. Selepas itu, dalam bahagian Azure (ikon di sebelah kiri), cari bahagian tersebut PEMBELAJARAN MESIN:

Bagaimana untuk mengatasi ketakutan dan mula menggunakan Pembelajaran Mesin Azure
Di sini anda harus melihat kumpulan objek yang berbeza di dalam ruang kerja: sumber pengkomputeran, eksperimen, dsb.

  1. Pergi ke senarai fail, klik kanan pada skrip train_universal.py dan pilih Azure ML: Jalankan sebagai percubaan dalam Azure.

Bagaimana untuk mengatasi ketakutan dan mula menggunakan Pembelajaran Mesin Azure

  1. Ini akan diikuti dengan satu siri dialog dalam kawasan baris arahan Kod VS: sahkan langganan dan ruang kerja Azure ML yang anda gunakan, dan pilih Buat percubaan baharu:

Bagaimana untuk mengatasi ketakutan dan mula menggunakan Pembelajaran Mesin Azure
Bagaimana untuk mengatasi ketakutan dan mula menggunakan Pembelajaran Mesin Azure
Bagaimana untuk mengatasi ketakutan dan mula menggunakan Pembelajaran Mesin Azure

  1. Pilih untuk mencipta sumber pengiraan baharu Buat Pengiraan Baharu:

    • Kirakan menentukan sumber pengkomputeran di mana latihan akan dijalankan. Anda boleh memilih komputer tempatan, atau gugusan awan AmlCompute. Saya cadangkan mencipta kelompok mesin berskala STANDARD_DS3_v2, dengan bilangan mesin minimum 0 (dan maksimum 1 atau lebih, bergantung pada selera anda). Ini boleh dilakukan melalui antara muka Kod VS, atau sebelum ini melalui Portal ML.

    Bagaimana untuk mengatasi ketakutan dan mula menggunakan Pembelajaran Mesin Azure

  2. Seterusnya, anda perlu memilih konfigurasi Konfigurasi Pengiraan, yang mentakrifkan parameter bekas yang dibuat untuk latihan, khususnya, semua perpustakaan yang diperlukan. Dalam kes kami, kerana kami menggunakan Scikit Learn, kami memilih SkLearn, dan kemudian sahkan senarai perpustakaan yang dicadangkan dengan menekan Enter. Jika anda menggunakan mana-mana perpustakaan tambahan, ia mesti dinyatakan di sini.

    Bagaimana untuk mengatasi ketakutan dan mula menggunakan Pembelajaran Mesin Azure
    Bagaimana untuk mengatasi ketakutan dan mula menggunakan Pembelajaran Mesin Azure

  3. Ini akan membuka tetingkap dengan fail JSON yang menerangkan percubaan. Di dalamnya, anda boleh membetulkan beberapa parameter - contohnya, nama percubaan. Selepas itu klik pada pautan Hantar Percubaan betul-betul di dalam fail ini:

Bagaimana untuk mengatasi ketakutan dan mula menggunakan Pembelajaran Mesin Azure

  1. Selepas berjaya menyerahkan percubaan melalui Kod VS, di sebelah kanan kawasan pemberitahuan, anda akan melihat pautan ke Portal ML Azure, di mana anda boleh menjejak status dan keputusan percubaan.

Bagaimana untuk mengatasi ketakutan dan mula menggunakan Pembelajaran Mesin Azure
Selepas itu, anda sentiasa boleh mencarinya dalam bahagian Eksperimen Portal ML Azure, atau dalam bahagian Pembelajaran Mesin Azure dalam senarai eksperimen:

Bagaimana untuk mengatasi ketakutan dan mula menggunakan Pembelajaran Mesin Azure

  1. Jika selepas itu anda membuat beberapa pembetulan pada kod atau menukar parameter, memulakan semula percubaan akan menjadi lebih cepat dan lebih mudah. Dengan mengklik kanan pada fail, anda akan melihat item menu baharu Ulang larian terakhir - hanya pilihnya, dan percubaan akan segera bermula:

Bagaimana untuk mengatasi ketakutan dan mula menggunakan Pembelajaran Mesin Azure
Anda sentiasa boleh mencari hasil metrik daripada semua pelancaran di Portal ML Azure, tidak perlu menulisnya.

Kini anda tahu bahawa menjalankan eksperimen dengan Azure ML adalah mudah dan tidak menyakitkan, dan anda mendapat beberapa faedah yang bagus dengan berbuat demikian.

Tetapi anda juga boleh melihat keburukannya. Sebagai contoh, masa yang lebih lama untuk menjalankan skrip. Sudah tentu, pembungkusan skrip dalam bekas dan menggunakannya pada pelayan memerlukan masa. Jika pada masa yang sama kluster dipotong kepada saiz 0 nod, ia akan mengambil lebih banyak masa untuk memulakan mesin maya, dan semua ini amat ketara apabila kami bereksperimen pada tugas mudah seperti MNIST, yang diselesaikan dalam beberapa saat. . Walau bagaimanapun, dalam kehidupan sebenar, apabila latihan berlangsung beberapa jam, malah beberapa hari atau minggu, masa tambahan ini menjadi tidak penting, terutamanya dengan latar belakang prestasi yang lebih tinggi yang boleh diberikan oleh kluster pengkomputeran.

Apa seterusnya?

Saya berharap selepas membaca artikel ini, anda boleh dan akan menggunakan Azure ML dalam kerja anda untuk menjalankan skrip, mengurus sumber pengkomputeran dan menyimpan hasil secara berpusat. Walau bagaimanapun, Azure ML boleh memberi anda lebih banyak faedah!

Di dalam ruang kerja, anda boleh menyimpan data, dengan itu mencipta repositori terpusat untuk semua tugas anda, yang mudah diakses. Selain itu, anda boleh menjalankan eksperimen bukan daripada Kod Visual Studio, tetapi menggunakan API - ini amat berguna jika anda perlu melakukan pengoptimuman hiperparameter dan perlu menjalankan skrip berkali-kali dengan parameter yang berbeza. Selain itu, teknologi khas terbina dalam Azure ML Pemacu Hyperdrive, yang membolehkan anda melakukan carian yang lebih rumit dan pengoptimuman hiperparameter. Saya akan bercakap tentang kemungkinan ini dalam catatan saya yang seterusnya.

Sumber Berguna

Untuk mengetahui lebih lanjut tentang Azure ML, anda mungkin mendapati kursus Microsoft Learn berikut membantu:

Sumber: www.habr.com

Tambah komen