Skip to content

Commit

Permalink
feat(client-sagemaker): Amazon Sagemaker supports orchestrating SageM…
Browse files Browse the repository at this point in the history
…aker HyperPod clusters with Amazon EKS
  • Loading branch information
awstools committed Sep 9, 2024
1 parent 67542d3 commit 833a3c3
Show file tree
Hide file tree
Showing 18 changed files with 849 additions and 549 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { Command as $Command } from "@smithy/smithy-client";
import { MetadataBearer as __MetadataBearer } from "@smithy/types";

import { commonParams } from "../endpoint/EndpointParameters";
import { CreateAppImageConfigRequest, CreateAppImageConfigResponse } from "../models/models_0";
import { CreateAppImageConfigRequest, CreateAppImageConfigResponse } from "../models/models_1";
import { de_CreateAppImageConfigCommand, se_CreateAppImageConfigCommand } from "../protocols/Aws_json1_1";
import { SageMakerClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../SageMakerClient";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ import { Command as $Command } from "@smithy/smithy-client";
import { MetadataBearer as __MetadataBearer } from "@smithy/types";

import { commonParams } from "../endpoint/EndpointParameters";
import { CreateArtifactRequest } from "../models/models_0";
import { CreateArtifactResponse } from "../models/models_1";
import { CreateArtifactRequest, CreateArtifactResponse } from "../models/models_1";
import { de_CreateArtifactCommand, se_CreateArtifactCommand } from "../protocols/Aws_json1_1";
import { SageMakerClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../SageMakerClient";

Expand Down
9 changes: 9 additions & 0 deletions clients/client-sagemaker/src/commands/CreateClusterCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ export interface CreateClusterCommandOutput extends CreateClusterResponse, __Met
* },
* },
* ],
* OnStartDeepHealthChecks: [ // OnStartDeepHealthChecks
* "InstanceStress" || "InstanceConnectivity",
* ],
* },
* ],
* VpcConfig: { // VpcConfig
Expand All @@ -74,6 +77,12 @@ export interface CreateClusterCommandOutput extends CreateClusterResponse, __Met
* Value: "STRING_VALUE", // required
* },
* ],
* Orchestrator: { // ClusterOrchestrator
* Eks: { // ClusterOrchestratorEksConfig
* ClusterArn: "STRING_VALUE", // required
* },
* },
* NodeRecovery: "Automatic" || "None",
* };
* const command = new CreateClusterCommand(input);
* const response = await client.send(command);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,8 @@ import { Command as $Command } from "@smithy/smithy-client";
import { MetadataBearer as __MetadataBearer } from "@smithy/types";

