← All speakers

Bio, Work & Ideas

Khaja Omer

Conference affiliation: Akamai

On this page

Khaja Omer is a senior software engineer at Akamai working on managed Kubernetes infrastructure and the systems that run AI inference. His work spans cluster management, storage integration and autoscaling: creating clusters, connecting applications to persistent storage and provisioning capacity for workloads that need it.

His Kubernetes work includes cloud-controller-manager, CSI drivers, Cluster API Provider Linode and Karpenter-related autoscaling. These are collaborative projects with distinct responsibilities. Cluster API Provider Linode creates, configures and manages Kubernetes clusters; the Linode Block Storage CSI driver connects workloads to block storage; and the Linode Karpenter provider provisions nodes for pods that cannot otherwise be scheduled, then removes capacity when it is no longer needed. Khaja’s work within these efforts connects application resource requirements to the cloud infrastructure that can satisfy them.

Connecting cloud operations and AI

Khaja’s experimental linode-mcp server connects AI assistants to the Linode API through the Model Context Protocol. Its first package release appeared in March 2025. The documented initial tool lists available regions; instance creation, inspection, reboot and deletion are planned additions. That distinction matters: the project establishes an interface for cloud operations, while broader instance management remains proposed functionality.

His AI work also includes inference experiments on personal GPU hardware and Kubernetes clusters, with interests in GPU startup, model serving and cost-aware scaling. In Agents That Own Their Inference, co-presented with Du'an Lightfoot and credited to Akamai Technologies, Khaja develops the optimization exercises after Du'an introduces inference measurements, memory budgets and caching.

Khaja changes the serving deployment to an FP8 model, repeats load tests and checks simple output-quality cases. He then tests speculative decoding, where a draft model proposes tokens for the main model to verify. In the demonstration, generation falls from roughly 58 tokens per second to 16. Rather than treating the technique as an automatic improvement, he examines draft acceptance, model compatibility and GPU contention, then returns to the baseline.

The example makes his approach to inference tuning concrete: compare a configuration against the actual model, hardware and workload, and assess output quality alongside speed. The workshop also examines the point where additional concurrency stops increasing throughput while latency continues to rise. Its final comparison carries an important limitation: a notebook failure changes the model being tested, which the presenters acknowledge. The result illustrates a tuning process rather than a clean, universally applicable performance claim.

Using maintenance to uncover defects

Khaja’s writing on Go linting explains another practical engineering decision. While updating dependencies for a Kubernetes provider project, his team migrated to GolangCI-Lint v2 and revised its checks. Enabling contextcheck exposed tests using a background context rather than the test’s own context. Replacing those calls with t.Context() tied the work to the test lifecycle.

He recommends introducing checks incrementally, fixing the problems they reveal and keeping exclusions narrow. The article explains why the migration was useful through the defect it caught, rather than treating a larger set of enabled checks as an achievement in itself.

Read the topics behind these talks

1 conference talk

Key ideas

Scroll to read ↓

Du'an Lightfoot and Khaja Omer work through dedicated GPU inference with vLLM: how context consumes memory, why FP8 helps their workload, how speculative decoding makes it slower, and what a sequence limit changes under load.

  • Agent latency includes repeated model calls and tool steps. Trace the whole task alongside server-level token metrics.
    1:53 ↗
  • Weights and active contexts share GPU memory. Budget for generated tokens and tool results, not just the opening prompt.
    29:09 ↗
  • FP8 improved this load test from 37.5 to 53.4 tokens per second at concurrency one; application-specific quality checks still matter.
    56:02 ↗
  • Speculative decoding needs a useful drafter-target pairing. This experiment fell from 58.2 to about 16 tokens per second and was rolled back.
    1:15:18 ↗
  • Find the concurrency knee using throughput and latency together. A serving limit can constrain capacity before the hardware ceiling does.
    1:27:19 ↗
  • Keep configuration identity with every comparison: the notebook recovery switched the final exercise back from FP8 to full precision.
    1:39:11 ↗

References