Configurazione di Neptune ML senza utilizzare il modello di avvio rapido AWS CloudFormation - Amazon Neptune

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione di Neptune ML senza utilizzare il modello di avvio rapido AWS CloudFormation

1. Inizia con un cluster database Neptune funzionante

Se non utilizzi il modello di avvio rapido AWS CloudFormation per configurare Neptune ML, dovrai usare un cluster database Neptune esistente. Se lo desideri, puoi usarne uno che hai già o clonarne uno che usi già oppure puoi crearne uno nuovo (consulta Creazione di un cluster DB).

2. Installazione del servizio Neptune-Export

Se non hai ancora provveduto, installa il servizio Neptune-Export, come spiegato in Utilizzo del servizio Neptune-Export per esportare i dati di Neptune.

Aggiungi una regola in entrata al gruppo di sicurezza NeptuneExportSecurityGroup creato dal programma di installazione, con le seguenti impostazioni:

  • Tipo: Custom TCP

  • Protocol (Protocollo): TCP

  • Intervallo porte: 80 - 443

  • Origine: (ID del gruppo di sicurezza del cluster database Neptune)

3. Crea un ruolo IAM NeptuneLoadFromS3 personalizzato

Se ancora non hai provveduto, crea un ruolo IAM NeptuneLoadFromS3 personalizzato, come spiegato in Creazione di un IAM ruolo per accedere ad Amazon S3.

Per creare un ruolo NeptuneSageMakerIAMRole personalizzato

