From db5c59c4f454937b6efb663ccc399de6754c4fbc Mon Sep 17 00:00:00 2001 From: Bryant Biggs Date: Wed, 2 Oct 2024 12:00:17 -0500 Subject: [PATCH] feat: Add pattern to demonstrate how to cache large/ML container images to reduce time to start pods (#2010) --- .github/scripts/mkdocs-hooks.py | 21 +++- .github/workflows/pre-commit.yml | 4 +- .../machine-learning/ml-container-cache.md | 7 ++ patterns/ml-container-cache/README.md | 105 ++++++++++++++++ patterns/ml-container-cache/assets/cached.svg | 1 + .../assets/state-machine.png | Bin 0 -> 160831 bytes .../ml-container-cache/assets/uncached.svg | 1 + patterns/ml-container-cache/cache_builder.tf | 20 +++ patterns/ml-container-cache/eks.tf | 118 ++++++++++++++++++ patterns/ml-container-cache/helm.tf | 27 ++++ patterns/ml-container-cache/main.tf | 102 +++++++++++++++ patterns/ml-container-cache/pod-cached.yaml | 20 +++ patterns/ml-container-cache/pod-uncached.yaml | 11 ++ 13 files changed, 431 insertions(+), 6 deletions(-) create mode 100644 docs/patterns/machine-learning/ml-container-cache.md create mode 100644 patterns/ml-container-cache/README.md create mode 100644 patterns/ml-container-cache/assets/cached.svg create mode 100644 patterns/ml-container-cache/assets/state-machine.png create mode 100644 patterns/ml-container-cache/assets/uncached.svg create mode 100644 patterns/ml-container-cache/cache_builder.tf create mode 100644 patterns/ml-container-cache/eks.tf create mode 100644 patterns/ml-container-cache/helm.tf create mode 100644 patterns/ml-container-cache/main.tf create mode 100644 patterns/ml-container-cache/pod-cached.yaml create mode 100644 patterns/ml-container-cache/pod-uncached.yaml diff --git a/.github/scripts/mkdocs-hooks.py b/.github/scripts/mkdocs-hooks.py index bfa513aa87..e7cd522642 100644 --- a/.github/scripts/mkdocs-hooks.py +++ b/.github/scripts/mkdocs-hooks.py @@ -10,23 +10,36 @@ def on_page_markdown(markdown, **kwargs): def on_files(files, config, **kwargs): # Add targeted-odcr screenshots to the generated build + path = 'patterns/targeted-odcr/assets/' for odcr_file in [1, 2]: files.append( File( - src_dir='./patterns/targeted-odcr/assets/', - dest_dir=os.path.join(config.site_dir, 'patterns/targeted-odcr/assets/'), + src_dir=f'./{path}', + dest_dir=os.path.join(config.site_dir, path), path=f'odcr-screenshot{odcr_file}.png', use_directory_urls=True ) ) + path = 'patterns/kubecost/assets/' files.append( File( - src_dir='./patterns/kubecost/assets/', - dest_dir=os.path.join(config.site_dir, 'patterns/kubecost/assets/'), + src_dir=f'./{path}', + dest_dir=os.path.join(config.site_dir, path), path='screenshot.png', use_directory_urls=True ) ) + for svg in ['cached.svg', 'uncached.svg', 'state-machine.png']: + files.append( + File( + src_dir=f'./patterns/ml-container-cache/assets/', + dest_dir=os.path.join(config.site_dir, 'patterns/machine-learning/ml-container-cache/assets/'), + path=svg, + use_directory_urls=True + ) + ) + + return files diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 7f485300be..5c50406085 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -11,9 +11,9 @@ on: env: TERRAFORM_VERSION: 1.3.10 - TERRAFORM_DOCS_VERSION: v0.16.0 + TERRAFORM_DOCS_VERSION: v0.19.0 + TFLINT_VERSION: v0.53.0 TF_PLUGIN_CACHE_DIR: ${{ github.workspace }}/.terraform.d/plugin-cache - TFLINT_VERSION: v0.50.2 concurrency: group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}' diff --git a/docs/patterns/machine-learning/ml-container-cache.md b/docs/patterns/machine-learning/ml-container-cache.md new file mode 100644 index 0000000000..6c6fa8cc94 --- /dev/null +++ b/docs/patterns/machine-learning/ml-container-cache.md @@ -0,0 +1,7 @@ +--- +title: ML Container Cache +--- + +{% + include-markdown "../../../patterns/ml-container-cache/README.md" +%} diff --git a/patterns/ml-container-cache/README.md b/patterns/ml-container-cache/README.md new file mode 100644 index 0000000000..25fb37fd60 --- /dev/null +++ b/patterns/ml-container-cache/README.md @@ -0,0 +1,105 @@ +# EKS Cluster w/ Cached ML Images + +This pattern demonstrates how to cache images on an EBS volume snapshot that will be used by nodes in an EKS cluster. The solution is comprised of primarily of the following components: + +1. An AWS Step Function implementation has been provided that demonstrates an example process for creating EBS volume snapshots that are pre-populated with the select container images. As part of this process, EBS Fast Snapshot Restore is enabled by default for the snapshots created to avoid the [EBS volume initialization time penalty](https://aws.amazon.com/blogs/storage/addressing-i-o-latency-when-restoring-amazon-ebs-volumes-from-ebs-snapshots/). The Step Function state machine diagram is captured below for reference. +2. The node group demonstrates how to mount the generated EBS volume snapshot at the `/var/lib/containerd` location in order for containerd to utilize the pre-populated images. The snapshot ID is referenced via an SSM parameter data source which was populated by the Step Function cache builder; any new images created by the cache builder will automatically update the SSM parameter used by the node group. + +The main benefit of caching, or pre-pulling, container images onto an EBS volume snapshot is faster time to start pods/containers on new nodes, especially for larger (multi-gigabyte) images that are common with machine-learning workloads. This process avoids the time and resources it takes to pull and un-pack container images from remote registries. Instead, those images are already present in the location that containerd expects, allowing for faster pod startup times. + +### Cache Builder State Machine + +

+ cached builder state machine +

+ +## Results + +The following results use the PyTorch [nvcr.io/nvidia/pytorch:24.08-py3](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/pytorch/tags) image which is 9.5 GB compressed and 20.4 GB decompressed on disk. + +Pod start up time duration is captured via pod events using [ktime](https://github.com/clowdhaus/ktime). + +### Cached + +With the PyTorch image already present on the EBS volume, the pod starts up in less than 5 seconds: + +

+ cached image startup time +

+ +### Uncached + +When the PyTorch image is not present on the EBS volume, it takes roughly 6 minutes (334 seconds in the capture below) for the image to be pulled, unpacked, and the pod to start. + +

+ uncached image startup time +

+ +## Code + +### Cache Builder + +```terraform hl_lines="7-11 13-14" +{% include "../../patterns/ml-container-cache/cache_builder.tf" %} +``` + +### Cluster + +```terraform hl_lines="5-9 52-64 66-78" +{% include "../../patterns/ml-container-cache/eks.tf" %} +``` + +## Deploy + +See [here](https://aws-ia.github.io/terraform-aws-eks-blueprints/getting-started/#prerequisites) for the prerequisites and steps to deploy this pattern. + +1. First, deploy the Step Function state machine that will create the EBS volume snapshots with the cached images. + + ```sh + terraform init + terraform apply -target=module.ebs_snapshot_builder -target=module.vpc --auto-approve + ``` + +2. Once the cache builder resources have been provisioned, execute the state machine by either navigating to the state machine within the AWS console and clicking `Start execution` (with the defaults or by passing in values to override the default values), or by using the provided output from the Terraform output value `start_execution_command` to start the state machine using the awscli. For example, the output looks similar to the following: + + ```hcl + start_execution_command = <bbiggs%bbiggs%ktimebbiggs%ktimeapplybbiggs%ktimeapply--filebbiggs%ktimeapply--filepod-cached.yamlINFOktime::cli:Pod`cached`appliedINFOktime::cli:Pod`cached`=>RunningInitialize:0sPodreadytostartcontainers:2sContainersready:2sReady:2sbbiggs%exitbbiggs%kbbiggs%ktbbiggs%ktibbiggs%ktimbbiggs%ktimeabbiggs%ktimeapbbiggs%ktimeappbbiggs%ktimeapplbbiggs%ktimeapply-bbiggs%ktimeapply--bbiggs%ktimeapply--fbbiggs%ktimeapply--fibbiggs%ktimeapply--filbbiggs%ktimeapply--filepbbiggs%ktimeapply--filepobbiggs%ktimeapply--filepodbbiggs%ktimeapply--filepod-bbiggs%ktimeapply--filepod-cbbiggs%ktimeapply--filepod-cabbiggs%ktimeapply--filepod-cacbbiggs%ktimeapply--filepod-cachbbiggs%ktimeapply--filepod-cachebbiggs%ktimeapply--filepod-cachedbbiggs%ktimeapply--filepod-cached.bbiggs%ktimeapply--filepod-cached.ybbiggs%ktimeapply--filepod-cached.yabbiggs%ktimeapply--filepod-cached.yambbiggs%ebbiggs%exbbiggs%exi diff --git a/patterns/ml-container-cache/assets/state-machine.png b/patterns/ml-container-cache/assets/state-machine.png new file mode 100644 index 0000000000000000000000000000000000000000..9a2af3ec9ace492b3cb7133f90ba85f3abecc9f5 GIT binary patch literal 160831 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 Gu>A#_RZ{QhKC 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 F{|`jf0W|;s literal 0 HcmV?d00001 diff --git a/patterns/ml-container-cache/assets/uncached.svg b/patterns/ml-container-cache/assets/uncached.svg new file mode 100644 index 0000000000..8df69b05bd --- /dev/null +++ b/patterns/ml-container-cache/assets/uncached.svg @@ -0,0 +1 @@ +bbiggs%bbiggs%ktimebbiggs%ktimeapplybbiggs%ktimeapply--filebbiggs%ktimeapply--filepod-uncached.yamlINFOktime::cli:Pod`uncached`appliedINFOktime::cli:Waitingforpod`uncached`tobeinthe`Running`phase...INFOktime::cli:Pod`uncached`=>RunningInitialize:0sPodreadytostartcontainers:334sContainersready:334sReady:334sbbiggs%exitbbiggs%kbbiggs%ktbbiggs%ktibbiggs%ktimbbiggs%ktimeabbiggs%ktimeapbbiggs%ktimeappbbiggs%ktimeapplbbiggs%ktimeapply-bbiggs%ktimeapply--bbiggs%ktimeapply--fbbiggs%ktimeapply--fibbiggs%ktimeapply--filbbiggs%ktimeapply--filepbbiggs%ktimeapply--filepobbiggs%ktimeapply--filepodbbiggs%ktimeapply--filepod-bbiggs%ktimeapply--filepod-ubbiggs%ktimeapply--filepod-unbbiggs%ktimeapply--filepod-uncbbiggs%ktimeapply--filepod-uncabbiggs%ktimeapply--filepod-uncacbbiggs%ktimeapply--filepod-uncachbbiggs%ktimeapply--filepod-uncachebbiggs%ktimeapply--filepod-uncachedbbiggs%ktimeapply--filepod-uncached.bbiggs%ktimeapply--filepod-uncached.ybbiggs%ktimeapply--filepod-uncached.yabbiggs%ktimeapply--filepod-uncached.yambbiggs%ebbiggs%exbbiggs%exi diff --git a/patterns/ml-container-cache/cache_builder.tf b/patterns/ml-container-cache/cache_builder.tf new file mode 100644 index 0000000000..4fb7c777d6 --- /dev/null +++ b/patterns/ml-container-cache/cache_builder.tf @@ -0,0 +1,20 @@ +module "ebs_snapshot_builder" { + source = "clowdhaus/ebs-snapshot-builder/aws" + version = "~> 1.1" + + name = local.name + + # Images to cache + public_images = [ + "nvcr.io/nvidia/k8s-device-plugin:v0.16.2", # 120 MB compressed / 351 MB decompressed + "nvcr.io/nvidia/pytorch:24.08-py3", # 9.5 GB compressed / 20.4 GB decompressed + ] + + # AZs where EBS fast snapshot restore will be enabled + fsr_availability_zone_names = local.azs + + vpc_id = module.vpc.vpc_id + subnet_id = element(module.vpc.private_subnets, 0) + + tags = local.tags +} diff --git a/patterns/ml-container-cache/eks.tf b/patterns/ml-container-cache/eks.tf new file mode 100644 index 0000000000..75e4cff1d3 --- /dev/null +++ b/patterns/ml-container-cache/eks.tf @@ -0,0 +1,118 @@ +locals { + dev_name = "xvdb" +} + +# SSM parameter where the `cache-builder` stores the generated snapshot ID +# This will be used to reference the snapshot when creating the EKS node group +data "aws_ssm_parameter" "snapshot_id" { + name = module.ebs_snapshot_builder.ssm_parameter_name +} + +################################################################################ +# Cluster +################################################################################ + +module "eks" { + source = "terraform-aws-modules/eks/aws" + version = "~> 20.24" + + cluster_name = local.name + cluster_version = "1.31" + + # Give the Terraform identity admin access to the cluster + # which will allow it to deploy resources into the cluster + enable_cluster_creator_admin_permissions = true + cluster_endpoint_public_access = true + + cluster_addons = { + coredns = {} + eks-pod-identity-agent = {} + kube-proxy = {} + vpc-cni = {} + } + + vpc_id = module.vpc.vpc_id + subnet_ids = module.vpc.private_subnets + + eks_managed_node_group_defaults = { + ebs_optimized = true + } + + eks_managed_node_groups = { + gpu = { + # The EKS AL2 GPU AMI provides all of the necessary components + # for accelerated workloads w/ EFA + ami_type = "AL2_x86_64_GPU" + instance_types = ["g6e.xlarge"] + + min_size = 1 + max_size = 1 + desired_size = 1 + + pre_bootstrap_user_data = <<-EOT + # Mount the second volume for containerd persistent data + # This volume contains the cached images and layers + + systemctl stop containerd kubelet + + rm -rf /var/lib/containerd/* + echo '/dev/${local.dev_name} /var/lib/containerd xfs defaults 0 0' >> /etc/fstab + mount -a + + systemctl restart containerd kubelet + + EOT + + # Mount a second volume for containerd persistent data + # using the snapshot that contains the cached images and layers + block_device_mappings = { + (local.dev_name) = { + device_name = "/dev/${local.dev_name}" + ebs = { + # Snapshot ID from the cache builder + snapshot_id = nonsensitive(data.aws_ssm_parameter.snapshot_id.value) + volume_size = 64 + volume_type = "gp3" + } + } + } + + labels = { + "nvidia.com/gpu.present" = "true" + "ml-container-cache" = "true" + } + + taints = { + # Ensure only GPU workloads are scheduled on this node group + gpu = { + key = "nvidia.com/gpu" + value = "true" + effect = "NO_SCHEDULE" + } + } + } + + # This node group is for core addons such as CoreDNS + default = { + instance_types = ["m5.large"] + + min_size = 1 + max_size = 2 + desired_size = 2 + + # Not required - increased to demonstrate pulling the un-cached + # image since the default volume size is too small for the image used + block_device_mappings = { + "xvda" = { + device_name = "/dev/xvda" + ebs = { + volume_size = 64 + volume_type = "gp3" + } + } + } + } + } + + tags = local.tags +} diff --git a/patterns/ml-container-cache/helm.tf b/patterns/ml-container-cache/helm.tf new file mode 100644 index 0000000000..cd1d65858c --- /dev/null +++ b/patterns/ml-container-cache/helm.tf @@ -0,0 +1,27 @@ +################################################################################ +# Helm charts +################################################################################ + +resource "helm_release" "nvidia_device_plugin" { + name = "nvidia-device-plugin" + repository = "https://nvidia.github.io/k8s-device-plugin" + chart = "nvidia-device-plugin" + version = "0.16.2" # Matches image that is cached + namespace = "nvidia-device-plugin" + create_namespace = true + wait = false + + values = [ + <<-EOT + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: 'nvidia.com/gpu.present' + operator: In + values: + - 'true' + EOT + ] +} diff --git a/patterns/ml-container-cache/main.tf b/patterns/ml-container-cache/main.tf new file mode 100644 index 0000000000..497b3837b6 --- /dev/null +++ b/patterns/ml-container-cache/main.tf @@ -0,0 +1,102 @@ +terraform { + required_version = ">= 1.3" + + required_providers { + aws = { + source = "hashicorp/aws" + version = ">= 5.34" + } + helm = { + source = "hashicorp/helm" + version = ">= 2.9" + } + } + + # ## Used for end-to-end testing on project; update to suit your needs + # backend "s3" { + # bucket = "terraform-ssp-github-actions-state" + # region = "us-west-2" + # key = "e2e/ml-container-cache/terraform.tfstate" + # } +} + +provider "aws" { + region = local.region +} + +provider "helm" { + kubernetes { + host = module.eks.cluster_endpoint + cluster_ca_certificate = base64decode(module.eks.cluster_certificate_authority_data) + + exec { + api_version = "client.authentication.k8s.io/v1beta1" + command = "aws" + # This requires the awscli to be installed locally where Terraform is executed + args = ["eks", "get-token", "--cluster-name", module.eks.cluster_name] + } + } +} + +################################################################################ +# Common data/locals +################################################################################ + +data "aws_availability_zones" "available" { + # Do not include local zones + filter { + name = "opt-in-status" + values = ["opt-in-not-required"] + } +} + +locals { + name = basename(path.cwd) + region = "us-west-2" + + vpc_cidr = "10.0.0.0/16" + azs = slice(data.aws_availability_zones.available.names, 0, 3) + + tags = { + Blueprint = local.name + GithubRepo = "github.com/aws-ia/terraform-aws-eks-blueprints" + } +} + +################################################################################ +# Output +################################################################################ + +output "configure_kubectl" { + description = "Configure kubectl: make sure you're logged in with the correct AWS profile and run the following command to update your kubeconfig" + value = "aws eks --region ${local.region} update-kubeconfig --name ${module.eks.cluster_name}" +} + +################################################################################ +# Supporting Resources +################################################################################ + +module "vpc" { + source = "terraform-aws-modules/vpc/aws" + version = "~> 5.0" + + name = local.name + cidr = local.vpc_cidr + + azs = local.azs + private_subnets = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 4, k)] + public_subnets = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 8, k + 48)] + + enable_nat_gateway = true + single_nat_gateway = true + + public_subnet_tags = { + "kubernetes.io/role/elb" = 1 + } + + private_subnet_tags = { + "kubernetes.io/role/internal-elb" = 1 + } + + tags = local.tags +} diff --git a/patterns/ml-container-cache/pod-cached.yaml b/patterns/ml-container-cache/pod-cached.yaml new file mode 100644 index 0000000000..1464249549 --- /dev/null +++ b/patterns/ml-container-cache/pod-cached.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: Pod +metadata: + name: cached +spec: + containers: + - name: example + image: nvcr.io/nvidia/pytorch:24.08-py3 + imagePullPolicy: IfNotPresent + command: ['python3'] + args: ['-c', 'import torch; print(torch.cuda.is_available()); print(torch.cuda.device_count())'] + resources: + limits: + nvidia.com/gpu: '1' + nodeSelector: + ml-container-cache: 'true' + tolerations: + - key: 'nvidia.com/gpu' + operator: 'Exists' + effect: 'NoSchedule' diff --git a/patterns/ml-container-cache/pod-uncached.yaml b/patterns/ml-container-cache/pod-uncached.yaml new file mode 100644 index 0000000000..4c450a63d5 --- /dev/null +++ b/patterns/ml-container-cache/pod-uncached.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Pod +metadata: + name: uncached +spec: + containers: + - name: example + image: nvcr.io/nvidia/pytorch:24.08-py3 + imagePullPolicy: IfNotPresent + command: ['python3'] + args: ['-c', 'import torch; print(torch.cuda.is_available()); print(torch.cuda.device_count())']