効率的なデータの読み込みと処理は、機械学習 (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
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を使用できます。