Öğretici: Azure Machine Learning ve IoT Edge kullanan uçtan uca bir çözüm

Şunlar için geçerlidir:evet simgesi IoT Edge 1.1

Önemli

IoT Edge 1.1 destek sonu tarihi 13 Aralık 2022'ydi. Bu ürünün, hizmetin, teknolojinin veya API’nin nasıl desteklendiği hakkında bilgi edinmek için Microsoft Ürün Yaşam Döngüsü’ne göz atın. IoT Edge en son sürümüne güncelleştirme hakkında daha fazla bilgi için bkz. Güncelleştirme IoT Edge.

IoT uygulamaları genellikle akıllı buluttan ve akıllı kenardan yararlanmak ister. Bu öğreticide, buluttaki IoT cihazlarından toplanan verilerle bir makine öğrenmesi modelini eğitme, bu modeli IoT Edge dağıtma ve modeli düzenli aralıklarla bakım ve iyileştirme adımlarında size yol gösteririz.

Not

Bu öğretici kümesindeki kavramlar tüm IoT Edge sürümleri için geçerlidir, ancak senaryoyu denemek için oluşturduğunuz örnek cihaz IoT Edge sürüm 1.1'i çalıştırır.

Bu öğreticinin birincil amacı, özellikle uçta makine öğrenmesi ile IoT verilerinin işlenmesini tanıtmaktır. Genel bir makine öğrenmesi iş akışının birçok yönüne değinsek de bu öğretici, makine öğrenmesine ayrıntılı bir giriş olarak tasarlanmamıştır. Bu noktada kullanım örneği için yüksek oranda iyileştirilmiş bir model oluşturmaya çalışmıyoruz. IoT veri işleme için uygun bir model oluşturma ve kullanma sürecini göstermek için yeterli çabayı gösteririz.

Öğreticinin bu bölümünde şu konular ele alınmaktadır:

  • Öğreticinin sonraki bölümlerini tamamlamak için önkoşullar.
  • Öğreticinin hedef kitlesi.
  • Öğreticinin benzetimini yapılan kullanım örneği.
  • Kullanım örneğini yerine getirmek için öğreticinin izlediği genel süreç.

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Önkoşullar

Öğreticiyi tamamlamak için kaynak oluşturma haklarına sahip olduğunuz bir Azure aboneliğine erişmeniz gerekir. Bu öğreticide kullanılan hizmetlerden bazıları Azure ücretlerine tabi olacaktır. Henüz bir Azure aboneliğiniz yoksa Ücretsiz Azure Hesabı ile çalışmaya başlayabilirsiniz.

Geliştirme makineniz olarak bir Azure Sanal Makinesi ayarlamak için betikleri çalıştırabileceğiniz PowerShell yüklü bir makineye de ihtiyacınız vardır.

Bu belgede aşağıdaki araç kümesini kullanacağız:

  • Veri yakalama için bir Azure IoT hub'ı

  • Veri hazırlama ve makine öğrenmesi denemeleri için ana ön uç olarak Azure Notebooks. Python kodunu örnek verilerin bir alt kümesinde bir not defterinde çalıştırmak, veri hazırlama sırasında hızlı yinelemeli ve etkileşimli geri dönüş elde etmenin harika bir yoludur. Jupyter not defterleri, betikleri bir işlem arka uçta büyük ölçekte çalışacak şekilde hazırlamak için de kullanılabilir.

  • Büyük ölçekte makine öğrenmesi ve makine öğrenmesi görüntü oluşturma için arka uç olarak Azure Machine Learning. Jupyter not defterlerinde hazırlanmış ve test edilmiş betikleri kullanarak Azure Machine Learning arka ucuna destek sunun.

  • Makine öğrenmesi görüntüsünün bulut dışı uygulaması için Azure IoT Edge

Açıkçası, başka seçenekler de var. Örneğin bazı senaryolarda IoT Central, IoT cihazlarından ilk eğitim verilerini yakalamak için kod içermeyen bir alternatif olarak kullanılabilir.

Hedef kitle ve roller

