Korkunun üstesinden gelme ve Azure Machine Learning kullanmaya başlama

Bir Jupyter Not Defteri veya bir tür Python geliştirme ortamı aracılığıyla bulutta bulunan yerel veya sanal GPU makinelerinde çalışan birçok Veri Bilimcisi tanıyorum - ve muhtemelen onlardan biriyim -. 2 yıldır uzman bir AI/ML geliştiricisi olarak çalışarak, normal bir sunucuda veya iş istasyonunda verileri hazırlarken ve Azure'da GPU'lu bir sanal makinede eğitim çalıştırırken tam olarak bunu yaptım.

Tabii ki, hepimiz duyduk Azure Makine Öğrenimi — makine öğrenimi için özel bir bulut platformu. Ancak ilk bakıştan sonra tanıtım makaleleri, Azure ML sizin için çözdüğünden daha fazla sorun yaratacak gibi görünüyor. Örneğin, yukarıda belirtilen öğreticide, Azure ML eğitimi bir Jupyter Not Defterinden başlatılırken, eğitim komut dosyasının kendisinin hücrelerden birinde bir metin dosyası olarak oluşturulması ve düzenlenmesi önerilir - otomatik tamamlama, sözdizimi kullanılmaz. normal bir geliştirme ortamının vurgulanması ve diğer avantajları. Bu nedenle Azure ML'yi uzun süredir çalışmalarımızda ciddi anlamda kullanmıyoruz.

Ancak yakın zamanda Azure ML'yi işimde etkin bir şekilde kullanmaya başlamanın bir yolunu keşfettim! Ayrıntılarla ilgileniyor musunuz?

Korkunun üstesinden gelme ve Azure Machine Learning kullanmaya başlama

Ana sır Azure ML için Visual Studio Code uzantısı. Eğitim betiklerini doğrudan VS Code'da geliştirerek ortamın tüm avantajlarından yararlanmanıza olanak tanır ve hatta betiği yerel olarak çalıştırabilir ve ardından birkaç tıklamayla bir Azure ML kümesindeki eğitime gönderebilirsiniz. Uygun, değil mi?

Bunu yaparken, Azure ML'yi kullanmanın aşağıdaki avantajlarını elde edersiniz:

  • Çoğu zaman makinenizde uygun bir IDE'de yerel olarak çalışabilirsiniz ve GPU'yu yalnızca model eğitimi için kullanın. Aynı zamanda, eğitim kaynakları havuzu gerekli yüke göre otomatik olarak ayarlanabilir ve minimum düğüm sayısını 0 olarak ayarlayarak, sanal makineyi eğitim görevlerinin varlığında "istek üzerine" otomatik olarak başlatabilirsiniz.
  • Şunları yapabilirsiniz tüm öğrenme çıktılarını tek bir yerde saklayınelde edilen ölçümler ve ortaya çıkan modeller dahil olmak üzere - tüm sonuçları depolamak için bir tür sistem veya sipariş bulmaya gerek yoktur.
  • Bu durumda, Aynı proje üzerinde birden fazla kişi çalışabilir. - aynı bilgi işlem kümesini kullanabilirler, tüm deneyler sıraya alınır ve ayrıca birbirlerinin deneylerinin sonuçlarını da görebilirler. Böyle bir senaryo Derin Öğrenme öğretiminde Azure ML kullanmaher öğrenciye GPU'lu bir sanal makine vermek yerine, herkes tarafından merkezi olarak kullanılacak bir küme oluşturabilirsiniz. Ek olarak, model doğruluğuna sahip genel bir sonuç tablosu, iyi bir rekabet unsuru olarak hizmet edebilir.
  • Azure ML ile bir dizi deneyi kolayca yürütebilirsiniz, örneğin, hiperparametre optimizasyonu - bu birkaç satır kodla yapılabilir, manuel olarak bir dizi deney yapmaya gerek yoktur.

Umarım sizi Azure ML'yi denemeye ikna etmişimdir! Nasıl başlayacağınız aşağıda açıklanmıştır:

Azure ML Çalışma Alanı ve Azure ML Portalı

Azure ML, konsept etrafında düzenlenmiştir çalışma alanı — Çalışma alanı. Veriler çalışma alanında saklanabilir, eğitim için deneyler oraya gönderilir, eğitim sonuçları da orada saklanır - ortaya çıkan metrikler ve modeller. aracılığıyla çalışma alanının içinde ne olduğunu görebilirsiniz. Azure ML portalı - ve oradan veri yüklemekten deneyleri izlemeye ve modelleri dağıtmaya kadar birçok işlemi gerçekleştirebilirsiniz.

Web arayüzü üzerinden bir çalışma alanı oluşturabilirsiniz. Azure Portalı (Bkz. adım adım talimatlar) veya Azure CLI komut satırını kullanarak (talimatlar):

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