Utilizza la console IAM per creare un ruolo NeptuneSageMakerIAMRole personalizzato, usando la seguente policy:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:CreateVpcEndpoint", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcEndpoints", "ec2:DescribeVpcs" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::*:role/*" ], "Condition": { "StringEquals": { "iam:PassedToService": [ "sagemaker.amazonaws.com" ] } }, "Effect": "Allow" }, { "Action": [ "kms:CreateGrant", "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "arn:aws:kms:*:*:key/*", "Effect": "Allow" }, { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:GetLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/sagemaker/*" ], "Effect": "Allow" }, { "Action": [ "sagemaker:AddTags", "sagemaker:CreateEndpoint", "sagemaker:CreateEndpointConfig", "sagemaker:CreateHyperParameterTuningJob", "sagemaker:CreateModel", "sagemaker:CreateProcessingJob", "sagemaker:CreateTrainingJob", "sagemaker:CreateTransformJob", "sagemaker:DeleteEndpoint", "sagemaker:DeleteEndpointConfig", "sagemaker:DeleteModel", "sagemaker:DescribeEndpoint", "sagemaker:DescribeEndpointConfig", "sagemaker:DescribeHyperParameterTuningJob", "sagemaker:DescribeModel", "sagemaker:DescribeProcessingJob", "sagemaker:DescribeTrainingJob", "sagemaker:DescribeTransformJob", "sagemaker:InvokeEndpoint", "sagemaker:ListTags", "sagemaker:ListTrainingJobsForHyperParameterTuningJob", "sagemaker:StopHyperParameterTuningJob", "sagemaker:StopProcessingJob", "sagemaker:StopTrainingJob", "sagemaker:StopTransformJob", "sagemaker:UpdateEndpoint", "sagemaker:UpdateEndpointWeightsAndCapacities" ], "Resource": [ "arn:aws:sagemaker:*:*:*" ], "Effect": "Allow" }, { "Action": [ "sagemaker:ListEndpointConfigs", "sagemaker:ListEndpoints", "sagemaker:ListHyperParameterTuningJobs", "sagemaker:ListModels", "sagemaker:ListProcessingJobs", "sagemaker:ListTrainingJobs", "sagemaker:ListTransformJobs" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:AbortMultipartUpload", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*" ], "Effect": "Allow" } ] }

Durante la creazione di questo ruolo, modifica la relazione di trust affinché corrisponda a quella seguente:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ec2.amazonaws.com", "rds.amazonaws.com", "sagemaker.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Infine, copia il nome ARN assegnato a questo nuovo ruolo NeptuneSageMakerIAMRole.

Importante
  • Assicurati che le autorizzazioni Amazon S3 indicate in NeptuneSageMakerIAMRole corrispondano a quelle precedenti.

  • Il nome ARN universale, arn:aws:s3:::*, è usato per la risorsa Amazon S3 nella policy precedente. Se per qualche motivo non è possibile utilizzare il nome ARN universale, è necessario aggiungere arn:aws:s3:::graphlytics* e il nome ARN di qualsiasi altra risorsa Amazon S3 del cliente che i comandi Neptune ML utilizzeranno nella sezione delle risorse.

Configurazione del cluster database per abilitare Neptune ML

Per configurare il cluster database per Neptune ML
  1. Nella console Neptune passa a Gruppi di parametri e quindi al gruppo di parametri del cluster database associato al cluster database che intendi usare. Imposta il parametro neptune_ml_iam_role sul nome ARN assegnato al ruolo NeptuneSageMakerIAMRole appena creato.

  2. Passa a Database, quindi seleziona il cluster database che utilizzerai per Neptune ML. Seleziona Azioni, quindi Gestisci ruoli IAM.

  3. Nella pagina Gestisci ruoli IAM seleziona Aggiungi ruolo e aggiungi NeptuneSageMakerIAMRole. Aggiungi quindi il ruolo NeptuneLoadFromS3.

  4. Riavvia l'istanza di scrittura del cluster database.

Creazione di due endpoint SageMaker nel VPC Neptune

Infine, per consentire al motore Neptune di accedere alle API di gestione SageMaker necessarie, occorre creare due endpoint SageMaker nel VPC Neptune, come spiegato in Creazione di due endpoint per SageMaker nel VPC Neptune.

Configurazione manuale di un notebook Neptune per Neptune ML

I notebook Neptune SageMaker sono precaricati con una varietà di notebook di esempio per Neptune ML. Puoi visualizzare in anteprima questi esempi nel repository GitHub di notebook per grafi open source.

Puoi usare uno dei notebook Neptune esistenti o, se preferisci, puoi crearne uno personalizzato, seguendo le istruzioni riportate in Utilizzo Neptune Workbench per ospitare i notebook Neptune.

Puoi anche configurare un notebook Neptune predefinito da utilizzare con Neptune ML seguendo questa procedura:

Modifica di un notebook per Neptune ML
  1. Apri la console di Amazon SageMaker all'indirizzo https://console.aws.amazon.com/sagemaker/.

  2. Nel riquadro di navigazione a sinistra scegli Notebook, quindi Istanze notebook. Cerca il nome del notebook Neptune da usare per Neptune ML e selezionalo per accedere alla pagina dei dettagli.

  3. Se l'istanza notebook è in esecuzione, seleziona il pulsante Arresta in alto a destra nella pagina dei dettagli del notebook.

  4. In Impostazioni dell'istanza Notebook, in Configurazione del ciclo di vita seleziona il collegamento per aprire la pagina relativa al ciclo di vita del notebook.

  5. Seleziona Modifica in alto a destra, quindi fai clic su Continua.

  6. Nella scheda Avvia notebook modifica lo script per includere comandi di esportazione aggiuntivi e per compilare i campi per il ruolo IAM di Neptune ML e l'URI del servizio di esportazione. L'aspetto sarà simile al seguente a seconda della shell (interprete di comandi):

    echo "export NEPTUNE_ML_ROLE_ARN=(your Neptune ML IAM role ARN)" >> ~/.bashrc echo "export NEPTUNE_EXPORT_API_URI=(your export service URI)" >> ~/.bashrc
  7. Selezionare Update (Aggiorna).

  8. Torna alla pagina dell'istanza notebook. In Autorizzazioni e crittografia è disponibile un campo per ARN del ruolo IAM. Seleziona il collegamento in questo campo per passare al ruolo IAM con cui viene eseguita questa istanza notebook.

  9. Crea una nuova policy inline come questa:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:PutMetricData" ], "Resource": "arn:aws:cloudwatch:[AWS_REGION]:[AWS_ACCOUNT_ID]:*", "Effect": "Allow" }, { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents", "logs:GetLogEvents" ], "Resource": "arn:aws:logs:[AWS_REGION]:[AWS_ACCOUNT_ID]:*", "Effect": "Allow" }, { "Action": [ "s3:Put*", "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::*", "Effect": "Allow" }, { "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:[AWS_REGION]:[AWS_ACCOUNT_ID]:*/*", "Effect": "Allow" }, { "Action": [ "sagemaker:CreateModel", "sagemaker:CreateEndpointConfig", "sagemaker:CreateEndpoint", "sagemaker:DescribeModel", "sagemaker:DescribeEndpointConfig", "sagemaker:DescribeEndpoint", "sagemaker:DeleteModel", "sagemaker:DeleteEndpointConfig", "sagemaker:DeleteEndpoint" ], "Resource": "arn:aws:sagemaker:[AWS_REGION]:[AWS_ACCOUNT_ID]:*/*", "Effect": "Allow" }, { "Action": [ "iam:PassRole" ], "Resource": "[YOUR_NEPTUNE_ML_IAM_ROLE_ARN]"", "Effect": "Allow" } ] }
  10. Salva questa nuova policy e collegala al ruolo IAM nel passaggio 8.

  11. Seleziona Avvia in alto a destra nella pagina dei dettagli dell'istanza notebook SageMaker per avviare l'istanza notebook.