Bring your own container (BYOC) - Amazon Braket

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à.

Bring your own container (BYOC)

Amazon BraketHybrid Jobs fornisce tre contenitori predefiniti per l'esecuzione di codice in ambienti diversi descritti nellaDefinisci l'ambiente per il tuo script algoritmoArgomento. Se uno di questi contenitori supporta il tuo caso d'uso, devi fornire lo script dell'algoritmo solo quando crei un lavoro. Le dipendenze mancanti minori possono essere aggiunte dallo script dell'algoritmo usando pip.

Nota

LaPlugin Strawberrynon è incluso in modo nativo nei contenitori di lavori ibridi Amazon Braket. Se desideri eseguire un carico di lavoro ibrido utilizzando il dispositivo Xanadu, devi eseguire BYOC con le dipendenze di Strawberry Fields incluse.

Se nessuno di questi contenitori supporta il tuo caso d'uso o se desideri espanderli,Amazon BraketHybrid Jobs supporta l'esecuzione di lavori con la propria immagine contenitore Docker personalizzata. Questa funzionalità BYOC consente di eseguire codice in un ambiente in cui è installato il software specificato. Il contenitore avvia l'esecuzione di uno script di punto di ingresso specificato che è possibile utilizzare per accedere a codice utente e dati personalizzati. Per esempi, consulta la sezione.Processi ibridi Amazon BraketTutorial della .

Per eseguireAmazonBraketHybrid Jobs nel tuo container, procedere nel seguente modo:

  1. Configurazione prerequisiti di installazione: Per creare e caricare il tuo contenitore personalizzato, devi avere installato Docker.Amazon BraketI notebook vengono forniti con preinstallato Docker.

  2. Creazione del container del container: Crea una nuova directory con un Dockerfile per installare e configurare il software e l'ambiente necessario per l'esecuzione dello script. È possibile scaricare un file di esempio seguendo le istruzioni fornite nelDefinisci l'ambiente per il tuo script algoritmoArgomento. Potrebbe essere necessario aggiungere pacchetti aggiuntivi per supportare il container. Questo file potrebbe avere più software del necessario, nel qual caso è possibile accelerare il processo di creazione rimuovendo i componenti non necessari. Nota:sagemaker-trainingè necessario e non deve essere rimosso. È necessario specificare lo script iniziale da eseguire quando il contenitore inizia con la variabile di ambienteENV SAGEMAKER_PROGRAM your_file.py, doveyour_file.pyè un file presente nella directory/opt/ml/codeall'interno del tuo contenitore. Durante la creazione di un lavoro, l'utente è in grado di specificare unAmazonPosizione S3 con codice e specifica un punto di ingresso da eseguire.Braket Jobs crea variabili d'ambiente per lo script per trovare il codice di input dell'utente da eseguire. LaAmazonLa posizione S3 e il punto di ingresso al codice utente sono esposti allo script iniziale attraverso le variabili di ambienteAMZN_BRAKET_SCRIPT_S3_URIeAMZN_BRAKET_SCRIPT_ENTRY_POINTrispettivamente. L'input dell'utente può essere compresso e un tipo di compressione è accessibile tramite la variabileAMZN_BRAKET_SCRIPT_COMPRESSION_TYPE. È responsabilità della tua sceneggiatura,your_file.py,per utilizzare queste informazioni per eseguire il codice utente. Uno script di esempio che esegue il codice utente sui dati dell'utente èbraket_container.pynegli esempi è possibile scaricare come descritto nellaDefinisci l'ambiente per il tuo script algoritmoArgomento.

  3. Creazione di unAmazonArchivio ECR: Il repository creato deve essere privato. Se si specifica un'immagine pubblica, ilAmazon BraketIl client Hybrid Jobs genera un errore quando tenta di convalidare la posizione dell'immagine. Inoltre, ilAWSLa regione dell'immagine del contenitore deve corrispondere alAWSRegione in cui si esegue il lavoro. Per configurare il repository, accedere alla pagina di installazione del repositoryLa console Amazon ECR. Quindi, selezionareCrea repository, scegliprivatoper l'impostazione della visibilità e dai un nome al tuo nuovo repository. Per una guida utente completa sulla configurazione di un repository, vedereNozioni di base su Amazon ECR utilizzando la Console di gestione AWS. NOTA che il ruolo standard creato per Jobs ha solo le autorizzazioni per scaricare le immagini contenitore che iniziano con il prefisso «amazon-braket-» e che sarà necessario aggiungere autorizzazioni inline al tuo ruolo di lavoro se desideri utilizzare immagini contenitore con un nome diverso (vedi le attuali restrizioni della politicaqui). Se si prevede di eseguire processi da un account diverso da quello utilizzato per creare il repository, è necessario consentire all'account utilizzato per eseguire i processi di estrarre le immagini create dall'account utilizzato per crearli. Le azioni che devi consentire sul tuo repository sonoecr:DescribeImageseecr:BatchGetImage. Per aggiungere queste autorizzazioni all'immagine dalAmazonConsole ECR, seleziona la tua immagine e scegliautorizzazioninel menu. Puoi aggiungere una regola per consentire a queste due azioni per l'account che desideri consentire di eseguire lavori con il tuo contenitore.

  4. Crea l'immagine e inviala al repository: Devi autenticare Docker per il caricamento suAmazon(RIPRISTINA) È possibile recuperare un token di autenticazione e autenticare il client Docker nel registro con l'AWSCLI utilizzando il seguente codice.

