Amazon SageMaker で InternalServerError レスポンスのトラブルシューティングを行うにはどうすればよいですか?

所要時間2分
0

Amazon SageMaker Processing、トレーニング、または予測ジョブを実行すると、次のレスポンスでリクエストが失敗します。「HTTP Error 500: Internal Server Error (HTTP エラー 500: 内部サーバーエラー) 」または「InternalServerError: We encountered an internal error. (InternalServerError: 内部エラーが発生しました。)もう一度お試しください」

解決方法

エンドポイントへの SageMaker ジョブまたは推論リクエストが「InternalServerError」で失敗した場合は、リクエストを再試行してください。リクエストを再試行することで、一時的な問題による失敗が解消されます。

それでもエラーが発生する場合は、以下の手順に従って Amazon CloudWatch でジョブまたはエンドポイントのログを確認してください。

CloudWatch ログを確認する

SageMaker リソースに関連付けられている CloudWatch Logs を確認して、根本原因を特定します。

1.    SageMaker コンソールを開きます。

2.    [処理]、[トレーニング]、または [推論] で関連するリソースを選択します。

3.    エンドポイント、処理、またはトレーニングジョブの名前を選択します。

4.    [モニタリング] セクションで [ログの表示] を選択し、 CloudWatch コンソールを開きます。

5.    CloudWatch コンソールで、ジョブまたはエンドポイントのログストリームを選択します。

6.    ログストリームがない場合、またはログストリームが空の場合、リソースの実行ロールに次の権限を持つポリシーがあることを確認してください。

{
 "Effect": "Allow",
 "Action": [
 "cloudwatch:PutMetricData",
 "logs:CreateLogStream",
 "logs:PutLogEvents",
 "logs:CreateLogGroup",
 "logs:DescribeLogStreams",
 "ecr:GetAuthorizationToken"
 ],
 "Resource": "*"
}

7.    ログを確認して、エラーメッセージを探します。

推論スクリプトへのデバッグコードの追加 (オプション)

推論スクリプトにデバッグコードを追加することで、ログレビュープロセスを簡素化できます。エンドポイントをデバッグするための推論コードの例を次に示します。このコードを使用すると、predict () 関数が正しく呼び出されたことを確認できます。このコードはデータ変数も出力しますので、エンドポイントに渡された実際の値を確認できます。この例では、MYDEBUG が CloudWatch ログストリームで検索するキーワードです。

def predict():
    data = None
    print("MYDEBUG: Predict function called")
    # Convert from CSV to pandas
    if flask.request.content_type == 'text/csv':
        data = flask.request.data.decode('utf-8')
        s = StringIO.StringIO(data)
        data = pd.read_csv(s, header=None)
        ## To print the actual data set
        print( "MYDEBUG: Printing data")
        print( data.head(10) )

「InternalServerError」のその他の一般的な原因のトラブルシューティング

リソースの使用状況

インスタンス上のジョブのコンテナがインスタンスのリソースを使い果たした場合、SageMaker ジョブは「InternalServerError」で失敗することがあります。リソースの使用状況を確認するには、CloudWatch でインスタンスの CPUUtilizationMemoryUtilization、および DiskUtilization のメトリクスを確認します。

インスタンスメトリクスを確認するには、次の手順に従います。

1.    SageMaker コンソールを開きます。

2.    [処理/トレーニングジョブ] セクションで、[処理/トレーニング] を選択します。

3.    ジョブ名を選択します。

4.    [モニタリング] セクションで [インスタンスメトリクスを表示] を選択し、 CloudWatch コンソールを開きます。ジョブが大量のリソースを使用している場合は、より大きなインスタンスタイプに切り替えるか、既存のインスタンスにより大きなストレージボリュームをアタッチします。

SageMaker 実行ロールに EC2 権限がありません

Amazon Elastic Compute Cloud (Amazon EC2) のアクセス権限が適切に設定されていない場合、Amazon SageMaker 実行ロールに「InternalServerError」が表示されることがあります。SageMaker ジョブで VpcConfig オブジェクトを指定するときは、ジョブの SageMaker 実行ロールに次の権限を含むポリシーがあることを確認してください。

{
 "Effect": "Allow",
 "Action": [
 "ec2:CreateNetworkInterface",
 "ec2:CreateNetworkInterfacePermission",
 "ec2:DeleteNetworkInterface",
 "ec2:DeleteNetworkInterfacePermission",
 "ec2:DescribeNetworkInterfaces",
 "ec2:DescribeVpcs",
 "ec2:DescribeDhcpOptions",
 "ec2:DescribeSubnets",
 "ec2:DescribeSecurityGroups"
 ]
}

詳細については、Amazon SageMaker ロールをご参照ください。


関連情報

ログ記録とモニタリング

CreateProcessingJob API: 実行ロールの権限

SageMaker ジョブとエンドポイントメトリクス

VPC 内の SageMaker Studio ノートブックを外部リソースに接続

AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