HydraServe was originally tested on Alibaba Cloud ACK. Follow the instructions below to prepare the cluster for HydraServe.
Create an ACK cluster by clicking Create Kubernetes Cluster at the ACK Console page.
- Kubernetes Version: v1.30.7+
- Network Settings
- Configure SNAT for VPC: Enable
- Network Plug-in: Terway
Create a node pool with zero initial nodes.
- Container Runtime: containerd
- Configure Managed Node Pool: Disable
- Volumes
- System Disk: 200 GiB
- Instances
- Expected Nodes: 0
You can disable all features.
Create ECS instances by clicking Create Instance on the ECS Console page.
- Image: Alibaba Cloud Linux
- Enable a public IP address for access
- Use the same VPC and security group as your ACK cluster
- All instances should be within the same region
- Allocate at least a 200 GB ESSD to store images
ECS types used in our latency measurement experiments (testbed (i)).
4 * ecs.gn7i-c32g1.8xlarge (1*A10)
4 * ecs.gn6e-c12g1.12xlarge (4*V100)
2 * ecs.gn7i-c32g1.16xlarge (32Gbps, As remote storage)
ECS types used in our end-to-end experiments (testbed (ii)).
2 * ecs.gn7i-c32g1.32xlarge (4*A10)
4 * ecs.gn6e-c12g1.12xlarge (4*V100)
6 * ecs.gn7i-c32g1.16xlarge (32Gbps, As remote storage)
- On the Cluster Management page, navigate to Nodes -> Node Pools -> Add Existing Node to add instances to the default nodepool.
- Select the created instances.
- Check Store Container and Image Data on a Data Disk.
- Wait for the instances to join the cluster.
- On the Cluster Management page, navigate to Cluster Information -> Connection Information -> Obtain Long-term Kubeconfig, and copy the content from the Internal Access section.
- Log in to the master node (you can choose any arbitrary node that is not used for GPU inference) and run the following commands.
mkdir -p ~/.kube
vim ~/.kube/config
[Paste the just copied content here]
- On the Cluster Management page, navigate to Applications -> Cloud-native AI Suite -> Deploy.
- Check Scheduling Policy Extension.
- Click Advanced, and configure the
policyfield ofcgputo 1. - Deploy the suite.
Log in to your master node and run the following commands.
[Clone this repo]
cd hydraserve/scripts/kubernetes
sh install_python.sh # The Kubernetes package version must be consistent with your Kubernetes cluster version.
sh tool-node-shell/setup.sh
If you are using ECS instances not listed in Section 2.1, please first configure the specifications of instance types in scripts/kubernetes/vllm/src/ECSInstance.py.
First, label all GPU servers.
kubectl label node [node_name] gpu_server=true --overwrite
Next, apply the GPU sharing labels to all relevant nodes with the following command.
cd hydraserve/scripts/kubernetes
SHARE=1 python label_nodes.py
Follow the instructions in Mount NAS to multiple instances to mount a shared NAS volume to the /mnt path of all instances.