「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のリアルタイムエンドポイントとしてデプロイして、ライブストリーミングデータを処理する方法を説明します。
- Amazon MusicはSageMakerとNVIDIAを使用してMLの訓練および推論のパフォーマンスとコストを最適化しています
- NVIDIAは、Generative AIを用いて薬物探索を加速させるためにGenentechと協力
- 「基本的なアルゴリズムと機械学習の最新のアルゴリズムを使用して、コンピュータ科学の問題に取り組む」
これを行うために、ライブセンサーデータをストリーミングしている運用ポンプでの故障を分類する予知保守の例を使用します。3つの故障タイプがさまざまな組み合わせで発生する(たとえば、健康な状態が1つで、故障状態が7つある)Simulinkシミュレーションから生成されたラベル付きデータの大規模なリポジトリにアクセスできます。システムのモデルを持っており、運用中のデータは故障が稀なため、シミュレートされたデータを使用してアルゴリズムをトレーニングすることができます。パラメータ推定技術をMATLABとSimulinkで使用して、実際のポンプからの運用データに一致するようにモデルを調整できます。
この例では、MATLABとAmazon SageMakerの組み合わせた強力さを、この故障分類の例を使用してデモンストレーションします。
まず、MATLABでデスクトップで分類器モデルをトレーニングします。まず、Diagnostic Feature Designerアプリを使用して完全なデータセットの一部から特徴を抽出し、MATLABの決定木モデルでローカルにモデルトレーニングを実行します。パラメータ設定に満足したら、MATLAB関数を生成し、データセットとともにジョブをSageMakerに送信できます。これにより、トレーニングプロセスを大規模なデータセットに対応するようにスケーリングアップすることができます。モデルをトレーニングした後、それをライブエンドポイントとしてデプロイし、MATLAB Web Appなどのダウンストリームアプリやダッシュボードに統合することができます。
この例では、MATLABとAmazon SageMakerの組み合わせた機械学習タスクにおける実用的な理解を提供するため、各ステップを要約します。この例の完全なコードと説明は、このリポジトリで入手できます。
前提条件
-
Linux上で動作するMATLAB 2023a以降の作業環境にMATLAB CompilerとStatistics and Machine Learning Toolboxがインストールされていること。MATLABをAWSで実行する方法については、クイックガイドを参照してください。
-
Linux上で動作するAmazon Elastic Compute Cloud (Amazon EC2)インスタンスにDockerがセットアップされていること。UbuntuまたはLinuxのいずれか。
-
AWS Command-Line Interface (AWS CLI)、AWS Configure、Python3がインストールされていること。
- AWS CLIは、手順1のインストールガイドに従ってすでにインストールされているはずです。
- AWS Configureをセットアップして、AWSリソースとの対話を行うこと。
- ターミナルで
python -V
またはpython --version
コマンドを実行して、python3のインストールを確認します。必要な場合はPythonをインストールします。
-
このリポジトリを
パート1:データの準備と特徴の抽出
機械学習プロジェクトの最初のステップは、データの準備です。MATLABは、データのインポート、クリーニング、特徴の抽出に使用するさまざまなツールを提供しています。:
load SensorData.mat
SensorData.mat
データセットには240のレコードが含まれています。各レコードには2つの時系列テーブルflow
とpressure
があります。ターゲットの列は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のライブスクリプトの最後に指定する必要があります。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コンソールからもトレーニングジョブのステータスを確認することができます。
トレーニングジョブが終了したら、ジョブリンクを選択すると、専用のS3バケットに保存されたMATLABモデルを確認できるジョブの説明ページに移動します。
パート5:モデルをリアルタイムのSageMakerエンドポイントとしてデプロイする
トレーニング後、モデルをリアルタイムのSageMakerエンドポイントとしてデプロイすることができます。これにより、リアルタイムで予測を行うために使用できます。これを行うには、エスティメータからデプロイメソッドを呼び出します。ここで、ワークロードに応じてホスティングのための適切なインスタンスサイズを設定することができます。
predictor = est.deploy(role, "ClassificationTreeInferenceHandler", uint8(1), "ml.m5.large")
このステップでは、推論用のDockerイメージが構築され、Amazon ECRリポジトリにプッシュされます。ユーザーは推論コンテナをビルドするための特別な手順は必要ありません。このイメージには、モデルの場所、MATLABの認証情報、アルゴリズムなど、推論リクエストを処理するために必要なすべての情報が含まれています。その後、Amazon 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の問題を開いてください。
参考文献
- https://github.com/mathworks/Machine-Learning-with-MATLAB-and-Amazon-Sagemaker-Demo
- https://aws.amazon.com/blogs/machine-learning/use-streaming-ingestion-with-amazon-sagemaker-feature-store-and-amazon-msk-to-make-ml-backed-decisions-in-near-real-time/
- https://aws.amazon.com/blogs/architecture/realtime-in-stream-inference-kinesis-sagemaker-flink/
- https://github.com/mathworks-ref-arch/matlab-on-aws
- https://www.mathworks.com/products/matlab.html
- https://www.mathworks.com/solutions/cloud.html
- https://docs.docker.com/engine/install/ubuntu/
- https://docs.docker.com/engine/install/linux-postinstall/
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- 「13/11から19/11までの週の最も重要なコンピュータビジョンの論文トップです」
- 「LanguageChainを使用して大規模言語モデルをあなたのソフトウェアとうまく連携させる方法」
- ユレカ:大規模な言語モデルをコーディングすることによる人間レベルの報酬設計
- 「OpenAI Dev Day 2023 創設者サム・オルトマンの基調講演からの4つの重要発表、見逃せません!」
- このAI論文では、マルチビューの冗長性を超えるための新しいマルチモーダル表現学習手法であるFACTORCLを提案しています
- アマゾンセージメーカースタジオを使用して、素早い実験結果のためにLlama 2、LangChain、およびPineconeを使用してRAG型の質問応答ソリューションを構築しましょう
- 「Amazon SageMakerを使用してビジョントランスフォーマーモデルのトレーニング時間を短縮するKTの取り組み」