import { commonParams } from "../endpoint/EndpointParameters";
import {
CreatePresignedMlflowTrackingServerUrlRequest,
CreatePresignedMlflowTrackingServerUrlResponse,
} from "../models/models_1";
import { CreatePresignedMlflowTrackingServerUrlRequest } from "../models/models_1";
import { CreatePresignedMlflowTrackingServerUrlResponse } from "../models/models_2";
import {
de_CreatePresignedMlflowTrackingServerUrlCommand,
se_CreatePresignedMlflowTrackingServerUrlCommand,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { Command as $Command } from "@smithy/smithy-client";
import { MetadataBearer as __MetadataBearer } from "@smithy/types";

import { commonParams } from "../endpoint/EndpointParameters";
import { CreatePresignedNotebookInstanceUrlInput, CreatePresignedNotebookInstanceUrlOutput } from "../models/models_1";
import { CreatePresignedNotebookInstanceUrlInput, CreatePresignedNotebookInstanceUrlOutput } from "../models/models_2";
import {
de_CreatePresignedNotebookInstanceUrlCommand,
se_CreatePresignedNotebookInstanceUrlCommand,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ export interface DescribeClusterCommandOutput extends DescribeClusterResponse, _
* // },
* // },
* // ],
* // OnStartDeepHealthChecks: [ // OnStartDeepHealthChecks
* // "InstanceStress" || "InstanceConnectivity",
* // ],
* // },
* // ],
* // VpcConfig: { // VpcConfig
Expand All @@ -75,6 +78,12 @@ export interface DescribeClusterCommandOutput extends DescribeClusterResponse, _
* // "STRING_VALUE",
* // ],
* // },
* // Orchestrator: { // ClusterOrchestrator
* // Eks: { // ClusterOrchestratorEksConfig
* // ClusterArn: "STRING_VALUE", // required
* // },
* // },
* // NodeRecovery: "Automatic" || "None",
* // };
*
* ```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export interface DescribeClusterNodeCommandOutput extends DescribeClusterNodeRes
* // InstanceGroupName: "STRING_VALUE",
* // InstanceId: "STRING_VALUE",
* // InstanceStatus: { // ClusterInstanceStatusDetails
* // Status: "Running" || "Failure" || "Pending" || "ShuttingDown" || "SystemUpdating", // required
* // Status: "Running" || "Failure" || "Pending" || "ShuttingDown" || "SystemUpdating" || "DeepHealthCheckInProgress", // required
* // Message: "STRING_VALUE",
* // },
* // InstanceType: "ml.p4d.24xlarge" || "ml.p4de.24xlarge" || "ml.p5.48xlarge" || "ml.trn1.32xlarge" || "ml.trn1n.32xlarge" || "ml.g5.xlarge" || "ml.g5.2xlarge" || "ml.g5.4xlarge" || "ml.g5.8xlarge" || "ml.g5.12xlarge" || "ml.g5.16xlarge" || "ml.g5.24xlarge" || "ml.g5.48xlarge" || "ml.c5.large" || "ml.c5.xlarge" || "ml.c5.2xlarge" || "ml.c5.4xlarge" || "ml.c5.9xlarge" || "ml.c5.12xlarge" || "ml.c5.18xlarge" || "ml.c5.24xlarge" || "ml.c5n.large" || "ml.c5n.2xlarge" || "ml.c5n.4xlarge" || "ml.c5n.9xlarge" || "ml.c5n.18xlarge" || "ml.m5.large" || "ml.m5.xlarge" || "ml.m5.2xlarge" || "ml.m5.4xlarge" || "ml.m5.8xlarge" || "ml.m5.12xlarge" || "ml.m5.16xlarge" || "ml.m5.24xlarge" || "ml.t3.medium" || "ml.t3.large" || "ml.t3.xlarge" || "ml.t3.2xlarge",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { Command as $Command } from "@smithy/smithy-client";
import { MetadataBearer as __MetadataBearer } from "@smithy/types";

import { commonParams } from "../endpoint/EndpointParameters";
import { DescribeMlflowTrackingServerRequest, DescribeMlflowTrackingServerResponse } from "../models/models_2";
import { DescribeMlflowTrackingServerRequest, DescribeMlflowTrackingServerResponse } from "../models/models_3";
import {
de_DescribeMlflowTrackingServerCommand,
se_DescribeMlflowTrackingServerCommand,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ export interface ListClusterNodesCommandOutput extends ListClusterNodesResponse,
* // InstanceType: "ml.p4d.24xlarge" || "ml.p4de.24xlarge" || "ml.p5.48xlarge" || "ml.trn1.32xlarge" || "ml.trn1n.32xlarge" || "ml.g5.xlarge" || "ml.g5.2xlarge" || "ml.g5.4xlarge" || "ml.g5.8xlarge" || "ml.g5.12xlarge" || "ml.g5.16xlarge" || "ml.g5.24xlarge" || "ml.g5.48xlarge" || "ml.c5.large" || "ml.c5.xlarge" || "ml.c5.2xlarge" || "ml.c5.4xlarge" || "ml.c5.9xlarge" || "ml.c5.12xlarge" || "ml.c5.18xlarge" || "ml.c5.24xlarge" || "ml.c5n.large" || "ml.c5n.2xlarge" || "ml.c5n.4xlarge" || "ml.c5n.9xlarge" || "ml.c5n.18xlarge" || "ml.m5.large" || "ml.m5.xlarge" || "ml.m5.2xlarge" || "ml.m5.4xlarge" || "ml.m5.8xlarge" || "ml.m5.12xlarge" || "ml.m5.16xlarge" || "ml.m5.24xlarge" || "ml.t3.medium" || "ml.t3.large" || "ml.t3.xlarge" || "ml.t3.2xlarge", // required
* // LaunchTime: new Date("TIMESTAMP"), // required
* // InstanceStatus: { // ClusterInstanceStatusDetails
* // Status: "Running" || "Failure" || "Pending" || "ShuttingDown" || "SystemUpdating", // required
* // Status: "Running" || "Failure" || "Pending" || "ShuttingDown" || "SystemUpdating" || "DeepHealthCheckInProgress", // required
* // Message: "STRING_VALUE",
* // },
* // },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { Command as $Command } from "@smithy/smithy-client";
import { MetadataBearer as __MetadataBearer } from "@smithy/types";

import { commonParams } from "../endpoint/EndpointParameters";
import { ListModelCardExportJobsRequest, ListModelCardExportJobsResponse } from "../models/models_3";
import { ListModelCardExportJobsRequest, ListModelCardExportJobsResponse } from "../models/models_4";
import { de_ListModelCardExportJobsCommand, se_ListModelCardExportJobsCommand } from "../protocols/Aws_json1_1";
import { SageMakerClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../SageMakerClient";

Expand Down
4 changes: 4 additions & 0 deletions clients/client-sagemaker/src/commands/UpdateClusterCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,12 @@ export interface UpdateClusterCommandOutput extends UpdateClusterResponse, __Met
* },
* },
* ],
* OnStartDeepHealthChecks: [ // OnStartDeepHealthChecks
* "InstanceStress" || "InstanceConnectivity",
* ],
* },
* ],
* NodeRecovery: "Automatic" || "None",
* };
* const command = new UpdateClusterCommand(input);
* const response = await client.send(command);
Expand Down
179 changes: 65 additions & 114 deletions clients/client-sagemaker/src/models/models_0.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9280,6 +9280,20 @@ export interface ClusterLifeCycleConfig {
OnCreate: string | undefined;
}

/**
* @public
* @enum
*/
export const DeepHealthCheckType = {
INSTANCE_CONNECTIVITY: "InstanceConnectivity",
INSTANCE_STRESS: "InstanceStress",
} as const;

/**
* @public
*/
export type DeepHealthCheckType = (typeof DeepHealthCheckType)[keyof typeof DeepHealthCheckType];

/**
* <p>Details of an instance group in a SageMaker HyperPod cluster.</p>
* @public
Expand Down Expand Up @@ -9340,6 +9354,12 @@ export interface ClusterInstanceGroupDetails {
* @public
*/
InstanceStorageConfigs?: ClusterInstanceStorageConfig[];

/**
* <p>A flag indicating whether deep health checks should be performed when the cluster instance group is created or updated.</p>
* @public
*/
OnStartDeepHealthChecks?: DeepHealthCheckType[];
}

/**
Expand Down Expand Up @@ -9396,6 +9416,12 @@ export interface ClusterInstanceGroupSpecification {
* @public
*/
InstanceStorageConfigs?: ClusterInstanceStorageConfig[];

/**
* <p>A flag indicating whether deep health checks should be performed when the cluster instance group is created or updated.</p>
* @public
*/
OnStartDeepHealthChecks?: DeepHealthCheckType[];
}

/**
Expand Down Expand Up @@ -9423,6 +9449,7 @@ export interface ClusterInstancePlacement {
* @enum
*/
export const ClusterInstanceStatus = {
DEEP_HEALTH_CHECK_IN_PROGRESS: "DeepHealthCheckInProgress",
FAILURE: "Failure",
PENDING: "Pending",
RUNNING: "Running",
Expand Down Expand Up @@ -9528,6 +9555,20 @@ export interface ClusterNodeDetails {
Placement?: ClusterInstancePlacement;
}

/**
* @public
* @enum
*/
export const ClusterNodeRecovery = {
AUTOMATIC: "Automatic",
NONE: "None",
} as const;

/**
* @public
*/
export type ClusterNodeRecovery = (typeof ClusterNodeRecovery)[keyof typeof ClusterNodeRecovery];

/**
* <p>Lists a summary of the properties of an instance (also called a
* <i>node</i> interchangeably) of a SageMaker HyperPod cluster.</p>
Expand Down Expand Up @@ -9565,6 +9606,30 @@ export interface ClusterNodeSummary {
InstanceStatus: ClusterInstanceStatusDetails | undefined;
}

/**
* <p>The configuration settings for the Amazon EKS cluster used as the orchestrator for the SageMaker HyperPod cluster.</p>
* @public
*/
export interface ClusterOrchestratorEksConfig {
/**
* <p>The Amazon Resource Name (ARN) of the Amazon EKS cluster associated with the SageMaker HyperPod cluster.</p>
* @public
*/
ClusterArn: string | undefined;
}

/**
* <p>The type of orchestrator used for the SageMaker HyperPod cluster.</p>
* @public
*/
export interface ClusterOrchestrator {
/**
* <p>The Amazon EKS cluster used as the orchestrator for the SageMaker HyperPod cluster.</p>
* @public
*/
Eks: ClusterOrchestratorEksConfig | undefined;
}

/**
* @public
* @enum
Expand Down Expand Up @@ -9682,7 +9747,6 @@ export interface CodeEditorAppSettings {

/**
* <p>Settings that are used to configure and manage the lifecycle of CodeEditor applications.</p>
* <p></p>
* @public
*/
AppLifecycleManagement?: AppLifecycleManagement;
Expand Down Expand Up @@ -11122,116 +11186,3 @@ export interface CreateAppResponse {
*/
AppArn?: string;
}

/**
* <p>Resource being accessed is in use.</p>
* @public
*/
export class ResourceInUse extends __BaseException {
readonly name: "ResourceInUse" = "ResourceInUse";
readonly $fault: "client" = "client";
Message?: string;
/**
* @internal
*/
constructor(opts: __ExceptionOptionType<ResourceInUse, __BaseException>) {
super({
name: "ResourceInUse",
$fault: "client",
...opts,
});
Object.setPrototypeOf(this, ResourceInUse.prototype);
this.Message = opts.Message;
}
}

/**
* @public
*/
export interface CreateAppImageConfigRequest {
/**
* <p>The name of the AppImageConfig. Must be unique to your account.</p>
* @public
*/
AppImageConfigName: string | undefined;

/**
* <p>A list of tags to apply to the AppImageConfig.</p>
* @public
*/
Tags?: Tag[];

/**
* <p>The KernelGatewayImageConfig. You can only specify one image kernel in the
* AppImageConfig API. This kernel will be shown to users before the
* image starts. Once the image runs, all kernels are visible in JupyterLab.</p>
* @public
*/
KernelGatewayImageConfig?: KernelGatewayImageConfig;

/**
* <p>The <code>JupyterLabAppImageConfig</code>. You can only specify one image kernel in the <code>AppImageConfig</code> API. This kernel is shown to users before the image starts. After the image runs, all kernels are visible in JupyterLab.</p>
* @public
*/
JupyterLabAppImageConfig?: JupyterLabAppImageConfig;

/**
* <p>The <code>CodeEditorAppImageConfig</code>. You can only specify one image kernel
* in the AppImageConfig API. This kernel is shown to users before the image starts.
* After the image runs, all kernels are visible in Code Editor.</p>
* @public
*/
CodeEditorAppImageConfig?: CodeEditorAppImageConfig;
}

/**
* @public
*/
export interface CreateAppImageConfigResponse {
/**
* <p>The ARN of the AppImageConfig.</p>
* @public
*/
AppImageConfigArn?: string;
}

/**
* @public
*/
export interface CreateArtifactRequest {
/**
* <p>The name of the artifact. Must be unique to your account in an Amazon Web Services Region.</p>
* @public
*/
ArtifactName?: string;

/**
* <p>The ID, ID type, and URI of the source.</p>
* @public
*/
Source: ArtifactSource | undefined;

/**
* <p>The artifact type.</p>
* @public
*/
ArtifactType: string | undefined;

/**
* <p>A list of properties to add to the artifact.</p>
* @public
*/
Properties?: Record<string, string>;

/**
* <p>Metadata properties of the tracking entity, trial, or trial component.</p>
* @public
*/
MetadataProperties?: MetadataProperties;

/**
* <p>A list of tags to apply to the artifact.</p>
* @public
*/
Tags?: Tag[];
}
Loading

0 comments on commit 833a3c3

Please sign in to comment.