in runtool/runtool/experiments_converter.py [0:0]
def generate_job_json(job: Job) -> Iterable[dict]:
"""Creates JSONs for starting training jobs in SageMaker."""
run_configuration = job.run_configuration
tags = job.generate_tags()
datasets = job.generate_datasets()
metrics = job.generate_metrics()
overrides = job.generate_sagemaker_overrides()
hyperparameters = job.generate_hyperparameters()
s3_path = f"s3://{job.bucket}/{job.experiment_name}/{run_configuration}"
for run in range(job.runs):
job_name = job.generate_job_name(run)
json_ = {
"AlgorithmSpecification": {
"TrainingImage": job.experiment["algorithm"]["image"],
"TrainingInputMode": "File",
"MetricDefinitions": metrics,
},
"HyperParameters": hyperparameters,
"InputDataConfig": datasets,
"OutputDataConfig": {"S3OutputPath": s3_path},
"ResourceConfig": {
"InstanceCount": 1,
"InstanceType": job.experiment["algorithm"]["instance"],
"VolumeSizeInGB": 32,
},
"StoppingCondition": {"MaxRuntimeInSeconds": 86400},
"RoleArn": job.role,
"TrainingJobName": job_name,
"Tags": [
*tags,
{"Key": "run_number", "Value": str(run)}, # add current run
],
}
# apply any custom sagemaker json
yield update_nested_dict(json_, overrides)