AWS IoT Greengrass Version 1이(가) 2023년 6월 30일에 수명 연장 단계에 들어갔습니다. AWS IoT Greengrass V1 관리형 정책에 대한 자세한 정보는 섹션을 참조하세요. 이 날짜 이후에는 AWS IoT Greengrass V1에서 기능, 개선 사항, 버그 수정 또는 보안 패치를 제공하는 업데이트를 릴리스하지 않습니다. AWS IoT Greengrass V1에서 실행되는 장치는 중단되지 않으며 계속 작동하고 클라우드에 연결됩니다. 중대한 새 기능과 추가 플랫폼에 대한 지원이 추가되는 AWS IoT Greengrass Version 2(으)로 마이그레이션하는 것이 좋습니다.
ML 이미지 분류 커넥터
ML 이미지 분류 커넥터는 AWS IoT Greengrass에서 실행되는 ML(기계 학습) 추론 서비스를 제공합니다. 이 로컬 추론 서비스는 SageMaker 이미지 분류 알고리즘이 훈련한 모델을 사용해 이미지를 분류합니다.
사용자 정의 Lambda 함수는 AWS IoT Greengrass 기계 학습 SDK를 사용하여 로컬 추론 서비스에 추론 요청을 제출합니다. 이 서비스를 로컬에서 추론을 실행하고 입력 이미지가 특정 범주에 속할 가능성을 반환합니다.
AWS IoT Greengrass는 여러 플랫폼에서 사용할 수 있는 이 커넥터에 대해 다음 버전을 제공합니다.
- Version 2
-
커넥터 |
설명 및 ARN |
ML 이미지 분류: Aarch64 JTX2 |
NVIDIA Jetson TX2용 이미지 분류 추론 서비스입니다. GPU 가속화를 지원합니다.
ARN: arn:aws:greengrass:region ::/connectors/ImageClassificationAarch64JTX2/versions/2 |
ML 이미지 분류 x86_64 |
x86_64 플랫폼용 이미지 분류 추론 서비스입니다.
ARN: arn:aws:greengrass:region ::/connectors/ImageClassificationx86-64/versions/2 |
ML 이미지 분류 ARMv7 |
ARMv7 플랫폼용 이미지 분류 추론 서비스입니다.
ARN: arn:aws:greengrass:region ::/connectors/ImageClassificationARMv7/versions/2 |
- Version 1
-
커넥터 |
설명 및 ARN |
ML 이미지 분류: Aarch64 JTX2 |
NVIDIA Jetson TX2용 이미지 분류 추론 서비스입니다. GPU 가속화를 지원합니다.
ARN: arn:aws:greengrass:region ::/connectors/ImageClassificationAarch64JTX2/versions/1 |
ML 이미지 분류 x86_64 |
x86_64 플랫폼용 이미지 분류 추론 서비스입니다.
ARN: arn:aws:greengrass:region ::/connectors/ImageClassificationx86-64/versions/1 |
ML 이미지 분류 Armv7 |
ARMv7 플랫폼용 이미지 분류 추론 서비스입니다.
ARN: arn:aws:greengrass:region ::/connectors/ImageClassificationARMv7/versions/1 |
버전 변경 사항에 대한 자세한 내용은 Changelog를 참조하십시오.
요구 사항
이러한 커넥터에는 다음 요구 사항이 있습니다.
- Version 2
-
-
AWS IoT Greengrass 코어 소프트웨어 v1.9.3 이상.
-
코어 장치에 설치되고 PATH 환경 변수에 추가된 Python 버전 3.7 또는 3.8입니다.
Python 3.8을 사용하려면 다음 명령을 실행하여 기본 Python 3.7 설치 폴더에서 설치된 Python 3.8 바이너리로 연결되는 심볼릭 링크를 만드십시오.
sudo ln -s path-to-python-3.8
/python3.8 /usr/bin/python3.7
이렇게 하면 AWS IoT Greengrass에 대한 Python 요구 사항을 충족하도록 장치가 구성됩니다.
-
코어 장치에 설치된 Apache MXNet 프레임워크에 대한 종속성. 자세한 내용은 AWS IoT Greengrass 코어에 MXNet 종속성 설치 단원을 참조하십시오.
-
SageMaker 모델 소스를 참조하는 Greengrass 그룹의 ML 리소스입니다. 이 모델은 SageMaker 이미지 분류 알고리즘이 학습해야 합니다. 자세한 내용은 Amazon SageMaker 개발자 안내서의 이미지 분류 알고리즘을 참조하세요.
-
ML 피드백 커넥터를 Greengrass 그룹에 추가 및 구성해야 합니다. 이 파라미터는 이 커넥터를 사용하여 모델 입력 데이터를 업로드하고 예측을 MQTT 주제에 게시하려는 경우에만 필요합니다.
-
다음 예제 IAM 정책에 나오는 것처럼 Greengrass 그룹 역할이 대상 훈련 작업의 sagemaker:DescribeTrainingJob
작업을 허용하도록 구성되었습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sagemaker:DescribeTrainingJob"
],
"Resource": "arn:aws:sagemaker:region
:account-id
:training-job:training-job-name
"
}
]
}
그룹 역할 요구 사항의 경우, 필수 권한을 부여하도록 역할을 구성하고 역할이 그룹에 추가되었는지 확인해야 합니다. 자세한 내용은 Greengrass 그룹 역할 관리(콘솔) 또는 Greengrass 그룹 역할 관리(CLI)을 참조하세요.
리소스에 대한 세부적 또는 조건부 액세스 권한을 부여할 수 있습니다(예: 와일드카드 * 이름 지정 스키마를 통해). 앞으로 대상 훈련 작업을 변경하는 경우 필요에 따라 그룹 역할을 업데이트하십시오.
-
이 커넥터와 상호 작용하려면 AWS IoT Greengrass 기계 학습 SDK v1.1.0이 필요합니다.
- Version 1
-
-
AWS IoT Greengrass 코어 소프트웨어 v1.7 이상.
-
코어 장치에 설치되고 PATH 환경 변수에 추가된 Python 버전 2.7입니다.
-
코어 장치에 설치된 Apache MXNet 프레임워크에 대한 종속성. 자세한 내용은 AWS IoT Greengrass 코어에 MXNet 종속성 설치 단원을 참조하십시오.
-
SageMaker 모델 소스를 참조하는 Greengrass 그룹의 ML 리소스입니다. 이 모델은 SageMaker 이미지 분류 알고리즘이 학습해야 합니다. 자세한 내용은 Amazon SageMaker 개발자 안내서의 이미지 분류 알고리즘을 참조하세요.
-
다음 예제 IAM 정책에 나오는 것처럼 Greengrass 그룹 역할이 대상 훈련 작업의 sagemaker:DescribeTrainingJob
작업을 허용하도록 구성되었습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sagemaker:DescribeTrainingJob"
],
"Resource": "arn:aws:sagemaker:region
:account-id
:training-job:training-job-name
"
}
]
}
그룹 역할 요구 사항의 경우, 필수 권한을 부여하도록 역할을 구성하고 역할이 그룹에 추가되었는지 확인해야 합니다. 자세한 내용은 Greengrass 그룹 역할 관리(콘솔) 또는 Greengrass 그룹 역할 관리(CLI)을 참조하세요.
리소스에 대한 세부적 또는 조건부 액세스 권한을 부여할 수 있습니다(예: 와일드카드 * 이름 지정 스키마를 통해). 앞으로 대상 훈련 작업을 변경하는 경우 필요에 따라 그룹 역할을 업데이트하십시오.
-
이 커넥터와 상호 작용하려면 AWS IoT Greengrass 기계 학습 SDK v1.0.0 이상이 필요합니다.
커넥터 파라미터
이러한 커넥터는 다음 파라미터를 제공합니다.
- Version 2
-
MLModelDestinationPath
-
Lambda 환경 내 ML 리소스의 절대 로컬 경로입니다. ML 리소스에 대해 지정된 대상 경로입니다.
콘솔에서 ML 리소스를 생성한 경우 이 경로는 로컬 경로입니다.
AWS IoT 콘솔의 표시 이름: 모델 대상 경로
필수: true
유형: string
유효한 패턴: .+
MLModelResourceId
-
소스 모델을 참조하는 ML 리소스의 ID입니다.
AWS IoT 콘솔의 표시 이름: SageMaker 작업 ARN 리소스
필수: true
유형: string
유효한 패턴: [a-zA-Z0-9:_-]+
MLModelSageMakerJobArn
-
SageMaker 모델 소스를 나타내는 SageMaker 훈련 작업의 ARN입니다. 이 모델은 SageMaker 이미지 분류 알고리즘이 훈련 받아야 합니다.
AWS IoT 콘솔의 표시 이름: SageMaker 작업 ARN
필수: true
유형: string
유효한 패턴: ^arn:aws:sagemaker:[a-zA-Z0-9-]+:[0-9]+:training-job/[a-zA-Z0-9][a-zA-Z0-9-]+$
LocalInferenceServiceName
-
로컬 추론 서비스의 이름입니다. 사용자 정의 Lambda 함수가 AWS IoT Greengrass 기계 학습 SDK의 invoke_inference_service
함수에 이름을 전달해 이 서비스를 간접 호출합니다. 예제는 사용 예에서 확인하세요.
AWS IoT 콘솔의 표시 이름: 로컬 추론 서비스 이름
필수: true
유형: string
유효한 패턴: [a-zA-Z0-9][a-zA-Z0-9-]{1,62}
LocalInferenceServiceTimeoutSeconds
-
추론 요청이 종료되기 전까지의 시간(초)입니다. 최소값은 1입니다.
AWS IoT 콘솔의 표시 이름: 제한 시간(초)
필수: true
유형: string
유효한 패턴: [1-9][0-9]*
LocalInferenceServiceMemoryLimitKB
-
서비스에서 액세스할 수 있는 메모리의 양(KB)입니다. 최소값은 1입니다.
AWS IoT 콘솔의 표시 이름: 메모리 제한(KB)
필수: true
유형: string
유효한 패턴: [1-9][0-9]*
GPUAcceleration
-
CPU 또는 GPU(가속) 컴퓨팅 컨텍스트. 이 속성은 ML 이미지 분류 Aarch64 JTX2 커넥터에만 적용됩니다.
AWS IoT 콘솔의 표시 이름: GPU 가속화
필수: true
유형: string
유효한 값: CPU
또는 GPU
MLFeedbackConnectorConfigId
-
모델 입력 데이터를 업로드할 때 사용할 피드백 구성의 ID입니다. ML 피드백 커넥터에 정의된 피드백 구성의 ID와 일치해야 합니다.
이 파라미터는 ML 피드백 커넥터를 사용하여 모델 입력 데이터를 업로드하고 예측을 MQTT 주제에 게시하려는 경우에만 필요합니다.
AWS IoT 콘솔의 표시 이름: ML 피드백 커넥터 구성 ID
필수: false
유형: string
유효한 패턴: ^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$
- Version 1
-
MLModelDestinationPath
-
Lambda 환경 내 ML 리소스의 절대 로컬 경로입니다. ML 리소스에 대해 지정된 대상 경로입니다.
콘솔에서 ML 리소스를 생성한 경우 이 경로는 로컬 경로입니다.
AWS IoT 콘솔의 표시 이름: 모델 대상 경로
필수: true
유형: string
유효한 패턴: .+
MLModelResourceId
-
소스 모델을 참조하는 ML 리소스의 ID입니다.
AWS IoT 콘솔의 표시 이름: SageMaker 작업 ARN 리소스
필수: true
유형: string
유효한 패턴: [a-zA-Z0-9:_-]+
MLModelSageMakerJobArn
-
SageMaker 모델 소스를 나타내는 SageMaker 훈련 작업의 ARN입니다. 이 모델은 SageMaker 이미지 분류 알고리즘이 훈련 받아야 합니다.
AWS IoT 콘솔의 표시 이름: SageMaker 작업 ARN
필수: true
유형: string
유효한 패턴: ^arn:aws:sagemaker:[a-zA-Z0-9-]+:[0-9]+:training-job/[a-zA-Z0-9][a-zA-Z0-9-]+$
LocalInferenceServiceName
-
로컬 추론 서비스의 이름입니다. 사용자 정의 Lambda 함수가 AWS IoT Greengrass 기계 학습 SDK의 invoke_inference_service
함수에 이름을 전달해 이 서비스를 간접 호출합니다. 예제는 사용 예에서 확인하세요.
AWS IoT 콘솔의 표시 이름: 로컬 추론 서비스 이름
필수: true
유형: string
유효한 패턴: [a-zA-Z0-9][a-zA-Z0-9-]{1,62}
LocalInferenceServiceTimeoutSeconds
-
추론 요청이 종료되기 전까지의 시간(초)입니다. 최소값은 1입니다.
AWS IoT 콘솔의 표시 이름: 제한 시간(초)
필수: true
유형: string
유효한 패턴: [1-9][0-9]*
LocalInferenceServiceMemoryLimitKB
-
서비스에서 액세스할 수 있는 메모리의 양(KB)입니다. 최소값은 1입니다.
AWS IoT 콘솔의 표시 이름: 메모리 제한(KB)
필수: true
유형: string
유효한 패턴: [1-9][0-9]*
GPUAcceleration
-
CPU 또는 GPU(가속) 컴퓨팅 컨텍스트. 이 속성은 ML 이미지 분류 Aarch64 JTX2 커넥터에만 적용됩니다.
AWS IoT 콘솔의 표시 이름: GPU 가속화
필수: true
유형: string
유효한 값: CPU
또는 GPU
커넥터 만들기 예(AWS CLI)
다음 CLI 명령은 ML 이미지 분류 커넥터가 포함된 초기 버전을 사용하여 ConnectorDefinition
를 생성합니다.
- 예: CPU 인스턴스
-
이 예제에서는 ML 이미지 분류 ARMv7l 커넥터의 인스턴스를 생성합니다.
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
"Connectors": [
{
"Id": "MyImageClassificationConnector",
"ConnectorArn": "arn:aws:greengrass:region
::/connectors/ImageClassificationARMv7/versions/2",
"Parameters": {
"MLModelDestinationPath": "/path-to-model",
"MLModelResourceId": "my-ml-resource",
"MLModelSageMakerJobArn": "arn:aws:sagemaker:us-west-2:123456789012:training-job:MyImageClassifier",
"LocalInferenceServiceName": "imageClassification",
"LocalInferenceServiceTimeoutSeconds": "10",
"LocalInferenceServiceMemoryLimitKB": "500000",
"MLFeedbackConnectorConfigId": "MyConfig0"
}
}
]
}'
- 예: GPU 인스턴스
-
이 예제에서는 ML 이미지 분류 Aarch64 JTX2 커넥터의 인스턴스를 생성하며, 이 커넥터는 NVIDIA Jetson TX2 보드에서 GPU 가속화를 지원합니다.
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
"Connectors": [
{
"Id": "MyImageClassificationConnector",
"ConnectorArn": "arn:aws:greengrass:region
::/connectors/ImageClassificationAarch64JTX2/versions/2",
"Parameters": {
"MLModelDestinationPath": "/path-to-model",
"MLModelResourceId": "my-ml-resource",
"MLModelSageMakerJobArn": "arn:aws:sagemaker:us-west-2:123456789012:training-job:MyImageClassifier",
"LocalInferenceServiceName": "imageClassification",
"LocalInferenceServiceTimeoutSeconds": "10",
"LocalInferenceServiceMemoryLimitKB": "500000",
"GPUAcceleration": "GPU",
"MLFeedbackConnectorConfigId": "MyConfig0"
}
}
]
}'
이 커넥터의 Lambda 함수에는 수명이 긴 수명 주기가 있습니다.
AWS IoT Greengrass 콘솔에서는 그룹의 커넥터 페이지에서 커넥터를 추가할 수 있습니다. 자세한 내용은 Greengrass 커넥터 시작하기(콘솔) 단원을 참조하십시오.
이러한 커넥터는 입력으로 이미지 파일을 사용합니다. 입력 이미지 파일은 jpeg
또는 png
형식이어야 합니다. 자세한 내용은 사용 예 단원을 참조하십시오.
이러한 커넥터는 MQTT 메시지를 입력 데이터로 받아들이지 않습니다.
출력 데이터
이러한 커넥터는 입력 이미지에서 감지된 객체의 형식 지정된 예측을 반환합니다.
[0.3,0.1,0.04,...]
예측에는 모델 교육 도중 교육 데이터 세트에 사용된 범주와 일치하는 값의 목록이 포함됩니다. 모든 값은 이미지가 해당 범주에 속할 확률을 나타냅니다. 확률이 가장 높은 범주가 지배적 예측입니다.
이 커넥터는 MQTT 메시지를 출력 데이터로 게시하지 않습니다.
사용 예
다음 예제 Lambda 함수는 AWS IoT Greengrass 기계 학습 SDK를 사용하여 ML 이미지 분류 커넥터와 상호 작용합니다.
이 예제에서는 SDK 클라이언트를 초기화하고 SDK의 invoke_inference_service
함수를 호출해 로컬 추론 서비스를 간접 호출합니다. 그러면 알고리즘 유형, 서비스 이름, 이미지 유형 및 이미지 콘텐츠를 전달합니다. 그런 다음 이 예제에서는 서비스 응답을 구문 분석해 가능성 결과(예측)를 얻습니다.
- Python 3.7
-
import logging
from threading import Timer
import numpy as np
import greengrass_machine_learning_sdk as ml
# We assume the inference input image is provided as a local file
# to this inference client Lambda function.
with open('/test_img/test.jpg', 'rb') as f:
content = bytearray(f.read())
client = ml.client('inference')
def infer():
logging.info('invoking Greengrass ML Inference service')
try:
resp = client.invoke_inference_service(
AlgoType='image-classification',
ServiceName='imageClassification',
ContentType='image/jpeg',
Body=content
)
except ml.GreengrassInferenceException as e:
logging.info('inference exception {}("{}")'.format(e.__class__.__name__, e))
return
except ml.GreengrassDependencyException as e:
logging.info('dependency exception {}("{}")'.format(e.__class__.__name__, e))
return
logging.info('resp: {}'.format(resp))
predictions = resp['Body'].read().decode("utf-8")
logging.info('predictions: {}'.format(predictions))
# The connector output is in the format: [0.3,0.1,0.04,...]
# Remove the '[' and ']' at the beginning and end.
predictions = predictions[1:-1]
count = len(predictions.split(','))
predictions_arr = np.fromstring(predictions, count=count, sep=',')
# Perform business logic that relies on the predictions_arr, which is an array
# of probabilities.
# Schedule the infer() function to run again in one second.
Timer(1, infer).start()
return
infer()
def function_handler(event, context):
return
- Python 2.7
-
import logging
from threading import Timer
import numpy
import greengrass_machine_learning_sdk as gg_ml
# The inference input image.
with open("/test_img/test.jpg", "rb") as f:
content = f.read()
client = gg_ml.client("inference")
def infer():
logging.info("Invoking Greengrass ML Inference service")
try:
resp = client.invoke_inference_service(
AlgoType="image-classification",
ServiceName="imageClassification",
ContentType="image/jpeg",
Body=content,
)
except gg_ml.GreengrassInferenceException as e:
logging.info('Inference exception %s("%s")', e.__class__.__name__, e)
return
except gg_ml.GreengrassDependencyException as e:
logging.info('Dependency exception %s("%s")', e.__class__.__name__, e)
return
logging.info("Response: %s", resp)
predictions = resp["Body"].read()
logging.info("Predictions: %s", predictions)
# The connector output is in the format: [0.3,0.1,0.04,...]
# Remove the '[' and ']' at the beginning and end.
predictions = predictions[1:-1]
predictions_arr = numpy.fromstring(predictions, sep=",")
logging.info("Split into %s predictions.", len(predictions_arr))
# Perform business logic that relies on predictions_arr, which is an array
# of probabilities.
# Schedule the infer() function to run again in one second.
Timer(1, infer).start()
infer()
# In this example, the required AWS Lambda handler is never called.
def function_handler(event, context):
return
AWS IoT Greengrass 기계 학습 SDK의 invoke_inference_service
함수는 다음 인수를 받습니다.
인수 |
설명 |
AlgoType
|
추론에 사용할 알고리즘 유형의 이름입니다. 현재 image-classification 만 지원됩니다.
필수: true
유형: string
유효값: image-classification |
ServiceName
|
로컬 추론 서비스의 이름입니다. 커넥터를 구성할 때 LocalInferenceServiceName 파라미터에 대해 지정한 이름을 사용합니다.
필수: true
유형: string |
ContentType
|
입력 이미지의 mime 유형입니다.
필수: true
유형: string
유효값: image/jpeg, image/png |
Body
|
입력 이미지 파일의 콘텐츠입니다.
필수: true
유형: binary |
AWS IoT Greengrass 코어에 MXNet 종속성 설치
ML 이미지 분류 커넥터를 사용하려면 코어 장치에 Apache MXNet 프레임워크에 대한 종속성을 설치해야 합니다. 커넥터는 이 프레임워크를 사용해 ML 모델을 제공합니다.
이러한 커넥터는 미리 컴파일된 MXNet 라이브러리와 번들로 제공되므로, 코어 장치에 MXNet 프레임워크를 설치할 필요가 없습니다.
AWS IoT Greengrass에서는 다음 일반 플랫폼 및 장치에 대한 종속성 설치를 위한(또는 해당 항목 설치 시 참조용으로 사용할) 스크립트를 제공합니다. 다른 플랫폼 또는 장치를 사용하는 경우 MXNet 설명서로 구성을 확인하십시오.
MXNet 종속성 설치 전에 필요한 시스템 라이브러리(지정된 최소 버전)가 장치에 있는지 확인합니다.
- NVIDIA Jetson TX2
-
-
CUDA Toolkit 9.0 및 cuDNN 7.0을 설치합니다. 시작하기 자습서에서 다른 장치 설정의 지침을 따르십시오.
-
커넥터가 커뮤니티에서 유지 관리하는 오픈 소프트웨어를 설치할 수 있도록 범용 리포지토리를 활성화합니다. 자세한 내용은 Ubuntu 설명서의 리포지토리/Ubuntu를 참조하십시오.
-
/etc/apt/sources.list
파일을 엽니다.
-
다음 행의 주석 처리를 해제하십시오.
deb http://ports.ubuntu.com/ubuntu-ports/ xenial universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial universe
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
-
다음 설치 스크립트의 사본을 코어 장치에 nvidiajtx2.sh
파일로 저장합니다.
Python 3.7Python 2.7
- Python 3.7
#!/bin/bash
set -e
echo "Installing dependencies on the system..."
echo 'Assuming that universe repos are enabled and checking dependencies...'
apt-get -y update
apt-get -y dist-upgrade
apt-get install -y liblapack3 libopenblas-dev liblapack-dev libatlas-base-dev
apt-get install -y python3.7 python3.7-dev
python3.7 -m pip install --upgrade pip
python3.7 -m pip install numpy==1.15.0
python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
echo 'Dependency installation/upgrade complete.'
이 스크립트를 사용하여 OpenCV가 성공적으로 설치되지 않을 경우 소스로부터 빌드를 시도할 수 있습니다. 자세한 내용은 OpenCV 설명서의 Linux에서 설치를 참조하거나 현재 플랫폼의 다른 온라인 리소스를 참조하십시오.
- Python 2.7
#!/bin/bash
set -e
echo "Installing dependencies on the system..."
echo 'Assuming that universe repos are enabled and checking dependencies...'
apt-get -y update
apt-get -y dist-upgrade
apt-get install -y liblapack3 libopenblas-dev liblapack-dev libatlas-base-dev python-dev
echo 'Install latest pip...'
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
rm get-pip.py
pip install numpy==1.15.0 scipy
echo 'Dependency installation/upgrade complete.'
-
파일을 저장한 디렉터리에서 다음 명령을 실행합니다.
sudo nvidiajtx2.sh
- x86_64 (Ubuntu or Amazon Linux)
-
-
다음 설치 스크립트의 사본을 코어 장치에 x86_64.sh
파일로 저장합니다.
Python 3.7Python 2.7
- Python 3.7
#!/bin/bash
set -e
echo "Installing dependencies on the system..."
release=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
if [ "$release" == '"Ubuntu"' ]; then
# Ubuntu. Supports EC2 and DeepLens. DeepLens has all the dependencies installed, so
# this is mostly to prepare dependencies on Ubuntu EC2 instance.
apt-get -y update
apt-get -y dist-upgrade
apt-get install -y libgfortran3 libsm6 libxext6 libxrender1
apt-get install -y python3.7 python3.7-dev
elif [ "$release" == '"Amazon Linux"' ]; then
# Amazon Linux. Expect python to be installed already
yum -y update
yum -y upgrade
yum install -y compat-gcc-48-libgfortran libSM libXrender libXext
else
echo "OS Release not supported: $release"
exit 1
fi
python3.7 -m pip install --upgrade pip
python3.7 -m pip install numpy==1.15.0
python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
echo 'Dependency installation/upgrade complete.'
이 스크립트를 사용하여 OpenCV가 성공적으로 설치되지 않을 경우 소스로부터 빌드를 시도할 수 있습니다. 자세한 내용은 OpenCV 설명서의 Linux에서 설치를 참조하거나 현재 플랫폼의 다른 온라인 리소스를 참조하십시오.
- Python 2.7
#!/bin/bash
set -e
echo "Installing dependencies on the system..."
release=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
if [ "$release" == '"Ubuntu"' ]; then
# Ubuntu. Supports EC2 and DeepLens. DeepLens has all the dependencies installed, so
# this is mostly to prepare dependencies on Ubuntu EC2 instance.
apt-get -y update
apt-get -y dist-upgrade
apt-get install -y libgfortran3 libsm6 libxext6 libxrender1 python-dev python-pip
elif [ "$release" == '"Amazon Linux"' ]; then
# Amazon Linux. Expect python to be installed already
yum -y update
yum -y upgrade
yum install -y compat-gcc-48-libgfortran libSM libXrender libXext python-pip
else
echo "OS Release not supported: $release"
exit 1
fi
pip install numpy==1.15.0 scipy opencv-python
echo 'Dependency installation/upgrade complete.'
-
파일을 저장한 디렉터리에서 다음 명령을 실행합니다.
sudo x86_64.sh
- Armv7 (Raspberry Pi)
-
-
다음 설치 스크립트의 사본을 코어 장치에 armv7l.sh
파일로 저장합니다.
Python 3.7Python 2.7
- Python 3.7
#!/bin/bash
set -e
echo "Installing dependencies on the system..."
apt-get update
apt-get -y upgrade
apt-get install -y liblapack3 libopenblas-dev liblapack-dev
apt-get install -y python3.7 python3.7-dev
python3.7 -m pip install --upgrade pip
python3.7 -m pip install numpy==1.15.0
python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
echo 'Dependency installation/upgrade complete.'
이 스크립트를 사용하여 OpenCV가 성공적으로 설치되지 않을 경우 소스로부터 빌드를 시도할 수 있습니다. 자세한 내용은 OpenCV 설명서의 Linux에서 설치를 참조하거나 현재 플랫폼의 다른 온라인 리소스를 참조하십시오.
- Python 2.7
#!/bin/bash
set -e
echo "Installing dependencies on the system..."
apt-get update
apt-get -y upgrade
apt-get install -y liblapack3 libopenblas-dev liblapack-dev python-dev
# python-opencv depends on python-numpy. The latest version in the APT repository is python-numpy-1.8.2
# This script installs python-numpy first so that python-opencv can be installed, and then install the latest
# numpy-1.15.x with pip
apt-get install -y python-numpy python-opencv
dpkg --remove --force-depends python-numpy
echo 'Install latest pip...'
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
rm get-pip.py
pip install --upgrade numpy==1.15.0 picamera scipy
echo 'Dependency installation/upgrade complete.'
-
파일을 저장한 디렉터리에서 다음 명령을 실행합니다.
sudo bash armv7l.sh
Raspberry Pi에서는 pip
를 사용한 기계 학습 종속성 설치가 메모리 집약적 작업이므로 장치가 메모리 부족으로 응답하지 않게 될 수 있습니다. 차선책으로서 스왑 크기를 일시적으로 늘릴 수 있습니다.
/etc/dphys-swapfile
에서는 CONF_SWAPSIZE
변수의 값을 늘리고 다음 명령을 실행해 dphys-swapfile
을 재시작합니다.
/etc/init.d/dphys-swapfile restart
로깅 및 문제 해결
그룹 설정에 따라 이벤트 및 오류 로그는 CloudWatch 로그, 로컬 파일 시스템 또는 둘 모두에 기록됩니다. 이 커넥터의 로그는 접두사 LocalInferenceServiceName
을 사용합니다. 커넥터가 예기치 않은 방식으로 동작할 경우 커넥터의 로그를 확인합니다. 일반적으로 이러한 로그에는 누락된 ML 라이브러리 종속성 또는 커넥터 시작 실패 원인과 같은 유용한 디버깅 정보가 포함됩니다.
AWS IoT Greengrass 그룹이 로컬로 로그를 기록하도록 구성된 경우 커넥터는 로그 파일을 greengrass-root
/ggc/var/log/user/region
/aws/
에 기록합니다. Greengrass 로깅에 대한 자세한 내용은 AWS IoT Greengrass 로그를 사용하여 모니터링 섹션을 참조하세요.
다음 정보를 사용하면 ML 이미지 분류 커넥터의 문제 해결에 도움이 됩니다.
필수 시스템 라이브러리
다음 탭에는 각 ML 이미지 분류 커넥터에 필요한 시스템 라이브러리가 나열되어 있습니다.
- ML Image Classification Aarch64 JTX2
-
라이브러리 |
최소 버전 |
ld-linux-aarch64.so.1 | GLIBC_2.17 |
libc.so.6 | GLIBC_2.17 |
libcublas.so.9.0 | 해당 사항 없음 |
libcudart.so.9.0 | 해당 사항 없음 |
libcudnn.so.7 | 해당 사항 없음 |
libcufft.so.9.0 | 해당 사항 없음 |
libcurand.so.9.0 | 해당 사항 없음 |
libcusolver.so.9.0 | 해당 사항 없음 |
libgcc_s.so.1 | GCC_4.2.0 |
libgomp.so.1 | GOMP_4.0, OMP_1.0 |
libm.so.6 | GLIBC_2.23 |
libpthread.so.0 | GLIBC_2.17 |
librt.so.1 | GLIBC_2.17 |
libstdc++.so.6 | GLIBCXX_3.4.21, CXXABI_1.3.8 |
- ML Image Classification x86_64
-
라이브러리 |
최소 버전 |
ld-linux-x86-64.so.2 | GCC_4.0.0 |
libc.so.6 | GLIBC_2.4 |
libgfortran.so.3 | GFORTRAN_1.0 |
libm.so.6 | GLIBC_2.23 |
libpthread.so.0 | GLIBC_2.2.5 |
librt.so.1 | GLIBC_2.2.5 |
libstdc++.so.6 | CXXABI_1.3.8, GLIBCXX_3.4.21 |
- ML Image Classification Armv7
-
라이브러리 |
최소 버전 |
ld-linux-armhf.so.3 | GLIBC_2.4 |
libc.so.6 | GLIBC_2.7 |
libgcc_s.so.1 | GCC_4.0.0 |
libgfortran.so.3 | GFORTRAN_1.0 |
libm.so.6 | GLIBC_2.4 |
libpthread.so.0 | GLIBC_2.4 |
librt.so.1 | GLIBC_2.4 |
libstdc++.so.6 | CXXABI_1.3.8, CXXABI_ARM_1.3.3, GLIBCXX_3.4.20 |
문제
증상 |
Solution |
Raspberry Pi에서는 다음 오류 메시지가 기록되며 카메라를 사용하지 않습니다. Failed to initialize libdc1394
|
드라이버를 비활성화하려면 다음 명령을 실행합니다.
sudo ln /dev/null /dev/raw1394
이 작업은 임시적이며 심볼 링크는 재부팅 이후 사라집니다. 재부팅 링크 자동 생성 방법을 알아보려면 OS 배포 매뉴얼을 참조하십시오.
|
라이선스
ML 이미지 분류 커넥터에는 다음 타사 소프트웨어/라이선스가 포함되어 있습니다.
Intel OpenMP Runtime Library 라이선스. Intel® OpenMP* 런타임은 Intel® Parallel Studio XE Suite 제품에 포함된 상용(COM) 라이선스와 BSD 오픈 소스(OSS) 라이선스 두 가지 방식으로 라이선스를 제공합니다.
이 커넥터는 Greengrass 코어 소프트웨어 라이선스 계약에 따라 릴리스됩니다.
Changelog
다음 표에서는 의 각 릴리스에서 변경된 중요 사항에 대해 설명합니다.
버전 |
변경 |
2 |
ML 피드백 커넥터를 사용하여 모델 입력 데이터를 업로드하고, 예측을 MQTT 주제에 게시하고, 지표를 Amazon CloudWatch에 게시할 수 있도록 지원하는 MLFeedbackConnectorConfigId 파라미터를 추가했습니다.
|
1 |
최초 릴리스.
|
Greengrass 그룹은 한 번에 하나의 커넥터 버전만 포함할 수 있습니다. 커넥터 버전 업그레이드에 대한 자세한 내용은 커넥터 버전 업그레이드을 참조하십시오.
다음 사항도 참조하세요.