データ中心のアプローチを使用して、Amazon SageMaker モデルのトレーニングに必要なデータ量を最小限に抑える

データ中心のアプローチを使用して、Amazon SageMaker モデルのトレーニングに必要なデータ量を最小限に抑える

機械学習 (ML) モデルが改善されるにつれて、データ サイエンティスト、ML エンジニア、および研究者は、データ品質の定義と改善により多くの注意を向けるようになりました。 これにより、ML へのデータ中心のアプローチと、データ要件に焦点を当ててモデルのパフォーマンスを向上させるさまざまな手法が出現しました。 これらの手法を適用することで、ML の実践者は ML モデルのトレーニングに必要なデータの量を減らすことができます。

このアプローチの一環として、入力データ量を減らすことでトレーニングを高速化する高度なデータ サブセット選択手法が登場しました。 このプロセスは、より大きなデータセットの分布に近似する特定の数のポイントを自動的に選択し、それをトレーニングに使用することに基づいています。 このタイプの手法を適用すると、ML モデルのトレーニングに必要な時間が短縮されます。

この投稿では、データ中心の AI 原則を適用する方法について説明します。 Amazon SageMakerグラウンドトゥルース、を使用してデータサブセット選択手法を実装する方法 コード 上のリポジトリ アマゾンセージメーカー 初期モデルのトレーニングに必要なデータ量を削減し、このアプローチを使用して実験を実行する方法 AmazonSageMakerの実験.

機械学習へのデータ中心のアプローチ

データ サブセットの選択など、より高度なデータ中心の手法に飛び込む前に、一連の基本原則をデータ ラベル付けプロセスに適用することで、複数の方法でデータセットを改善できます。 このため、Ground Truth は、ラベルの一貫性とデータ品質を改善するためのさまざまなメカニズムをサポートしています。

モデルのパフォーマンスを向上させるには、ラベルの一貫性が重要です。 それがなければ、モデルは、異なるクラスに属するすべてのポイントを分離する決定境界を生成できません。 一貫性を確保する XNUMX つの方法は、 Ground Truth での注釈の統合これにより、特定の例を複数のラベラーに提供し、その例のグラウンド トゥルースとして提供された集約されたラベルを使用できます。 ラベルの相違は、Ground Truth によって生成された信頼スコアによって測定されます。 ラベルに相違がある場合は、ラベラーに提供されたラベリング手順に削除可能な曖昧さがあるかどうかを確認する必要があります。 このアプローチは、個々のラベラーのバイアスの影響を軽減します。これは、ラベルをより一貫性のあるものにするための中心となります。

データに注目してモデルのパフォーマンスを改善するもう XNUMX つの方法は、改善すべき最も重要なデータのサブセットを特定する際に、ラベルのエラーを分析する方法を開発することです。 ラベル付けされた例に飛び込み、 アマゾンクラウドウォッチ Ground Truth ラベル付けジョブによって生成されたログとメトリクス。 データセットのラベル付けの次の反復を促進するために、推論時にモデルが行うエラーを確認することも重要です。 これらのメカニズムに加えて、 Amazon SageMaker の明確化 データ サイエンティストと ML エンジニアが次のようなアルゴリズムを実行できるようにします カーネルSHAP モデルによって行われた予測を解釈できるようにします。 前述のように、モデルの予測に関するより深い説明は、最初のラベル付けプロセスに関連付けて改善することができます。

最後に、うるさいまたは過度に冗長な例を捨てることを検討できます。 これを行うと、モデルのパフォーマンスの向上に寄与しない例を削除することで、トレーニング時間を短縮できます。 ただし、特定のデータセットの有用なサブセットを手動で特定することは難しく、時間がかかります。 この投稿で説明されているデータ サブセット選択手法を適用すると、確立されたフレームワークに沿ってこのプロセスを自動化できます。

使用事例

