Lambda¶
Lambda rents on-demand GPU instances (full VMs) in several US regions, billed per minute. Instances boot the Lambda Stack image (Ubuntu with NVIDIA drivers, CUDA and common ML frameworks).
export LAMBDA_API_KEY=... # or [lambda] api_key in config.toml
gpuprov provision --cloud lambda --name dev --gpus A6000:1
gpuprov provision --cloud lambda --name big --gpus H100:8 --region us-east-1
Create an API key at https://cloud.lambda.ai/api-keys.
Acceptance testing pending
This adapter is covered by unit and mock-API tests. It has not yet passed the end-to-end acceptance run against a live account (allocate → SSH → k3s/GPU ready → terminate → nothing billable left), so treat it as preview.
Planning: live capacity¶
One call, GET /api/v1/instance-types, returns every instance type with its
price and the regions that can launch it right now. Each type × region with
capacity becomes one offer:
instance_type= Lambda's type, e.g.gpu_1x_a6000orgpu_8x_h100_sxm5region= Lambda region (us-east-1,us-west-1, …); there are no zones- ordered by hourly price, cheapest first
Without --region, only US regions (us-*) are considered. Pass
--region explicitly for any other region. --zone also pins a region,
because Lambda has no zones.
--gpus matches the GPU description by whole tokens: A10 does not match
A100, A6000 matches the RTX A6000, A100-80GB matches only the 80 GB A100,
and H100:1 picks the single-GPU PCIe type while H100:8 picks the 8× SXM5
box. --instance-type takes an exact type name, including CPU types.
Capacity is re-checked right before launching, so a stale offer fails before anything is registered or created.
What gets created¶
| Resource | Notes |
|---|---|
| instance | named and hostnamed gpuprov-<name>, tagged gpuprov-vm-name=<name> and gpuprov-managed=true |
| firewall ruleset | only when extra ports are needed (--port, or the k3s API); named gpuprov-<name>, allows SSH plus those ports, deleted on teardown |
| SSH key | your gpuprov public key, registered once and reused; never removed |
The login user is ubuntu, created by gpuprov's cloud-init user data. --image
takes a Lambda image family (e.g. lambda-stack-24-04) or an image id.
Kubernetes¶
Launches accept cloud-init user data, so the k3s installer runs while the VM boots and gpuprov verifies it over SSH. Firewall rulesets attach per instance, so clusters use direct API access: ports 6443, 80 and 443 are opened in the VM's ruleset.
Limits¶
| Feature | Why |
|---|---|
--spot |
Lambda offers on-demand instances only |
Lambda's legacy account-wide firewall rules do not apply in us-south-1, and
gpuprov uses per-instance rulesets instead. If a region rejects ruleset
creation, that offer is skipped and the next one is tried.
Teardown¶
gpuprov down terminates the instance, waits until Lambda reports it gone, then
deletes the VM's firewall ruleset in that region. While the instance is still
terminating the ruleset is "in use", so the delete is retried until it frees up.