「MATLABとAmazon SageMakerによる機械学習」

「MATLABとAmazon SageMakerを活用した機械学習の最新トピック」

この投稿は、MathWorksのBrad Duncan、Rachel Johnson、Richard Alcockとの共同執筆です。

MATLABは、データ処理、並列計算、自動化、シミュレーション、機械学習、人工知能など、さまざまなアプリケーションで人気のあるプログラミングツールです。自動車、航空宇宙、通信、製造など、多くの産業で広く使用されています。近年、MathWorksは、特にAmazon Web Services(AWS)上で、クラウドへの多くの製品提供を行っています。MathWorksのクラウド製品の詳細については、クラウド上のMATLABとSimulinkまたはMathworksにメールをご覧ください。

この投稿では、MATLABの機械学習機能をAmazon SageMakerに統合し、次のようないくつかの重要な利点を提供します:

  • 計算リソース:SageMakerが提供する高パフォーマンスなコンピューティング環境を使用することで、機械学習の学習を高速化できます。
  • コラボレーション:MATLABとSageMakerは、協力して機械学習モデルの構築、テスト、展開に効果的に協力できる堅牢なプラットフォームを提供します。
  • デプロイとアクセシビリティ:モデルはSageMakerのリアルタイムエンドポイントとしてデプロイできるため、他のアプリケーションがストリーミングデータを処理するためにすぐに利用できます。

この投稿では、MATLABの機械学習モデルをSageMakerの学習ジョブとしてトレーニングし、モデルをSageMakerのリアルタイムエンドポイントとしてデプロイして、ライブストリーミングデータを処理する方法を説明します。

これを行うために、ライブセンサーデータをストリーミングしている運用ポンプでの故障を分類する予知保守の例を使用します。3つの故障タイプがさまざまな組み合わせで発生する(たとえば、健康な状態が1つで、故障状態が7つある)Simulinkシミュレーションから生成されたラベル付きデータの大規模なリポジトリにアクセスできます。システムのモデルを持っており、運用中のデータは故障が稀なため、シミュレートされたデータを使用してアルゴリズムをトレーニングすることができます。パラメータ推定技術をMATLABとSimulinkで使用して、実際のポンプからの運用データに一致するようにモデルを調整できます。

この例では、MATLABとAmazon SageMakerの組み合わせた強力さを、この故障分類の例を使用してデモンストレーションします。

まず、MATLABでデスクトップで分類器モデルをトレーニングします。まず、Diagnostic Feature Designerアプリを使用して完全なデータセットの一部から特徴を抽出し、MATLABの決定木モデルでローカルにモデルトレーニングを実行します。パラメータ設定に満足したら、MATLAB関数を生成し、データセットとともにジョブをSageMakerに送信できます。これにより、トレーニングプロセスを大規模なデータセットに対応するようにスケーリングアップすることができます。モデルをトレーニングした後、それをライブエンドポイントとしてデプロイし、MATLAB Web Appなどのダウンストリームアプリやダッシュボードに統合することができます。

この例では、MATLABとAmazon SageMakerの組み合わせた機械学習タスクにおける実用的な理解を提供するため、各ステップを要約します。この例の完全なコードと説明は、このリポジトリで入手できます。

