Amazon SageMaker Pipelines のトラブルシューティング - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon SageMaker Pipelines のトラブルシューティング

Amazon SageMaker Pipelines を使用する場合、さまざまな理由で問題が発生する可能性があります。このトピックでは、一般的なエラーとその解決方法を説明します。

パイプライン定義の問題

パイプライン定義が正しくフォーマットされていない可能性があります。その結果として 実行が失敗したり、ジョブが不正確になったりすることがあります。これらのエラーは、パイプラインが作成されたとき、または実行が発生したときに見つかります。定義が検証されない場合、Pipelines はJSONファイルの形式が間違っている文字を識別するエラーメッセージを返します。この問題を修正するには、 SageMaker Python を使用して作成されたステップが正しいSDKかどうかを確認してください。

パイプライン定義にステップを含めることができるのは 1 回のみです。このため、ステップは、条件ステップの一部かつ同じパイプライン内のパイプラインとして同時に存在することはできません。

パイプラインログを確認する

以下のコマンドを使用すると、ステップのステータスを表示できます。

execution.list_steps()

各ステップには、以下の情報が含まれます。

  • SageMaker ジョブ 、モデル ARN、モデルパッケージ などARN、パイプラインによって起動されるARNエンティティの ARN。

  • 失敗の理由には、ステップの失敗の簡単な説明が含まれます。

  • ステップが条件ステップの場合、条件が true または false のどちらに評価されるかが含まれます。 

  • 実行で前のジョブ実行を再利用する場合は、CacheHit にソースの実行が一覧表示されます。 

Amazon SageMaker Studio インターフェイスでエラーメッセージとログを表示することもできます。Studio でログを確認する方法については、「パイプライン実行の詳細を表示する」を参照してください。

アクセス許可がない

パイプラインの実行を作成するロールや、パイプラインの実行の各ジョブを作成するステップには、適切なアクセス許可が必要です。これらのアクセス許可がないと、パイプラインの実行を送信したり、 SageMaker ジョブを期待どおりに実行したりできない場合があります。アクセス許可が適切に設定されていることを確認する方法については、「IAM アクセス管理」を参照してください。

ジョブ実行エラー

SageMaker ジョブの機能を定義するスクリプトに問題があるため、ステップの実行時に問題が発生する可能性があります。各ジョブには一連の CloudWatch ログがあります。Studio からこれらのログを表示するには、「」を参照してくださいパイプライン実行の詳細を表示する。で CloudWatch ログを使用する方法については SageMaker、「」を参照してくださいAmazon が Amazon CloudWatch Logs SageMaker に送信するロググループとストリーム

プロパティファイルのエラー

パイプラインでプロパティファイルが正しく実装されないと、問題が発生することがあります。プロパティファイルの実装が期待どおりに動作するようにする方法については、「ステップ間でデータを渡す」を参照してください。

Dockerfile のコンテナへのスクリプトのコピーに関する問題

次のコードサンプルに示すように、スクリプトをコンテナにコピーするか、entry_point引数 (推定器エンティティ) またはcode引数 (プロセッサエンティティ) を介して渡すことができます。

step_process = ProcessingStep( name="PreprocessAbaloneData", processor=sklearn_processor, inputs = [ ProcessingInput( input_name='dataset', source=..., destination="/opt/ml/processing/code", ) ], outputs=[ ProcessingOutput(output_name="train", source="/opt/ml/processing/train", destination = processed_data_path), ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation", destination = processed_data_path), ProcessingOutput(output_name="test", source="/opt/ml/processing/test", destination = processed_data_path), ], code=os.path.join(BASE_DIR, "process.py"), ## Code is passed through an argument cache_config = cache_config, job_arguments = ['--input', 'arg1'] ) sklearn_estimator = SKLearn( entry_point=os.path.join(BASE_DIR, "train.py"), ## Code is passed through the entry_point framework_version="0.23-1", instance_type=training_instance_type, role=role, output_path=model_path, # New sagemaker_session=sagemaker_session, # New instance_count=1, # New base_job_name=f"{base_job_prefix}/pilot-train", metric_definitions=[ {'Name': 'train:accuracy', 'Regex': 'accuracy_train=(.*?);'}, {'Name': 'validation:accuracy', 'Regex': 'accuracy_validation=(.*?);'} ], )