4. Opportunities in the Cloud with Industrial IoT
Remote
Monitoring
Real-Time
Prediction and Action
Secure onboarding and
management of device fleets
Scalability of
Business Operations
Advanced
Automation
Optimize
Business Operations
with IT and OT convergence
6. SmartFactory in On-prem
Equipment PLC
HMI
OPC
UA
Server
MES
DataLake
Data Mart
Business Intelligence
BigData Analysis
Data Preprocessing
Data Consumer
Application
Machine Learning
OPC
UA
ETL
10. AWS IoT Greengrass
AWS IoT Greengrass
엣지(공장)환경과 AWS 환경을 연결해주며
추후 ML 모델을 실행
이번 데모에서의 역할
• AWS를 엣지 디바이스까지 원활하게 확장
• 엣지 디바이스에서 Lambda 함수, 컨테이너 환경,
ML 추론 등이 가능 (인터넷 연결되지 않아도)
• 로컬 디바이스 생성 데이터 로컬 작업 + 클라우드 상
데이터 저장/관리/ 분석 가능
• 기계 학습 모델을 기반으로 예측을 실행하며,
디바이스 데이터를 동기화 상태로 유지하고,
다른 디바이스와 안전하게 통신 가능
11. AWS IoT Core
AWS IoT Core
• 커넥티드 디바이스가 쉽고 안전하게 클라우드 애플리케이
션 및 다른 디바이스와 상호 작용할 수 있게 해주는 관리
형 클라우드 서비스
• 사용자가 정의한 비즈니스 규칙에 따라 즉시 디바이스 데
이터를 필터링 및 변환하고 이를 기반으로 운영
• AWS IoT Core에서는 다양한 AWS 서비스와 연계하여 손
쉽게 더 강력한 IoT 애플리케이션을 만들 수 있음
수집된 데이터들을 Kinesis, IoT Sitewise 서비스로 라우팅
이번 데모에서의 역할
12. Smart Factory – Data Collection Architecture
Factory
AWS IoT Core
LG전자 AIoT device
(LG 8111)
Lambda
functions
ML Model
AWS Greengrass
PLC
Edge Device
OPC UA Server
(or Modbus TCP Server)
OPC UA Client
(or Modbus TCP Client)
13. Demo Code – OPC UA
Scene#2
conti 참고
opcua_client.connect()
client.publish(topic="turck/" + topicStation,
queueFullPolicy="AllOrException",
payload=mqttMessage,
)
stationList = opcua_client.get_node(opc_nodeid).get_children()
for station in stationList:
topicStation = str(station.get_browse_name()).split(":")[1][:-1]
varList = station.get_children()
...
OPC UA server
연결
각 node들의
데이터 수집
AWS IoT Code로
데이터 전송
14. 1. Lambda 할당 2. Lambda의 lifecycle 설정 3. 구독(subscription) 생성
4. 배포(deployment)
Lambda on Greengrass
16. AWS IoT SiteWise
AWS IoT SiteWise
• AWS IoT SiteWise는 산업 장비에서 손쉽게 데이터를 대규
모로 수집, 저장, 구성할 수 있는 관리형 서비스
• 시설 전반의 운영을 모니터링하고, 일반적인 산업 성능 지
표를 신속하게 계산하며, 산업 장비 데이터를 분석하는 애
플리케이션을 구축
디바이스 및 장비의 운영 데이터를 시각화
이번 데모에서의 역할
23. Amazon Simple Storage Service
Amazon S3
• Amazon Simple Storage Service(Amazon S3)는 업계 최고
의 확장성과 데이터 가용성 및 보안과 성능을 제공하는 객
체 스토리지 서비스
• 다양한 AWS 서비스와의 연계를 통해 분석이 가능하여
Datalake로 활용 가능
• Amazon S3는 99.999999999%의 내구성을 제공하도록
설계되었으며, 전 세계 기업의 수백만 애플리케이션을 위
한 데이터를 저장
분석이 필요한 데이터들을 모아두는 DataLake
이번 데모에서의 역할
24. Amazon Kinesis Data Firehose
Amazon Kinesis
Data Firehose
• 스트리밍 데이터를 데이터 레이크, 데이터 스토어 및 분석
도구에 쉽고 안정적으로 로드
• 스트리밍 데이터를 캡처하고 변환한 후 Amazon S3,
Amazon Redshift, Amazon Elasticsearch Service
및 Splunk로 로드하여 이미 사용하고 있는 기존 BI 도구
및 대시보드를 통해 분석 가능
• Amazon Kinesis Firehose는 완전 관리형 서비스로서 데이
터 처리량에 대응하여 자동으로 확장되며 지속적인 관리
가 필요 없음
수집된 IoT 데이터들을 실시간으로 S3(DataLake)로 적재
이번 데모에서의 역할
25. AWS Glue
• 고객이 분석을 위해 손쉽게 데이터를 준비하고 로드할 수
있게 지원하는 완전관리형 ETL(추출, 변환 및 로드) 서비스
• AWS Glue가 AWS에 저장된 데이터를 가리키도록 하기만
하면, AWS Glue에서 데이터를 검색하고 관련 메타데이터(
예: 테이블 정의, 스키마)를 AWS Glue 데이터 카탈로그에
저장
• 카탈로그에 저장되면, 데이터는 즉시 검색하고 쿼리하고
ETL에서 사용할 수 있는 상태가 됨
AWS Glue
수집된 IoT 데이터를 ML 모델 훈련에 필요한 형태로 변환
이번 데모에서의 역할
26. Amazon SageMaker
• Amazon SageMaker는 모든 개발자 및 데이터 과학자가
기계 학습(ML) 모델을 빠르게 구축, 훈련 및 배포할 수 있
도록 하는 완전 관리형 서비스
• SageMaker는 기계 학습에 사용되는 모든 구성 요소를 단
일 도구 세트로 제공하여 이 문제를 해결하므로
훨씬 적은 노력과 저렴한 비용으로 모델을 더욱 빠르게 생
산할 수 있음
Amazon SageMaker
예지 정비 모델과 비전 분석 모델 구축
이번 데모에서의 역할
27. Smart Factory – Prediction Maintenance
Architecture
현재 온도, 모터속도, 진동 등
센서데이터의
수치로 보았을때
실린더가 고장날 확률은 86%입니다.
ML Model
Deploy
Factory(서울)
AWS Greengrass
Modbus-TCP
AWS Glue
(ETL)
Amazon SageMaker
(ML Training)
Amazon S3
(DataLake)
AWS IoT
ML inference
@edge
28. Demo Code – Predictive Maintenance Training
from sagemaker.estimator import Estimator
# 빌트인 알고리즘의 컨테이너 정보 가져오기
container = get_image_uri(
boto3.Session().region_name,
'xgboost’,
repo_version='1.0-1')
# Estimator 인스턴스 생성
estimator = Estimator(image_name=container,
hyperparameters=hyperparameters,
role=sagemaker.get_execution_role(),
train_instance_count=1,
train_instance_type='ml.m5.2xlarge',
output_path=output_path)
# 훈련 시작
estimator.fit({'train': train_input,
'validation': validation_input})
빌트인 알고리즘 훈련 예시
from sagemaker.xgboost.estimator import XGBoost
# Estimator 인스턴스 생성
estimator = XGBoost(entry_point='train.py',
framework_version='1.0-1',
hyperparameters=hyperparameters,
role=sagemaker.get_execution_role(),
train_instance_count=1,
train_instance_type='ml.m5.2xlarge',
output_path=output_path)
# 훈련 시작
estimator.fit({'train': train_input,
'validation': validation_input})
사용자 정의 스크립트(BYOS) 훈련 예시
29. Demo Code – Local Inference
3. 테스트 데이터 생성
4. 로컬 추론
2. 추론 코드 작성
1. 모델 복사
30. ML model on Greengrass
$ sudo tar zxvf [YOUR CERT].tar.gz -C /greengrass/
$ cd /greengrass/certs/
$ sudo wget -O root.ca.pem
https://www.amazontrust.com/repository/AmazonRootCA1.pem
$ cd /greengrass/ggc/core
$ sudo ./greengrassd start
Key 및 인증서 다운로드
ATS 루트 인증서 다운로드
Greengrass Core 시작
압축 해제
Edge Device
AWS Console
Greengrass Group 및
Core 생성
참조: https://docs.aws.amazon.com/greengrass/latest/developerguide/install-ggc.html
32. Lambda on Greengrass
1. Lambda 할당 및 설정 2. 로컬 리소스Resource 할당
3. 구독Subscription 생성
4. 배포Deployment
33. Smart Factory – Vision Analytics Architecture
현재 컨베이어 벨트 상의
제품 카테고리는 “oooo” 입니다.
ML Model
Deploy
Factory(서울)
AWS Greengrass
Modbus-TCP
AWS Glue
(ETL)
Amazon SageMaker
(ML Training)
Amazon S3
(DataLake)
AWS IoT
ML inference
@edge
34. Demo Code – Image Classification Training
from sagemaker.tensorflow import TensorFlow
# 빌트인 알고리즘의 컨테이너 정보 가져오기
estimator = TensorFlow(
entry_point='image_cls.py',
source_dir='src_dir',
role=role,
train_instance_count=3,
train_instance_type='ml.p3.2xlarge',
train_use_spot_instances=True,
train_volume_size=400,
train_max_run=12*60*60,
train_max_wait=12*60*60,
framework_version='1.14.0',
py_version='py2',
hyperparameters=hyperparameters)
# 훈련 시작
estimator.fit(inputs = {'training': inputs})
사용자 정의 스크립트(BYOS) 훈련 예시 SageMaker의 Training 방식
Instance
Trainingjob
Instance
Trainingjob
Instance
Trainingjob
/src_dir
|- image_cls.py
|- …
Instance
Notebook
ml.p3.xlarge
(GPU)
ml.p3.xlarge
(GPU)
ml.p3.xlarge
(GPU)
ml.t2.medium
(no GPU)
src_dir src_dir src_dir
자동으로
학습 인스턴스로 전송
35. Demo Code – Image Classification Training
source_dir 디렉토리 예시
모델 학습 스크립트
모델학습과 연계된
python 코드
pretrained 체크포인트 파일
TFLite 변환 (image_classifier.py)
# SageMaker 훈련 컨테이너 환경 변수 설정
parser.add_argument('--dataset_dir', type=str,
default=os.environ.get('SM_CHANNEL_TRAINING'))
parser.add_argument('--hosts', type=list,
default=json.loads(os.environ.get('SM_HOSTS')))
...
# 훈련 스크립트
...
# TFLite 변환
converter = tf.lite.TFLiteConverter.from_frozen_graph(
args.train_dir + '/inference_graph_frozen.pb',
['input'], ['MobilenetV1/Predictions/Reshape_1'])
tflite_model = converter.convert()
open(args.train_dir + "/mobilenetv1_model.tflite",
"wb").write(tflite_model)
36. Demo Code – Local Inference
model_filepath='./model_result/inference_graph_frozen.pb'
model = iu.MobileNetInference(model_filepath, labels)
...
model.predict(test_image, img_size=224)
모델 성능 평가
Local Inferfence
[ Confusion Matrix ] [ ROC Curve ] [ Precision-Recall Curve ]
* ROC : Receiver Operating