すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:データセット処理におけるAI/MLパフォーマンステスト用OSS Connector

最終更新日:Sep 29, 2024

効率的なデータの読み込みと処理は、機械学習 (ML) とディープラーニングのモデルトレーニングに不可欠です。 このトピックでは、OssIterableDataset、OssMapDataset、およびossfsとImageFolderを使用して作成されたデータセットから内部エンドポイントを介してOSSアクセラレータに基づいてデータをロードするパフォーマンスを比較します。 このトピックで提供されているパフォーマンステストの結果に基づいて、データアクセスを最適化できます。

テストの説明

テストシナリオ: 内部エンドポイントアクセラレーションエンドポイントを使用して、データセットからデータを読み取るパフォーマンスをテストします。

テストデータ: パフォーマンステストは、平均サイズ100 KBの10,000,000画像の約1テラバイトに基づいて実行されます。

テスト環境: パフォーマンステストは、128 vCPU、512 GBのメモリ、160 Gbit/sの内部帯域幅を備えたネットワーク拡張汎用g7nex Elastic Compute Service (ECS) インスタンスに基づいて実行されます。

データセット: OssIterableDataset型のデータセットとOssMapDataset型のデータセットは、OSS Connector for AI/MLを使用して作成されます。 ImageFolderを持つossfs型のデータセットは、ossfsを使用して作成されます。

パフォーマンステスト

  • テストパラメータ

    パラメーター

    値 /操作

    説明

    dataloaderバッチサイズ

    256

    各バッチタスクは256のサンプルを処理する。

    dataloaderワーカー

    32

    データは32のプロセスを使用して並列にロードされます。

    変換

    trans = transforms.Compose([
        transforms.Resize(256),
        transforms.CenterCrop(224),
        transforms.ToTensor(),
        transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
    ])
    
    def transform(object):
        img = Image.open(io.BytesIO(object.read())).convert('RGB')
        val = trans(img)
        return val, object.label

    データは前処理される。

  • テスト結果

    を使用して作成されたデータセット

    データセットタイプ

    内部エンドポイントの使用

    データプリロードにOSSアクセラレータを使用し、アクセスを高速化するエンドポイントを使用します

    AI/ML用OSSコネクタ

    OssIterableDataset

    4582 img/s

    4744 img/s

    OssMapDataset

    4010 img/s

    4370 img/s

    ossfs

    ImageFolderを持つOssfs

    56 img/s

    251 img/s

最適なパフォーマンステスト

  • テストパラメータ

    パラメーター

    値 /操作

    説明

    dataloaderバッチサイズ

    256

    各バッチタスクは256のサンプルを処理する。

    dataloaderワーカー

    32

    データは32のプロセスを使用して並列にロードされます。

    変換

    def transform(object):
     data = object.read()
     return object.key, object.label

    データは前処理されない。

  • テスト結果

    を使用して作成されたデータセット

    データセットタイプ

    内部エンドポイントの使用

    データプリロードにOSSアクセラレータを使用し、アクセスを高速化するエンドポイントを使用します

    AI/ML用OSSコネクタ

    OssIterableDataset

    99920 img/s

    123043 img/s

    OssMapDataset

    56564 img/s

    78264 img/s

パフォーマンスデータ分析

データセットからデータを読み取る場合、OssIterableDatasetおよびOssMapDatasetデータセットは、ossfsおよびImageFolderを使用して作成されたデータセットと比較して、大幅に優れたパフォーマンスを提供します。 具体的には、OSSアクセラレータを使用しない場合は約80倍、OSSアクセラレータを使用する場合は約18倍高速です。 パフォーマンステストでは、OSS Connector for AI/MLがデータ処理速度とモデルトレーニング効率を大幅に改善できることが示されています。

OSSアクセラレータを有効にした場合のOssIterableDatasetおよびOssMapDatasetデータセットからのデータの読み取りは、OSSアクセラレータを無効にした場合の読み取りよりも約1.6倍高速です。 OSSアクセラレータが無効になっている場合、OSS Connector for AI/MLは、高帯域幅レベルで高度な同時アクセスを処理できます。 OSS Connector for AI/MLとOSSアクセラレータを組み合わせると、さらに強力なパフォーマンスが得られます。

結論

PythonコードでOSS Connector for AI/MLを使用して、ストリーム内のOSSオブジェクトにアクセスできます。 OSS Connector for AI/MLは、データの読み取り速度を向上させることができ、ほとんどのモデルトレーニングシナリオに適しています。 モデルトレーニングのデータ処理パフォーマンスを向上させたい場合は、OSSアクセラレータと一緒にOSS Connector for AI/MLを使用できます。