Організації все частіше створюють і використовують рішення на основі машинного навчання (ML) для різноманітних випадків використання та проблем, включаючи прогнозоване технічне обслуговування частин машин, рекомендації продуктів на основі переваг клієнтів, кредитний профіль, модерація вмісту, виявлення шахрайства тощо. У багатьох із цих сценаріїв ефективність і переваги, отримані від цих рішень на базі машинного навчання, можна ще більше підвищити, якщо вони зможуть обробляти та отримувати статистичні дані з подій даних майже в реальному часі.
Незважаючи на те, що бізнес-цінність і переваги рішень на базі ML майже в реальному часі добре відомі, архітектура, необхідна для впровадження цих рішень у масштабі з оптимальною надійністю та продуктивністю, є складною. У цьому дописі описано, як можна поєднувати Амазонський кінезіс, Клей AWS та Amazon SageMaker створити рішення для проектування функцій і логічних висновків майже в реальному часі для прогнозованого обслуговування.
Огляд варіантів використання
Ми зосереджуємося на випадку використання прогнозованого технічного обслуговування, коли датчики, встановлені в польових умовах (наприклад, промислове обладнання або мережеві пристрої), потребують заміни або виправлення, перш ніж вони вийдуть з ладу та призведуть до простою. Час простою може бути дорогим для компаній і може призвести до поганого обслуговування клієнтів. Прогнозне технічне обслуговування за допомогою моделі ML також може допомогти збільшити регулярні цикли техобслуговування за графіком, повідомляючи, коли деталь машини в хорошому стані не слід замінювати, таким чином уникаючи непотрібних витрат.
У цій публікації ми зосередимося на застосуванні машинного навчання до синтетичного набору даних, що містить несправності машини через такі характеристики, як температура повітря, температура процесу, швидкість обертання, крутний момент і знос інструменту. Використаний набір даних отримано з Репозиторій даних UCI.
Відмова машини складається з п'яти незалежних станів відмови:
- Відмова від зносу інструменту (TWF)
- Порушення розсіювання тепла (HDF)
- Збій живлення (PWF)
- Відмова від перенапруження (OSF)
- Випадкова помилка (RNF)
Мітка помилки машини вказує, чи сталася машина несправною для певної точки даних, якщо будь-який із попередніх режимів відмови є істинним. Якщо принаймні один із режимів відмови є істинним, процес завершується невдачею, а мітка відмови машини встановлюється на 1. Метою моделі ML є правильна ідентифікація помилок машини, щоб можна було ініціювати подальшу дію з прогнозованого технічного обслуговування.
Огляд рішення
Для нашого сценарію використання прогнозованого технічного обслуговування ми припускаємо, що датчики пристрою передають різні вимірювання та зчитування деталей машини. Потім наше рішення кожного разу приймає фрагмент потокових даних (мікропакет) і виконує обробку та розробку функцій для створення функцій. Потім створені функції використовуються для створення висновків на основі навченої та розгорнутої моделі ML майже в реальному часі. Згенеровані висновки можуть бути додатково оброблені та використані додатками нижчого рівня для виконання відповідних дій та ініціювання діяльності з обслуговування.
На наступній діаграмі показано архітектуру нашого загального рішення.
Рішення загалом складається з таких розділів, які детально пояснюються далі в цій публікації:
- Джерело потокових даних і прийом - Ми використовуємо Потоки даних Amazon Kinesis щоб збирати потокові дані від польових датчиків у масштабі та робити їх доступними для подальшої обробки.
- Розробка функцій майже в реальному часі – Ми використовуємо потокові завдання AWS Glue, щоб зчитувати дані з потоку даних Kinesis і виконувати обробку даних і розробку функцій перед збереженням похідних функцій у Служба простого зберігання Amazon (Amazon S3). Amazon S3 забезпечує надійний і економічно ефективний варіант для зберігання великих обсягів даних.
- Навчання моделі та розгортання – Ми використовуємо набір даних прогнозованого обслуговування AI4I зі сховища даних UCI для навчання моделі ML на основі алгоритму XGBoost за допомогою SageMaker. Потім ми розгортаємо навчену модель до кінцевої точки асинхронного висновку SageMaker.
- Висновки ML майже в реальному часі – Після того, як функції стануть доступними в Amazon S3, нам потрібно зробити висновки на основі розгорнутої моделі майже в реальному часі. Кінцеві точки асинхронного висновку SageMaker добре підходять для цієї вимоги, оскільки вони підтримують більші розміри корисного навантаження (до 1 ГБ) і можуть генерувати висновки протягом декількох хвилин (максимум 15 хвилин). Ми використовуємо сповіщення про події S3 для запуску AWS Lambda функція для виклику кінцевої точки асинхронного висновку SageMaker. Кінцеві точки асинхронного висновку SageMaker приймають розташування S3 як вхідні дані, генерують висновки з розгорнутої моделі та записують ці висновки в Amazon S3 майже в реальному часі.
Вихідний код цього рішення знаходиться на GitHub. Рішення перевірено та має бути запущено в us-east-1.
Ми використовуємо AWS CloudFormation шаблон, розгорнутий за допомогою Модель безсерверного додатка AWS (AWS SAM) і ноутбуки SageMaker для розгортання рішення.
Передумови
Щоб розпочати роботу, як обов’язкова умова, ви повинні мати СЕМ КЛІ, Python 3 та PIP встановлено. Ви також повинні мати Інтерфейс командного рядка AWS (AWS CLI) налаштовано належним чином.
Розгорніть рішення
Ви можете використовувати AWS CloudShell щоб виконати ці кроки. CloudShell — це оболонка на основі браузера, яка попередньо автентифікована за допомогою облікових даних вашої консолі та містить попередньо встановлені загальні інструменти розробки та операцій (такі як AWS SAM, AWS CLI та Python). Тому локальна інсталяція чи конфігурація не потрібні.
- Ми починаємо зі створення сегмента S3, де ми зберігаємо сценарій для потокового завдання AWS Glue. Виконайте таку команду в терміналі, щоб створити нове відро:
- Запишіть назву створеного відра.
- Далі ми локально клонуємо репозиторій коду, який містить шаблон CloudFormation для розгортання стеку. Виконайте таку команду у вашому терміналі:
- Перейдіть до каталогу sam-template:
- Виконайте таку команду, щоб скопіювати сценарій завдання AWS Glue (з glue_streaming/app.py) до створеного вами сегмента S3:
- Тепер ви можете продовжити створення та розгортання рішення за допомогою шаблону CloudFormation через AWS SAM. Виконайте таку команду:
- Надайте аргументи для розгортання, наприклад ім’я стека, бажаний регіон AWS (
us-east-1
), А такожGlueScriptsBucket
.
Переконайтеся, що ви надали те саме відро S3, яке ви створили раніше для сценарію AWS Glue S3 (параметр GlueScriptsBucket
на наступному знімку екрана).
Після надання необхідних аргументів AWS SAM починає розгортання стека. На наступному знімку екрана показано створені ресурси.
Після успішного розгортання стека ви повинні побачити таке повідомлення.
- На консолі AWS CloudFormation відкрийте стек (для цієї публікації
nrt-streaming-inference
), який було надано під час розгортання шаблону CloudFormation. - на ресурси зверніть увагу на ідентифікатор екземпляра блокнота SageMaker.
- На консолі SageMaker відкрийте цей екземпляр.
Екземпляр записника SageMaker уже має попередньо завантажені необхідні блокноти.
Перейдіть до папки блокнотів, відкрийте та дотримуйтесь інструкцій у блокнотах (Data_Pre-Processing.ipynb
та ModelTraining-Evaluation-and-Deployment.ipynb
), щоб дослідити набір даних, виконати попередню обробку та розробку функцій, а також навчити та розгорнути модель на кінцевій точці асинхронного висновку SageMaker.
Джерело потокових даних і прийом
Kinesis Data Streams — це безсерверна, масштабована та довговічна служба потокової передачі даних у реальному часі, яку можна використовувати для збору й обробки великих потоків записів даних у режимі реального часу. Kinesis Data Streams дозволяє отримувати, обробляти та зберігати потоки даних із різноманітних джерел, таких як дані журналів ІТ-інфраструктури, журнали додатків, соціальні мережі, канали ринкових даних, дані веб-потоку кліків, пристрої та датчики Інтернету речей тощо. Ви можете надати потік даних Kinesis у режимі на вимогу або в режимі ініціалізації залежно від пропускної здатності та вимог до масштабування. Для отримання додаткової інформації див Вибір режиму пропускної здатності потоку даних.
Для нашого випадку використання ми припускаємо, що різні датчики надсилають такі вимірювання, як температура, швидкість обертання, крутний момент і знос інструменту, у потік даних. Kinesis Data Streams діє як воронка для збору та прийому потоків даних.
Ми використовуємо Генератор даних Amazon Kinesis (KDG) далі в цьому дописі, щоб генерувати та надсилати дані в потік даних Kinesis, імітуючи дані, що генеруються датчиками. Дані з потоку даних sensor-data-stream приймаються та обробляються за допомогою потокового завдання AWS Glue, яке ми обговоримо далі.
Розробка функцій майже в реальному часі
Потокові завдання AWS Glue забезпечують зручний спосіб масової обробки потокових даних без необхідності керування обчислювальним середовищем. AWS Glue дозволяє виконувати операції вилучення, трансформації та завантаження (ETL) над потоковими даними за допомогою постійно запущених завдань. AWS Glue streaming ETL побудовано на механізмі Apache Spark Structured Streaming і може отримувати потоки з Kinesis, Apache Kafka та Amazon керував потоковим передаванням для Apache Kafka (Amazon MSK).
Потокове завдання ETL може використовувати як вбудовані перетворення AWS Glue, так і перетворення, які є рідними для Apache Spark Structured Streaming. Ви також можете використовувати Spark ML і MLLib бібліотеки в завданнях AWS Glue для полегшення обробки функцій за допомогою доступних допоміжних бібліотек.
Якщо схема джерела потокових даних визначена заздалегідь, ви можете вказати її в таблиці каталогу даних AWS. Якщо визначення схеми неможливо визначити заздалегідь, ви можете ввімкнути виявлення схеми в потоковому завданні ETL. Потім завдання автоматично визначає схему з вхідних даних. Крім того, ви можете використовувати Реєстр схем AWS Glue для централізованого виявлення, контролю та еволюції схем потоку даних. Ви можете додатково інтегрувати реєстр схем із каталогом даних, щоб додатково використовувати схеми, що зберігаються в реєстрі схем, під час створення або оновлення таблиць або розділів AWS Glue у каталозі даних.
Для цієї публікації ми створюємо таблицю каталогу даних AWS Glue (sensor-stream
) із нашим потоком даних Kinesis як джерелом і визначте схему для даних наших датчиків.
Ми створюємо динамічний фрейм даних AWS Glue із таблиці Data Catalog для читання потокових даних із Kinesis. Ми також вказуємо такі параметри:
- Розмір вікна 60 секунд, щоб завдання AWS Glue читало й обробляло дані в 60-секундних вікнах
- Початкове положення
TRIM_HORIZON
, щоб дозволити читання з найстаріших записів у потоці даних Kinesis
Ми також використовуємо Spark MLlib StringIndexer перетворювач функцій для кодування типу рядкового стовпця в індекси міток. Це перетворення реалізовано за допомогою Spark ML Pipelines. Трубопроводи Spark ML надати єдиний набір API високого рівня для алгоритмів ML, щоб полегшити поєднання кількох алгоритмів в один конвеєр або робочий процес.
Ми використовуємо foreachBatch API для виклику функції під назвою processBatch, яка, у свою чергу, обробляє дані, на які посилається цей кадр даних. Перегляньте наступний код:
Функція processBatch виконує вказані перетворення та розбиває дані в Amazon S3 на основі року, місяця, дня та ідентифікатора партії.
Ми також повторно розділяємо розділи AWS Glue на один розділ, щоб уникнути надто великої кількості маленьких файлів в Amazon S3. Наявність кількох невеликих файлів може перешкоджати читанню, оскільки це збільшує накладні витрати, пов’язані з пошуком, відкриттям і читанням кожного файлу. Нарешті ми пишемо функції для створення висновків у префікс (функції) у сегменті S3. Перегляньте наступний код:
Модель навчання та розгортання
SageMaker — це повністю керована та інтегрована служба ML, яка дає змогу науковцям із обробки даних та інженерам ML швидко й легко створювати, навчати та розгортати моделі ML.
У блокноті Data_Pre-Processing.ipynb, ми спочатку імпортуємо набір даних AI4I Predictive Maintenance зі сховища даних UCI і виконуємо пошуковий аналіз даних (EDA). Ми також виконуємо розробку функцій, щоб зробити наші функції більш корисними для навчання моделі.
Наприклад, у наборі даних ми маємо функцію під назвою type, яка представляє тип якості продукту як L (низька), M (середня) або H (висока). Оскільки це категорична функція, нам потрібно закодувати її перед навчанням нашої моделі. Для цього ми використовуємо LabelEncoder від Scikit-Learn:
Після того, як функції буде оброблено та створено підібрані навчальні та тестові набори даних, ми готові навчити модель ML, щоб передбачити, чи вийшла з ладу машина чи ні, на основі показань системи. Ми навчаємо модель XGBoost за допомогою вбудованого алгоритму SageMaker. XGBoost може забезпечити хороші результати для багатьох типів проблем ML, включаючи класифікацію, навіть якщо навчальні вибірки обмежені.
Навчальні завдання SageMaker забезпечують потужний і гнучкий спосіб навчання моделей ML на SageMaker. SageMaker керує основною обчислювальною інфраструктурою та забезпечує кілька варіантів на вибір, для різноманітних вимог до навчання моделі, залежно від випадку використання.
Коли навчання моделі завершено та оцінка моделі буде задовільною на основі бізнес-вимог, ми можемо розпочати розгортання моделі. Спочатку ми створюємо конфігурацію кінцевої точки за допомогою параметра об’єкта AsyncInferenceConfig і використовуючи навчену раніше модель:
Потім ми створюємо кінцеву точку асинхронного висновку SageMaker, використовуючи створену конфігурацію кінцевої точки. Після цього ми можемо почати викликати кінцеву точку для асинхронного створення висновків.
Висновки майже в реальному часі
SageMaker асинхронний висновок кінцеві точки надають можливість ставити в чергу вхідні запити на висновок і обробляти їх асинхронно майже в реальному часі. Це ідеально підходить для програм, які мають запити на висновок із більшим розміром корисного навантаження (до 1 ГБ), можуть вимагати більшого часу обробки (до 15 хвилин) і мають вимоги до затримки майже в реальному часі. Асинхронний висновок також дає змогу заощадити на витратах завдяки автоматичному масштабуванню кількості екземплярів до нуля, коли немає запитів для обробки, тому ви платите лише тоді, коли ваша кінцева точка обробляє запити.
Ви можете створити кінцеву точку асинхронного висновку SageMaker подібно до того, як ви створюєте кінцеву точку висновку в реальному часі, і додатково вказати AsyncInferenceConfig
під час створення конфігурації кінцевої точки за допомогою поля EndpointConfig в API CreateEndpointConfig. На наступній діаграмі показано робочий процес висновку та те, як кінцева точка асинхронного висновку генерує висновок.
Щоб викликати кінцеву точку асинхронного висновку, корисне навантаження запиту має зберігатися в Amazon S3, а посилання на це корисне навантаження потрібно надати як частину запиту InvokeEndpointAsync. Після виклику SageMaker ставить запит у чергу на обробку та повертає ідентифікатор і місце виведення як відповідь. Після обробки SageMaker розміщує результат у розташуванні Amazon S3. Додатково можна вибрати сповіщення про успіх або помилку Служба простих сповіщень Amazon (Amazon SNS).
Перевірте наскрізне рішення
Щоб перевірити рішення, виконайте такі дії:
- На консолі AWS CloudFormation відкрийте створений раніше стек (
nrt-streaming-inference
). - на Виходи скопіюйте назву сегмента S3 (
EventsBucket
).
Це відро S3, до якого наше потокове завдання AWS Glue записує функції після зчитування та обробки з потоку даних Kinesis.
Далі ми налаштовуємо сповіщення про події для цього відра S3.
- На консолі Amazon S3 перейдіть до сегмента
EventsBucket
. - на властивості вкладка, в Повідомлення про події розділ, вибрати Створити сповіщення про подію.
- для Назва події, введіть
invoke-endpoint-lambda
. - для префікс, введіть
features/
. - для суфікс, введіть
.csv
. - для Типи подійвиберіть Усі об’єкти створюють події.
- для призначеннявиберіть Лямбда-функція.
- для Лямбда-функціяі виберіть функцію
invoke-endpoint-asynch
. - Вибирати зберегти зміни.
- На консолі AWS Glue відкрийте завдання
GlueStreaming-Kinesis-S3
. - Вибирати Виконати роботу.
Далі ми використовуємо генератор даних Kinesis (KDG), щоб імітувати датчики, які надсилають дані в наш потік даних Kinesis. Якщо ви вперше використовуєте KDG, див огляд для початкового налаштування. KDG надає шаблон CloudFormation для створення користувача та призначення достатньої кількості дозволів для використання KDG для надсилання подій до Kinesis. Запустіть Шаблон CloudFormation в обліковому записі AWS, який ви використовуєте для створення рішення в цій публікації. Після налаштування KDG увійдіть і отримайте доступ до KDG, щоб надсилати тестові події в наш потік даних Kinesis.
- Використовуйте регіон, у якому ви створили потік даних Kinesis (us-east-1).
- У спадному меню виберіть потік даних
sensor-data-stream
. - У Записи в секунду розділ, виберіть Постійне і введіть 100.
- Скасувати вибір Стискати записи.
- для Шаблон запису, використовуйте такий шаблон:
- Натисніть Надіслати дані щоб розпочати надсилання даних у потік даних Kinesis.
Завдання потокового передавання AWS Glue зчитує та витягує мікропакет даних (що представляє показання датчиків) із потоку даних Kinesis на основі наданого розміру вікна. Потім потокове завдання обробляє та виконує розробку функцій для цього мікропакета перед розділенням і записом його до префіксних функцій у сегменті S3.
Оскільки нові функції, створені потоковим завданням AWS Glue, записуються в сегмент S3, функція Lambda (invoke-endpoint-asynch
) запускається, що викликає кінцеву точку асинхронного висновку SageMaker, надсилаючи запит на виклик, щоб отримати висновки з нашої розгорнутої моделі ML. Кінцева точка асинхронного висновку ставить запит на асинхронний виклик у чергу. Після завершення обробки SageMaker зберігає результати висновків у розташуванні Amazon S3 (S3OutputPath
), який було зазначено під час конфігурації кінцевої точки асинхронного висновку.
Для нашого випадку використання результати висновку вказують на те, чи може деталь машини вийти з ладу чи ні, на основі показань датчика.
SageMaker також надсилає сповіщення про успіх або помилку через Amazon SNS. Наприклад, якщо ви створили підписка на електронну пошту для тем SNS про успіх і помилку (вказаних у конфігурації асинхронної кінцевої точки висновку SageMaker) можна надсилати електронний лист щоразу, коли обробляється запит на висновок. На наступному знімку екрана показано зразок електронної пошти з теми успіху SNS.
Для реальних програм ви можете інтегрувати сповіщення SNS з іншими службами, такими як Служба простої черги Amazon (Amazon SQS) і Lambda для додаткової постобробки згенерованих висновків або інтеграції з іншими програмами нижнього рівня відповідно до ваших вимог. Наприклад, для нашого сценарію використання прогнозованого технічного обслуговування ви можете викликати функцію Lambda на основі сповіщення SNS, щоб прочитати згенерований висновок із Amazon S3, додатково обробляти його (наприклад, агрегацію чи фільтрацію) та ініціювати робочі процеси, такі як надсилання робочих нарядів для ремонт обладнання тех.
Прибирати
Завершивши тестування стека, видаліть ресурси (особливо потік даних Kinesis, завдання потокової передачі Glue і теми SNS), щоб уникнути неочікуваних стягнень.
Запустіть наступний код, щоб видалити стек:
Також видаліть такі ресурси, як кінцеві точки SageMaker, дотримуючись розділу очищення в блокноті ModelTraining-Evaluation-and-Deployment.
Висновок
У цьому дописі ми використали сценарій використання прогнозованого обслуговування, щоб продемонструвати, як використовувати різні служби, такі як Kinesis, AWS Glue і SageMaker, для створення конвеєра висновків майже в реальному часі. Ми рекомендуємо вам спробувати це рішення та повідомити нам свою думку.
Якщо у вас залишилися запитання, діліться ними в коментарях.
Про авторів
Рахул Шарма є архітектором рішень у AWS Data Lab, допомагаючи клієнтам AWS проектувати та створювати рішення AI/ML. До того, як приєднатися до AWS, Рахул кілька років працював у фінансовому та страховому секторі, допомагаючи клієнтам створювати дані та аналітичні платформи.
Пет Рейлі є архітектором у лабораторії даних AWS, де він допомагає клієнтам проектувати та створювати робочі навантаження даних для підтримки їхнього бізнесу. До AWS Пет консультував партнера AWS, створюючи робочі навантаження даних AWS у різних галузях.
- AI
- ai мистецтво
- AI арт генератор
- ai робот
- Amazon SageMaker
- Служба простих сповіщень Amazon (SNS)
- штучний інтелект
- сертифікація штучного інтелекту
- штучний інтелект у банківській справі
- робот зі штучним інтелектом
- роботи зі штучним інтелектом
- програмне забезпечення для штучного інтелекту
- Клей AWS
- AWS Lambda
- AWS Машинне навчання
- blockchain
- блокчейн конференція AI
- coingenius
- розмовний штучний інтелект
- крипто конференція ai
- dall's
- глибоке навчання
- у вас є гугл
- Потоки даних Kinesis
- навчання за допомогою машини
- plato
- платон ai
- Інформація про дані Платона
- Гра Платон
- PlatoData
- platogaming
- масштаб ai
- синтаксис
- зефірнет