NCA-GENM domain - 10% of the exam

Performance Optimization

Performance Optimization is 10% of the NCA-GENM exam. These are the objectives it covers, each with practice questions, with every answer explained.

The domain in numbers

32
Practice questions
2
Objectives
13
Medium
19
Hard

Where people go wrong

  • Requesting a GPU under a name or amount the scheduler cannot match

    The wrong answers request a GPU in a form the scheduler cannot match: a bare gpu key, a fractional value such as 0.5, or the plain nvidia.com/gpu name when MIG slices are in use. The device plugin advertises GPUs as countable extended resources, so requests take whole integers and requests must equal limits. Under the mixed MIG strategy each profile has its own fully qualified name, such as nvidia.com/mig-1g.5gb, so a pod asks for one unit of that exact name.

    See it in a sample question
  • Expecting CPU metrics to drive scaling on GPU or queue signals

    The wrong answers expect the HorizontalPodAutoscaler to scale on GPU utilisation or queue depth through CPU and memory metrics, metrics-server or kubelet data, or blame maxReplicas or readiness probes. The HPA reads non-resource signals only through the custom or external metrics APIs. A metrics adapter, such as the Prometheus Adapter fed by the DCGM exporter, must register the series first, and queue depth from outside the cluster is an external metric. Until then the metric reads as unavailable and no scale-out fires.

    See it in a sample question
  • Using the wrong control for placement and eviction

    The wrong answers reach for a control that does a different job: a nodeSelector to keep other pods away, a ResourceQuota to limit what lands on a node, or a PodDisruptionBudget to spread replicas. A nodeSelector only attracts pods and never repels them. A ResourceQuota is namespace-scoped. A PodDisruptionBudget limits voluntary evictions such as node drains and does not influence placement. Reserving nodes needs a taint with a matching toleration, and spreading needs preferred podAntiAffinity on the kubernetes.io/hostname label.

    See it in a sample question
  • Freezing everything or tuning everything regardless of constraints

    The wrong answers ignore the data and hardware: freeze every layer, train from scratch, or update the whole model. Freezing everything blocks domain adaptation, and with no trainable head it gives no usable predictions. Fine-tuning every layer on 800 photographs overfits, and updating all 7 billion parameters needs memory the team lacks. The method has to fit the constraint: the last block plus a new head on small data, low-rank adapters on a frozen base when memory is short, and full fine-tuning only for a large dataset unlike the pretraining data.

    See it in a sample question
  • Offering quantisation, pruning or adapters in place of distillation

    The wrong answers offer quantisation, pruning, adapters or weight copying where a smaller separate model is needed. Quantisation lowers numerical precision, so a 13-billion-parameter model still has 13 billion weights. Adapters add parameters to the large model instead of producing a new one. Knowledge distillation trains a smaller student on the frozen teacher's soft output distributions, often with a temperature applied to the logits, so the student inherits behaviour without sharing tensors.

    See it in a sample question

Objectives in this domain

What to study

The official documents this domain's practice questions cite most.

Sample questions from this domain

Free samplePerformance Optimizationhard

An inference platform packs many small models onto A100 40GB cards and partitions each card with Multi-Instance GPU into seven 1g.5gb instances under the device plugin's mixed MIG strategy. A team wants each of their lightweight model pods scheduled onto exactly one of these smallest slices. Which container resource request correctly targets a single 1g.5gb MIG instance?

  • ASet nvidia.com/mig-1g.5gb to 1 in the container resource limits, because the device plugin advertises each MIG profile as its own fully qualified extended resource name. Correct
  • BSet nvidia.com/gpu to 1 and add a node selector for the mixed MIG strategy, because the standard GPU resource name resolves to the smallest free slice when MIG is enabled.
  • CSet nvidia.com/mig to 1 and label the pod with the profile 1g.5gb, because the device plugin reads the profile label to select the slice size at bind time.
  • DSet the container memory limit to 5Gi alongside a request for nvidia.com/gpu, because the device plugin maps the requested GPU memory limit onto the matching MIG instance size.
Under the mixed MIG strategy each GPU partition profile is advertised as its own fully qualified resource name such as nvidia.com/mig-1g.5gb. The mixed MIG strategy in the NVIDIA device plugin advertises every distinct MIG profile on a node as a separate extended resource keyed by the profile geometry. To land a pod on a specific slice size the container must request that exact resource name, for example nvidia.com/mig-1g.5gb, rather than the whole-GPU nvidia.com/gpu name or an inferred memory limit.

Why A is correct: Correct: under the mixed MIG strategy the device plugin exposes each profile as a distinct resource such as nvidia.com/mig-1g.5gb, so requesting one unit of that exact resource name binds the pod to a single slice of that size.