前述のように、データ中心の AI は、モデル自体のアーキテクチャではなく、モデル入力の改善に重点を置いています。 これらの原則をデータのラベル付けまたは特徴量エンジニアリングに適用したら、トレーニング時にデータ サブセットの選択を適用することで、引き続きモデル入力に集中できます。

この投稿では、効率的でロバストな学習のために一般化ベースのデータ サブセット選択を適用します (グリスター) は、CORDS リポジトリに実装されている多くのデータ サブセット選択手法の XNUMX つであり、 レスネット-18 モデルをトレーニングして分類するのにかかる時間を最小限に抑えるためのモデル CIFAR-10 画像。 以下は、CIFAR-10 データセットから抽出されたそれぞれのラベルが付いたサンプル画像です。

CIFAR データセット

ResNet-18 は分類タスクによく使用されます。 これは、18 層の深い畳み込みニューラル ネットワークです。 CIFAR-10 データセットは、ML のさまざまな手法やアプローチの有効性を評価するためによく使用されます。 これは、60,000 クラスにわたってラベル付けされた 32 枚の 32×10 カラー画像で構成されています。

次のセクションでは、GLISTER が次の質問にある程度答えるのにどのように役立つかを示します。

特定のデータセットの何パーセントを使用して、トレーニング中に良好なモデル パフォーマンスを達成できるでしょうか?

GLISTER をトレーニング アルゴリズムに適用すると、トレーニング アルゴリズムに分数がハイパーパラメータとして導入されます。 これは、使用したい特定のデータセットの割合を表します。 他のハイパーパラメータと同様に、モデルとデータに最適な結果をもたらす値を見つけるには、調整が必要です。 この投稿では、ハイパーパラメータの調整については詳しく説明しません。 詳細については、次を参照してください。 Amazon SageMaker 自動モデル調整でハイパーパラメータを最適化する.

SageMaker Experiments を使用していくつかのテストを実行し、アプローチの影響を測定します。 結果は初期データセットによって異なるため、さまざまなサブセット サイズでデータに対してアプローチをテストすることが重要です。

画像での GLISTER の使用について説明しましたが、構造化データまたは表形式データを操作するトレーニング アルゴリズムにも適用できます。

データサブセットの選択

データ サブセット選択の目的は、精度への影響を最小限に抑え、モデルの堅牢性を高めながら、トレーニング プロセスを加速することです。 より具体的には、GLISTER-ONLINE は、指定した検証セットでそのトレーニング データ サブセットの対数尤度を最大化しようとすることで、モデルが学習するときにサブセットを選択します。 このようにデータ サブセットの選択を最適化すると、実際のデータセットでよく見られるノイズやクラスの不均衡が軽減され、モデルの学習に合わせてサブセットの選択戦略を適応させることができます。

初期 グリスター紙 を使用して、さまざまなデータ サブセット サイズでのスピードアップと精度のトレードオフについて説明します。 ルネット モデル:

サブセットサイズ スピードアップ 正確さ
視聴者の38%が 6x -3%
視聴者の38%が 2.5x -1.20%
視聴者の38%が 1.5x -0.20%

モデルをトレーニングするために、 SageMakerトレーニングジョブ カスタム トレーニング スクリプトを使用します。 画像データセットも既にアップロードしています Amazon シンプル ストレージ サービス (アマゾン S3)。 他の SageMaker トレーニング ジョブと同様に、定義する必要があります。 Estimator 物体。 からの PyTorch エスティメータ sagemaker.pytorch パッケージを使用すると、マネージド PyTorch コンテナーで独自のトレーニング スクリプトを実行できます。 の inputs 推定器に渡される変数 .fit 関数には、トレーニングおよび検証データセットの S3 の場所の辞書が含まれています。

  train.py スクリプトは、トレーニング ジョブの起動時に実行されます。 このスクリプトでは、CORDS ライブラリから ResNet-18 モデルをインポートし、次のようにデータセット内のクラス数を渡します。

from cords.utils.models import ResNet18 numclasses = 10
model = ResNet18(numclasses)

