Kubernetes GPU Autoscaling via Sidecar Metric Exporter
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Kubernetes' autoscaling feature does not support GPU applications due to the absence of a built-in GPU utilization metric, limiting the ability to scale these applications based on their processing demands.
Innovation Solution
An autoscaling framework is introduced that exports GPU utilization using an ancillary container (sidecar container) to provide a custom GPU metric, enabling selective scaling of applications based on GPU usage.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Extent of automation
If Kubernetes autoscaling feature is used, then application scaling is automated based on demand, but GPU applications cannot benefit from autoscaling due to absence of built-in GPU utilization metric
Solution Approach 1:
The patent introduces an intermediary component (sidecar container with GPU metric exporter) that bridges the gap between GPU applications and Kubernetes autoscaling. This exporter collects GPU utilization metrics and exposes them through a standardized interface that Kubernetes can consume, enabling autoscaling without modifying the core Kubernetes system or the GPU applications themselves.
Solution Approach 2:
The solution creates a universal metric export mechanism that can work with different GPU applications and frameworks. The sidecar container approach provides a multi-functional solution that can export metrics for various GPU workloads while maintaining compatibility with Kubernetes' existing autoscaling infrastructure.
2Loss of information
If custom GPU metric export mechanism is implemented, then GPU utilization metrics become available for autoscaling, but system complexity increases due to additional sidecar containers and metric exporters
Solution Approach 1:
The sidecar container acts as an intermediary that adds minimal complexity only where needed - in the monitoring and metric collection layer. The core application containers remain unchanged, and the sidecar is a lightweight auxiliary component that doesn't significantly increase overall system complexity while solving the metric visibility problem.
Solution Approach 2:
The solution segments the monitoring function into a separate sidecar container, isolating the complexity of metric collection and export from the main application. This segmentation allows the application to focus on its core function while the sidecar handles metric export, reducing the complexity burden on the application itself.
3Measurement precision
If GPU metric aggregation over time period is performed, then accurate average GPU utilization is calculated for scaling decisions, but measurement and processing time increases
Solution Approach 1:
The sidecar container performs preliminary action by continuously collecting and buffering GPU metrics in real-time before autoscaling decisions are needed. This pre-aggregation of metrics over time periods allows the autoscaler to make accurate scaling decisions without performing time-consuming calculations at the moment of scaling, thus reducing latency in the scaling response.
Data Source
AI summary
Methods, systems, and computer-readable storage media for executing, within the container orchestration system, the application using one or more resource units, each resource unit including an application container and an ancillary container, the ancillary container executing a set of GPU metric exporters, receiving, from the application and for each resource unit, a GPU metric including a GPU utilization associated with a respective resource unit, determining, for each resource unit, a custom GPU metric based on a respective GPU metric, the custom GPU metric aggregating values of the respective GPU metric over a time period, determining, by an autoscaler, an average GPU metric based on one or more custom GPU metrics, and selectively scaling, by the autoscaler, the application within the container orchestration system based on the average GPU metric by adjusting a number of resource units executing the application.


