Skip to content

About

Tunes LLM serving configurations overnight on your own GPUs: search spaces, pluggable search policies, benchmarked by LLMBench, winners promoted as merge requests

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

LLM AutoTune

LLM AutoTune finds the best serving configuration for a model on your GPUs. A campaign sets a model, a search space of engine settings (sglang, vLLM) and an objective: one metric to improve, plus redlines a config must hold. A policy, a search algorithm packaged as a container, picks the configs to try. The platform launches each config, benchmarks it with LLMBench, and ranks it against the baseline, the configuration production runs today.

LLM AutoTune overview

Features

  • Pluggable search. A policy is any container that implements a small HTTP API (policy contract). Random search is included; without a policy, the platform tries every config in the space.
  • Platform-owned measurement. The platform benchmarks every config the same way and re-measures the best before reporting. A policy never grades its own results.
  • Real hardware and traffic. Benchmarks run on the GPUs you serve on and can replay captured production traffic. A config that crosses a latency or quality redline is rejected.
  • Existing GPUs. Kubernetes GPU nodes or ssh machines, leased to the platform for a nightly window.
  • Reproducible results. Every run records its engine command, image, engine version, card type and dataset.
  • Restart-safe. All state is in Postgres; restarting the worker mid-run loses nothing.
  • Extensible. Plugins add pages, API routes, scheduled steps and search strategies (plugins).

Architecture

Platform architecture: the policy on a GPU machine asks the API for runs; the supervisor launches each config, LLMBench benchmarks it, and the platform validates the best

The policy decides what to try. The supervisor starts the policy, launches the configs it requests, and submits each to LLMBench. At the deadline the platform re-measures the policy's best configs itself, and that measurement is the result. Details: platform architecture.

Install

The platform runs on a Kubernetes cluster without GPUs; runs go to GPU clusters (or ssh machines) added from the UI. Requirements: kubectl, helm, git, openssl, and docker for building search policies.

git clone https://github.com/modelsphere/llm-autotune
cd llm-autotune
deploy/quickstart.sh                          # 1. LLM AutoTune + LLMBench on the current context
deploy/gpu-cluster.sh --context <gpu-cluster> # 2. a scoped account on a GPU cluster; writes llm-autotune-runs.kubeconfig
  1. Sign in with the address and password the install prints. On Resources ▸ Add GPU cluster, upload the kubeconfig and register the GPU nodes.
  2. Create a search space and a campaign. The campaign's Check step pulls the images and mounts the model path on the nodes before anything starts. First campaign walks through it with screenshots.

Installing covers air-gapped clusters, a local setup with two kind clusters, and troubleshooting. After installing covers settings, more GPUs and ingress; Deploying covers the Helm chart and every setting.

Demo without GPUs

deploy/demo.sh --kind

Creates a local kind cluster (allow Docker about 8 GB), installs both platforms, and starts a demo campaign on a mock engine that needs no GPU. The full loop runs; the numbers are not performance data. deploy/demo.sh down --kind removes it.

Concepts

Campaign One search: a model, a search space, an objective, machines and a schedule.
Search space The engine settings a campaign may change, and their values.
Objective The target metric to rank by, plus redlines a config must hold.
Run One config, launched on a machine and benchmarked.
Baseline The configuration production runs today, measured the same way.
Machine Where runs land: a node of a GPU cluster, or an ssh machine.
Policy A container that decides which config to try next.

The user guide defines the rest.

Repository layout

backend/     FastAPI API and the orchestrator worker (Python 3.12, uv)
  app/
    control/    search space, orchestrator, launch drivers
    evaluation/ health checks and the benchmark-platform adapter
    agent/      read models for LLM-written performance reports
frontend/    Vue 3 + TypeScript UI
deploy/
  quickstart.sh  installs both platforms; demo.sh installs the no-GPU demo
  gpu-cluster.sh prepares a GPU cluster and writes its kubeconfig
  helm/      the chart
  docker/    images, and a compose file for local development
policies/    submodule: llm-autotune-policies (the SDK and two policies)
operator/    the optional Kubernetes operator (Go)
mock-engine/ a fake engine for running the loop without GPUs
docs/        guides, architecture and API contracts

Documentation

Contributing

See CONTRIBUTING.md: uv run pytest in backend/, npm run typecheck in frontend/, and helm lint on the chart.

License

Apache License 2.0.

About

Tunes LLM serving configurations overnight on your own GPUs: search spaces, pluggable search policies, benchmarked by LLMBench, winners promoted as merge requests

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages