Zephyrnet Logosu

Amazon Lookout for Equipment ve Amazon A2I kullanarak anormal ekipman davranışlarını tespit edin ve tahminleri inceleyin

Tarih:

Jeneratörler, kompresörler ve türbinler gibi çok çeşitli endüstriyel makineleri işleten ve bakımını yapan şirketler, operasyonel verimliliği artırmak ve bileşen arızasından kaynaklanan planlanmamış arıza sürelerini önlemek için sürekli olarak çalışmaktadır. Ekipmanlarının durumunu izlemek ve tahmini bakım için gerçek zamanlı uyarılar almak için fiziksel sensörlere (etiketler), veri bağlantısına, veri depolamaya ve veri görselleştirmeye büyük yatırım yaparlar.

Makine öğrenimi (ML) ile, bir ekipmanın geçmiş verilerinden öğrenen veriye dayalı modeller sağlayabilen daha güçlü teknolojiler kullanılabilir hale geldi. Ancak, bu tür makine öğrenimi çözümlerini uygulamak, karmaşık altyapının yönetilmesini ve kurulmasını ve doğru makine öğrenimi becerilerine sahip olmayı gerektirdiği için zaman alıcı ve pahalıdır. Dahası, makine öğrenimi uygulamalarının hassas verilerle doğruluğu sağlamak, sürekli iyileştirmeler sağlamaya yardımcı olmak ve modelleri güncellenmiş tahminlerle yeniden eğitmek için insan gözetimine ihtiyacı vardır. Bununla birlikte, genellikle yalnızca ML veya yalnızca insan sistemi arasında seçim yapmak zorunda kalırsınız. Şirketler her iki dünyanın da en iyisini arıyor — daha yüksek hassasiyet elde etmek için sonuçlara insan gözüyle bakarken makine öğrenimi sistemlerini iş akışınıza entegre ediyor.

Bu yazıda size nasıl kurabileceğinizi gösteriyoruz Ekipman için Amazon Gözetleme kestirimci bakım için bir rüzgar türbini veri kümesi kullanarak anormal bir davranış algılama modeli eğitmek için, döngüdeki bir insan kullanarak tahminleri gözden geçirin. Amazon Artırılmış AI (Amazon A2I) ve veri kümesini genişletin ve modeli yeniden eğitin.

Çözüme genel bakış

Amazon Lookout for Equipment, makine öğrenimi uzmanlığı gerektirmeden ekipmanınız için verilerinize dayalı olarak belirli bir makine öğrenimi modelini otomatik olarak eğitmek için basınç, akış hızı, RPM'ler, sıcaklık ve güç gibi sensörlerinizden gelen verileri analiz eder. Amazon Lookout for Equipment, gelen sensör verilerini neredeyse gerçek zamanlı olarak analiz etmek ve makine arızalarına yol açabilecek erken uyarı işaretlerini doğru bir şekilde tanımlamak için benzersiz ML modelinizi kullanır. Bu, ekipman anormalliklerini hızlı ve hassas bir şekilde tespit edebileceğiniz, sorunları hızla teşhis edebileceğiniz, pahalı arıza sürelerini azaltmak için harekete geçebileceğiniz ve yanlış uyarıları azaltabileceğiniz anlamına gelir.

Amazon A2I, insan incelemesi için gerekli iş akışlarını oluşturmayı kolaylaştıran bir makine öğrenimi hizmetidir. Amazon A2I, AWS'de çalışıyor olsun ya da olmasın insan inceleme sistemleri oluşturmanın veya çok sayıda insan incelemeyi yönetmenin getirdiği farklılaştırılmamış ağır yükleri ortadan kaldırarak tüm geliştiricilere insan incelemesini getiriyor.

Amazon Lookout for Equipment'ı kullanmaya başlamak için bir veri kümesi oluşturur, verileri alır, bir model eğitir ve bir zamanlayıcı ayarlayarak çıkarım yaparız. Bu adımlardan geçtikten sonra, Amazon A2I kullanarak hızlı bir şekilde bir insan inceleme sürecini nasıl kurabileceğinizi ve modelinizi artırılmış veya insanlar tarafından incelenmiş veri kümeleriyle nasıl yeniden eğitebileceğinizi göstereceğiz.

içinde beraberindeki Jupyter dizüstü bilgisayar, size aşağıdaki adımlarda rehberlik ediyoruz:

  1. Amazon Lookout for Equipment'da bir veri kümesi oluşturun.
  2. Verileri Amazon Lookout for Equipment veri kümesine aktarın.
  3. Amazon Lookout for Equipment'ta bir model eğitin.
  4. Eğitimli modelde tanılamayı çalıştırın.
  5. Gerçek zamanlı isteklerin simüle edilmiş akışını göndermek için Amazon Lookout for Equipment'da bir çıkarım planlayıcı oluşturun.
  6. Amazon A2I özel insan döngüsü kurun ve Amazon Lookout for Equipment tahminlerini inceleyin.
  7. Amazon A2I'deki artırılmış veri kümelerine dayalı olarak modelinizi yeniden eğitin.

Mimariye genel bakış

Aşağıdaki şema çözüm mimarimizi göstermektedir.

İş akışı aşağıdaki adımları içerir:

  1. Mimari, çıkarım işlem hattının oluşturulduğunu ve sensör verilerinin, çıkarım girişleri için S3 yolunda periyodik olarak depolandığını varsayar. Bu girişler, dosya adında karşılık gelen zaman damgaları ile CSV formatında saklanır.
  2. Amazon Lookout for Equipment, belirlenen bir frekansta uyanır ve çıkarım girdilerinden en son dosyayı işler Amazon Basit Depolama Hizmeti (Amazon S3) yolu.
  3. Çıkarım sonuçları, çıkarım çıktıları S3 yolunda JSON satırları dosya biçiminde saklanır. Çıktılar ayrıca kök neden analizi için kullanılan olay teşhisini de içerir.
  4. Amazon Lookout for Equipment bir anormallik algıladığında, çıkarım giriş ve çıkışları Amazon A2I aracılığıyla doğrulama için özel iş gücüne sunulur.
  5. Özel bir işgücü, tespit edilen anormallikleri araştırır ve doğrular ve yeni anormallik etiketleri sağlar. Bu etiketler yeni bir S3 yolunda saklanır.
  6. Eğitim verileri de ilgili yeni etiketlerle birlikte güncellenir ve sonraki model yeniden eğitimi için aşamalandırılır.
  7. Yeterli sayıda yeni etiket toplandıktan sonra, yeni bir Amazon Lookout for Equipment modeli oluşturulur, eğitilir ve dağıtılır. Yeniden eğitim döngüsü, sürekli model yeniden eğitimi için tekrar edilebilir.

Önkoşullar

Başlamadan önce Jupyter not defterini ayarlamak için aşağıdaki adımları tamamlayın:

  1. Bir defter örneği oluşturma in Amazon Adaçayı Yapıcı.

SageMaker dizüstü bilgisayarınızın gerekli özelliklere sahip olduğundan emin olun. AWS Kimlik ve Erişim Yönetimi (IAM) rolünün ve izinlerinin, defter.

  1. Dizüstü bilgisayar etkinken, Jupyter'ı aç.
  2. Jupyter kontrol panelinde şunu seçin: yeni, ve Seç terminal.
  3. Terminalde aşağıdaki kodu girin:
cd SageMaker
git clone https://github.com/aws-samples/lookout-for-equipment-demo

  1. Önce veri hazırlama defterini çalıştırın - 1_data_preparation.ipynb
  2. Ardından bu blogun not defterini açın - 3_integrate_l4e_and_a2i.ipynb

Artık aşağıdaki adımları dizüstü bilgisayar hücrelerinde çalıştırmaya hazırsınız. Dizüstü bilgisayar genelinde kullandığımız gerekli Python SDK'larını ve kitaplıkları kurmak için kurulum ortamı adımını çalıştırın.

  1. Bir AWS Bölgesi sağlayın, bir S3 paketi oluşturun ve aşağıdaki kod hücresinde paketin ayrıntılarını sağlayın:
REGION_NAME = '<your region>'
BUCKET = '<your bucket name>'
PREFIX = 'data/wind-turbine'

Veri kümesini analiz edin ve bileşen meta verilerini oluşturun

Bu bölümde, mevcut rüzgar türbini verilerini nasıl önceden işleyebileceğiniz ve bunları Amazon Lookout for Equipment için nasıl kullanabileceğiniz konusunda size yol göstereceğiz. Lütfen çalıştırdığınızdan emin olun. veri hazırlama defteri çalıştırmadan önce beraberindeki defter blogun bu gönderideki tüm adımları izlemesi için. İhtiyacın var veri şeması Amazon Lookout for Equipment ile mevcut geçmiş verilerinizi kullanmak için. Veri şeması, Amazon Lookout for Equipment'a verilerin ne anlama geldiğini söyler. Bir veri şeması verileri açıkladığından, yapısı, tanımladığı bileşenlerin veri dosyalarının yapısını yansıtır.

Tüm bileşenler veri şemasında açıklanmalıdır. Her bileşenin verileri, veri şemasında gösterildiği gibi yapılandırılmış ayrı bir CSV dosyasında bulunur.

Her bir varlığın bileşenine ilişkin verileri aşağıdaki klasör yapısını kullanarak ayrı bir CSV dosyasında depolarsınız:

S3 bucket > Asset_name > Component 1 > Component1.csv

Defter bölümüne gidin Ön İşlem ve Veri Kümelerini Yükle ve verileri incelemek için aşağıdaki hücreyi çalıştırın:

import pandas as pd
turbine_id = 'R80711'
df = pd.read_csv(f'../data/wind-turbine/interim/{turbine_id}.csv', index_col = 'Timestamp')
df.head()

Aşağıdaki ekran görüntüsü çıktımızı göstermektedir.

Şimdi, Amazon Lookout for Equipment tarafından beslenmek üzere beklenen bir veri kümesi oluşturmak için bileşen haritası oluşturuyoruz. Bölümün altındaki not defteri hücrelerini çalıştırın Veri Kümesi Bileşen Haritası Oluşturun bir bileşen eşlemesi oluşturmak ve besleme için bir CSV dosyası oluşturmak için.

Amazon Lookout for Equipment veri kümesini oluşturun

Amazon Lookout for Equipment kullanıyoruz Veri Kümesi Oluştur Bir veri kümesi oluşturmak ve önceki adımda oluşturduğumuz bileşen haritasını girdi olarak sağlamak için API'ler. Bir veri kümesi oluşturmak için aşağıdaki not defteri hücresini çalıştırın:

ROLE_ARN = sagemaker.get_execution_role()
# REGION_NAME = boto3.session.Session().region_name
DATASET_NAME = 'wind-turbine-train-dsv2-PR'
MODEL_NAME = 'wind-turbine-PR-v1' lookout_dataset = lookout.LookoutEquipmentDataset(
dataset_name=DATASET_NAME,
component_fields_map=DATASET_COMPONENT_FIELDS_MAP,
region_name=REGION_NAME,
access_role_arn=ROLE_ARN
) pp = pprint.PrettyPrinter(depth=5)
pp.pprint(eval(lookout_dataset.dataset_schema))
lookout_dataset.create()

Aşağıdaki çıktıyı alırsınız:

Dataset "wind-turbine-train-dsv2-PR" does not exist, creating it... {'DatasetName': 'wind-turbine-train-dsv2-PR', 'DatasetArn': 'arn:aws:lookoutequipment:ap-northeast-2:<aws-account>:dataset/wind-turbine-train-dsv2-PR/8325802a-9bb7-48fb-804b-ab9f5b79f49d', 'Status': 'CREATED', 'ResponseMetadata': {'RequestId': '52dc754c-84da-4a8c-aaef-1908e4348837', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '52dc754c-84da-4a8c-aaef-1908e4348837', 'content-type': 'application/x-amz-json-1.0', 'content-length': '203', 'date': 'Thu, 25 Mar 2021 21:18:29 GMT'}, 'RetryAttempts': 0}}

Alternatif olarak, veri kümesini görüntülemek için Amazon Lookout for Equipment konsoluna gidebilirsiniz.

Seçebilirsiniz Görüntüle altında Veri şeması Veri kümesinin şemasını görüntülemek için. Seçebilirsiniz Yeni verileri besleyin konsol aracılığıyla veri almaya başlamak için veya aynı şeyi Python Boto3 API'leri kullanarak yapmak için not defterinde gösterilen API'leri kullanabilirsiniz.

Çalıştır defter verileri almak için hücreler. Besleme tamamlandığında aşağıdaki yanıtı alırsınız:

=====Polling Data Ingestion Status===== 2021-03-25 21:18:45 | IN_PROGRESS
2021-03-25 21:19:46 | IN_PROGRESS
2021-03-25 21:20:46 | IN_PROGRESS
2021-03-25 21:21:46 | IN_PROGRESS
2021-03-25 21:22:46 | SUCCESS

Verileri önceden işlediğimize ve verileri Amazon Lookout for Equipment'a aktardığımıza göre artık eğitim adımlarına geçiyoruz. Alternatif olarak seçebilirsiniz Verileri besleyin.

SageMaker etiketleme iş gücünü kullanarak veri kümenizi etiketleyin

Amazon Lookout for Equipment ile doğrudan kullanabileceğiniz mevcut bir etiketli veri kümeniz yoksa, özel bir etiketleme iş akışı oluşturun. Bu, örneğin bir şirketin, çeşitli operasyonlardan gelen uyarıların KOBİ'lerin gözden geçirmesi ve güncellemesi için merkezi tesise gönderildiği bir uzaktan işletim tesisi kurmak istediği bir kullanım durumu ile ilgili olabilir. Etiketleme kullanıcı arayüzünüz için örnek bir kalabalık HTML şablonu için, GitHub deposu.

Aşağıdaki ekran görüntüsü, örnek etiketleme kullanıcı arayüzünün nasıl göründüğüne dair bir örnek gösterir.

Bu gönderi için, eğitim için veri kümesiyle birlikte gelen etiketleri kullanıyoruz. Bir sonraki adımda gerçek eğitiminiz için oluşturduğunuz etiket dosyasını kullanmak istiyorsanız, etiket dosyasını bir S3 klasörüne kopyalamanız ve eğitim yapılandırmasında konumu sağlamanız gerekir.

Amazon Lookout for Equipment'ta bir model oluşturun

Bu bölümde aşağıdaki adımlarda size yol göstereceğiz:

  • Model parametrelerini hazırlayın ve verileri test ve eğitim setlerine bölün
  • Modeli Amazon Lookout for Equipment API'lerini kullanarak eğitin
  • Eğitimli model için teşhis alın

Model parametrelerini hazırlayın ve verileri bölün

Bu adımda, veri kümelerini test ve eğitime ayırıyoruz, etiketleri hazırlıyoruz ve defter. Not defteri kodunu çalıştırın Treni ayır ve test et veri kümesini eğitim ve test için 80/20 bölüme ayırmak. Ardından etiketleri hazırla kodunu çalıştırın ve aşağıdaki kodda gösterildiği gibi eğitim yapılandırmasını ayarlamaya geçin:

# Prepare the model parameters:
lookout_model = lookout.LookoutEquipmentModel(model_name=MODEL_NAME, dataset_name=DATASET_NAME, region_name=REGION_NAME) # Set the training / evaluation split date:
lookout_model.set_time_periods(evaluation_start, evaluation_end, training_start, training_end) # Set the label data location:
lookout_model.set_label_data(bucket=BUCKET, prefix=PREFIX+'/labelled_data/', access_role_arn=ROLE_ARN) # This sets up the rate the service will resample the data before # training:
lookout_model.set_target_sampling_rate(sampling_rate='PT10M')

Önceki kodda, modelimiz için zaman periyotları, etiket verileri ve hedef örnekleme oranı gibi model eğitim parametreleri oluşturduk. Bu parametreler hakkında daha fazla bilgi için bkz. CreateModel.

Modeli eğit

Bu model parametrelerini ayarladıktan sonra, modelinizi veri kümeniz ve eğitim parametreleriyle eğitmeye başlamak için aşağıdaki tren modeli API'sini çalıştırmanız gerekir:

lookout_model.train()

Aşağıdaki yanıtı alırsınız:

