Bird
Raised Fist0
MLOpsdevops~20 mins

Cost optimization at scale in MLOps - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Cost Optimization Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding Spot Instances for Cost Savings

Which statement best describes the main advantage of using spot instances in cloud-based machine learning workflows?

ASpot instances offer lower prices but can be interrupted, making them suitable for fault-tolerant batch training jobs.
BSpot instances provide guaranteed uptime and are ideal for critical real-time inference tasks.
CSpot instances are more expensive but provide better GPU performance than on-demand instances.
DSpot instances automatically scale the number of CPUs based on workload without user intervention.
Attempts:
2 left
💡 Hint

Think about cost versus reliability trade-offs in cloud compute options.

💻 Command Output
intermediate
2:00remaining
Analyzing Cost with Kubectl Metrics

Given the command kubectl top pods --namespace=ml-training, what output will you see?

MLOps
kubectl top pods --namespace=ml-training
AA list of pods with their CPU and memory usage in the ml-training namespace.
BA list of all namespaces with their total CPU and memory usage.
CAn error stating 'metrics API not available' if metrics-server is not installed.
DA list of nodes with their CPU and memory usage.
Attempts:
2 left
💡 Hint

Consider what 'top pods' command shows in Kubernetes.

🔀 Workflow
advanced
2:00remaining
Optimizing Model Training with Autoscaling

You want to reduce costs by automatically scaling your training cluster based on GPU usage. Which Kubernetes resource should you configure?

AConfigure a Cluster Autoscaler to add or remove nodes based on GPU resource requests.
BConfigure a Vertical Pod Autoscaler (VPA) to increase pod memory limits automatically.
CConfigure a Horizontal Pod Autoscaler (HPA) targeting CPU usage metrics only.
DConfigure a DaemonSet to run GPU monitoring agents on each node.
Attempts:
2 left
💡 Hint

Think about scaling nodes, not just pods, when GPU resources are involved.

Troubleshoot
advanced
2:00remaining
Identifying Cost Spikes in MLOps Pipelines

Your cloud bill suddenly increased after deploying a new ML pipeline. Which tool can help you identify which pipeline step caused the cost spike?

AUse Docker logs to check container output for errors.
BUse Prometheus to monitor CPU and memory usage metrics during pipeline execution.
CUse Git to track changes in pipeline code that might increase costs.
DUse a cloud provider's cost explorer to analyze spending by resource tags assigned to pipeline steps.
Attempts:
2 left
💡 Hint

Think about tools that analyze spending by resource usage or tags.

Best Practice
expert
2:00remaining
Implementing Cost Controls in MLOps

Which practice best helps prevent unexpected high costs in a large-scale MLOps environment?

AAllow unrestricted access to cloud resources for all team members to speed up development.
BSet up budget alerts and enforce resource quotas per team or project.
CDisable autoscaling to keep resource usage constant and predictable.
DUse only on-demand instances to avoid interruptions.
Attempts:
2 left
💡 Hint

Think about proactive cost management and limits.

Practice

(1/5)
1. What is the main goal of cost optimization at scale in MLOps?
easy
A. To increase the number of servers regardless of workload
B. To avoid monitoring costs after deployment
C. To use only the most expensive cloud resources
D. To save money by matching resource use to workload needs

Solution

  1. Step 1: Understand cost optimization purpose

    Cost optimization means using resources efficiently to reduce expenses.
  2. Step 2: Match resources to workload needs

    Adjusting resources based on workload avoids waste and saves money.
  3. Final Answer:

    To save money by matching resource use to workload needs -> Option D
  4. Quick Check:

    Cost optimization = save money by matching resources [OK]
Hint: Cost optimization means using just enough resources [OK]
Common Mistakes:
  • Thinking more servers always means better
  • Ignoring cost monitoring after deployment
  • Assuming expensive resources are always best
2. Which of the following is a correct way to specify a spot instance in a Kubernetes pod spec for cost savings?
easy
A. affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: "kubernetes.io/lifecycle" operator: In values: - spot
B. tolerations: - key: "spot-instance" operator: Exists effect: NoSchedule
C. nodeSelector: kubernetes.io/instance-type: spot
D. resources: requests: cpu: "spot" memory: "spot"

