Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Vous pouvez accéder à Amazon Braket Hybrid Jobs et interagir avec celui-ci directement à l'aide du API. Toutefois, les valeurs par défaut et les méthodes pratiques ne sont pas disponibles lorsque vous utilisez le API directement.
Note
Nous vous recommandons vivement d'interagir avec Amazon Braket Hybrid Jobs à l'aide du SDK Amazon Braket Python
Cette rubrique décrit les principes de base de l'utilisation du API. Si vous choisissez d'utiliser l'API, n'oubliez pas que cette approche peut être plus complexe et qu'elle doit être prête à plusieurs itérations pour exécuter votre tâche hybride.
Pour utiliser l'API, votre compte doit avoir un rôle dans la politique AmazonBraketFullAccess
gérée.
Note
Pour plus d'informations sur la manière d'obtenir un rôle avec la politique AmazonBraketFullAccess
gérée, consultez la page Activer Amazon Braket.
De plus, vous avez besoin d'un rôle d'exécution. Ce rôle sera transmis au service. Vous pouvez créer le rôle à l'aide de la console Amazon Braket. Utilisez l'onglet Rôles d'exécution de la page Autorisations et paramètres pour créer un rôle par défaut pour les tâches hybrides.
La CreateJob
API nécessite que vous spécifiiez tous les paramètres requis pour la tâche hybride. Pour utiliser Python, compressez les fichiers de script de votre algorithme dans un bundle tar, tel qu'un fichier input.tar.gz, et exécutez le script suivant. Mettez à jour les parties du code entre crochets (<>
) pour qu'elles correspondent aux informations de votre compte et au point d'entrée qui spécifient le chemin, le fichier et la méthode par lesquels votre tâche hybride commence.
from braket.aws import AwsDevice, AwsSession
import boto3
from datetime import datetime
s3_client = boto3.client("s3")
client = boto3.client("braket")
project_name = "job-test"
job_name = project_name + "-" + datetime.strftime(datetime.now(), "%Y%m%d%H%M%S")
bucket = "amazon-braket-<your_bucket>"
s3_prefix = job_name
job_script = "input.tar.gz"
job_object = f"{s3_prefix}/script/{job_script}"
s3_client.upload_file(job_script, bucket, job_object)
input_data = "inputdata.csv"
input_object = f"{s3_prefix}/input/{input_data}"
s3_client.upload_file(input_data, bucket, input_object)
job = client.create_job(
jobName=job_name,
roleArn="arn:aws:iam::<your_account>:role/service-role/AmazonBraketJobsExecutionRole", # https://docs.aws.amazon.com/braket/latest/developerguide/braket-manage-access.html#about-amazonbraketjobsexecution
algorithmSpecification={
"scriptModeConfig": {
"entryPoint": "<your_execution_module>:<your_execution_method>",
"containerImage": {"uri": "292282985366.dkr.ecr.us-west-1.amazonaws.com/amazon-braket-base-jobs:1.0-cpu-py37-ubuntu18.04"}, # Change to the specific region you are using
"s3Uri": f"s3://{bucket}/{job_object}",
"compressionType": "GZIP"
}
},
inputDataConfig=[
{
"channelName": "hellothere",
"compressionType": "NONE",
"dataSource": {
"s3DataSource": {
"s3Uri": f"s3://{bucket}/{s3_prefix}/input",
"s3DataType": "S3_PREFIX"
}
}
}
],
outputDataConfig={
"s3Path": f"s3://{bucket}/{s3_prefix}/output"
},
instanceConfig={
"instanceType": "ml.m5.large",
"instanceCount": 1,
"volumeSizeInGb": 1
},
checkpointConfig={
"s3Uri": f"s3://{bucket}/{s3_prefix}/checkpoints",
"localPath": "/opt/omega/checkpoints"
},
deviceConfig={
"priorityAccess": {
"devices": [
"arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3"
]
}
},
hyperParameters={
"hyperparameter key you wish to pass": "<hyperparameter value you wish to pass>",
},
stoppingCondition={
"maxRuntimeInSeconds": 1200,
"maximumTaskLimit": 10
},
)
Une fois que vous avez créé votre tâche hybride, vous pouvez accéder aux détails de la tâche hybride via GetJob
API ou la console. Pour obtenir les détails de la tâche hybride à partir de la session Python dans laquelle vous avez exécuté le createJob
code comme dans l'exemple précédent, utilisez la commande Python suivante.
getJob = client.get_job(jobArn=job["jobArn"])
Pour annuler une tâche hybride, appelez le CancelJob
API avec le Amazon Resource Name du poste ('JobArn').
cancelJob = client.cancel_job(jobArn=job["jobArn"])
Vous pouvez spécifier des points de contrôle dans le cadre du createJob
API à l'aide du checkpointConfig
paramètre.
checkpointConfig = {
"localPath" : "/opt/omega/checkpoints",
"s3Uri": f"s3://{bucket}/{s3_prefix}/checkpoints"
},
Note
Le LocalPath de checkpointConfig
ne peut démarrer par aucun des chemins réservés suivants :/opt/ml
, /opt/braket
/tmp
, ou/usr/local/nvidia
.