Ayrıca çalışma alanıyla ilişkili bazı bilgi işlem kaynakları (hesaplamak). Modeli eğitmek için bir komut dosyası oluşturduktan sonra şunları yapabilirsiniz: yürütme için deney gönder çalışma alanına gidin ve belirtin hesaplama hedefi - bu durumda, komut dosyası paketlenecek, istenen bilgi işlem ortamında çalıştırılacak ve ardından deneyin tüm sonuçları daha fazla analiz ve kullanım için çalışma alanına kaydedilecektir.

MNIST için komut dosyası öğrenme

Klasik problemi düşünün el yazısı rakam tanıma MNIST veri setini kullanarak. Benzer şekilde, gelecekte herhangi bir eğitim betiğinizi çalıştırabilirsiniz.

Depomuzda bir komut dosyası var train_local.pySkLearn kitaplığını kullanarak en basit doğrusal regresyon modelini eğittiğimiz. Tabii ki, bunun sorunu çözmenin en iyi yolu olmadığını anlıyorum - bunu bir örnek olarak en basiti olarak kullanıyoruz.

Komut dosyası önce MNIST verilerini OpenML'den indirir ve ardından sınıfı kullanır. LogisticRegression modeli eğitmek ve ardından elde edilen doğruluğu yazdırmak için:

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)

Komut dosyasını bilgisayarınızda çalıştırabilir ve sonucu birkaç saniye içinde alabilirsiniz.

Betiği Azure ML'de çalıştırın

Eğitim betiğini Azure ML üzerinden çalıştırırsak iki ana avantajımız olur:

  • Eğitimi, kural olarak yerel bilgisayardan daha verimli olan isteğe bağlı bir bilgi işlem kaynağında yürütmek. Aynı zamanda, Azure ML'nin kendisi betiğimizi geçerli dizindeki tüm dosyalarla bir docker kapsayıcısına paketleme, gerekli bağımlılıkları yükleme ve yürütme için gönderme ile ilgilenecektir.
  • Sonuçları bir Azure ML çalışma alanı içindeki tek bir kayıt defterine yazın. Bu özellikten yararlanmak için, sonucun doğruluğunu kaydetmek için betiğimize birkaç satır kod eklememiz gerekiyor:

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

Komut dosyasının karşılık gelen sürümü denir train_universal.py (yukarıda yazılandan biraz daha kurnaz ama çok değil). Bu komut dosyası hem yerel olarak hem de uzak bir bilgi işlem kaynağında çalıştırılabilir.

VS Code'dan Azure ML'de çalıştırmak için aşağıdakileri yapmanız gerekir:

  1. Azure Uzantısının aboneliğinize bağlı olduğundan emin olun. Soldaki menüden Azure simgesini seçin. Bağlı değilseniz, sağ alt köşede bir bildirim görünecektir (işte), tarayıcı üzerinden girebileceğiniz üzerine tıklayarak. Ayrıca tıklayabilirsiniz Ctrl-Üst Karakter-P VS Code komut satırını çağırmak ve şunu yazmak için Azure Oturum Açma.

  2. Bundan sonra, Azure bölümünde (soldaki simge), bölümü bulun MAKİNE ÖĞRENME:

Korkunun üstesinden gelme ve Azure Machine Learning kullanmaya başlama
Burada, çalışma alanı içindeki farklı nesne gruplarını görmelisiniz: bilgi işlem kaynakları, deneyler vb.

  1. Dosya listesine gidin, komut dosyasına sağ tıklayın train_universal.py ve seçin Azure ML: Azure'da deneme olarak çalıştırın.

Korkunun üstesinden gelme ve Azure Machine Learning kullanmaya başlama

  1. Bunu, VS Code'un komut satırı alanında bir dizi iletişim kutusu izleyecektir: kullandığınız aboneliği ve Azure ML çalışma alanını onaylayın ve seçin Yeni deneme oluştur:

Korkunun üstesinden gelme ve Azure Machine Learning kullanmaya başlama
Korkunun üstesinden gelme ve Azure Machine Learning kullanmaya başlama
Korkunun üstesinden gelme ve Azure Machine Learning kullanmaya başlama

  1. Yeni bir bilgi işlem kaynağı oluşturmayı seçin Yeni Bilgi İşlem Oluştur:

    • hesaplamak eğitimin gerçekleştirileceği bilgi işlem kaynağını belirler. Yerel bir bilgisayar veya bir AmlCompute bulut kümesi seçebilirsiniz. Ölçeklenebilir bir makine kümesi oluşturmanızı öneririm STANDARD_DS3_v2, minimum makine sayısı 0 (ve iştahınıza bağlı olarak maksimum 1 veya daha fazla). Bu, VS Code arabirimi aracılığıyla veya daha önce aracılığıyla yapılabilir. Makine Öğrenimi Portalı.

    Korkunun üstesinden gelme ve Azure Machine Learning kullanmaya başlama

  2. Ardından, bir yapılandırma seçmeniz gerekir İşlem Yapılandırmasıeğitim için oluşturulan kapsayıcının parametrelerini, özellikle gerekli tüm kitaplıkları tanımlar. Bizim durumumuzda, Scikit Learn kullandığımız için SkLearnve ardından önerilen kitaplık listesini Enter tuşuna basarak onaylayın. Herhangi bir ek kitaplık kullanıyorsanız, bunlar burada belirtilmelidir.

    Korkunun üstesinden gelme ve Azure Machine Learning kullanmaya başlama
    Korkunun üstesinden gelme ve Azure Machine Learning kullanmaya başlama

  3. Bu, deneyi açıklayan bir JSON dosyası içeren bir pencere açacaktır. İçinde bazı parametreleri düzeltebilirsiniz - örneğin, deneyin adı. Bundan sonra linke tıklayın Deneyi Gönder bu dosyanın hemen içinde:

Korkunun üstesinden gelme ve Azure Machine Learning kullanmaya başlama

  1. VS Code aracılığıyla bir deneyi başarıyla gönderdikten sonra, bildirim alanının sağ tarafında bir bağlantı göreceksiniz. Azure ML Portalı, deneyin durumunu ve sonuçlarını takip edebileceğiniz yer.

Korkunun üstesinden gelme ve Azure Machine Learning kullanmaya başlama
Daha sonra, her zaman bölümünde bulabilirsiniz. Deneyler Azure ML Portalıveya bölümünde Azure Makine Öğrenimi deney listesinde:

Korkunun üstesinden gelme ve Azure Machine Learning kullanmaya başlama

  1. Bundan sonra kodda bazı düzeltmeler yaptıysanız veya parametreleri değiştirdiyseniz, denemeyi yeniden başlatmak çok daha hızlı ve kolay olacaktır. Bir dosyaya sağ tıklayarak yeni bir menü öğesi göreceksiniz. Son çalıştırmayı tekrarla - sadece seçin ve deney hemen başlayacaktır:

Korkunun üstesinden gelme ve Azure Machine Learning kullanmaya başlama
Azure ML Portal'daki tüm lansmanlardan elde edilen ölçümlerin sonuçlarını her zaman bulabilirsiniz, bunları not almanıza gerek yoktur.

Artık Azure ML ile deneme çalıştırmanın basit ve zahmetsiz olduğunu biliyorsunuz ve bunu yaparken çok sayıda güzel avantaj elde ediyorsunuz.

Ancak dezavantajları da görebilirsiniz. Örneğin, komut dosyasını çalıştırmak çok daha uzun sürdü. Elbette komut dosyasını bir kapta paketlemek ve sunucuda konuşlandırmak zaman alır. Küme aynı zamanda 0 düğüm boyutuna düşürülürse, sanal makineyi başlatmak daha da fazla zaman alacaktır ve tüm bunlar, birkaç saniye içinde çözülen MNIST gibi basit görevler üzerinde deney yaptığımızda çok belirgindir. . Bununla birlikte, gerçek hayatta, eğitim birkaç saat, hatta günler veya haftalar sürdüğünde, bu ek süre, özellikle bir bilgi işlem kümesinin sağlayabileceği çok daha yüksek performansın arka planına karşı önemsiz hale gelir.

Sırada ne var?

Umarım bu makaleyi okuduktan sonra Azure ML'yi işinizde betik çalıştırmak, bilgi işlem kaynaklarını yönetmek ve sonuçları merkezi olarak depolamak için kullanabilirsiniz ve kullanacaksınız. Ancak Azure ML size daha da fazla avantaj sağlayabilir!

Çalışma alanının içinde verileri depolayabilir, böylece tüm görevleriniz için erişimi kolay merkezi bir havuz oluşturabilirsiniz. Ek olarak, deneyleri Visual Studio Code'dan değil, API'yi kullanarak çalıştırabilirsiniz - bu, özellikle hiperparametre optimizasyonu gerçekleştirmeniz ve betiği farklı parametrelerle birçok kez çalıştırmanız gerekiyorsa yararlı olabilir. Ayrıca, Azure ML'de özel bir teknoloji yerleşiktir hiper sürücü, bu da hiperparametrelerin daha zor aranmasını ve optimizasyonunu yapmanızı sağlar. Bir sonraki yazımda bu olasılıklardan bahsedeceğim.

Faydalı kaynaklar

Azure ML hakkında daha fazla bilgi edinmek için aşağıdaki Microsoft Learn kurslarını faydalı bulabilirsiniz:

Kaynak: habr.com

Yorum ekle