Solution

  1. Step 1: Understand spot instance labeling in Kubernetes

    Spot instances are often labeled with lifecycle=spot to identify cheaper nodes.
  2. Step 2: Check node affinity syntax

    affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: "kubernetes.io/lifecycle" operator: In values: - spot correctly uses nodeAffinity with matchExpressions to select nodes labeled as spot.
  3. Final Answer:

    affinity with nodeSelectorTerms matching lifecycle=spot label -> Option A
  4. Quick Check:

    Spot instance selection uses nodeAffinity with lifecycle=spot label [OK]
Hint: Use nodeAffinity with lifecycle=spot label for spot nodes [OK]
Common Mistakes:
  • Using nodeSelector with wrong label key
  • Setting resource requests to 'spot' (invalid)
  • Confusing tolerations with node affinity
3. Given this autoscaling configuration snippet for a Kubernetes deployment:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: ml-model-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: ml-model
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

What happens when CPU usage rises to 75%?
medium
A. The number of pods will increase up to a maximum of 10
B. The number of pods will decrease to 2
C. The deployment will restart pods
D. Nothing changes because CPU target is 50%

Solution

  1. Step 1: Understand Horizontal Pod Autoscaler (HPA) behavior

    HPA increases pods when CPU usage exceeds target utilization to balance load.
  2. Step 2: Analyze CPU usage vs target

    CPU is at 75%, above the 50% target, so HPA will scale up pods up to maxReplicas (10).
  3. Final Answer:

    The number of pods will increase up to a maximum of 10 -> Option A
  4. Quick Check:

    CPU > target utilization triggers pod scaling up [OK]
Hint: CPU above target utilization triggers scaling up [OK]
Common Mistakes:
  • Thinking pods scale down when CPU rises
  • Confusing pod restart with scaling
  • Assuming no change if CPU exceeds target
4. You have a cloud cost alert system but it keeps sending false alarms about overspending. What is the most likely cause?
medium
A. The cloud provider is charging incorrectly
B. The alert thresholds are set too low or too sensitive
C. The system is not connected to the billing API
D. The cost data is updated only once a year

Solution

  1. Step 1: Understand alert system sensitivity

    Alerts trigger when costs exceed set thresholds; too low thresholds cause false alarms.
  2. Step 2: Evaluate other options

    Incorrect charges or missing billing data cause different issues, not false alarms.
  3. Final Answer:

    The alert thresholds are set too low or too sensitive -> Option B
  4. Quick Check:

    Low alert thresholds cause false alarms [OK]
Hint: Check alert thresholds if false alarms occur [OK]
Common Mistakes:
  • Blaming cloud provider without proof
  • Ignoring alert configuration
  • Assuming billing API is always connected
5. You want to reduce costs for a large ML training job that runs daily on cloud GPUs. Which combined strategy best optimizes cost at scale?
hard
A. Run training on CPUs to avoid GPU costs without changing code
B. Use only on-demand GPU instances and disable autoscaling
C. Use spot GPU instances with checkpointing and autoscaling to handle interruptions
D. Schedule training during peak hours to use full capacity

Solution

  1. Step 1: Identify cost-saving options for GPU jobs

    Spot instances are cheaper but can be interrupted; checkpointing saves progress.
  2. Step 2: Combine autoscaling with spot instances and checkpointing

    Autoscaling adjusts resources; checkpointing prevents data loss on interruptions.
  3. Step 3: Evaluate other options

    On-demand is costly; CPUs are slower; peak hours usually cost more.
  4. Final Answer:

    Use spot GPU instances with checkpointing and autoscaling to handle interruptions -> Option C
  5. Quick Check:

    Spot + checkpoint + autoscale = best cost optimization [OK]
Hint: Combine spot instances with checkpointing and autoscaling [OK]
Common Mistakes:
  • Ignoring interruptions on spot instances
  • Using expensive on-demand only
  • Running on CPUs without code changes
  • Scheduling during costly peak hours