{'ModelArn': 'arn:aws:lookoutequipment:ap-northeast-2:<accountid>:model/wind-turbine-PR-v1/fac217a9-8855-4931-95f9-dd47f0af1ec5', 'Status': 'IN_PROGRESS', 'ResponseMetadata': {'RequestId': '3d385895-c62e-4126-9622-38f0ebed9715', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '3d385895-c62e-4126-9622-38f0ebed9715', 'content-type': 'application/x-amz-json-1.0', 'content-length': '152', 'date': 'Thu, 25 Mar 2021 21:27:05 GMT'}, 'RetryAttempts': 0}}

Alternatif olarak, Amazon Lookout for Equipment konsoluna gidebilir ve modeli oluşturduktan sonra eğitimi izleyebilirsiniz.

Örneğimizde sağladığımız örnek türbin veri setinde milyonlarca veri noktası vardır. Eğitim yaklaşık 2.5 saat sürmektedir.

Eğitimli modeli değerlendirin

Bir model eğitildikten sonra Amazon Lookout for Equipment, modelin performansını değerlendirir ve sonuçları görüntüler. Anormal ekipman davranışı olayları ve bunları tespit ederken modelin ne kadar iyi performans gösterdiği hakkında performansa genel bir bakış ve ayrıntılı bilgi sağlar. Modeli eğitmek ve değerlendirmek için sağladığınız veri ve hata etiketleriyle Amazon Lookout for Equipment, modelin tahminlerinin kaç kez gerçek pozitif olduğunu bildirir. Ayrıca tüm gerçek pozitifler arasında ortalama ön uyarı süresini de rapor eder. Ek olarak, modelin ürettiği yanlış pozitif sonuçları olayın olmadığı süre ile birlikte raporlar.

Performans değerlendirmesi hakkında daha fazla bilgi için bkz. Çıktının değerlendirilmesi.

Eğitim teşhisini inceleyin

Eğitim tanılamasını oluşturmak için aşağıdaki kodu çalıştırın. Bakın beraberindeki defter tam kod bloğunun bu adımda çalışması için.

LookoutDiagnostics = lookout.LookoutEquipmentAnalysis(model_name=MODEL_NAME, tags_df=df, region_name=REGION_NAME)
LookoutDiagnostics.set_time_periods(evaluation_start, evaluation_end, training_start, training_end)
predicted_ranges = LookoutDiagnostics.get_predictions()

Döndürülen sonuçlar, her bir özelliğin ilgili tarih aralığı için anormal ekipman tahminine olan katkı yüzdesini gösterir.

Amazon Lookout for Equipment'da bir çıkarım planlayıcı oluşturun

Bu adımda size Çıkarım Takvimi Oluşturr API bir planlayıcı oluşturur ve başlatır — bu size hemen maliyet oluşturmaya başlar. Bir çıkarım planlamak, yeni ölçüm verilerini analiz etmek için sürekli bir gerçek zamanlı çıkarım planı oluşturmaktır. Programlayıcıyı kurarken, giriş verileri için bir S3 klasör konumu sağlarsınız, verilerdeki ayrı girişler arasına bir sınırlayıcı atarsınız, istenirse bir ofset gecikmesi ayarlarsınız ve çıkarım sıklığını ayarlarsınız. Ayrıca, çıktı verileri için bir S3 klasör konumu sağlamanız gerekir. Bir çıkarım zamanlayıcı oluşturmak üzere model üzerinde çıkarım yapmak için aşağıdaki not defteri bölümünü çalıştırın:

scheduler = lookout.LookoutEquipmentScheduler(
scheduler_name=INFERENCE_SCHEDULER_NAME,
model_name=MODEL_NAME_FOR_CREATING_INFERENCE_SCHEDULER,
region_name=REGION_NAME
) scheduler_params = { 'input_bucket': INFERENCE_DATA_SOURCE_BUCKET, 'input_prefix': INFERENCE_DATA_SOURCE_PREFIX, 'output_bucket': INFERENCE_DATA_OUTPUT_BUCKET, 'output_prefix': INFERENCE_DATA_OUTPUT_PREFIX, 'role_arn': ROLE_ARN_FOR_INFERENCE, 'upload_frequency': DATA_UPLOAD_FREQUENCY, 'delay_offset': DATA_DELAY_OFFSET_IN_MINUTES, 'timezone_offset': INPUT_TIMEZONE_OFFSET, 'component_delimiter': COMPONENT_TIMESTAMP_DELIMITER, 'timestamp_format': TIMESTAMP_FORMAT
} scheduler.set_parameters(**scheduler_params)

Bir çıkarım planlayıcı oluşturduktan sonraki adım, çıkarım için bazı örnek veri kümeleri oluşturmaktır.

Çıkarım verilerini hazırlayın

Çıkarım verilerini hazırlamak için not defteri adımlarını uygulayın. Etiket açıklamasını yükleyelim; bu veri kümesi bir veri açıklama dosyasıyla birlikte gelir. Buradan, gerekirse bileşenlerin listesini (alt sistem sütunu) toplayabiliriz. Veri açıklamalarındaki etiket meta verilerini yorumlamamız için bir referans noktası olarak kullanırız. Amazon A2I'nin kullandığı bir listeyi oluşturmak için etiket adlarını kullanıyoruz. Daha fazla ayrıntı için, bölüme bakın Amazon Lookout for Equipment tahminlerini incelemek için Amazon A2I'yi kurun bu yazıda.

Örnek çıkarım veri setimizi oluşturmak için, orijinal zaman serisinin değerlendirme döneminden son 2 saatlik verileri çıkarıyoruz. Özellikle, 10 dakika arayla türbinimiz için simüle edilmiş gerçek zamanlı etiketler içeren üç CSV dosyası oluşturuyoruz. Bunların tümü Amazon S3'te inference-a2i folder. Artık verileri hazırladığımıza göre, aşağıdaki kodu çalıştırarak zamanlayıcıyı oluşturun:

create_scheduler_response = scheduler.create()

Aşağıdaki yanıtı alırsınız:

===== Polling Inference Scheduler Status ===== Scheduler Status: PENDING
Scheduler Status: RUNNING ===== End of Polling Inference Scheduler Status =====

Alternatif olarak Amazon Lookout for Equipment konsolunda şu adrese gidin: Çıkarım programı ayarları eğitimli modelinizin bölümünü açın ve gerekli parametreleri sağlayarak bir zamanlayıcı ayarlayın.

Çıkarım sonuçlarını alın

Dizüstü bilgisayar adımlarını uygulayın Çıkarım yürütmelerini listeleyin Önceki adımda oluşturduğunuz programdan çalıştırma ayrıntılarını almak için. Planlayıcının ilk çıkarımını çalıştırması için 5-15 dakika bekleyin. Tamamlandığında, kullanabiliriz ListInferenceYürütme Mevcut çıkarım planlayıcımız için API. Zorunlu olan tek parametre, zamanlayıcı adıdır.

Ayrıca, çıkarım çalıştırmalarını sorgulamak istediğiniz bir zaman dilimi de seçebilirsiniz. Bunu belirtmezseniz, bir çıkarım zamanlayıcı için tüm çalıştırmalar listelenir. Zaman aralığını belirtmek istiyorsanız, aşağıdaki kodu kullanabilirsiniz:

START_TIME_FOR_INFERENCE_EXECUTIONS = datetime.datetime(2010,1,3,0,0,0)END_TIME_FOR_INFERENCE_EXECUTIONS = datetime.datetime(2010,1,5,0,0,0)

Bu kod, şu anlama gelir: 2010-01-03 00:00:00 ve öncesi 2010-01-05 00:00:00 listelendi.

Ayrıca, aşağıdaki gibi belirli bir durumdaki çalıştırmaları sorgulamayı da seçebilirsiniz. IN_PROGRESS, SUCCESS, ve FAILED:

START_TIME_FOR_INFERENCE_EXECUTIONS = None
END_TIME_FOR_INFERENCE_EXECUTIONS = None
EXECUTION_STATUS = None execution_summaries = [] while len(execution_summaries) == 0: execution_summaries = scheduler.list_inference_executions( start_time=START_TIME_FOR_INFERENCE_EXECUTIONS, end_time=END_TIME_FOR_INFERENCE_EXECUTIONS, execution_status=EXECUTION_STATUS ) if len(execution_summaries) == 0: print('WAITING FOR THE FIRST INFERENCE EXECUTION') time.sleep(60) else: print('FIRST INFERENCE EXECUTEDn') break execution_summaries

Aşağıdaki yanıtı alırsınız:

{'ModelName': 'wind-turbine-PR-v1', 'ModelArn': 'arn:aws:lookoutequipment:ap-northeast-2:<aws-account>:model/wind-turbine-PR-v1/fac217a9-8855-4931-95f9-dd47f0af1ec5', 'InferenceSchedulerName': 'wind-turbine-scheduler-a2i-PR-v10', 'InferenceSchedulerArn': 'arn:aws:lookoutequipment:ap-northeast-2:<aws-account>:inference-scheduler/wind-turbine-scheduler-a2i-PR-v10/e633c39d-a4f9-49f6-8248-7594349db2d0', 'ScheduledStartTime': datetime.datetime(2021, 3, 29, 15, 35, tzinfo=tzlocal()), 'DataStartTime': datetime.datetime(2021, 3, 29, 15, 30, tzinfo=tzlocal()), 'DataEndTime': datetime.datetime(2021, 3, 29, 15, 35, tzinfo=tzlocal()), 'DataInputConfiguration': {'S3InputConfiguration': {'Bucket': '<your s3 bucket>', 'Prefix': 'data/wind-turbine/inference-a2i/input/'}}, 'DataOutputConfiguration': {'S3OutputConfiguration': {'Bucket': '<your s3 bucket>', 'Prefix': 'data/wind-turbine/inference-a2i/output/'}}, 'CustomerResultObject': {'Bucket': '<your s3 bucket>', 'Key': 'data/wind-turbine/inference-a2i/output/2021-03-29T15:30:00Z/results.jsonl'}, 'Status': 'SUCCESS'}]

Gerçek tahmin sonuçlarını alın

Her başarılı çıkarımdan sonra, paketinizin çıktı konumunda bir JSON dosyası oluşturulur. Her çıkarım, tek bir results.jsonl içindeki dosya. Bu dosyaları okumak ve içeriklerini görüntülemek için not defterinde bu bölümü inceleyebilirsiniz.

results_df

Aşağıdaki ekran görüntüsü sonuçları göstermektedir.

Çıkarım planlayıcısını durdurun

Çıkarım planlayıcısını durdurduğunuzdan emin olun; Bu yazıdaki diğer adımlar için buna ihtiyacımız yok. Bununla birlikte, çözümünüzün bir parçası olarak, ekipmanınız için gerçek zamanlı çıkarımın devam etmesini sağlamak için çıkarım planlayıcı çalışıyor olmalıdır. Çıkarım zamanlayıcısını durdurmak için bu not defteri bölümünü inceleyin.

Amazon Lookout for Equipment tahminlerini incelemek için Amazon A2I'yi kurun

