Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Voraussetzungen
Stellen Sie vor Beginn sicher, dass die folgenden Voraussetzungen erfüllt sind:
-
Integrieren Sie sich in eine SageMaker KI-Domäne mit Studio-Zugang. Wenn Sie nicht berechtigt sind, Studio als Standardkonfiguration für Ihre Domain festzulegen, wenden Sie sich an Ihren Administrator. Weitere Informationen finden Sie in der Amazon SageMaker AI-Domainübersicht.
-
Aktualisieren Sie das, AWS CLI indem Sie den Schritten unter Installation der aktuellen AWS CLI Version folgen.
-
Führen Sie das Programm auf Ihrem lokalen Computer aus
aws configureund geben Sie Ihre AWS Anmeldeinformationen ein. Informationen zu AWS Anmeldeinformationen finden Sie unter Grundlegendes und Abrufen Ihrer AWS Anmeldeinformationen.
Erforderliche IAM-Berechtigungen
SageMaker Für die Anpassung des KI-Modells müssen Sie Ihrer SageMaker KI-Ausführungsrolle die entsprechenden Berechtigungen hinzufügen.
Berechtigungen über die Konsole einrichten
Wenn Sie Ihre SageMaker AI-Domain über die Konsole erstellen, werden die Berechtigungen für die Modellanpassung je nach Ihrer Einrichtungsmethode automatisch verwaltet:
-
Schnelle Einrichtung — Die Berechtigungen zur Modellanpassung sind standardmäßig enthalten. Es ist keine zusätzliche Konfiguration erforderlich.
-
Benutzerdefiniertes Setup — Wählen Sie bei der Konfiguration Ihrer Ausführungsrolle die ML-Aktivität Modellanpassung aus. Weitere Informationen zu ML-Aktivitäten und den Berechtigungen, die sie gewähren, finden Sie unter ML-Aktivitäten für IAM-Rollen https://docs.aws.amazon.com/sagemaker/latest/dg/role-manager-ml-activities.html konfigurieren.
Manuelles Einrichten von Berechtigungen
Wenn Sie Ihre Domain über das AWS CLI SDK oder einrichten oder CloudFormation wenn Sie einer vorhandenen Ausführungsrolle Modellanpassungsberechtigungen hinzufügen müssen, verwenden Sie eine der folgenden Optionen.
Option 1 (empfohlen): Hängen Sie die AWS verwaltete Richtlinie an
Ordnen Sie die AmazonSageMakerModelCustomizationCoreAccess verwaltete Richtlinie Ihrer SageMaker KI-Ausführungsrolle zu. Diese Richtlinie deckt alle Berechtigungen ab, die für die grundlegende Modellanpassung erforderlich sind, einschließlich serverlosem Training, benutzerdefinierter Belohnungsfunktionen, Modellevaluierung und Bereitstellung auf SageMaker KI- oder Bedrock-Endpunkten. Informationen zum Anhängen von Richtlinien finden Sie unter Hinzufügen und Entfernen von IAM-Identitätsberechtigungen im Identity and Access AWS Management-Benutzerhandbuch.
Option 2: Erstellen Sie eine Inline-Richtlinie
Wenn Sie Berechtigungen lieber manuell verwalten möchten, erstellen Sie eine Inline-Richtlinie mit dem folgenden JSON und hängen Sie sie Ihrer Ausführungsrolle an:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SageMakerPublicHubPermissions", "Effect": "Allow", "Action": [ "sagemaker:ListHubContents" ], "Resource": [ "arn:aws:sagemaker:*:aws:hub/SageMakerPublicHub" ] }, { "Sid": "SageMakerHubPermissions", "Effect": "Allow", "Action": [ "sagemaker:ImportHubContent", "sagemaker:ListHubs", "sagemaker:ListHubContents", "sagemaker:ListHubContentVersions", "sagemaker:DescribeHubContent", "sagemaker:DeleteHubContent" ], "Resource": [ "arn:aws:sagemaker:*:*:hub/*", "arn:aws:sagemaker:*:*:hub-content/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "JumpStartS3Access", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::jumpstart*" ] }, { "Sid": "SageMakerTrainingJob", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:DescribeTrainingJob", "sagemaker:ListTrainingJobs", "sagemaker:StopTrainingJob" ], "Resource": [ "arn:aws:sagemaker:*:*:training-job/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "SageMakerMLFlow", "Effect": "Allow", "Action": [ "sagemaker:UpdateMlflowApp", "sagemaker:DescribeMlflowApp", "sagemaker:CreatePresignedMlflowAppUrl", "sagemaker:CallMlflowAppApi", "sagemaker-mlflow:AccessUI", "sagemaker-mlflow:GetExperiment", "sagemaker-mlflow:GetExperimentByName", "sagemaker-mlflow:GetRun", "sagemaker-mlflow:GetMetricHistory", "sagemaker-mlflow:GetLoggedModel", "sagemaker-mlflow:SearchExperiments", "sagemaker-mlflow:SearchRuns", "sagemaker-mlflow:ListArtifacts", "sagemaker-mlflow:CreateExperiment", "sagemaker-mlflow:CreateRun", "sagemaker-mlflow:LogBatch", "sagemaker-mlflow:LogMetric", "sagemaker-mlflow:LogParam", "sagemaker-mlflow:LogModel", "sagemaker-mlflow:LogInputs", "sagemaker-mlflow:SetTag", "sagemaker-mlflow:UpdateRun" ], "Resource": [ "arn:aws:sagemaker:*:*:mlflow-app/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "BYODataSetS3Access", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::*SageMaker*", "arn:aws:s3:::*Sagemaker*", "arn:aws:s3:::*sagemaker*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "SageMakerModelPackage", "Effect": "Allow", "Action": [ "sagemaker:CreateModel", "sagemaker:CreateModelPackage", "sagemaker:CreateModelPackageGroup", "sagemaker:UpdateModelPackage", "sagemaker:DescribeModelPackage", "sagemaker:DescribeModelPackageGroup", "sagemaker:ListModelPackages", "sagemaker:ListModelPackageGroups", "sagemaker:DescribeModel", "sagemaker:DeleteModelPackage", "sagemaker:DeleteModelPackageGroup" ], "Resource": [ "arn:aws:sagemaker:*:*:model-package-group/*", "arn:aws:sagemaker:*:*:model-package/*", "arn:aws:sagemaker:*:*:model/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "SageMakerLineage", "Effect": "Allow", "Action": [ "sagemaker:CreateAction", "sagemaker:CreateArtifact", "sagemaker:CreateContext", "sagemaker:DescribeAction", "sagemaker:DescribeArtifact", "sagemaker:DescribeTrialComponent", "sagemaker:QueryLineage", "sagemaker:AddAssociation", "sagemaker:UpdateArtifact" ], "Resource": [ "arn:aws:sagemaker:*:*:action/*", "arn:aws:sagemaker:*:*:artifact/*", "arn:aws:sagemaker:*:*:context/*", "arn:aws:sagemaker:*:*:endpoint/*", "arn:aws:sagemaker:*:*:experiment-trial-component/*", "arn:aws:sagemaker:*:*:model-package/*", "arn:aws:sagemaker:*:*:pipeline/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "SageMakerPipelines", "Effect": "Allow", "Action": [ "sagemaker:CreatePipeline", "sagemaker:DescribePipeline", "sagemaker:DescribePipelineDefinitionForExecution", "sagemaker:DescribePipelineExecution", "sagemaker:UpdatePipeline", "sagemaker:StartPipelineExecution" ], "Resource": [ "arn:aws:sagemaker:*:*:pipeline/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "SageMakerInference", "Effect": "Allow", "Action": [ "sagemaker:CreateEndpoint", "sagemaker:CreateEndpointConfig", "sagemaker:CreateInferenceComponent", "sagemaker:DescribeInferenceComponent", "sagemaker:DescribeEndpoint", "sagemaker:DescribeEndpointConfig", "sagemaker:DeleteInferenceComponent", "sagemaker:DeleteEndpoint", "sagemaker:InvokeEndpoint" ], "Resource": [ "arn:aws:sagemaker:*:*:inference-component/*", "arn:aws:sagemaker:*:*:endpoint/*", "arn:aws:sagemaker:*:*:endpoint-config/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "SageMakerInferenceAutoscaling", "Effect": "Allow", "Action": [ "application-autoscaling:DescribeScalableTargets" ], "Resource": [ "arn:aws:application-autoscaling:*:*:scalable-target/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "SageMakerInferenceEcrReadAccess", "Effect": "Allow", "Action": [ "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:GetAuthorizationToken" ], "Resource": "*" }, { "Sid": "SageMakerListPermissions", "Effect": "Allow", "Action": [ "sagemaker:ListActions", "sagemaker:ListArtifacts", "sagemaker:ListAssociations", "sagemaker:ListEndpoints", "sagemaker:ListInferenceComponents", "sagemaker:ListMlflowApps", "sagemaker:ListMlflowTrackingServers", "sagemaker:ListPipelineExecutions", "sagemaker:ListPipelineExecutionSteps", "sagemaker:ListWorkforces", "sagemaker:Search" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "SageMakerTagsPermission", "Effect": "Allow", "Action": [ "sagemaker:AddTags", "sagemaker:ListTags" ], "Resource": [ "arn:aws:sagemaker:*:*:model-package-group/*", "arn:aws:sagemaker:*:*:model-package/*", "arn:aws:sagemaker:*:*:hub/*", "arn:aws:sagemaker:*:*:hub-content/*", "arn:aws:sagemaker:*:*:training-job/*", "arn:aws:sagemaker:*:*:model/*", "arn:aws:sagemaker:*:*:endpoint/*", "arn:aws:sagemaker:*:*:endpoint-config/*", "arn:aws:sagemaker:*:*:pipeline/*", "arn:aws:sagemaker:*:*:inference-component/*", "arn:aws:sagemaker:*:*:action/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "SageMakerJobAdvancedSettings", "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:ListAliases", "iam:ListRoles", "ec2:DescribeVpcs", "servicequotas:ListServiceQuotas" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "CloudWatchLogReadAccess", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:GetLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/sagemaker/*", "arn:aws:logs:*:*:log-group::log-stream:" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "CloudWatchLogWriteAccess", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/sagemaker/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "LambdaListFunctions", "Effect": "Allow", "Action": [ "lambda:ListFunctions" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "LambdaPermissionsForRewardFunction", "Effect": "Allow", "Action": [ "lambda:CreateFunction", "lambda:DeleteFunction", "lambda:InvokeFunction", "lambda:GetFunction" ], "Resource": [ "arn:aws:lambda:*:*:function:*SageMaker*", "arn:aws:lambda:*:*:function:*sagemaker*", "arn:aws:lambda:*:*:function:*Sagemaker*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "LambdaLayerForAWSSDK", "Effect": "Allow", "Action": [ "lambda:GetLayerVersion" ], "Resource": [ "arn:aws:lambda:*:336392948345:layer:AWSSDK*" ] }, { "Sid": "BedrockCustomModelAndEvaluation", "Effect": "Allow", "Action": [ "bedrock:CreateCustomModel", "bedrock:CreateEvaluationJob", "bedrock:GetCustomModel", "bedrock:GetModelImportJob", "bedrock:GetImportedModel", "bedrock:GetEvaluationJob", "bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream" ], "Resource": [ "arn:aws:bedrock:*:*:evaluation-job/*", "arn:aws:bedrock:*:*:imported-model/*", "arn:aws:bedrock:*:*:custom-model/*", "arn:aws:bedrock:*:*:model-import-job/*", "arn:aws:bedrock:*:*:foundation-model/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "BedrockModelImportAndList", "Effect": "Allow", "Action": [ "bedrock:CreateModelImportJob", "bedrock:ListProvisionedModelThroughputs", "bedrock:ListCustomModelDeployments", "bedrock:ListCustomModels", "bedrock:ListModelImportJobs" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "BedrockFoundationModelOperations", "Effect": "Allow", "Action": [ "bedrock:GetFoundationModelAvailability", "bedrock:ListFoundationModels" ], "Resource": "*" }, { "Sid": "PassRoleForSageMaker", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::*:role/service-role/*SageMaker*", "arn:aws:iam::*:role/service-role/*Sagemaker*", "arn:aws:iam::*:role/service-role/*sagemaker*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}", "iam:PassedToService": [ "sagemaker.amazonaws.com", "job.sagemaker.amazonaws.com" ] }, "ArnLike": { "iam:AssociatedResourceArn": "arn:aws:sagemaker:*:*:*" } } }, { "Sid": "PassRoleForAWSLambda", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::*:role/SageMakerForLambda*", "arn:aws:iam::*:role/service-role/SageMakerForLambda*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}", "iam:PassedToService": "lambda.amazonaws.com" }, "ArnLike": { "iam:AssociatedResourceArn": "arn:aws:lambda:*:*:function:*" } } }, { "Sid": "PassRoleForBedrock", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::*:role/SageMakerForBedrock*", "arn:aws:iam::*:role/service-role/SageMakerForBedrock*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}", "iam:PassedToService": "bedrock.amazonaws.com" } } } ] }
Rollen für Lambda und Bedrock
Zusätzlich zu den Berechtigungen für Ihre SageMaker KI-Ausführungsrolle sind für die Modellanpassung Rollen für zwei weitere Dienste erforderlich:
-
Lambda — führt während des Trainings benutzerdefinierte Belohnungsfunktionen aus RL-based
-
Bedrock — liest Modellartefakte aus S3, wenn ein benutzerdefiniertes Modell für die Bereitstellung importiert wird
Wenn Sie Ihre Ausführungsrolle zuvor konfiguriert haben (veralteter Ansatz)
Wenn Sie zuvor dieser Dokumentation gefolgt sind und die Vertrauensrichtlinie Ihrer SageMaker KI-Ausführungsrolle so aktualisiert haben, dass sie vertrauenswürdige Dienstprinzipale einbeziehen lambda.amazonaws.com und bedrock.amazonaws.com als vertrauenswürdige Dienstprinzipale einbeziehen, funktioniert Ihre bestehende Konfiguration weiterhin. Es sind keine Änderungen erforderlich.
Um diesen Ansatz zu verwenden, muss die Vertrauensrichtlinie Ihrer Ausführungsrolle die folgenden Dienstprinzipale enthalten:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": "bedrock.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Anmerkung
Dieser Ansatz ist weniger sicher, da Lambda und Bedrock Ihre Ausführungsrolle übernehmen und alle ihre Berechtigungen erben können — nicht nur die, die jeder Dienst benötigt.
Erstellen Sie separate Rollen (empfohlen)
Um die Sicherheit zu verbessern, erstellen Sie zwei separate IAM-Rollen mit eingeschränktem Geltungsbereich — eine für Lambda und eine für Bedrock —, anstatt diese Dienstprinzipale zu Ihrer KI-Ausführungsrolle hinzuzufügen. SageMaker Jede Rolle vertraut nur ihrem jeweiligen Dienst und enthält nur die Mindestberechtigungen, die dieser Dienst benötigt.
Wenn Sie Ihre Domain über die Schnelleinrichtung der SageMaker KI-Konsole einrichten, werden diese Rollen automatisch erstellt. Wenn Sie Ihre Domain mit einer anderen Methode einrichten, erstellen Sie sie mithilfe der folgenden Schritte manuell.
Lambda-Rolle
Diese Rolle ermöglicht es Lambda, während der RL-based Modellanpassung benutzerdefinierte Belohnungsfunktionen auszuführen.
Namenskonvention: SageMakerForLambda-{domain-id}
-
Erstellen Sie eine IAM-Rolle mit der folgenden Vertrauensrichtlinie. Ersetzen Sie es
<ACCOUNT_ID>durch Ihre 12-stellige AWS Konto-ID.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "<ACCOUNT_ID>" }, "ArnLike": { "aws:SourceArn": "arn:aws:lambda:*:<ACCOUNT_ID>:function:*" } } } ] } -
Hängen Sie die von
AWSLambdaBasicExecutionRoleAWS verwaltete Richtlinie an die Rolle an. Dadurch werden die erforderlichen Berechtigungen zum Schreiben von Protokollen erteilt. CloudWatch
Anmerkung
Für diese Rolle sind keine SageMaker AI- oder Bedrock-Berechtigungen erforderlich. Die aws:SourceArn Bedingungen aws:SourceAccount und beschränken die Rollenübernahme nur auf Lambda-Funktionen in Ihrem Konto und schützen so vor verwirrten Angriffen durch Stellvertreter.
Die Rolle des Fundaments
Diese Rolle ermöglicht es Bedrock, Modellartefakte aus Ihrem SageMaker AI-managed S3-Bucket zu lesen, wenn Sie ein benutzerdefiniertes Modell importieren.
Namenskonvention: SageMakerForBedrock-{domain-id}
-
Erstellen Sie eine IAM-Rolle mit der folgenden Vertrauensrichtlinie. Ersetzen Sie es
<ACCOUNT_ID>durch Ihre 12-stellige AWS Konto-ID.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "bedrock.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "<ACCOUNT_ID>" }, "ArnLike": { "aws:SourceArn": "arn:aws:bedrock:*:<ACCOUNT_ID>:*" } } } ] } -
Fügen Sie der Rolle die folgende Inline-Richtlinie hinzu:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SageMakerBucketReadAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::sagemaker-*-${aws:PrincipalAccount}", "arn:aws:s3:::sagemaker-*-${aws:PrincipalAccount}/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "AllowSSLRequestsOnly", "Action": "s3:*", "Effect": "Deny", "Resource": [ "arn:aws:s3:::sagemaker-*-${aws:PrincipalAccount}", "arn:aws:s3:::sagemaker-*-${aws:PrincipalAccount}/*" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } } } ] }
Anmerkung
Für diese Rolle sind keine SageMaker AI-, Lambda- oder Bedrock-API-Berechtigungen erforderlich. Sie gewährt Bedrock nur Lesezugriff auf Modellartefakte in Ihrem SageMaker AI-managed S3-Bucket.