この章の終わりには、サーバーレスアプリケーションで次のようなことができるようになります。
データサイエンスと機械学習は、それ自体が非常に大規模なドメインです。機械学習モデルのトレーニングのしくみの基本を説明することは、このモジュールの範囲をはるかに超えています。幸いにも、新しいモデルを作成するツールチェーンは、データについて十分理解していれば、ツールチェーンを使用して機械学習の実験が可能なほど簡略化されています。
このソリューションでは、IoT Core ルールエンジンの簡易しきい値を置き換えます。簡易しきい値はデバイスが通知する音声レベルを評価し、roomOccupancy と呼ばれる新しいブールキー値に強制的に変換します。通知されたメッセージの音声データを見ると、静かなときは値が低く、雑音があるときは高くなることがわかります。このことから、「10 より大きい」というような簡易しきい値は roomOccupancy 値を生成する出発点として適切であることがわかります (特定のケースでは、登録済みのアクティビティに対して周囲の雑音の異なるしきい値を設定する方がより適切な場合もあります)。
同様のアプローチで、機械学習ツールチェーンに、デバイスが設置されている部屋で記録されたサーモスタットデータのサンプルを提供し、「roomOccupancy が真のときデータはこのようになり、偽のときはこのようになる」というトレーニングジョブを伝えます。 トレーニングジョブはデータセットを評価し、roomOccupancy 列を対象にして、音声レベル範囲、さらには時間、HVAC 状態、温度といったその他の列に基づき、roomOccupancy 値を正確に再生成するモデルをビルドしようとします。
最初のモデルのトレーニングが完了すると、次の章で、音声レベルの簡易静的しきい値をモデルが決定した roomOccupancy の推論分類に置き換えます。
自動モデルトレーニングの新たな実験の設定を行うためには、まず Amazon SageMaker Studio をセットアップする必要があります。
SageMaker Studio のプロビジョニングが完了(完了まで少し時間がかかります)すると、次のステップでは Studio を開き、新しいプロジェクトを設定します。
プロジェクトが作成されると、[Repositories]、[Pipelines]、[Experiments] などのタブがあるプロジェクトダッシュボードが表示されます。このブラウザのタブは SageMaker Studio で開いたままにして、このページにすばやく戻れるようにしておきます。
次のタスクでは AWS IoT Analytics に戻り、新しい機械学習プロジェクトで使用するために、蓄積したサーモスタットデータをエクスポートします。
smartspace_dataset
という名前になっています)。sagemaker-project-p-somehashhere
というような名前が付いています。このような名前のバケットが複数ある場合には、SageMaker Studio プロジェクトでプロジェクトのランダムハッシュ ID を確認する必要があります。[リポジトリ] や [パイプライン] タブなどのプロジェクトの他のリソースで、ハッシュを確認できます。data/smartspace/Version/!{iotanalytics\:scheduleTime}_!{iotanalytics\:versionId}.csv
という式を使用します。
これで、SageMaker Studio に戻り、機械学習実験を開始する準備ができました。実験では、通知されたサーモスタットデータを使用します。これは IoT Analytics データセットより入力として今エクスポートされたものです。実験を設定して、既存の roomOccupancy 列を正確に予測する方法を見つけ出します。自動トレーニングジョブは関連するアルゴリズムの試行のため、データを分析します。その後、250 のトレーニングジョブを異なるハイパーパラメータで実行し、入力トレーニングデータに最も適切なものを選択します。
機械学習の実験を開始する前に、分析する部屋のサーモスタットから通知された数時間のデータを保持している必要があります。また、その数時間の間、部屋にはアクティブな時間とアクティブではない時間が混在している必要があります。自動機械学習実験で有効な結果を得るにはは、少なくとも 500 行のデータが必要です。ただし、より多くのデータがあれば、さらによい結果が得られます。先に進む前にまだ多くのデータを生成する必要がある場合は、IoT Analytics コンソールのデータセットを再実行 (先ほどの手順リストの最後のステップ) してみてください。これらの結果がプロジェクトの S3 バケットの SageMaker で利用可能になります。実験を開始する準備ができたら、以下を読み進めてください。
data/smartspace/Version/1607276270943_3b4eb6bb-8533-4ac0-b8fd-1b62ac0020a2.csv
のような IoT Analytics データセットコンテンツを見つけ、選択します。roomoccupancy
を選択します。output/smartspace
と入力し、[Use input as S3 object key prefix “output/smartspace”] を選択します。これにより、S3 バケットで新しいプレフィックスが定義され、出力ファイルで使用されるようになります。実験の実行には数時間かかります。こちらの SageMaker Studio ブラウザタブで、実験の進捗を確認できますが、タブを閉じてまた後で開いて、進捗を確認することもできます。
実験完了後に結果として得られる出力は 250 の試験で、SageMaker が最適なチューニングのジョブパラメータを見つけるために使用したものです(表示されない場合はブラウザの再表示を実行してください)。試験結果の表を並び替え、[BEST (最適)] とマークされたものを見つけます。次のマイルストーンでは、この試験をモデルエンドポイントとしてデプロイし、API としてそれを呼び出せるようにします。
roomOccupancyEndpoint
と名前を付けます([REALTIME DEPLOYMENT SETTINGS]が閉じている場合は開きます)。
これで、機械学習モデルが API エンドポイントとしてデプロイされ、Amazon SageMaker で管理されるようになりました。次章の「機械学習モデルの使用」では、API エンドポイントをサーバーレス関数で使用し、IoT Core ルールの簡易しきい値ロジックを置き換えます。これにより、モデルが生成した推論で roomOccupancy
値を決定します。
次章に進む前に、サーバーレスアプリケーションが想定どおりに設定されているかを検証できます。
想定どおりに機能している場合は、 機械学習モデルの使用 に進みましょう。
AWS IoT Kit now features direct access to
M5Stack Forum
, which is a community-driven, questions-and-answers service. Search re:Post using the
Core2 for AWS
tag to see if your question has been asked and answered. If not, ask a new question using the Core2 for AWS
tag.