Why B is wrong: Tempting because nvidia.com/gpu is the familiar GPU request, but under the mixed MIG strategy whole-GPU and slice resources are advertised under distinct names, so requesting nvidia.com/gpu does not target a specific MIG profile and will not match the 1g.5gb slices.

Why C is wrong: Tempting because it pairs a MIG-flavoured resource with a profile label, but there is no generic nvidia.com/mig resource and the device plugin selects slices by the fully qualified resource name rather than by a separate profile label.

Why D is wrong: Tempting because 5Gi matches the slice memory, but Kubernetes memory limits govern system RAM and are never interpreted as a GPU partition selector, so this would not bind the pod to a 1g.5gb instance.

Free samplePerformance Optimizationhard

A team runs a transformer inference service on Kubernetes and wants the HorizontalPodAutoscaler to add replicas when GPU compute utilisation across the fleet stays high. The DCGM exporter is running and a Prometheus instance is already scraping its DCGM_FI_DEV_GPU_UTIL series successfully, yet the HPA reports the metric as unavailable and never scales. Which missing component lets the HPA consume that Prometheus series?

  • AReconfigure the HPA to target the built-in cpu resource metric, because the kubelet aggregates GPU utilisation into the standard resource metrics pipeline once the DCGM exporter is present.
  • BRaise the HPA maxReplicas ceiling, because the metric is reported as unavailable only while the desired replica count already sits at the configured maximum.
  • CDeploy a metrics adapter, such as the Prometheus Adapter, that registers the DCGM utilisation series with the custom or external metrics API so the HPA controller can query it. Correct
  • DAnnotate the inference pods so metrics-server scrapes the DCGM endpoint directly, since metrics-server can serve any Prometheus gauge once pod scrape annotations are present.
Custom GPU metrics reach the HorizontalPodAutoscaler only through a metrics adapter that registers them on the custom or external metrics API. The HPA controller queries metrics exclusively through registered API groups: resource metrics from metrics-server, and custom or external metrics from an adapter. A DCGM Prometheus gauge is not a resource metric, so without an adapter bridging Prometheus to the external or custom metrics API the controller cannot discover the series and reports it as unavailable, regardless of how high GPU load climbs.

Why A is wrong: Tempting because CPU metrics work out of the box through metrics-server, but the kubelet never folds GPU utilisation into CPU resource metrics, so this discards the very GPU signal the team needs and still leaves the metric unavailable.

Why B is wrong: Tempting because a low ceiling can stall scaling, but an unavailable metric is a metrics-API discovery failure rather than a ceiling condition, so changing maxReplicas does nothing to make the GPU series queryable.

Why C is correct: Correct: the HPA controller reads non-resource metrics only through the custom.metrics.k8s.io or external.metrics.k8s.io API, and an adapter is what surfaces a Prometheus series like the DCGM gauge through that API for the controller to read.

Why D is wrong: Tempting because scrape annotations are a familiar Prometheus pattern, but metrics-server only serves CPU and memory resource metrics and cannot expose arbitrary Prometheus gauges, so it can never deliver the DCGM series to the HPA.

Free samplePerformance Optimizationhard

A cluster mixes cheap CPU worker nodes with a few costly GPU nodes. After a multimodal service is deployed, ordinary CPU-only batch jobs keep landing on the GPU nodes and consuming their CPU and memory, leaving GPU pods Pending because the nodes are full of non-GPU work. The team wants the GPU nodes reserved so that only workloads that explicitly opt in may schedule there. Which combination of mechanisms achieves this reservation?

  • AAdd a nodeSelector for the GPU nodes to the GPU pods only, which suffices because a node selector both attracts the GPU pods and repels every workload that lacks the selector.
  • BSet a high priorityClassName on the GPU pods so the scheduler preempts the CPU jobs from the GPU nodes whenever a GPU pod is pending.
  • CDefine a ResourceQuota on the GPU node pool that forbids pods without a GPU request, which the scheduler enforces per node to keep CPU jobs away.
  • DApply a taint to the GPU nodes and add a matching toleration to the GPU pods, so the taint repels untolerating workloads while the toleration admits the GPU pods. Correct
Reserving GPU nodes requires taints to repel untolerating pods plus matching tolerations on the GPU workloads permitted to use them. Node selectors and affinity only attract pods to nodes and cannot keep other pods away. Taints are the repelling half of the mechanism: a tainted node rejects any pod without a matching toleration. Pairing a GPU-node taint with a toleration on only the GPU pods reserves those nodes, since untolerating CPU jobs are turned away while the GPU pods are admitted.

Why A is wrong: Tempting because a nodeSelector does steer GPU pods onto the right nodes, but selectors only express attraction and never repel other pods, so CPU jobs with no selector remain free to schedule onto the GPU nodes.