次に、 gen_dataset CORDS の関数を使用して、トレーニング、検証、およびテスト データセットを作成します。

from cords.utils.data.datasets.SL import gen_dataset train_set, validation_set, test_set, numclasses = gen_dataset(
datadir="/opt/ml/input/data/training",
dset_name="cifar10",
feature="dss",
type="image")

各データセットから、同等の PyTorch データローダーを作成します。

train_loader = torch.utils.data.DataLoader(train_set,
batch_size=batch_size,
shuffle=True) validation_loader = torch.utils.data.DataLoader(validation_set,
batch_size=batch_size,
shuffle=False)

最後に、これらのデータローダーを使用して GLISTERDataLoader CORDS ライブラリから。 この投稿で前述したように、トレーニング中にモデルを更新するときにサブセット選択を適用する GLISTER-ONLINE 選択戦略の実装を使用します。

オブジェクトを作成するには、選択戦略固有の引数を DotMap と一緒にオブジェクト train_loader, validation_loader, logger:

import logging
from cords.utils.data.dataloader.SL.adaptive import GLISTERDataLoader
from dotmap import DotMap dss_args = # GLISTERDataLoader specific arguments
dss_args = DotMap(dss_args)
dataloader = GLISTERDataLoader(train_loader,
validation_loader,
dss_args,
logger,
batch_size=batch_size,
shuffle=True,
pin_memory=False)

  GLISTERDataLoader 通常のデータローダーとしてトレーニング ループに適用できるようになりました。 モデルがそのモデルの損失に基づいて学習するときに、次のトレーニング バッチのデータ サブセットが選択されます。 前の表に示されているように、データ サブセット選択戦略を追加すると、データ サブセット選択の追加ステップがあっても、精度のトレードオフはほとんどなく、トレーニング時間を大幅に短縮できます。

データ サイエンティストや ML エンジニアは、アプローチを何らかのベースラインと比較して、その有効性を評価する必要があることがよくあります。 次のセクションでこれを行う方法を示します。

実験追跡

SageMaker Experiments を使用して、データサブセット選択アプローチの有効性を測定できます。 詳細については、次を参照してください。 次世代の Amazon SageMaker Experiments – 機械学習トレーニングを大規模に整理、追跡、比較します.

私たちの場合、XNUMX つの実験を実行します。データ サブセット選択を適用しないベースラインと、異なる XNUMX つの他の実験です。 fraction データセット全体に対するサブセットのサイズを表します。 当然、より小さいものを使用します。 fraction パラメータを使用すると、トレーニング時間が短縮されますが、モデルの精度も低下します。

この投稿では、各トレーニングの実行は Run SageMaker Experiments で。 実験に関連する実行はすべて XNUMX つにグループ化されます Experiment 物体。 実行は、作成時に共通の実験に添付できます。 Estimator SDKで。 次のコードを参照してください。

from sagemaker.utils import unique_name_from_base
from sagemaker.experiments.run import Run, load_run experiment_name = unique_name_from_base("data-centric-experiment")
with Run(
experiment_name=experiment_name,
sagemaker_session=sess
) as run:
estimator = PyTorch('train.py',
source_dir="source",
role=role,
instance_type=instance_type,
instance_count=1,
framework_version=framework_version,
py_version='py3',
env={ 'SAGEMAKER_REQUIREMENTS': 'requirements.txt',
})
estimator.fit(inputs)

カスタム トレーニング スクリプトの一部として、次を使用して実行メトリクスを収集できます。 load_run:

from sagemaker.experiments.run import load_run
from sagemaker.session import Session if __name__ == "__main__":
args = parse_args()
session = Session(boto3.session.Session(region_name=args.region))
with load_run(sagemaker_session=session) as run:
train(args, run)

次に、前の操作で返された実行オブジェクトを使用して、次の呼び出しによってエポックごとのデータ ポイントを収集できます。 run.log_metric(name, value, step) メトリック名、値、および現在のエポック番号を提供します。