aws ecr get-login-password --region ${your_region} | docker login --username AWS --password-stdin ${aws_account_id}.dkr.ecr.${your_region}.amazonaws.com

Ora dovresti essere in grado di creare la tua immagine e inviarla al tuo repository.

cd ${your_docker_directory} docker build -t ${your_job_container} . docker tag ${your_job_container}:latest ${aws_account_id}.dkr.ecr.${your_region}.amazonaws.com/${your_job_container}:latest docker push ${aws_account_id}.dkr.ecr.${your_region}.amazonaws.com/${your_job_container}:latest

Per creare un lavoro con il tuo contenitore, chiamaAwsQuantumJob.createcon l'argomentoimage_urispecificato. È possibile utilizzare una QPU, un simulatore on demand o semplicemente eseguire il codice localmente sul processore classico disponibile conAmazon BraketLavori ibride. Per eseguire il codice sul processore classico, specificare ilinstanceTypee lainstanceCountche desideri utilizzare aggiornando ilInstanceConfig. Si noti che se si specifica uninstance_count > 1, dovrai assicurarti che il tuo codice sia in grado di funzionare su più host. Il limite superiore per il numero di istanze che puoi scegliere è5.

Ad esempio:

job = AwsQuantumJob.create( source_module="source_dir", entry_point="source_dir.algorithm_script:start_here", image_uri="111122223333.dkr.ecr.us-west-2.amazonaws.com/my-byoc-container:latest", instance_config=InstanceConfig(instanceType="ml.p3.8xlarge", instanceCount=3), device="local:braket/braket.local.qubit", # ... )
Nota

Il dispositivo arn ti permette di tenere traccia del simulatore che hai usato come metadati del lavoro. I valori accettabili devono avere il seguente formato: device = "local:<provider>/<simulator_name>". Nota,<provider>e<simulator_name>deve essere composto solo da lettere, numeri,_,-e.. La stringa è limitata a 256 caratteri.

Se si prevede di utilizzare BYOC e non si utilizza ilAmazon BraketSDK per creare attività, è necessario passare il valore della variabile ambientaleAMZN_BRAKET_JOB_TOKENaljobTokenparametro nellaCreateQuantumTask. In caso contrario, le attività non avranno priorità e verranno fatturate come attività autonome regolari.