Logz.io є партнером AWS Partner Network (APN) Advanced Technology Partner Компетенції AWS у DevOps, Security, Data & Analytics. Logz.io пропонує платформу спостереження програмного забезпечення як послуги (SaaS), яка базується на найкращих у своєму класі програмних рішеннях з відкритим вихідним кодом для аналізу журналів, показників і трасування. Клієнти надсилають все більше даних на Logz.io з різних джерел даних, щоб керувати працездатністю та продуктивністю своїх програм і сервісів. Це може бути надзвичайно важко для нових користувачів, які хочуть переміщатися між різними інформаційними панелями, створеними з часом, обробляти різні сповіщення про сповіщення та з’єднувати точки під час усунення виробничих проблем.
Середній час виявлення (MTTD) і середній час вирішення (MTTR) є ключовими показниками для наших клієнтів. Вони розраховуються шляхом вимірювання часу, протягом якого користувач на нашій платформі починає досліджувати проблему (наприклад, припинення роботи служби виробництва) до того моменту, коли він припиняє виконувати дії на платформі, пов’язані з конкретним дослідженням.
Щоб допомогти клієнтам зменшити MTTD і MTTR, Logz.io звертається до машинного навчання (ML), щоб надавати рекомендації для відповідних інформаційних панелей і запитів і виконувати виявлення аномалій за допомогою самонавчання. У результаті пересічний користувач отримує сукупний досвід усієї своєї компанії, використовуючи мудрість багатьох. Ми виявили, що наше рішення може зменшити MTTR до 20%.
Коли MTTD зменшується, користувачі можуть швидше визначити проблему та вирішити її. Наш семантичний рівень даних містить семантику для початку та припинення розслідування, а також популярність кожної дії, яку користувач виконує щодо певного сповіщення.
У цій публікації ми розповідаємо, як використовувався Logz.io Amazon SageMaker щоб скоротити час і зусилля для нашого підтвердження концепції (POC), експериментів від досліджень до оцінки виробництва, а також як ми зменшили витрати на виробничі висновки.
Змагання
Поки Logz.io не використовував SageMaker, час між дослідженнями та тестуванням POC та експериментами на виробництві був досить тривалим. Це було тому, що нам потрібно було створити завдання Spark для збору, очищення та нормалізації даних. DevOps вимагала цієї роботи для читання кожного джерела даних. DevOps і навички розробки даних не є частиною нашої команди ML, і це спричинило високу залежність між командами.
Іншим завданням було надати послугу ML для наших продуктів, досягнувши оптимального співвідношення вартості та продуктивності. Наш оптимальний сценарій полягає в підтримці якомога більшої кількості моделей для обчислювального блоку, водночас забезпечуючи високий рівень паралелізму від клієнтів із багатьма моделями. У нас була гнучкість щодо часу висновків, оскільки наше початкове вікно потоку даних для служби висновків становить 5 хвилин журналів.
Етап дослідження
Наука про дані — це ітераційний процес, який вимагає інтерактивного середовища розробки для дослідження, перевірки вихідних даних на кожній ітерації та обробки даних. Тому ми заохочуємо наших дослідників ML використовувати блокноти.
Щоб прискорити цикл ітерації, ми хотіли перевірити код наших ноутбуків на реальних виробничих даних, одночасно запускаючи його в масштабі. Крім того, ми хотіли уникнути вузьких місць DevOps та обробки даних під час початкового тестування у виробництві, маючи можливість переглядати результати та намагатися оцінити час виконання коду.
Щоб реалізувати це, ми хотіли надати нашій команді з обробки даних повний контроль і наскрізну відповідальність від дослідження до початкового тестування на виробництві. Нам потрібні були вони, щоб легко отримувати дані, зберігаючи при цьому керування доступом до даних і моніторинг цього доступу. Їм також потрібно було легко розгорнути свої власні ноутбуки POC у виробництві з можливістю масштабування, одночасно відстежуючи час роботи та очікувані витрати.
Фаза оцінювання
Під час цього етапу ми оцінили кілька платформ машинного навчання, щоб підтримати вимоги як до навчання, так і до обслуговування. Ми виявили, що SageMaker найбільше підходить для наших випадків використання, оскільки він підтримує як навчання, так і висновки. Крім того, його можна налаштувати, тому ми можемо адаптувати його відповідно до нашого бажаного дослідницького процесу.
Спочатку ми почали з локальних блокнотів, тестуючи різні бібліотеки. У нас виникли проблеми з вилученням масивних даних із виробництва. Пізніше ми застрягли на етапі моделювання, який зайняв багато годин на локальній машині.
Ми оцінили багато рішень і врешті вибрали таку архітектуру:
- DataPlate – Версія з відкритим кодом DataPlate допоміг нам легко отримати та об’єднати наші дані за допомогою нашого Spark Amazon EMR кластери за допомогою простого SQL, одночасно відстежуючи доступ до даних
- Екземпляр блокнота SageMaker і завдання обробки – Це допомогло нам з масштабованістю середовища виконання та гнучкістю типів машин і фреймворків ML, під час спільної роботи над нашим кодом через з’єднання Git
Архітектура рішення фази дослідження
Наступна діаграма ілюструє архітектуру рішення на етапі дослідження та складається з таких компонентів:
- Зошити SageMaker – Цим користуються дослідники даних ноутбуки для проведення своїх досліджень.
- Функція AWS Lambda - AWS Lambda це безсерверне рішення, яке виконує завдання обробки на вимогу. Завдання використовує контейнер Docker із блокнотом, який ми хочемо запустити під час нашого експерименту, разом із усіма нашими звичайними файлами, які мають підтримувати блокнот (
requirements.txt
і код функцій багатопроцесорної обробки в окремому блокноті). - Amazon ECR - Реєстр контейнерів Amazon Elastic (Amazon ECR) зберігає наш контейнер Docker.
- Завдання обробки SageMaker – Ми можемо це запустити робота з обробки даних на будь-якій машині ML, і він запускає наш блокнот із параметрами.
- DataPlate – Ця послуга допомагає нам використовувати SQL і легко об’єднувати кілька джерел даних. Він перетворює його на код Spark і оптимізує його, одночасно відстежуючи доступ до даних і допомагаючи зменшити витоки даних. Версія Xtra надала ще більше можливостей.
- Amazon EMR – Ця служба запускає наші вилучення даних як робочі навантаження через Spark, зв’язуючись із усіма нашими ресурсами даних.
За допомогою життєвого циклу екземпляра ноутбука SageMaker ми можемо контролювати максимальний час виконання екземпляра блокнота, використовуючи autostop.py
шаблон сценарій
Після тестування фреймворків машинного навчання ми обрали ядро SageMaker MXNet для етапів кластеризації та ранжування.
Щоб перевірити код ноутбука на наших виробничих даних, ми запустили блокнот, інкапсулювавши його через Docker в Amazon ECS, і запустили його як завдання обробки, щоб перевірити максимальний час роботи на різних типах машин.
Контейнер Docker також допомагає нам ділитися ресурсами між тестами ноутбуків. У деяких випадках блокнот викликає інші блокноти для використання мультипроцесу, розділяючи великі кадри даних на менші кадри даних, які можуть виконуватися одночасно на кожному vCPU у великій машині.
Рішення для визначення виробництва в реальному часі
На етапі дослідження ми використовували паркет Служба простого зберігання Amazon (Amazon S3), щоб зберегти наші рекомендації. Вони споживаються один раз на день із нашого інженерного конвеєра, щоб додати рекомендації до нашого механізму сповіщень.
Однак наша дорожня карта потребує рішення з вищою частотою оновлення, і в довгостроковій перспективі витягувати один раз на день недостатньо, оскільки ми хочемо надавати рекомендації навіть під час розслідування.
Щоб реалізувати це рішення в масштабі, ми протестували більшість кінцевих рішень SageMaker під час нашого дослідження виявлення аномалій. Ми протестували 500 готових моделей з однією кінцевою машиною різних типів і використовували одночасні багатопотокові клієнти для виконання запитів до кінцевої точки. Ми виміряли час відгуку, ЦП, пам’ять та інші показники (додаткову інформацію див Відстежуйте Amazon SageMaker за допомогою Amazon CloudWatch). Ми виявили, що мультимодельна кінцева точка ідеально підходить для наших випадків використання.
Кінцева точка з кількома моделями може значно зменшити наші витрати порівняно з однією кінцевою точкою або навіть Kubernetes для використання веб-сервісів Flask (або інших Python). Наше перше припущення полягало в тому, що ми повинні забезпечити одну кінцеву точку, використовуючи невелику машину з 4 vCPU, для кожного клієнта, і в середньому запитувати чотири спеціальні моделі, оскільки кожен vCPU обслуговує одну модель. Завдяки мультимодельній кінцевій точці ми могли об’єднати більше клієнтів на одній машині з кількома кінцевими точками.
У нас була модель і файли кодування для кожного клієнта, і після виконання навантажувальних тестів ми визначили, що можемо обслуговувати 50 клієнтів, кожен з яких використовує 10 моделей і навіть використовує найменший екземпляр ml.t2.medium для наших рішень.
На цьому етапі ми розглядали використання багатомодельні кінцеві точки. Кінцеві точки з кількома моделями забезпечують масштабоване та економічно ефективне рішення для розгортання великої кількості моделей, що дає змогу розміщувати декілька моделей в одному контейнері висновків. Це зменшує витрати на хостинг за рахунок покращення використання кінцевої точки порівняно з використанням кількох невеликих кінцевих точок однієї моделі, кожна з яких обслуговує одного клієнта. Це також зменшує накладні витрати на розгортання, оскільки SageMaker керує завантаженням моделей у пам’ять і масштабує їх на основі шаблонів трафіку до них.
Крім того, перевага кінцевої точки з кількома моделями полягає в тому, що якщо у вас є висока частота висновків від конкретних клієнтів, її структура зберігає в пам’яті останні обслуговувані моделі для кращої продуктивності.
Після того, як ми оцінили витрати за допомогою мультимодельних кінцевих точок порівняно зі стандартними кінцевими точками, ми з’ясували, що це потенційно може призвести до зниження витрат приблизно на 80%.
Результат
У цьому розділі ми розглядаємо кроки та результати процесу.
Ми використовуємо конфігурацію блокнота життєвого циклу, щоб увімкнути запуск блокнотів як завдань обробки, інкапсулюючи блокнот у контейнер Docker, щоб швидше перевірити код і використовувати механізм автоматичної зупинки:
Ми клонуємо sagemaker-run-notebook Проект GitHub і додайте в контейнер таке:
- Наші вимоги до піпсів
- Можливість запускати блокноти з блокнота, що дає нам багатопроцесорну поведінку, щоб використовувати всі ядра екземплярів ml.m5.12xlarge
Це дає нам змогу запускати робочі процеси, які складаються з багатьох блокнотів, що виконуються як завдання обробки в рядку коду, одночасно визначаючи тип екземпляра для запуску.
Оскільки ми можемо додавати параметри до блокнота, ми можемо масштабувати нашу обробку, запускаючи її одночасно в різні години, дні або місяці, щоб отримувати та обробляти дані.
Ми також можемо створювати завдання планування, які запускають блокноти (і навіть обмежувати час виконання).
Ми також можемо спостерігати за останніми запусками та їхніми деталями, як-от час обробки.
За допомогою паперової фабрики, яка використовується в контейнері, ми можемо переглядати вихід кожного циклу, що допомагає нам налагодити виробництво.
Огляд нашого блокнота представлений у формі стандартного блокнота, призначеного лише для читання.
Використання кількох процесорів допомагає нам масштабувати обробку кожного ноутбука та використовувати всі його ядра. Ми створили функції в інших блокнотах, які можуть виконувати важку обробку, наприклад такі:
- Розбийте файли JSON
- Знайдіть відповідні рядки в DataFrame, поки основний блокнот розбиває DataFrame
#cpu-cores
елементи - Одночасно виконувати кластеризацію за типом попередження
Потім ми додаємо ці функціональні блокноти в контейнер, який запускає блокнот як завдання обробки. Перегляньте наступний файл Docker (зверніть увагу на команди COPY):
результати
Під час етапу дослідження ми оцінили можливість запустити наші блокноти як є, щоб поекспериментувати й оцінити, як наш код працює з усіма нашими релевантними даними, а не лише з вибіркою даних. Ми виявили, що інкапсуляція наших ноутбуків за допомогою завдань обробки може бути чудовою для нас, тому що нам не потрібно переписувати код і ми можемо використовувати потужність екземплярів, оптимізованих для обчислень і пам’яті AWS, і легко стежити за станом процесу.
Під час оцінки логічного висновку ми оцінювали різні кінцеві рішення SageMaker. Ми виявили, що використання кінцевої точки з кількома моделями може допомогти нам обслуговувати приблизно 50 клієнтів, кожен з яких має декілька (приблизно 10) моделей в одному екземплярі, що відповідає нашим обмеженням щодо низької затримки, а отже, заощаджує до 80% витрат. .
Завдяки цій архітектурі рішення ми змогли знизити MTTR наших клієнтів, що є основним показником для вимірювання успіху за допомогою нашої платформи. Це скорочує загальний час від моменту відповіді на наше посилання на сповіщення, яке описує проблему у ваших системах, до завершення дослідження проблеми за допомогою нашої платформи. На етапі розслідування ми вимірюємо дії користувачів із нашим рішенням для ML та без нього. Це допомагає нам надавати рекомендації щодо найкращих дій для швидшого вирішення конкретної проблеми та точного визначення аномалій, щоб визначити справжню причину проблеми.
Висновок і подальші дії
У цій публікації ми поділилися тим, як Logz.io використовував SageMaker для покращення MTTD і MTTR.
Як наступний крок ми розглядаємо можливість розширення рішення за допомогою таких функцій:
Заохочуємо вас спробувати Зошити SageMaker. Більше прикладів див Приклади SageMaker GitHub repo.
Про авторів
Аміт Гросс очолює дослідницький відділ Logz.io, який відповідає за рішення штучного інтелекту для всіх продуктів Logz.io, від етапу дослідження до етапу інтеграції. До Logz.io Аміт керував дослідницькими групами Data Science і Security Research Group в Here inc. і Cellebrite Inc. Аміт має ступінь магістра з інформатики Тель-Авівського університету.
Янів Вакнін є спеціалістом з машинного навчання в Amazon Web Services. До AWS Янів обіймав керівні посади в стартапах зі штучним інтелектом і Enterprise, включаючи співзасновника та генерального директора Dipsee.ai. Янів працює з клієнтами AWS, щоб використовувати потужність машинного навчання для вирішення реальних завдань і отримання цінності. У вільний час Янів любить грати у футбол зі своїми хлопцями.
Ейтан Села є спеціалістом з машинного навчання архітектором рішень Amazon Web Services. Він працює з клієнтами AWS, щоб надати рекомендації та технічну допомогу, допомагаючи їм створювати та використовувати рішення машинного навчання на AWS. У вільний час Ейтан любить бігати підтюпцем і читати останні статті про машинне навчання.
- '
- &
- 100
- 84
- прискорювати
- доступ
- управління доступом
- За
- через
- дію
- дії
- Просунута технологія
- Перевага
- Філії
- AI
- ВСІ
- Amazon
- Amazon SageMaker
- Amazon Web Services
- серед
- аналітика
- виявлення аномалії
- Apache
- застосування
- архітектура
- статті
- середній
- AWS
- основа
- КРАЩЕ
- Великий даних
- порушення
- Помилка
- будувати
- випадків
- Викликати
- викликаний
- Генеральний директор
- виклик
- зміна
- клієнтів
- Співзасновник
- код
- загальний
- компанія
- дотримання
- обчислення
- Інформатика
- обчислення
- стан
- конфігурація
- зв'язок
- Контейнер
- містить
- продовжувати
- авторське право
- витрати
- може
- Клієнти
- дані
- доступ до даних
- Порушення даних
- обробка даних
- наука про дані
- день
- Попит
- розгортання
- Виявлення
- розробка
- DevOps
- різний
- розподілений
- Docker
- Докер-контейнер
- вниз
- під час
- легко
- відливи
- нудьгувати
- заохочувати
- Кінцева точка
- Машинобудування
- підприємство
- Навколишнє середовище
- обладнаний
- оцінити
- приклад
- виконання
- розширюється
- досвід
- експеримент
- експорт
- швидше
- риси
- в кінці кінців
- Перший
- відповідати
- Гнучкість
- стежити
- форма
- знайдений
- Рамки
- Повний
- Функції
- Git
- GitHub
- великий
- має
- здоров'я
- допомога
- допомагає
- тут
- Високий
- хостинг
- Як
- HTTPS
- ідентифікувати
- зображення
- здійснювати
- поліпшення
- Инк
- У тому числі
- інформація
- інтеграція
- інтерактивний
- інтернет
- дослідити
- дослідження
- питання
- IT
- робота
- Джобс
- приєднатися
- ключ
- Кубернетес
- мова
- великий
- останній
- вести
- Керівництво
- провідний
- вивчення
- ліцензія
- Ліцензований
- Лінія
- LINK
- загрузка
- місцевий
- Довго
- шукати
- навчання за допомогою машини
- Машинки для перманенту
- управління
- вимір
- середа
- Метрика
- ML
- модель
- моделювання
- Моделі
- моніторинг
- місяців
- більше
- найбільш
- необхідний
- мережу
- ноутбуки
- Пропозиції
- відкрити
- варіант
- порядок
- Інше
- партнер
- партнерська мережа
- продуктивність
- фаза
- платформа
- Платформи
- PoC
- влада
- Проблема
- процес
- Production
- Продукти
- програма
- проект
- доказ
- доказ концепції
- забезпечувати
- тягне
- Python
- читання
- Реальний світ
- реального часу
- зменшити
- Вимога
- дослідження
- ресурси
- відповідь
- огляд
- прогін
- біг
- SaaS
- мудрець
- масштабованість
- шкала
- Масштабування
- наука
- Вчені
- безпеку
- семантика
- Без сервера
- Послуги
- виступаючої
- комплект
- установка
- Поділитись
- загальні
- простий
- навички
- невеликий
- So
- Футбол
- Софтвер
- Рішення
- ВИРІШИТИ
- SQL
- Стажування
- почалася
- Стартапи
- Статус
- зберігання
- магазинів
- успіх
- Судо
- підтримка
- Опори
- Systems
- технічний
- Технологія
- тест
- Тестування
- Тести
- час
- разом
- трафік
- Навчання
- ui
- університет
- us
- користувачі
- значення
- версія
- вид
- обсяг
- Web
- веб-сервіси
- ВООЗ
- в
- без
- Work
- працює
- світ