Artık çıkarım tamamlandığına göre, çıkarım sonuçlarını incelemek ve güncellemek için bir kullanıcı arayüzünün nasıl kurulacağını anlayalım, böylece modeli yeniden eğitmek için Amazon Lookout for Equipment'a geri gönderebiliriz. Bu bölümde, Amazon A2I özel görev türünün Amazon Lookout for Equipment ile entegre not defteri aracılığıyla nasıl kullanılacağını gösteriyoruz. Aşağıdaki adımları içerir:

  • Bir insan görevi kullanıcı arayüzü oluşturun
  • Bir iş akışı tanımı oluşturun
  • Tahminleri Amazon A2I insan döngülerine gönderin
  • Çalışan portalında oturum açın ve Amazon Lookout for Equipment çıkarım tahminlerine açıklama ekleyin

Amazon A2I API'lerini başlatmak için not defterinde sağlanan adımları izleyin. Paket adını Amazon A2I çıktınızın olmasını istediğiniz başlatma bloğunda ayarladığınızdan emin olun:

a2ibucket = '<your bucket>'

Ayrıca, özel bir işgücü oluşturmanız ve başlatma adımında bir çalışma ekibi ARN'si sağlamanız gerekir.

SageMaker konsolunda, özel bir işgücü yaratmak. Özel işgücünü oluşturduktan sonra, işgücünü bul ARN ve not defterine ARN'yi girin:

WORKTEAM_ARN = 'your private workforce team ARN'

İnsan görevi kullanıcı arayüzünü oluşturun

Artık sıvı HTML'de bir UI şablonu veren bir insan görevi UI kaynağı oluşturursunuz. Sağlananları indirebilirsiniz şablon ve özelleştirin. Bu şablon, bir insan döngüsüne ihtiyaç duyulduğunda çalışanlara işlenir. 70'in üzerinde önceden oluşturulmuş kullanıcı arabirimi için bkz. amazon-a2i-örnek-görev-uis GitHub deposu. Bu şablonu ayrıca GitHub repo.

Konsol aracılığıyla veya not defterinde aşağıdaki kodu çalıştırarak bir görev kullanıcı arabirimi oluşturmak için bu şablonu kullanabilirsiniz:

def create_task_ui(): response = sagemaker_client.create_human_task_ui( HumanTaskUiName=taskUIName, UiTemplate={'Content': template}) return response

Bir insan incelemesi iş akışı tanımı oluşturun

İş akışı tanımları aşağıdakileri belirlemenize izin verir:

  • Önceki adımda oluşturduğunuz çalışan şablonu veya insan görevi kullanıcı arayüzü.
  • Görevlerinizin gönderildiği iş gücü. Bu gönderi için, önkoşul adımlarında oluşturduğunuz özel işgücü.
  • İş gücünüzün aldığı talimatlar.

Bu yayın, Create Flow Definition Bir iş akışı tanımı oluşturmak için API. Not defterinde aşağıdaki hücreyi çalıştırın:

create_workflow_definition_response = sagemaker_client.create_flow_definition( FlowDefinitionName= flowDefinitionName, RoleArn=role, HumanLoopConfig= { "WorkteamArn": WORKTEAM_ARN, "HumanTaskUiArn": humanTaskUiArn, "TaskCount": 1, "TaskDescription": "Review the contents and select correct values as indicated", "TaskTitle": "Equipment Condition Review" }, OutputConfig={ "S3OutputPath" : OUTPUT_PATH } )
flowDefinitionArn = create_workflow_definition_response['FlowDefinitionArn'] 

Tahminleri Amazon A2I insan döngülerine gönderin

Amazon Lookout for Equipement çıktısının kaydedildiği Pandas DataFrame'den bir öğe listesi oluşturuyoruz. İncelenmek üzere gönderilecek öğelerin bir listesini oluşturmak için aşağıdaki not defteri hücresini çalıştırın:

NUM_TO_REVIEW = 5 # number of line items to review
dftimestamp = sig_full_df['Timestamp'].astype(str).to_list()
dfsig001 = sig_full_df['Q_avg'].astype(str).to_list()
dfsig002 = sig_full_df['Ws1_avg'].astype(str).to_list()
dfsig003 = sig_full_df['Ot_avg'].astype(str).to_list()
dfsig004 = sig_full_df['Nf_avg'].astype(str).to_list()
dfsig046 = sig_full_df['Ba_avg'].astype(str).to_list()
sig_list = [{'timestamp': dftimestamp[x], 'reactive_power': dfsig001[x], 'wind_speed_1': dfsig002[x], 'outdoor_temp': dfsig003[x], 'grid_frequency': dfsig004[x], 'pitch_angle': dfsig046[x]} for x in range(NUM_TO_REVIEW)]
sig_list

Amazon A2I döngüsü için bir JSON girişi oluşturmak üzere aşağıdaki kodu çalıştırın. Bu, insan gözden geçirenlere görüntülenen Amazon A2I kullanıcı arayüzüne girdi olarak gönderilen listeleri içerir.

ip_content = {"signal": sig_list, 'anomaly': ano_list
}

İnsan döngüsünü başlatmak üzere Amazon A2I API'yi çağırmak için aşağıdaki not defteri hücresini çalıştırın:

import json
humanLoopName = str(uuid.uuid4()) start_loop_response = a2i.start_human_loop( HumanLoopName=humanLoopName, FlowDefinitionArn=flowDefinitionArn, HumanLoopInput={ "InputContent": json.dumps(ip_content) } )

Not defterinde bir sonraki hücreyi çalıştırarak insan döngüsünün durumunu kontrol edebilirsiniz.