Bu makale kümesi, IoT geliştirme veya makine öğrenmesi konusunda daha önce deneyime sahip olmayan geliştiricilere yöneliktir. Uçta makine öğrenmesi dağıtmak için çok çeşitli teknolojilerin nasıl bağlanılacağı hakkında bilgi sahibi olmak gerekir. Bu nedenle bu öğretici, bir IoT çözümü için bu teknolojileri birleştirmenin tek bir yolunu göstermek için uçtan uca bir senaryoyu kapsar. Gerçek dünya ortamında bu görevler farklı uzmanlıklara sahip birkaç kişi arasında dağıtılabilir. Örneğin geliştiriciler cihaz veya bulut koduna odaklanırken, veri bilimcileri analiz modellerini tasarlar. Bireysel bir geliştiricinin bu öğreticiyi başarıyla tamamlayabilmesi için içgörüler ve daha fazla bilgi için bağlantılar içeren ek yönergeler sağladık. Bunun nedeninin yanı sıra ne yapıldığını anlamak için yeterli olduğunu umuyoruz.

Alternatif olarak, öğreticiyi birlikte takip etmek, tüm uzmanlığınızı ortaya getirmek ve bir ekip olarak işlerin nasıl bir araya getirebileceğini öğrenmek için farklı rollere sahip iş arkadaşlarınızla birlikte çalışabilirsiniz.

Her iki durumda da okuyucuları yönlendirmeye yardımcı olmak için bu öğreticideki her makale kullanıcının rolünü gösterir. Bu roller şunlardır:

  • Bulut geliştirme (DevOps kapasitesinde çalışan bir bulut geliştirici dahil)
  • Veri analizi

Kullanım örneği: Tahmine dayalı bakım

Bu senaryoyu, 2008'de Prognostics and Health Management (PHM08) Konferansı'nda sunulan bir kullanım örneğine dayandırdık. Amaç, bir dizi turbofan uçak motorunun kalan kullanım ömrünü (RUL) tahmin etmektir. Bu veriler MAPSS (Modüler Aero-Propulsion Sistem Simülasyonu) yazılımının ticari sürümü olan C-MAPSS kullanılarak oluşturulmuştur. Bu yazılım, sistem durumu, kontrol ve motor parametrelerini rahatça simüle etmek için esnek bir turbofan motor simülasyon ortamı sağlar.

Bu öğreticide kullanılan veriler Turbofan altyapısı bozulma simülasyonu veri kümesinden alınır.

Benioku dosyasından:

Deneysel Senaryo

Veri kümeleri birden çok değişkenli zaman serisinden oluşur. Her veri kümesi eğitim ve test alt kümelerine daha fazla ayrılır. Seriler her zaman farklı bir motordan alınıyor, yani veriler aynı türde bir motor filosundan geliyor olarak kabul edilebilir. Her motor, kullanıcı tarafından bilinmeyen farklı ilk aşınma ve üretim varyasyonu dereceleriyle başlar. Bu aşınma ve değişim normal kabul edilir, yani hata durumu olarak kabul edilmez. Altyapı performansı üzerinde önemli bir etkiye sahip olan üç işlem ayarı vardır. Bu ayarlar da verilere dahil edilir. Veriler algılayıcı gürültüsüyle kirlenmiş.

Motor her zaman serisinin başında normal şekilde çalışır ve seri sırasında bir noktada hata geliştirir. Eğitim kümesinde hata, sistem hatasına kadar büyük olarak büyür. Test kümesinde, zaman serisi sistem hatasından bir süre önce sona erer. Rekabetin amacı, test kümesindeki arızadan önce kalan operasyonel döngülerin sayısını tahmin etmek, yani motorun çalışmaya devam edeceği son döngüden sonraki işlem döngülerinin sayısını tahmin etmektir. Ayrıca test verileri için true Remaining Useful Life (RUL) değerlerini içeren bir vektör sağlanmıştır.

Veriler bir yarışma için yayımlandığından, makine öğrenmesi modellerini türetmeye yönelik çeşitli yaklaşımlar bağımsız olarak yayımlanmıştır. Örneklerin incelenmesinin, belirli bir makine öğrenmesi modelinin oluşturulmasındaki süreci ve mantığı anlamanıza yardımcı olduğunu bulduk. Bkz. örnek:

GitHub kullanıcı jancervenka tarafından uçak motoru arıza tahmin modeli.

