Konduktor makes serving general and vLLM deployments easy
Experimental features are new and their interface and implementation may change at any time. Expect sharp edges.
Konduktor Serve is a powerful feature that simplifies deploying and managing ML models and general applications on Kubernetes. It provides two main deployment types:vLLM (Aibrix) Deployments: Optimized for serving large language models with vLLM, featuring automatic horizontal scaling, tensor parallelism, and OpenAI-compatible API endpoints. For now, only single node inference is supported. Accessible at <COMPANY>.trainy.usGeneral Deployments: Deploy any containerized application with automatic horizontal scaling and health checks. Accessible at <COMPANY>2.trainy.us
To launch a deployment, use the konduktor serve launch command shown below.
konduktor serve launch my_deployment.yaml
In this single command, Konduktor automatically creates the following resources:
VLLM
Deployment:
App Deployment
Service:
App Service
PodAutoscaler: (optional)
KPA (Knative-based Pod Autoscaler)
GENERAL
Deployment:
App Deployment
Service:
App Service
PodAutoscaler: (optional)
HPA (Horizontal Pod Autoscaler)
Below is a basic, but incomplete deployment YAML to show the general idea of how to get started. The format is the same as konduktor launch task.yamls for jobs, except serving includes an extra section for replicas, ports, and health endpoint probing. For full, detailed examples of deployment.yaml, check out the bottom of this page.
# For trainy.us endpoint access:curl https://<COMPANY>.trainy.us/v1/completions \-H "Content-Type: application/json" \-d '{ "model": "<DEPLOYMENT_NAME>", "prompt": "San Francisco is a", "max_tokens": 128, "temperature": 0}'# For direct IP endpoint access:curl http://<DIRECT_IP>/v1/completions \-H "Content-Type: application/json" \-d '{ "model": "<DEPLOYMENT_NAME>", "prompt": "San Francisco is a", "max_tokens": 128, "temperature": 0}'
Output:
top destination for tech companies, but it's also a hub for innovation and creativity. So, it's no surprise that the city has a vibrant food scene. From the iconic Golden Gate Bridge to the bustling streets of the Financial District, San Francisco offers a unique blend of culture, history, and modernity. When it comes to food, the city is known for its diverse cuisine, which reflects ...Chat Completion API
# For trainy.us endpoint access:curl https://<COMPANY>.trainy.us/v1/chat/completions \-H "Content-Type: application/json" \-d '{ "model": "<DEPLOYMENT_NAME>", "messages": [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Help me write a random number generator function in python"} ], "max_tokens": 128}'# For direct IP endpoint access:curl http://<DIRECT_IP>/v1/chat/completions \-H "Content-Type: application/json" \-d '{ "model": "<DEPLOYMENT_NAME>", "messages": [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Help me write a random number generator function in python"} ], "max_tokens": 128}'
Output:
Okay, so I need to help write a random number generator function in Python. Hmm, where do I start? I remember that Python has a module called random which provides functions for generating random numbers. So maybe I should use that. Let me think about what functions are available there.\n\nFirst, there's random.randint(a, b), which returns a random integer N between a and b, inclusive. That's useful. Then...
# For trainy.us endpoint access:curl https://<COMPANY>.trainy.us/<DEPLOYMENT_NAME># For direct IP endpoint access:curl -H "Host: <DEPLOYMENT_NAME>" http://<DIRECT_IP>
Output: Hello from Konduktor Serve!Health Probe API
# For trainy.us endpoint access:curl https://<COMPANY>.trainy.us/<DEPLOYMENT_NAME>/health# For direct IP endpoint access:curl -H "Host: <DEPLOYMENT_NAME>" http://<DIRECT_IP>/health
vLLM (Aibrix) Deployments:Throughput/Latency/TokensScale from 0 Cold Start Time (GKE GPUs), T4 and A100 respectivelyGeneral Deployments:Throughput/Latency/ErrorsScale from 0 Cold Start Time (no GPUs)