Çalışan portalı aracılığıyla sonuçlara açıklama ekleyin

Özel iş gücü portalına gitmek üzere bir oturum açma bağlantısı almak için aşağıdaki not defteri hücresini çalıştırın:

workteamName = WORKTEAM_ARN[WORKTEAM_ARN.rfind('/') + 1:]
print("Navigate to the private worker portal and do the tasks. Make sure you've invited yourself to your workteam!")
print('https://' + sagemaker_client.describe_workteam(WorkteamName=workteamName)['Workteam']['SubDomain'])

Amazon A2I konsoluna yönlendirilirsiniz. İnsan incelemesi işini seçin ve seçin Çalışmaya başlamak. Değişiklikleri gözden geçirip düzeltmeler yaptıktan sonra, şunu seçin: Gönder.

Sonuç deposunu Amazon S3'te değerlendirebilirsiniz.

Sonuçları değerlendirin

Etiketleme çalışması tamamlandığında, sonuçlarınız insan incelemesi iş akışı tanımında belirtilen S3 çıktı yolunda bulunmalıdır. İnsan cevapları döndürülür ve JSON dosyasına kaydedilir. Çalıştır defter Amazon S3'ten sonuçları almak için hücre:

import re
import pprint pp = pprint.PrettyPrinter(indent=4)
json_output = ''
for resp in completed_human_loops: splitted_string = re.split('s3://' + a2ibucket + '/', resp['HumanLoopOutput']['OutputS3Uri']) print(splitted_string[1]) output_bucket_key = splitted_string[1] response = s3.get_object(Bucket=a2ibucket, Key=output_bucket_key) content = response["Body"].read() json_output = json.loads(content) pp.pprint(json_output) print('n')

İnsan tarafından gözden geçirilmiş yanıtlar ve akış tanımı içeren bir yanıt alırsınız. Tam yanıtı almak için dizüstü bilgisayara bakın.

Amazon A2I'den artırılmış veri kümelerine dayalı model yeniden eğitimi

Şimdi, insan düzeltmelerine dayalı olarak modelimizi yeniden eğitmek için Amazon A2I çıktısını alıyor, işliyor ve Amazon Lookout for Equipment'a geri gönderiyoruz. Bakın beraberindeki defter Bu bölümde tamamlanması gereken tüm adımlar için. Orijinal etiket dosyamızın son birkaç girişine bakalım:

labels_df = pd.read_csv(os.path.join(LABEL_DATA, 'labels.csv'), header=None)
labels_df[0] = pd.to_datetime(labels_df[0])
labels_df[1] = pd.to_datetime(labels_df[1])
labels_df.columns = ['start', 'end']
labels_df.tail()

Aşağıdaki ekran görüntüsü, etiket dosyasını gösterir.

Etiketleri yeni tarih aralıklarıyla güncelleyin

Şimdi mevcut etiket veri setimizi Amazon A2I insan inceleme sürecinden aldığımız yeni etiketlerle güncelleyelim:

faulty = False
a2i_lbl_df = labels_df
x = json_output['humanAnswers'][0]
row_df = pd.DataFrame(columns=['rownr'])
tslist = {} # Let's first check if the users mark equipment as faulty and if so get those row numbers into a dataframe for i in json_output['humanAnswers']: print("checking equipment review...") x = i['answerContent'] for idx, key in enumerate(x): if "faulty" in key: if str(x.get(key)).split(':')[1].lstrip().strip('}') == "True": # faulty equipment selected faulty = True row_df.loc[len(row_df.index)] = [key.split('-')[1]] print("found faulty equipment in row: " + key.split('-')[1]) # Now we will get the date ranges for the faulty choices for idx,k in row_df.iterrows(): x = json_output['humanAnswers'][0] strchk = "TrueStart"+k['rownr'] endchk = "TrueEnd"+k['rownr'] for i in x['answerContent']: if i == strchk: tslist[i] = x['answerContent'].get(i) if i == endchk: tslist[i] = x['answerContent'].get(i) # And finally let's add it to our new a2i labels dataset
for idx,k in row_df.iterrows(): x = json_output['humanAnswers'][0] strchk = "TrueStart"+k['rownr'] endchk = "TrueEnd"+k['rownr'] a2i_lbl_df.loc[len(a2i_lbl_df.index)] = [tslist[strchk], tslist[endchk]]

Aşağıdaki yanıtı alırsınız:

checking equipment review...
found faulty equipment in row: 1
found faulty equipment in row: 2

Aşağıdaki ekran görüntüsü güncellenmiş etiket dosyasını gösterir.

Güncellenen etiket verilerini yeni bir artırılmış etiket dosyasına yükleyelim:

a2i_label_s3_dest_path = f's3://{BUCKET}/{PREFIX}/augmented-labelled-data/labels.csv'
!aws s3 cp $a2i_label_src_fname $a2i_label_s3_dest_path

Eğitim veri setini yeni ölçümlerle güncelleyin

Artık orijinal eğitim veri kümemizi, Amazon A2I'den aldığımıza göre yeni ölçüm aralığı ile güncelliyoruz. Orijinal veri kümesini, artırılmış verilerimizi eklemek için kullandığımız yeni bir DataFrame'e yüklemek için aşağıdaki kodu çalıştırın. Bakın beraberindeki defter gerekli tüm adımlar için.

turbine_id = 'R80711'
file = '../data/wind-turbine/final/training-data/'+turbine_id+'/'+turbine_id+'.csv'
newdf = pd.read_csv(file, index_col='Timestamp')
newdf.head()