GitHub kullanıcısı hankroark tarafından turbofan altyapısının bozulması.

İşleme

Aşağıdaki resimde bu öğreticide izlediğimiz kaba adımlar gösterilmektedir:

İşlem adımları için mimari diyagramı

  1. Eğitim verileri toplama: Süreç, eğitim verilerini toplayarak başlar. Bazı durumlarda veriler zaten toplanmıştır ve bir veritabanında veya veri dosyaları biçiminde kullanılabilir. Diğer durumlarda, özellikle IoT senaryolarında verilerin IoT cihazlarından ve algılayıcılarından toplanması ve bulutta depolanması gerekir.

    Turbofan motor koleksiyonuna sahip olmadığınızı varsayıyoruz, bu nedenle proje dosyaları NASA cihaz verilerini buluta gönderen basit bir cihaz simülatörü içerir.

  2. Verileri hazırlama. Çoğu durumda, cihazlardan ve algılayıcılardan toplanan ham veriler makine öğrenmesi için hazırlık gerektirir. Bu adım veri temizlemeyi, verileri yeniden biçimlendirmeyi veya makine öğrenmesi tarafından anahtarlanabilir ek bilgiler eklemek için ön işlemeyi içerebilir.

    Uçak motoru makine verilerimizde veri hazırlama işlemi, verilerdeki gerçek gözlemlere göre örnekteki her veri noktası için açık hata zamanı hesaplamayı içerir. Bu bilgiler, makine öğrenmesi algoritmasının gerçek algılayıcı veri desenleri ile motorun beklenen kalan yaşam süresi arasındaki bağıntıları bulmasını sağlar. Bu adım yüksek oranda etki alanına özgüdür.

  3. Makine öğrenmesi modeli oluşturma. Hazırlanan verilere dayanarak artık modelleri eğitmek ve sonuçları birbiriyle karşılaştırmak için farklı makine öğrenmesi algoritmaları ve parametreleştirmeleri ile denemeler yapabiliriz.

    Bu durumda, test için model tarafından hesaplanan tahmin edilen sonucu bir dizi motorda gözlemlenen gerçek sonuçla karşılaştırıyoruz. Azure Machine Learning'de bir model kayıt defterinde oluşturduğumuz farklı model yinelemelerini yönetebiliriz.

  4. Modeli dağıtın. Başarı ölçütlerimizi karşılayan bir model elde ettikten sonra dağıtıma geçebiliriz. Bu, modeli REST çağrıları kullanılarak verilerle besleyebileceğiniz ve analiz sonuçlarını döndürebilen bir web hizmeti uygulamasına sarmalama işlemini içerir. Ardından web hizmeti uygulaması, bulutta veya IoT Edge modülü olarak dağıtılabilen bir docker kapsayıcısında paketlenebilir. Bu örnekte, IoT Edge dağıtımına odaklanıyoruz.

  5. Modeli koruyun ve geliştirin. Model dağıtıldıktan sonra işimiz yapılmaz. Çoğu durumda verileri toplamaya devam etmek ve bu verileri düzenli aralıklarla buluta yüklemek istiyoruz. Daha sonra modelimizi yeniden eğitmek ve iyileştirmek için bu verileri kullanabiliriz ve bu verileri IoT Edge için yeniden dağıtabiliriz.

Kaynakları temizleme

Bu öğretici, her makalenin öncekilerde yapılan işlere göre derlendiği bir kümenin parçasıdır. Son öğreticiyi tamamlayana kadar lütfen tüm kaynakları temizlemeyi bekleyin.

Sonraki adımlar

Bu öğretici aşağıdaki bölümlere ayrılmıştır:

  1. Geliştirme makinenizi ve Azure hizmetlerinizi ayarlayın.
  2. Makine öğrenmesi modülü için eğitim verilerini oluşturun.
  3. Makine öğrenmesi modülünü eğitin ve dağıtın.
  4. Bir IoT Edge cihazını saydam ağ geçidi olarak davranacak şekilde yapılandırın.
  5. IoT Edge modülleri oluşturun ve dağıtın.
  6. verileri IoT Edge cihazınıza gönderin.

Geliştirme makinesi ayarlamak ve Azure kaynaklarını sağlamak için sonraki makaleye geçin.