{
  "description": "TrainingJob is the Schema for the TrainingJobs API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "TrainingJobSpec defines the desired state of TrainingJob.\n\nContains information about a training job.",
      "properties": {
        "algorithmSpecification": {
          "description": "The registry path of the Docker image that contains the training algorithm\nand algorithm-specific metadata, including the input mode. For more information\nabout algorithms provided by SageMaker, see Algorithms (https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html).\nFor information about providing your own algorithms, see Using Your Own Algorithms\nwith Amazon SageMaker (https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html).",
          "properties": {
            "algorithmName": {
              "type": "string"
            },
            "enableSageMakerMetricsTimeSeries": {
              "type": "boolean"
            },
            "metricDefinitions": {
              "items": {
                "description": "Specifies a metric that the training algorithm writes to stderr or stdout.\nYou can view these logs to understand how your training job performs and\ncheck for any errors encountered during training. SageMaker hyperparameter\ntuning captures all defined metrics. Specify one of the defined metrics to\nuse as an objective metric using the TuningObjective (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html#sagemaker-Type-HyperParameterTrainingJobDefinition-TuningObjective)\nparameter in the HyperParameterTrainingJobDefinition API to evaluate job\nperformance during hyperparameter tuning.",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "regex": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "trainingImage": {
              "type": "string"
            },
            "trainingInputMode": {
              "description": "The training input mode that the algorithm supports. For more information\nabout input modes, see Algorithms (https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html).\n\nPipe mode\n\nIf an algorithm supports Pipe mode, Amazon SageMaker streams data directly\nfrom Amazon S3 to the container.\n\nFile mode\n\nIf an algorithm supports File mode, SageMaker downloads the training data\nfrom S3 to the provisioned ML storage volume, and mounts the directory to\nthe Docker volume for the training container.\n\nYou must provision the ML storage volume with sufficient capacity to accommodate\nthe data downloaded from S3. In addition to the training data, the ML storage\nvolume also stores the output model. The algorithm container uses the ML\nstorage volume to also store intermediate information, if any.\n\nFor distributed algorithms, training data is distributed uniformly. Your\ntraining duration is predictable if the input data objects sizes are approximately\nthe same. SageMaker does not split the files any further for model training.\nIf the object sizes are skewed, training won't be optimal as the data distribution\nis also skewed when one host in a training cluster is overloaded, thus becoming\na bottleneck in training.\n\nFastFile mode\n\nIf an algorithm supports FastFile mode, SageMaker streams data directly from\nS3 to the container with no code changes, and provides file system access\nto the data. Users can author their training script to interact with these\nfiles as if they were stored on disk.\n\nFastFile mode works best when the data is read sequentially. Augmented manifest\nfiles aren't supported. The startup time is lower when there are fewer files\nin the S3 bucket provided.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "checkpointConfig": {
          "description": "Contains information about the output location for managed spot training\ncheckpoint data.",
          "properties": {
            "localPath": {
              "type": "string"
            },
            "s3URI": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "debugHookConfig": {
          "description": "Configuration information for the Amazon SageMaker Debugger hook parameters,\nmetric and tensor collections, and storage paths. To learn more about how\nto configure the DebugHookConfig parameter, see Use the SageMaker and Debugger\nConfiguration API Operations to Create, Update, and Debug Your Training Job\n(https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-createtrainingjob-api.html).",
          "properties": {
            "collectionConfigurations": {
              "items": {
                "description": "Configuration information for the Amazon SageMaker Debugger output tensor\ncollections.",
                "properties": {
                  "collectionName": {
                    "type": "string"
                  },
                  "collectionParameters": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "type": "object"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "hookParameters": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "localPath": {
              "type": "string"
            },
            "s3OutputPath": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "debugRuleConfigurations": {
          "description": "Configuration information for Amazon SageMaker Debugger rules for debugging\noutput tensors.",
          "items": {
            "description": "Configuration information for SageMaker Debugger rules for debugging. To\nlearn more about how to configure the DebugRuleConfiguration parameter, see\nUse the SageMaker and Debugger Configuration API Operations to Create, Update,\nand Debug Your Training Job (https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-createtrainingjob-api.html).",
            "properties": {
              "instanceType": {
                "type": "string"
              },
              "localPath": {
                "type": "string"
              },
              "ruleConfigurationName": {
                "type": "string"
              },
              "ruleEvaluatorImage": {
                "type": "string"
              },
              "ruleParameters": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              "s3OutputPath": {
                "type": "string"
              },
              "volumeSizeInGB": {
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "enableInterContainerTrafficEncryption": {
          "description": "To encrypt all communications between ML compute instances in distributed\ntraining, choose True. Encryption provides greater security for distributed\ntraining, but training might take longer. How long it takes depends on the\namount of communication between compute instances, especially if you use\na deep learning algorithm in distributed training. For more information,\nsee Protect Communications Between ML Compute Instances in a Distributed\nTraining Job (https://docs.aws.amazon.com/sagemaker/latest/dg/train-encrypt.html).",
          "type": "boolean"
        },
        "enableManagedSpotTraining": {
          "description": "To train models using managed spot training, choose True. Managed spot training\nprovides a fully managed and scalable infrastructure for training machine\nlearning models. this option is useful when training jobs can be interrupted\nand when there is flexibility when the training job is run.\n\nThe complete and intermediate results of jobs are stored in an Amazon S3\nbucket, and can be used as a starting point to train models incrementally.\nAmazon SageMaker provides metrics and logs in CloudWatch. They can be used\nto see when managed spot training jobs are running, interrupted, resumed,\nor completed.",
          "type": "boolean"
        },
        "enableNetworkIsolation": {
          "description": "Isolates the training container. No inbound or outbound network calls can\nbe made, except for calls between peers within a training cluster for distributed\ntraining. If you enable network isolation for training jobs that are configured\nto use a VPC, SageMaker downloads and uploads customer data and model artifacts\nthrough the specified VPC, but the training container does not have network\naccess.",
          "type": "boolean"
        },
        "environment": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "The environment variables to set in the Docker container.\n\nDo not include any security-sensitive information including account access\nIDs, secrets, or tokens in any environment fields. As part of the shared\nresponsibility model, you are responsible for any potential exposure, unauthorized\naccess, or compromise of your sensitive data if caused by security-sensitive\ninformation included in the request environment variable or plain text fields.",
          "type": "object"
        },
        "experimentConfig": {
          "description": "Associates a SageMaker job as a trial component with an experiment and trial.\nSpecified when you call the following APIs:\n\n  - CreateProcessingJob (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html)\n\n  - CreateTrainingJob (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)\n\n  - CreateTransformJob (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)",
          "properties": {
            "experimentName": {
              "type": "string"
            },
            "trialComponentDisplayName": {
              "type": "string"
            },
            "trialName": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "hyperParameters": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Algorithm-specific parameters that influence the quality of the model. You\nset hyperparameters before you start the learning process. For a list of\nhyperparameters for each training algorithm provided by SageMaker, see Algorithms\n(https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html).\n\nYou can specify a maximum of 100 hyperparameters. Each hyperparameter is\na key-value pair. Each key and value is limited to 256 characters, as specified\nby the Length Constraint.\n\nDo not include any security-sensitive information including account access\nIDs, secrets, or tokens in any hyperparameter fields. As part of the shared\nresponsibility model, you are responsible for any potential exposure, unauthorized\naccess, or compromise of your sensitive data if caused by any security-sensitive\ninformation included in the request hyperparameter variable or plain text\nfields.",
          "type": "object"
        },
        "infraCheckConfig": {
          "description": "Contains information about the infrastructure health check configuration\nfor the training job.",
          "properties": {
            "enableInfraCheck": {
              "type": "boolean"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "inputDataConfig": {
          "description": "An array of Channel objects. Each channel is a named input source. InputDataConfig\ndescribes the input data and its location.\n\nAlgorithms can accept input data from one or more channels. For example,\nan algorithm might have two channels of input data, training_data and validation_data.\nThe configuration for each channel provides the S3, EFS, or FSx location\nwhere the input data is stored. It also provides information about the stored\ndata: the MIME type, compression method, and whether the data is wrapped\nin RecordIO format.\n\nDepending on the input mode that the algorithm supports, SageMaker either\ncopies input data files from an S3 bucket to a local directory in the Docker\ncontainer, or makes it available as input streams. For example, if you specify\nan EFS location, input data files are available as input streams. They do\nnot need to be downloaded.\n\nYour input must be in the same Amazon Web Services region as your training\njob.",
          "items": {
            "description": "A channel is a named input source that training algorithms can consume.",
            "properties": {
              "channelName": {
                "type": "string"
              },
              "compressionType": {
                "type": "string"
              },
              "contentType": {
                "type": "string"
              },
              "dataSource": {
                "description": "Describes the location of the channel data.",
                "properties": {
                  "fileSystemDataSource": {
                    "description": "Specifies a file system data source for a channel.",
                    "properties": {
                      "directoryPath": {
                        "type": "string"
                      },
                      "fileSystemAccessMode": {
                        "type": "string"
                      },
                      "fileSystemID": {
                        "type": "string"
                      },
                      "fileSystemType": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "s3DataSource": {
                    "description": "Describes the S3 data source.\n\nYour input bucket must be in the same Amazon Web Services region as your\ntraining job.",
                    "properties": {
                      "attributeNames": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "hubAccessConfig": {
                        "description": "The configuration for a private hub model reference that points to a public\nSageMaker JumpStart model.\n\nFor more information about private hubs, see Private curated hubs for foundation\nmodel access control in JumpStart (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-curated-hubs.html).",
                        "properties": {
                          "hubContentARN": {
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "instanceGroupNames": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "modelAccessConfig": {
                        "description": "The access configuration file to control access to the ML model. You can\nexplicitly accept the model end-user license agreement (EULA) within the\nModelAccessConfig.\n\n   * If you are a Jumpstart user, see the End-user license agreements (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-choose.html#jumpstart-foundation-models-choose-eula)\n   section for more details on accepting the EULA.\n\n   * If you are an AutoML user, see the Optional Parameters section of Create\n   an AutoML job to fine-tune text generation models using the API for details\n   on How to set the EULA acceptance when fine-tuning a model using the AutoML\n   API (https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-create-experiment-finetune-llms.html#autopilot-llms-finetuning-api-optional-params).",
                        "properties": {
                          "acceptEula": {
                            "type": "boolean"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "s3DataDistributionType": {
                        "type": "string"
                      },
                      "s3DataType": {
                        "type": "string"
                      },
                      "s3URI": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "inputMode": {
                "description": "The training input mode that the algorithm supports. For more information\nabout input modes, see Algorithms (https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html).\n\nPipe mode\n\nIf an algorithm supports Pipe mode, Amazon SageMaker streams data directly\nfrom Amazon S3 to the container.\n\nFile mode\n\nIf an algorithm supports File mode, SageMaker downloads the training data\nfrom S3 to the provisioned ML storage volume, and mounts the directory to\nthe Docker volume for the training container.\n\nYou must provision the ML storage volume with sufficient capacity to accommodate\nthe data downloaded from S3. In addition to the training data, the ML storage\nvolume also stores the output model. The algorithm container uses the ML\nstorage volume to also store intermediate information, if any.\n\nFor distributed algorithms, training data is distributed uniformly. Your\ntraining duration is predictable if the input data objects sizes are approximately\nthe same. SageMaker does not split the files any further for model training.\nIf the object sizes are skewed, training won't be optimal as the data distribution\nis also skewed when one host in a training cluster is overloaded, thus becoming\na bottleneck in training.\n\nFastFile mode\n\nIf an algorithm supports FastFile mode, SageMaker streams data directly from\nS3 to the container with no code changes, and provides file system access\nto the data. Users can author their training script to interact with these\nfiles as if they were stored on disk.\n\nFastFile mode works best when the data is read sequentially. Augmented manifest\nfiles aren't supported. The startup time is lower when there are fewer files\nin the S3 bucket provided.",
                "type": "string"
              },
              "recordWrapperType": {
                "type": "string"
              },
              "shuffleConfig": {
                "description": "A configuration for a shuffle option for input data in a channel. If you\nuse S3Prefix for S3DataType, the results of the S3 key prefix matches are\nshuffled. If you use ManifestFile, the order of the S3 object references\nin the ManifestFile is shuffled. If you use AugmentedManifestFile, the order\nof the JSON lines in the AugmentedManifestFile is shuffled. The shuffling\norder is determined using the Seed value.\n\nFor Pipe input mode, when ShuffleConfig is specified shuffling is done at\nthe start of every epoch. With large datasets, this ensures that the order\nof the training data is different for each epoch, and it helps reduce bias\nand possible overfitting. In a multi-node training job when ShuffleConfig\nis combined with S3DataDistributionType of ShardedByS3Key, the data is shuffled\nacross nodes so that the content sent to a particular node on the first epoch\nmight be sent to a different node on the second epoch.",
                "properties": {
                  "seed": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object",
                "additionalProperties": false
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "outputDataConfig": {
          "description": "Specifies the path to the S3 location where you want to store model artifacts.\nSageMaker creates subfolders for the artifacts.",
          "properties": {
            "compressionType": {
              "type": "string"
            },
            "kmsKeyID": {
              "type": "string"
            },
            "s3OutputPath": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "profilerConfig": {
          "description": "Configuration information for Amazon SageMaker Debugger system monitoring,\nframework profiling, and storage paths.",
          "properties": {
            "profilingIntervalInMilliseconds": {
              "format": "int64",
              "type": "integer"
            },
            "profilingParameters": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "s3OutputPath": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "profilerRuleConfigurations": {
          "description": "Configuration information for Amazon SageMaker Debugger rules for profiling\nsystem and framework metrics.",
          "items": {
            "description": "Configuration information for profiling rules.",
            "properties": {
              "instanceType": {
                "type": "string"
              },
              "localPath": {
                "type": "string"
              },
              "ruleConfigurationName": {
                "type": "string"
              },
              "ruleEvaluatorImage": {
                "type": "string"
              },
              "ruleParameters": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              "s3OutputPath": {
                "type": "string"
              },
              "volumeSizeInGB": {
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "remoteDebugConfig": {
          "description": "Configuration for remote debugging. To learn more about the remote debugging\nfunctionality of SageMaker, see Access a training container through Amazon\nWeb Services Systems Manager (SSM) for remote debugging (https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-debugging.html).",
          "properties": {
            "enableRemoteDebug": {
              "type": "boolean"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "resourceConfig": {
          "description": "The resources, including the ML compute instances and ML storage volumes,\nto use for model training.\n\nML storage volumes store model artifacts and incremental states. Training\nalgorithms might also use ML storage volumes for scratch space. If you want\nSageMaker to use the ML storage volume to store the training data, choose\nFile as the TrainingInputMode in the algorithm specification. For distributed\ntraining algorithms, specify an instance count greater than 1.",
          "properties": {
            "instanceCount": {
              "format": "int64",
              "type": "integer"
            },
            "instanceGroups": {
              "items": {
                "description": "Defines an instance group for heterogeneous cluster training. When requesting\na training job using the CreateTrainingJob (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)\nAPI, you can configure multiple instance groups .",
                "properties": {
                  "instanceCount": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "instanceGroupName": {
                    "type": "string"
                  },
                  "instanceType": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "instancePlacementConfig": {
              "description": "Configuration for how instances are placed and allocated within UltraServers.\nThis is only applicable for UltraServer capacity.",
              "properties": {
                "enableMultipleJobs": {
                  "type": "boolean"
                },
                "placementSpecifications": {
                  "items": {
                    "description": "Specifies how instances should be placed on a specific UltraServer.",
                    "properties": {
                      "instanceCount": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "ultraServerID": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "instanceType": {
              "type": "string"
            },
            "keepAlivePeriodInSeconds": {
              "description": "Optional. Customer requested period in seconds for which the Training cluster\nis kept alive after the job is finished.",
              "format": "int64",
              "type": "integer"
            },
            "volumeKMSKeyID": {
              "type": "string"
            },
            "volumeSizeInGB": {
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "retryStrategy": {
          "description": "The number of times to retry the job when the job fails due to an InternalServerError.",
          "properties": {
            "maximumRetryAttempts": {
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "roleARN": {
          "description": "The Amazon Resource Name (ARN) of an IAM role that SageMaker can assume to\nperform tasks on your behalf.\n\nDuring model training, SageMaker needs your permission to read input data\nfrom an S3 bucket, download a Docker image that contains training code, write\nmodel artifacts to an S3 bucket, write logs to Amazon CloudWatch Logs, and\npublish metrics to Amazon CloudWatch. You grant permissions for all of these\ntasks to an IAM role. For more information, see SageMaker Roles (https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html).\n\nTo be able to pass this role to SageMaker, the caller of this API must have\nthe iam:PassRole permission.\n\nRegex Pattern: `^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$`",
          "type": "string"
        },
        "stoppingCondition": {
          "description": "Specifies a limit to how long a model training job can run. It also specifies\nhow long a managed Spot training job has to complete. When the job reaches\nthe time limit, SageMaker ends the training job. Use this API to cap model\ntraining costs.\n\nTo stop a job, SageMaker sends the algorithm the SIGTERM signal, which delays\njob termination for 120 seconds. Algorithms can use this 120-second window\nto save the model artifacts, so the results of training are not lost.",
          "properties": {
            "maxPendingTimeInSeconds": {
              "description": "Maximum job scheduler pending time in seconds.",
              "format": "int64",
              "type": "integer"
            },
            "maxRuntimeInSeconds": {
              "format": "int64",
              "type": "integer"
            },
            "maxWaitTimeInSeconds": {
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "tags": {
          "description": "An array of key-value pairs. You can use tags to categorize your Amazon Web\nServices resources in different ways, for example, by purpose, owner, or\nenvironment. For more information, see Tagging Amazon Web Services Resources\n(https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html).\n\nDo not include any security-sensitive information including account access\nIDs, secrets, or tokens in any tags. As part of the shared responsibility\nmodel, you are responsible for any potential exposure, unauthorized access,\nor compromise of your sensitive data if caused by any security-sensitive\ninformation included in the request tag variable or plain text fields.",
          "items": {
            "description": "A tag object that consists of a key and an optional value, used to manage\nmetadata for SageMaker Amazon Web Services resources.\n\nYou can add tags to notebook instances, training jobs, hyperparameter tuning\njobs, batch transform jobs, models, labeling jobs, work teams, endpoint configurations,\nand endpoints. For more information on adding tags to SageMaker resources,\nsee AddTags (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AddTags.html).\n\nFor more information on adding metadata to your Amazon Web Services resources\nwith tagging, see Tagging Amazon Web Services resources (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html).\nFor advice on best practices for managing Amazon Web Services resources with\ntagging, see Tagging Best Practices: Implement an Effective Amazon Web Services\nResource Tagging Strategy (https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf).",
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "tensorBoardOutputConfig": {
          "description": "Configuration of storage locations for the Amazon SageMaker Debugger TensorBoard\noutput data.",
          "properties": {
            "localPath": {
              "type": "string"
            },
            "s3OutputPath": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "trainingJobName": {
          "description": "The name of the training job. The name must be unique within an Amazon Web\nServices Region in an Amazon Web Services account.\n\nRegex Pattern: `^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$`",
          "type": "string"
        },
        "vpcConfig": {
          "description": "A VpcConfig (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_VpcConfig.html)\nobject that specifies the VPC that you want your training job to connect\nto. Control access to and from your training container by configuring the\nVPC. For more information, see Protect Training Jobs by Using an Amazon Virtual\nPrivate Cloud (https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html).",
          "properties": {
            "securityGroupIDs": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "subnets": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "algorithmSpecification",
        "outputDataConfig",
        "resourceConfig",
        "roleARN",
        "stoppingCondition",
        "trainingJobName"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "TrainingJobStatus defines the observed state of TrainingJob",
      "properties": {
        "ackResourceMetadata": {
          "description": "All CRs managed by ACK have a common `Status.ACKResourceMetadata` member\nthat is used to contain resource sync state, account ownership,\nconstructed ARN for the resource",
          "properties": {
            "arn": {
              "description": "ARN is the Amazon Resource Name for the resource. This is a\nglobally-unique identifier and is set only by the ACK service controller\nonce the controller has orchestrated the creation of the resource OR\nwhen it has verified that an \"adopted\" resource (a resource where the\nARN annotation was set by the Kubernetes user on the CR) exists and\nmatches the supplied CR's Spec field values.\nhttps://github.com/aws/aws-controllers-k8s/issues/270",
              "type": "string"
            },
            "ownerAccountID": {
              "description": "OwnerAccountID is the AWS Account ID of the account that owns the\nbackend AWS service API resource.",
              "type": "string"
            },
            "region": {
              "description": "Region is the AWS region in which the resource exists or will exist.",
              "type": "string"
            }
          },
          "required": [
            "ownerAccountID",
            "region"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "conditions": {
          "description": "All CRs managed by ACK have a common `Status.Conditions` member that\ncontains a collection of `ackv1alpha1.Condition` objects that describe\nthe various terminal states of the CR and its backend AWS service API\nresource",
          "items": {
            "description": "Condition is the common struct used by all CRDs managed by ACK service\ncontrollers to indicate terminal states  of the CR and its backend AWS\nservice API resource",
            "properties": {
              "lastTransitionTime": {
                "description": "Last time the condition transitioned from one status to another.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "A human readable message indicating details about the transition.",
                "type": "string"
              },
              "reason": {
                "description": "The reason for the condition's last transition.",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition, one of True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type is the type of the Condition",
                "type": "string"
              }
            },
            "required": [
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "creationTime": {
          "description": "A timestamp that indicates when the training job was created.",
          "format": "date-time",
          "type": "string"
        },
        "debugRuleEvaluationStatuses": {
          "description": "Evaluation status of Amazon SageMaker Debugger rules for debugging on a training\njob.",
          "items": {
            "description": "Information about the status of the rule evaluation.",
            "properties": {
              "lastModifiedTime": {
                "format": "date-time",
                "type": "string"
              },
              "ruleConfigurationName": {
                "type": "string"
              },
              "ruleEvaluationJobARN": {
                "type": "string"
              },
              "ruleEvaluationStatus": {
                "type": "string"
              },
              "statusDetails": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "failureReason": {
          "description": "If the training job failed, the reason it failed.",
          "type": "string"
        },
        "lastModifiedTime": {
          "description": "A timestamp that indicates when the status of the training job was last modified.",
          "format": "date-time",
          "type": "string"
        },
        "modelArtifacts": {
          "description": "Information about the Amazon S3 location that is configured for storing model\nartifacts.",
          "properties": {
            "s3ModelArtifacts": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "profilerRuleEvaluationStatuses": {
          "description": "Evaluation status of Amazon SageMaker Debugger rules for profiling on a training\njob.",
          "items": {
            "description": "Information about the status of the rule evaluation.",
            "properties": {
              "lastModifiedTime": {
                "format": "date-time",
                "type": "string"
              },
              "ruleConfigurationName": {
                "type": "string"
              },
              "ruleEvaluationJobARN": {
                "type": "string"
              },
              "ruleEvaluationStatus": {
                "type": "string"
              },
              "statusDetails": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "profilingStatus": {
          "description": "Profiling status of a training job.",
          "type": "string"
        },
        "secondaryStatus": {
          "description": "Provides detailed information about the state of the training job. For detailed\ninformation on the secondary status of the training job, see StatusMessage\nunder SecondaryStatusTransition (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_SecondaryStatusTransition.html).\n\nSageMaker provides primary statuses and secondary statuses that apply to\neach of them:\n\nInProgress\n\n   * Starting - Starting the training job.\n\n   * Downloading - An optional stage for algorithms that support File training\n   input mode. It indicates that data is being downloaded to the ML storage\n   volumes.\n\n   * Training - Training is in progress.\n\n   * Interrupted - The job stopped because the managed spot training instances\n   were interrupted.\n\n   * Uploading - Training is complete and the model artifacts are being uploaded\n   to the S3 location.\n\nCompleted\n\n   * Completed - The training job has completed.\n\nFailed\n\n   * Failed - The training job has failed. The reason for the failure is\n   returned in the FailureReason field of DescribeTrainingJobResponse.\n\nStopped\n\n   * MaxRuntimeExceeded - The job stopped because it exceeded the maximum\n   allowed runtime.\n\n   * MaxWaitTimeExceeded - The job stopped because it exceeded the maximum\n   allowed wait time.\n\n   * Stopped - The training job has stopped.\n\nStopping\n\n   * Stopping - Stopping the training job.\n\nValid values for SecondaryStatus are subject to change.\n\nWe no longer support the following secondary statuses:\n\n   * LaunchingMLInstances\n\n   * PreparingTraining\n\n   * DownloadingTrainingImage",
          "type": "string"
        },
        "trainingJobStatus": {
          "description": "The status of the training job.\n\nSageMaker provides the following training job statuses:\n\n   * InProgress - The training is in progress.\n\n   * Completed - The training job has completed.\n\n   * Failed - The training job has failed. To see the reason for the failure,\n   see the FailureReason field in the response to a DescribeTrainingJobResponse\n   call.\n\n   * Stopping - The training job is stopping.\n\n   * Stopped - The training job has stopped.\n\nFor more detailed information, see SecondaryStatus.",
          "type": "string"
        },
        "warmPoolStatus": {
          "description": "The status of the warm pool associated with the training job.",
          "properties": {
            "resourceRetainedBillableTimeInSeconds": {
              "description": "Optional. Indicates how many seconds the resource stayed in ResourceRetained\nstate. Populated only after resource reaches ResourceReused or ResourceReleased\nstate.",
              "format": "int64",
              "type": "integer"
            },
            "reusedByJob": {
              "type": "string"
            },
            "status": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