Aşağıdaki ekran görüntüsü, orijinal eğitim veri kümemizin anlık görüntüsünü göstermektedir.

Şimdi, daha önce oluşturduğumuz simüle edilmiş çıkarım verileriyle güncellenmiş eğitim veri kümesini kullanıyoruz; burada insan incelemeciler, çıkarımı çalıştırırken hatalı ekipman bulduklarını belirttiler. Simüle edilen çıkarım veri kümesinin dizinini her okuma için 10 dakikalık bir süreyi yansıtacak şekilde değiştirmek için aşağıdaki kodu çalıştırın:

sig_full_df = sig_full_df.set_index('Timestamp')
tm = pd.to_datetime('2021-04-05 20:30:00')
print(tm)
new_index = pd.date_range(
start=tm,
periods=sig_full_df.shape[0],
freq='10min'
)
sig_full_df.index = new_index
sig_full_df.index.name = 'Timestamp'
sig_full_df = sig_full_df.reset_index()
sig_full_df['Timestamp'] = pd.to_datetime(sig_full_df['Timestamp'], errors='coerce')

Simüle edilmiş çıkarım veri kümesini orijinal eğitim veri kümesine eklemek için aşağıdaki kodu çalıştırın:

newdf = newdf.reset_index()
newdf = pd.concat([newdf,sig_full_df])

En son zaman damgası ile simüle edilmiş çıkarım verileri, eğitim veri kümesinin sonuna eklenir. Şimdi bir CSV dosyası oluşturalım ve verileri Amazon S3'teki eğitim kanalına kopyalayalım:

TRAIN_DATA_AUGMENTED = os.path.join(TRAIN_DATA,'augmented')
os.makedirs(TRAIN_DATA_AUGMENTED, exist_ok=True)
newdf.to_csv('../data/wind-turbine/final/training-data/augmented/'+turbine_id+'.csv')
!aws s3 sync $TRAIN_DATA_AUGMENTED s3://$BUCKET/$PREFIX/training_data/augmented

Artık bileşenler haritasını bu artırılmış veri kümesiyle güncelliyoruz, verileri Amazon Lookout for Equipment'a yeniden yüklüyoruz ve bu veri kümesiyle bu eğitim modelini yeniden eğitiyoruz. Bakın beraberindeki defter Modeli yeniden eğitmeye yönelik ayrıntılı adımlar için.

Bu gönderide, bir rüzgar türbini veri kümesiyle anormal ekipman davranışını tespit etmek için bir model eğitmek için Amazon Lookout for Equipment'ı nasıl kullanacağınız konusunda size yol gösterdik, eğitimli modelden tanıları gözden geçirin, döngüdeki bir insanla modelden tahminleri gözden geçirin. Amazon A2I, orijinal eğitim veri kümemizi artırın ve insan incelemelerinden gelen geri bildirimlerle modelimizi yeniden eğitin.

Amazon Lookout for Equipment ve Amazon A2I ile tahminleri denetlemek ve modellerinizin doğruluğunu artırmak için sürekli bir tahmin, inceleme, eğitim ve geri bildirim döngüsü oluşturabilirsiniz.

Lütfen bu çözüm hakkında ne düşündüğünüzü ve endüstriyel kullanım durumunuza nasıl uygulanacağını bize bildirin. Kontrol et GitHub repo bu gönderiye tüm kaynaklar için. Daha fazla bilgi edinmek için web sayfalarını ziyaret edin Ekipman için Amazon Gözetleme ve Amazon Artırılmış AI. Sizden haber almak için sabırsızlanıyoruz. Mutlu deneyimler!


Yazarlar Hakkında 

 Dastan Ayzhanov Amazon Web Services ile Uygulamalı Yapay Zeka alanında bir Çözüm Mimarıdır. Makine öğrenimi, nesnelerin interneti ve büyük veriye dayalı uygulamalara vurgu yaparak ölçeklenebilir bulut tabanlı platformların mimarisinde ve oluşturulmasında uzmanlaşmıştır. Çalışmadığı zamanlarda kamp yapmaya, kayak yapmaya ve ailesiyle birlikte harika açık havada vakit geçirmekten hoşlanır.

prem ranga Atlanta, GA merkezli bir Kurumsal Çözüm Mimarıdır. Makine Öğrenimi Teknik Alan Topluluğu'nun bir parçasıdır ve makine öğrenimi ve yapay zeka yolculuklarında müşterilerle çalışmayı çok seviyor. Prem robotik konusunda tutkulu, bir Otonom Araçlar araştırmacısı ve ayrıca Houston ve diğer yerlerde Alexa kontrollü Beer Pours'u inşa etti.

Burası burası , Arlington, VA merkezli bir Kıdemli Yapay Zeka / Makine Öğrenimi Uzmanı Çözüm Mimarıdır. Kamu sektörü müşterileriyle çalışıyor ve makine öğrenimini büyük ölçekte benimsemelerine yardımcı oluyor. AI / ML'deki NLP ve ML açıklanabilirlik alanları konusunda tutkulu.

Barış Yasin AWS'de bir Çözüm Mimarıdır. Yapay zeka / makine öğrenimi ve analitik teknolojileri konusunda tutkulu ve yeni başlayan müşterilerin AWS ile zorlu iş ve teknik sorunları çözmelerine yardımcı oluyor.

Coinsmart. Europa İçindeki En İyi Bitcoin-Börse
Kaynak: https://aws.amazon.com/blogs/machine-learning/detect-abnormal-equipment-behavior-and-review-predictions-using-amazon-lookout-for-equipment-and-amazon-a2i/

spot_img

En Son İstihbarat

spot_img