前提条件

  1. Linux上で動作するMATLAB 2023a以降の作業環境にMATLAB CompilerとStatistics and Machine Learning Toolboxがインストールされていること。MATLABをAWSで実行する方法については、クイックガイドを参照してください。

  2. Linux上で動作するAmazon Elastic Compute Cloud (Amazon EC2)インスタンスにDockerがセットアップされていること。UbuntuまたはLinuxのいずれか。

  3. AWS Command-Line Interface (AWS CLI)AWS ConfigurePython3がインストールされていること。

    1. AWS CLIは、手順1のインストールガイドに従ってすでにインストールされているはずです。
    2. AWS Configureをセットアップして、AWSリソースとの対話を行うこと。
    3. ターミナルでpython -Vまたはpython --versionコマンドを実行して、python3のインストールを確認します。必要な場合はPythonをインストールします。
  4. このリポジトリを

    パート1:データの準備と特徴の抽出

    機械学習プロジェクトの最初のステップは、データの準備です。MATLABは、データのインポート、クリーニング、特徴の抽出に使用するさまざまなツールを提供しています。:

    load SensorData.mat

    SensorData.matデータセットには240のレコードが含まれています。各レコードには2つの時系列テーブルflowpressureがあります。ターゲットの列はfaultcodeで、ポンプの3つの可能な故障の二進表現です。それぞれの時系列テーブルには、ポンプの流量と圧力の測定値を1.2秒分(0.001秒刻み)模擬する1,201の行があります。

    次に、Diagnostic Feature Designerアプリを使用してデータからさまざまな特徴を抽出、可視化、ランク付けすることができます。ここでは、Auto Featuresを使用し、データセットから広範な時間領域と周波数領域の特徴を迅速に抽出し、モデルトレーニングのための上位候補をランク付けします。その後、新しい入力データから上位15のランク付けされた特徴を再計算するMATLAB関数をエクスポートできます。この関数をextractFeaturesTrainingと呼びましょう。この関数は、一括でデータを受け取るかストリーミングデータとして受け取るように構成することができます。

    この関数は、以下の図に示すように、関連する故障コードとともに特徴のテーブルを生成します:

    パート2:SageMakerのためのデータの整理

    次に、SageMakerが機械学習トレーニングに使用できるようにデータを整理する必要があります。通常、これにはデータをトレーニングセットとバリデーションセットに分割し、予測データとターゲットの応答を分割することが含まれます。

    この段階では、より複雑なデータクリーニングやフィルタリング操作が必要な場合があります。この例では、データは既にクリーンです。データ処理が非常に複雑で時間がかかる場合は、SageMakerの処理ジョブを使用してこれらのジョブを実行し、SageMakerトレーニングから分離することができます。

    trainPredictors = trainingData(:,2:end);

    trainResponse = trainingData(:,1);

    パート3:MATLABで機械学習モデルのトレーニングとテスト

    SageMakerに移る前に、MATLABでローカルに機械学習モデルを構築してテストすることは良いアイデアです。これにより、モデルの繰り返しテストとデバッグが素早く行えます。ここでは、シンプルな決定木クラシファイアを構築して訓練します。

    classifierModel = fitctree(...  trainPredictors,...  trainResponse,...  OptimizeHyperparameters='auto');

    ここでの訓練ジョブは1分未満で終了し、トレーニングの進捗を示すいくつかのグラフを生成します。トレーニングが終了した後、MATLABの機械学習モデルが生成されます。Classification Learnerアプリを使用してさまざまなタイプの分類モデルを試し、最適なパフォーマンスを得るように調整し、上記のモデルトレーニングコードを置き換えるために必要なコードを生成することもできます。

    ローカルのトレーニングモデルの精度メトリックを確認した後、トレーニングをAmazon SageMakerに移すことができます。

    パート4:Amazon Sagemakerでモデルをトレーニングする

    モデルに満足したら、SageMakerを使用してスケールでトレーニングすることができます。SageMaker SDKを呼び出すためには、SageMakerセッションを初期化する必要があります。

    session = sagemaker.Session();

    トレーニングジョブとエンドポイントホスティングに使用されるSageMakerのIAMロールを指定します。

    role = "arn:aws:iam::ACCOUNT:role/service-role/AmazonSageMaker-ExecutionRole-XXXXXXXXXXXXXXX";

    MATLABから、トレーニングデータをAmazon Simple Storage Service(Amazon S3)バケットに.csvファイルとして保存します。

    writetable(trainingData,'pump_training_data.csv');

    trainingDataLocation = "s3:// "+session.DefaultBucket+ +"/cooling_system/input/pump_training";

    copyfile("pump_training_data.csv", trainingDataLocation);

    SageMaker Estimatorの作成

    次に、SageMaker Estimatorを作成し、トレーニングのドッカーイメージ、トレーニング関数、環境変数、トレーニングインスタンスサイズなど、必要なすべてのパラメータを渡す必要があります。トレーニングイメージのURIは、前提条件ステップで作成したAmazon ECR URIである必要があります。形式はACCOUNT.dkr.ecr.us-east-1.amazonaws.com/sagemaker-matlab-training-r2023a:latestです。トレーニング関数は、MATLABのライブスクリプトの最後に指定する必要があります。

    SageMaker Estimator Console

    trainingImage = "ACCOUNT.dkr.ecr.us-east-1.amazonaws.com/sagemaker-matlab-training-r2023a:latest";  est = sagemaker.MATLABEstimator(...     role, ...     Image=trainingImage, ...     Session=session, ...     BaseJobName="PumpDecisionTreeMatlab", ...     Environment = loadenv(fullfile(rootFolder, "training.env")), ...     TrainingFunction = @trainingFunction, ...     HyperParameters = struct(), ... % named args to train_decision_tree     InstanceType="ml.m5.large", ...     MaxRunTime=minutes(10), ...         MaxWaitTime=minutes(20), ...     UseSpotInstances=true); 

    SageMakerトレーニングジョブの送信

    エスティメータのfitメソッドを呼び出すことで、トレーニングジョブがSageMakerに送信されます。

    est.fit(training=struct(Location=trainingDataLocation, ContentType="text/csv"))

    SageMakerコンソールからもトレーニングジョブのステータスを確認することができます。

    SageMaker Training Job Console

    トレーニングジョブが終了したら、ジョブリンクを選択すると、専用のS3バケットに保存されたMATLABモデルを確認できるジョブの説明ページに移動します。

    SageMaker Endpoint Output

    パート5:モデルをリアルタイムのSageMakerエンドポイントとしてデプロイする

    トレーニング後、モデルをリアルタイムのSageMakerエンドポイントとしてデプロイすることができます。これにより、リアルタイムで予測を行うために使用できます。これを行うには、エスティメータからデプロイメソッドを呼び出します。ここで、ワークロードに応じてホスティングのための適切なインスタンスサイズを設定することができます。

    predictor = est.deploy(role, "ClassificationTreeInferenceHandler", uint8(1), "ml.m5.large")

    このステップでは、推論用のDockerイメージが構築され、Amazon ECRリポジトリにプッシュされます。ユーザーは推論コンテナをビルドするための特別な手順は必要ありません。このイメージには、モデルの場所、MATLABの認証情報、アルゴリズムなど、推論リクエストを処理するために必要なすべての情報が含まれています。その後、Amazon SageMakerはSageMakerエンドポイント構成を作成し、最終的にリアルタイムのエンドポイントをデプロイします。エンドポイントはSageMakerコンソールで監視することができ、使用しなくなった場合はいつでも終了できます。

    SageMakerエンドポイントモニターコンソール

    パート6:エンドポイントのテスト

    エンドポイントが稼働しているので、いくつかのレコードを予測するためにエンドポイントに送信してテストすることができます。以下のコードを使用して、トレーニングデータから10個のレコードを選択し、予測のためにエンドポイントに送信します。予測結果はエンドポイントから送り返され、以下の画像で表示されます。

    input = trainPredictors(10:19,:) prediction = predictor.predict(input)

    予測結果

    パート7:ダッシュボードの統合

    SageMakerエンドポイントは、多くのネイティブAWSサービスから呼び出すことができます。また、AWS Lambda関数とAPI Gatewayと一緒にデプロイされれば、標準的なREST APIとしても使用でき、任意のWebアプリケーションと統合することもできます。特定のユースケースでは、Amazon SageMaker Feature StoreとAmazon Managed Streaming for Apache Kafka、MSKを使用してストリーミングインジェクションを行い、リアルタイムで機械学習に基づいた意思決定を行うこともできます。別の統合方法として、Amazon Kinesis、SageMaker、およびApache Flinkの組み合わせを使用して、データストリーム上でリアルタイムの推論を行うことができる、管理され、信頼性の高い、スケーラブルで高可用性なアプリケーションを構築することができます。

    SageMakerエンドポイントにアルゴリズムがデプロイされた後、リアルタイムでストリーミング予測を表示するダッシュボードを使用して、それらを視覚化することもできます。このカスタムMATLAB Webアプリには、各ポンプの圧力と流量データ、およびデプロイされたモデルからのライブの故障予測が表示されます。

    このダッシュボードには、各ポンプの故障までの残りの有用寿命(RUL)モデルも含まれています。RULアルゴリズムのトレーニング方法については、Predictive Maintenance Toolboxを参照してください。

    ポンプの健康状態ダッシュボード

    クリーンアップ

    このソリューションを実行した後は、予期せぬ費用を回避するために不要なAWSリソースをクリーンアップしてください。これらのリソースを削除するには、SageMaker Python SDKまたはここで使用されている特定のサービス(SageMaker、Amazon ECR、およびAmazon S3)のAWS Management Consoleを使用してクリーンアップすることができます。これらのリソースを削除することで、使用していないリソースに対する追加の料金を防ぐことができます。

    結論

    ここでは、MATLABをSageMakerに組み込む方法を紹介しました。ポンプの予測保守の使用例を通じて、機械学習ライフサイクル全体を実行し、さまざまなニーズに応じてさまざまな計算インスタンスでモデルを展開するための完全に管理された環境であるSageMakerを提供しています。

    免責事項: この記事で使用されているコードはMathWorks社が所有・管理しています。GitHubリポジトリのライセンス条項を参照してください。コードや機能の問題については、リポジトリのGitHubの問題を開いてください。

    参考文献

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

データサイエンス

データサイエンスへのゲートの解除:GATE 2024 in DS&AIの究極の学習ガイド

イントロダクション Graduate Aptitude Test in Engineering(GATE)は、インドで行われる大学院入学試験です。この試験は主...

AI研究

この脳AIの研究では、安定した拡散を用いて脳波から画像を再現します

人間の視覚システムと似たように、世界を見て認識する人工システムを構築することは、コンピュータビジョンの重要な目標です...

機械学習

インドのスタートアップ、OpenHathiをリリース:初のヒンディー語LLM

言語の革新に向けた注目すべき一歩として、インドのAIスタートアップSarvam AIがOpenHathi LLMをリリースし、ヒンディー語の...

機械学習

「Javaプログラミングの未来:2023年に注目すべき5つのトレンド」

この記事では、Javaプログラミングの将来について学びます2023年の最も注目すべきJavaのトレンド5つをチェックしてください

機械学習

大規模言語モデルの探索 -Part 1

この記事は主に自己学習のために書かれていますそのため、広範囲かつ深い内容です興味のあるセクションをスキップしたり、自...