アプローチの有効性を測定するために、トレーニング損失、トレーニング精度、検証損失、検証精度、およびエポックを完了するまでの時間に対応するメトリックを収集します。 次に、トレーニングジョブを実行した後、次のことができます 実験結果を確認する in Amazon SageMakerスタジオ または SageMaker Experiments SDK を介して。

Studio 内で検証精度を表示するには、 解析 実験について Active Runs ページで見やすくするために変数を解析したりすることができます。

実験一覧

グラフを追加し、グラフのプロパティを設定して、 創造する. 次のスクリーンショットに示すように、すべての実行の各エポックでの検証精度のプロットが表示されます。

実験チャート

SDK を使用すると、実験関連の情報を Pandas データフレームとして取得することもできます。

from sagemaker.analytics import ExperimentAnalytics trial_component_analytics = ExperimentAnalytics(
sagemaker_session=sess.sagemaker_client,
experiment_name=experiment_name
)
analytic_table = trial_component_analytics.dataframe()

必要に応じて、トレーニング ジョブを並べ替えることができます。 たとえば、追加できます "metrics.validation:accuracy.max" の値として sort_by に渡されるパラメータ ExperimentAnalytics 検証精度で並べ替えられた結果を返します。

予想通り、私たちの実験では、GLISTER とデータ サブセットの選択をトレーニング アルゴリズムに適用すると、トレーニング時間が短縮されることが示されました。 ベースライン トレーニング アルゴリズムを実行すると、27 つのエポックを完了するまでの時間の中央値は約 50 秒です。 対照的に、GLISTER を適用してデータセット全体の 30%、10%、および 13% に相当するサブセットを選択すると、ml.p8.5xlarge インスタンスでそれぞれ約 2.75、3.2、および XNUMX 秒のエポックを完了する時間になります。 .

また、特に 50% のデータ サブセットを使用する場合、検証精度への影響は比較的小さいことがわかります。 100 エポックのトレーニング後、ベースラインは 92.72% の検証精度を生成します。 対照的に、GLISTER を適用してデータセット全体の 50%、30%、および 10% に相当するサブセットを選択すると、それぞれ 91.42%、89.76%、および 82.82% の検証精度が得られます。

まとめ

SageMaker Ground Truth と SageMaker Experiments は、データ サイエンティストと ML エンジニアがより一貫性のあるデータセットを生成し、モデル構築フェーズで実装する高度な手法の影響を追跡できるようにすることで、機械学習へのデータ中心のアプローチを可能にします。 ML にデータ中心のアプローチを実装すると、モデルに必要なデータの量を減らし、その堅牢性を向上させることができます。

試してみて、コメントでご意見をお聞かせください。


著者について

データ中心のアプローチを使用して、Amazon SageMaker モデル PlatoBlockchain Data Intelligence のトレーニングに必要なデータ量を最小限に抑えます。垂直検索。あい。ニコラ・ベルニエ AWS のカナダ公共部門チームの一員であるソリューション アーキテクトです。 彼は現在、深層学習の研究分野で修士号を取得しており、ML Specialty Certification を含む XNUMX つの AWS 認定を保持しています。 Nicolas は、お客様と協力してビジネス上の課題を技術的なソリューションに変換することで、お客様が AWS の知識を深めるのを支援することに情熱を注いでいます。

データ中心のアプローチを使用して、Amazon SageMaker モデル PlatoBlockchain Data Intelligence のトレーニングに必要なデータ量を最小限に抑えます。垂直検索。あい。ジバニルド・アウヴェス は、Amazon Web Services のプロトタイピングおよびクラウド エンジニアリング チームのプロトタイピング アーキテクトであり、人工知能に関するいくつかのプロトタイプをすでに実装しており、AWS で可能な技術を示すことでクライアントの革新と加速を支援しています。 彼はソフトウェア エンジニアリングで長いキャリアを持ち、以前は Amazon.com.br でソフトウェア開発エンジニアとして働いていました。

タイムスタンプ:

より多くの AWS機械学習