적용 대상: IoT Edge 1.1
중요합니다
IoT Edge 1.1 지원 종료 날짜는2022년 12월 13일이었습니다. 이 제품, 서비스, 기술 또는 API가 지원되는 방법에 대한 정보는 Microsoft 제품 수명 주기를 확인하세요. 최신 버전의 IoT Edge로 업데이트하는 방법에 대한 자세한 내용은 업데이트 IoT Edge참조하세요.
IoT 애플리케이션은 인텔리전트 클라우드와 인텔리전트 에지를 활용하고자 하는 경우가 많습니다. 이 자습서에서는 클라우드의 IoT 디바이스에서 수집된 데이터를 사용하여 기계 학습 모델을 학습시키고, 해당 모델을 IoT Edge에 배포하고, 모델을 주기적으로 유지 관리 및 구체화하는 방법을 안내합니다.
비고
이 자습서 집합의 개념은 모든 버전의 IoT Edge에 적용되지만 시나리오를 사용해 보기 위해 만든 샘플 디바이스는 IoT Edge 버전 1.1을 실행합니다.
이 자습서의 주요 목적은 특히 에지에서 기계 학습을 사용하여 IoT 데이터의 처리를 소개하는 것입니다. 일반적인 기계 학습 워크플로의 여러 측면을 살펴보는 동안 이 자습서는 기계 학습에 대한 심층적인 소개로 사용되지 않습니다. 여기서는 사용 사례에 대해 고도로 최적화된 모델을 만들려고 시도하지 않습니다. IoT 데이터 처리를 위해 실행 가능한 모델을 만들고 사용하는 프로세스를 설명하기에 충분합니다.
자습서의 이 섹션에서는 다음에 대해 설명합니다.
- 자습서의 후속 부분을 완료하기 위한 필수 구성 요소입니다.
- 자습서의 대상 그룹입니다.
- 자습서에서 시뮬레이트하는 사용 사례입니다.
- 사용 사례를 충족하기 위해 자습서가 수행하는 전체 프로세스입니다.
Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만드세요.
필수 조건
자습서를 완료하려면 리소스를 만들 수 있는 권한이 있는 Azure 구독에 액세스해야 합니다. 이 자습서에서 사용되는 몇 가지 서비스에는 Azure 요금이 부과됩니다. Azure 구독이 아직 없는 경우 Azure 체험 계정을 시작할 수 있습니다.
또한 스크립트를 실행하여 Azure Virtual Machine을 개발 머신으로 설정할 수 있는 PowerShell이 설치된 컴퓨터가 필요합니다.
이 문서에서는 다음 도구 집합을 사용합니다.
데이터 캡처를 위한 Azure IoT Hub
Azure Notebooks는 데이터 준비 및 기계 학습 실험을 위한 주요 프런트 엔드입니다. 샘플 데이터의 하위 집합에 있는 Notebook에서 Python 코드를 실행하는 것은 데이터 준비 중에 반복적이고 대화형으로 빠르게 전환할 수 있는 좋은 방법입니다. Jupyter Notebook을 사용하여 컴퓨팅 백 엔드에서 대규모로 실행할 스크립트를 준비할 수도 있습니다.
Azure Machine Learning은 대규모 머신 러닝 및 이미지 생성을 위한 백엔드입니다. Jupyter Notebook에서 준비하고 테스트한 스크립트를 사용하여 Azure Machine Learning 백 엔드를 구동합니다.
기계 학습 이미지의 클라우드를 벗어난 애플리케이션을 위한 Azure IoT Edge
물론 사용할 수 있는 다른 옵션이 있습니다. 예를 들어 특정 시나리오에서는 IoT Central을 코드 없는 대안으로 사용하여 IoT 디바이스에서 초기 학습 데이터를 캡처할 수 있습니다.
대상 그룹 및 역할
이 문서 집합은 IoT 개발 또는 기계 학습에 대한 이전 경험이 없는 개발자를 위한 것입니다. 에지에서 기계 학습을 배포하려면 다양한 기술을 연결하는 방법에 대한 지식이 필요합니다. 따라서 이 자습서에서는 IoT 솔루션을 위해 이러한 기술을 결합하는 한 가지 방법을 보여 주는 전체 엔드투엔드 시나리오에 대해 설명합니다. 실제 환경에서 이러한 작업은 다양한 전문화를 가진 여러 사용자 간에 배포될 수 있습니다. 예를 들어 개발자는 디바이스 또는 클라우드 코드에 집중하는 반면 데이터 과학자는 분석 모델을 디자인했습니다. 개별 개발자가 이 자습서를 성공적으로 완료할 수 있도록 하기 위해 우리는 작업의 의미와 이유를 이해하기에 충분하도록 인사이트와 추가 정보 링크를 포함한 보충 지침을 제공했습니다.
또는 서로 다른 역할의 동료와 협력하여 자습서를 함께 수행하여 모든 전문 지식을 쌓고 팀으로서 사물이 어떻게 결합되는지 알아볼 수 있습니다.
두 경우 모두 독자의 방향을 지정하는 데 도움이 되도록 이 자습서의 각 문서는 사용자의 역할을 나타냅니다. 이러한 역할은 다음과 같습니다.
- 클라우드 개발(DevOps 용량에서 작업하는 클라우드 개발자 포함)
- 데이터 분석
사용 사례: 예측 유지 관리
이 시나리오는 2008년 PHM08(예후 및 건강 관리) 컨퍼런스에서 제시된 사용 사례를 기반으로 합니다. 목표는 터보팬 비행기 엔진 세트의 남은 RUL(유용한 수명)을 예측하는 것입니다. 이 데이터는 MAPSS(모듈식 Aero-Propulsion 시스템 시뮬레이션) 소프트웨어의 상용 버전인 C-MAPSS를 사용하여 생성되었습니다. 이 소프트웨어는 상태, 제어 및 엔진 매개 변수를 편리하게 시뮬레이션할 수 있는 유연한 터보팬 엔진 시뮬레이션 환경을 제공합니다.
이 자습서에 사용된 데이터는 Turbofan 엔진 성능 저하 시뮬레이션 데이터 집합에서 가져옵니다.
추가 정보 파일에서:
실험적 시나리오
데이터 집합은 여러 다변량 시계열로 구성됩니다. 각 데이터 집합은 학습 및 테스트 하위 집합으로 더 구분됩니다. 각 시계열은 다른 엔진에서 온 것입니다. 즉, 데이터는 동일한 유형의 엔진에서 온 것으로 간주될 수 있습니다. 각 엔진은 사용자에게 알려지지 않은 다양한 수준의 초기 마모 및 제조 변형으로 시작합니다. 이 마모 및 변형은 정상으로 간주됩니다, 즉, 그것은 결함 상태로 간주되지 않습니다. 엔진 성능에 상당한 영향을 주는 세 가지 작동 설정이 있습니다. 이러한 설정은 데이터에도 포함됩니다. 데이터는 센서 노이즈로 오염됩니다.
엔진은 각 시계열의 초반에 정상적으로 작동합니다. 그리고 시계열 중 어느 시점에서 오류가 발생합니다. 학습 집합에서 결함은 시스템 고장 시까지 크기가 커져갑니다. 테스트 집합에서 시계열은 시스템 오류가 발생하기 몇 시간 전에 종료됩니다. 경쟁의 목적은 테스트 집합에서 실패하기 전에 남은 운영 주기의 수, 즉 엔진이 계속 작동할 마지막 주기 이후의 운영 주기 수를 예측하는 것입니다. 또한 테스트 데이터에 대한 실제 RUL(남은 수명) 값의 벡터를 제공했습니다.
이 데이터는 경쟁을 위해 게시되었기 때문에 기계 학습 모델을 파생하기 위한 여러 가지 방법이 독립적으로 게시되었습니다. 예제를 공부하는 것은 특정 기계 학습 모델 생성과 관련된 프로세스 및 추론을 이해하는 데 도움이 되는 것으로 나타났습니다. 예제를 참조하세요.
GitHub 사용자 jancervenka의 항공기 엔진 오류 예측 모델입니다.
GitHub 사용자 행크로어크에 의한 터보팬 엔진 성능 저하.
프로세스
아래 그림에서는 이 자습서에서 수행하는 대략적인 단계를 보여 줍니다.
학습 데이터 수집: 프로세스는 학습 데이터를 수집하여 시작합니다. 경우에 따라 데이터가 이미 수집되어 데이터베이스 또는 데이터 파일 형식으로 사용할 수 있습니다. 다른 경우, 특히 IoT 시나리오의 경우 데이터를 IoT 디바이스 및 센서에서 수집하여 클라우드에 저장해야 합니다.
터보팬 엔진 컬렉션이 없으므로 프로젝트 파일에는 NASA 디바이스 데이터를 클라우드로 보내는 간단한 디바이스 시뮬레이터가 포함되어 있다고 가정합니다.
데이터를 준비합니다. 대부분의 경우 디바이스 및 센서에서 수집된 원시 데이터에는 기계 학습을 준비해야 합니다. 이 단계에는 기계 학습이 활용할 수 있는 추가 정보를 추가하기 위한 데이터 정리, 데이터 재포맷 또는 전처리가 포함될 수 있습니다.
비행기 엔진 기계 데이터의 경우 데이터 준비에는 데이터에 대한 실제 관찰을 기반으로 샘플의 모든 데이터 요소에 대한 명시적 실패 시간 계산이 포함됩니다. 이 정보를 통해 기계 학습 알고리즘은 실제 센서 데이터 패턴과 엔진의 예상 남은 수명 시간 간의 상관 관계를 찾을 수 있습니다. 이 단계는 매우 도메인별입니다.
기계 학습 모델을 빌드합니다. 이제 준비된 데이터를 기반으로 다양한 기계 학습 알고리즘 및 매개 변수화를 실험하여 모델을 학습시키고 결과를 서로 비교할 수 있습니다.
이 경우 테스트를 위해 모델에서 계산한 예측 결과를 엔진 집합에서 관찰된 실제 결과와 비교합니다. Azure Machine Learning에서는 모델 레지스트리에서 만드는 다양한 모델 반복을 관리할 수 있습니다.
모델을 배포합니다. 성공 조건을 충족하는 모델이 있으면 배포로 이동할 수 있습니다. 여기에는 REST 호출 및 반환 분석 결과를 사용하여 데이터를 공급할 수 있는 웹 서비스 앱으로 모델을 래핑하는 작업이 포함됩니다. 그런 다음 웹 서비스 앱이 Docker 컨테이너에 패키지되어 클라우드 또는 IoT Edge 모듈로 배포될 수 있습니다. 이 예제에서는 IoT Edge에 배포하는 데 집중합니다.
모델을 유지 관리하고 구체화합니다. 모델이 배포된 후에는 작업이 수행되지 않습니다. 대부분의 경우 데이터를 계속 수집하고 주기적으로 해당 데이터를 클라우드에 업로드하려고 합니다. 그런 다음 이 데이터를 사용하여 모델을 다시 학습하고 구체화한 다음, IoT Edge에 다시 배포할 수 있습니다.
리소스 정리
이 자습서는 각 문서가 이전 문서에서 수행한 작업을 기반으로 빌드되는 집합의 일부입니다. 최종 자습서를 완료할 때까지 리소스를 정리해 주세요.
다음 단계
이 자습서는 다음 섹션으로 나뉩니다.
- 개발 머신 및 Azure 서비스를 설정합니다.
- 기계 학습 모듈에 대한 학습 데이터를 생성합니다.
- 기계 학습 모듈을 학습하고 배포합니다.
- 투명 게이트웨이 역할을 하도록 IoT Edge 디바이스를 구성합니다.
- IoT Edge 모듈을 만들고 배포합니다.
- IoT Edge 디바이스로 데이터를 보냅니다.
다음 문서를 계속 진행하여 개발 머신을 설정하고 Azure 리소스를 프로비전합니다.