Why B is wrong: Tempting because preemption can evict lower-priority pods, but priority only acts once a GPU pod is already pending and competing, and it does not stop CPU jobs from occupying the nodes in the first place, causing churn rather than reservation.

Why C is wrong: Tempting because it sounds like a guard against non-GPU pods, but ResourceQuota is namespace-scoped rather than node-scoped and cannot express a per-node rule that blocks pods lacking a GPU request, so CPU jobs would still land on the GPU nodes.

Why D is correct: Correct: a node taint repels any pod that does not carry a matching toleration, and adding that toleration only to the GPU pods lets them schedule while keeping ordinary CPU jobs off the reserved GPU nodes.

Free samplePerformance Optimizationmedium

A multimodal pipeline reuses a pretrained convolutional backbone to extract image features for a downstream text-image retrieval task. The team debates whether to fine-tune the backbone or use it purely as a fixed feature extractor. Which consideration most strongly favours full fine-tuning of the backbone over freezing it?

  • AThe team has very limited GPU memory and needs to minimise the number of parameters held in the optimiser state during training.
  • BThe downstream dataset is small and closely resembles the distribution on which the backbone was originally pretrained.
  • CThe backbone uses a diffusion-based architecture whose denoising layers are not suited to gradient-based adaptation for discriminative tasks.
  • DThe downstream dataset is large and its image distribution differs significantly from the backbone's pretraining data. Correct
Distinguish the conditions under which fine-tuning a pretrained backbone is preferable to using it as a frozen feature extractor. The core trade-off in transfer learning is distribution shift versus data availability. When the downstream data distribution is substantially different from the pretraining distribution and the dataset is large enough to support it, fine-tuning all backbone weights allows each layer to adapt its feature representations to the new domain. Freezing the backbone is preferred when data is scarce or the distributions are similar, because the pretrained features generalise well without risk of overfitting.

Why A is wrong: Limited GPU memory is an argument for freezing the backbone, not fine-tuning it; fine-tuning requires storing gradients and optimiser states for all backbone parameters, which increases memory consumption substantially.

Why B is wrong: A small, similar-distribution dataset is the textbook case for feature extraction with a frozen backbone; fine-tuning in this setting risks overfitting the pretrained representations to limited samples.

Why C is wrong: Diffusion model backbones can be fine-tuned with gradient descent for discriminative tasks; the architectural style does not prohibit gradient-based adaptation, making this rationale incorrect as a general rule.

Why D is correct: When the target distribution diverges substantially from the pretraining distribution and sufficient labelled data is available, fine-tuning the backbone allows all layers to adapt their representations, yielding better feature alignment than frozen weights that encode a mismatched distribution.

Free samplePerformance Optimizationmedium

An organisation trains a 7-billion-parameter generative text model and wants to deploy it on edge devices that support at most 500 million parameters. Which transfer learning technique produces a smaller deployable model by using the large model to supervise training of the smaller one?

  • ARetrieval-augmented generation, where the large model indexes its own activations into a vector store that the small model queries at inference time.
  • BQuantisation-aware training of the large model to 4-bit precision, reducing its memory footprint to fit within the edge device constraint.
  • CKnowledge distillation, where the large model acts as a teacher producing soft probability distributions that train a smaller student model. Correct
  • DAdapter-based fine-tuning of the large model on edge-representative data, then pruning the adapter weights to meet the parameter budget.
Explain how knowledge distillation transfers capabilities from a large teacher model into a smaller student model for efficient deployment. Knowledge distillation trains a compact student model to mimic the soft output distributions of a larger, pretrained teacher. The teacher's probability vectors across the vocabulary contain richer supervision signals than one-hot labels, allowing the student to learn generalised patterns with far fewer parameters. The result is a standalone model that is genuinely smaller, deployable on constrained hardware, and faster at inference than the teacher.

Why A is wrong: Retrieval-augmented generation augments a model with external knowledge at inference time; it does not reduce the model size or transfer learned representations into a smaller architecture.

Why B is wrong: Quantisation compresses a single model's weight representation and can reduce memory, but a 7B model quantised to 4-bit still has 7B parameters and may not meet a 500M parameter target; it does not transfer knowledge to a separate smaller architecture.

Why C is correct: Knowledge distillation transfers learned behaviour from a large teacher to a compact student by training the student to match the teacher's output distributions rather than hard labels. This produces a genuinely smaller architecture suitable for edge deployment while retaining much of the teacher's predictive quality.

Why D is wrong: Adapter fine-tuning adds small modules to the existing large model and pruning reduces them, but the base 7B weights remain intact; this combined approach is unlikely to reach a 500M parameter target without also reducing the backbone, making it a less direct solution than distillation.

Other domains in this exam

See also the NCA-GENM cert hub, the study guide, and the cheat sheet.

Examworthy is not affiliated with or endorsed by NVIDIA. Original, blueprint-aligned practice material only.