LLM Function Enablement
Enable the LLM addon before creating or invoking functions with
functionType: "LLM" through the LLM invocation route. The addon deploys the
LLM API Gateway and LLM request router, creates the external LLM invocation
route, and configures worker pods to use the pylon sidecar for model-aware
routing.
For LLM function payload shape and invocation examples, see Function Creation and LLM Gateway.
When to Enable
Enable the LLM addon when NVCF should route OpenAI-compatible requests by
function and model through llm.invocation.<domain>. The gateway extracts the
function ID from the OpenAI model field, applies LLM-specific validation and
rate limits, and sends the request through the LLM request router.
Standard HTTP, gRPC, and LLS functions do not require this addon, even when a
container exposes paths such as /v1/chat/completions, /v1/responses, or
/v1/embeddings.
When enabled, the stack creates:
llm-api-gatewayin thenvcfnamespace.llm-request-routerin thenvcfnamespace.- The
llm.invocation.<domain>HTTPRoute when Gateway API ingress is enabled. - LLM worker pods with a
pylonsidecar that forwards requests to the function container on the configuredinferencePort.
Helmfile Configuration
Add the LLM addon and agentConfig block to your Helmfile environment file
before applying the stack:
Use replicaCount: 1 for local or single-node test clusters. Increase
replica counts for shared or production environments.
addons.llm.requestRouter.loadBalancer.config configures request-router
algorithm selection. Function model specs use underscored routingMethod
values such as round_robin, power_of_two, groq_multiregion, and
random. The request router configuration uses hyphenated algorithm IDs such
as round-robin, power-of-two, groq-multiregion, and random.
When a function can use a non-default routingMethod, include the matching
algorithm in request_algorithms. If the request router does not have a
matching algorithm entry, invocation can fail with HTTP 400 before a backend
is selected.
If you mirror images to a registry that does not use the stack’s default
global.image.registry and global.image.repository, override the
pylon sidecar image passed to generated LLM workers:
The LLM API Gateway and request router images are resolved from the same stack artifact registry settings as the other control plane services.
Local Plaintext Transport
Local development clusters commonly run the LLM API Gateway to NVCF API gRPC
hop and the worker pylon sidecar to request-router QUIC tunnel without TLS.
In that case, add both plaintext controls.
The complete Helmfile example above includes these settings and the request-router load balancer config. If you already have an LLM block, include these plaintext-specific fields:
addons.llm.gateway.auth.grpcInsecure: true configures the LLM API Gateway to
talk to the NVCF API over plaintext gRPC.
workload.stargateQUICInsecure: true configures generated LLM workers to pass
the plaintext QUIC setting to the pylon sidecar.
Use these plaintext settings only for local or isolated test clusters. Production environments should use TLS-capable service configuration instead.
Apply and Verify
Apply the updated control plane environment before creating LLM functions:
Apply or refresh the compute-plane stack for each registered GPU cluster so the
NVCA operator receives agentConfig.mergeConfig:
Existing LLM function pods keep their current sidecar arguments. Recreate or redeploy those functions after refreshing the compute plane so new pods get the updated worker transport settings.
Verify the LLM control plane components:
After deploying an LLM function, verify the worker sidecar:
The function pod should include an llm-worker container using pylon. For
local plaintext clusters, the llm-worker args should include
--quic-insecure.
Troubleshooting
404 no_eligible_candidates from llm.invocation.<domain> means the request
reached the LLM Gateway, but the requested function or model was unknown or was
not registered on the selected request router. Similar 503 candidate errors
mean the router knows the target but has no active eligible backend. Check:
- The LLM function is deployed and its pod is
Running. - The request
modelvalue uses<function-id>/<model-name>. - The function’s
models[].namematches the model suffix in the request. models[].llmConfig.urisincludes the invoked path.addons.llm.requestRouter.loadBalancer.configincludes the algorithm selected by the function’smodels[].llmConfig.routingMethod.- The
llm-workersidecar connected tollm-request-router. - Local clusters using plaintext transport include both
grpcInsecureandstargateQUICInsecure.
Useful logs:
In healthy routing, the request router logs show a reverse tunnel connection from the worker and at least one routing candidate for the requested function.