Lambda Cloud#
本指南提供了一个分步教程,用于在单节点 Lambda 实例上部署 AIBrix 以进行测试。设置包括安装依赖项、验证安装、设置集群和部署 AIBrix 组件。
先决条件#
1. 获取 Lambda Cloud 实例#
您可以按照 lambda cloud 文档 启动一个实例。
启动实例后,您可以获取实例的 IP 地址并通过 ssh 连接到实例。
您也可以在不管理 SSH 密钥的情况下进入 Jupyter Notebook。
2. 克隆 AIBrix 代码库#
将 AIBrix 代码库克隆到您的本地机器
git clone https://github.com/vllm-project/aibrix.git
cd aibrix
3. 安装依赖项#
运行以下脚本安装必要的依赖项,包括 nvkind、minikube、kubectl、Helm、Go 和 NVIDIA Container Toolkit。
bash hack/lambda-cloud/install.sh
总结
安装所需的系统软件包(jq、Go、kubectl、kind、Helm)
安装 nvkind 和 minikube(具有 GPU 支持的自定义 Kubernetes-in-Docker)
配置 NVIDIA Container Toolkit
更新 Docker 设置以实现 GPU 兼容性
完成后,重新启动终端或运行
source ~/.bashrc
4. 验证 GPU 容器运行时#
以下脚本的路径假定您位于 AIBrix 存储库的根目录中。
运行以下脚本以确保 NVIDIA 驱动程序和 Docker 集成已正确配置
bash ./hack/lambda-cloud/verify.sh
总结
运行 nvidia-smi 以检查 GPU 可用性
运行带有 NVIDIA 运行时的 Docker 容器以验证 GPU 检测
确保容器内可访问 GPU 设备
如果所有检查都成功通过,如下所示,请继续下一步。
设置 Kubernetes 环境#
我们提供两种设置环境的方法
Minikube(推荐):Minikube 是本地测试和开发的推荐选项。它提供了一个稳定的单节点 Kubernetes 集群。
Kind:Kind 也可以使用,但由于 Kind 集群基于容器的特性,我们经常观察到容器意外收到 SIGTERM 信号。(参见 issue#683 和 issue#684)。
注意
根本原因尚未完全确定。因此,我们建议尽可能使用 Minikube 以获得更稳定的体验。
MiniKube#
1. 创建 minikube 集群#
首先,确保您的非 root 用户具有 docker 权限
sudo usermod -aG docker $USER
newgrp docker
使用 minikube 创建一个 Kubernetes 集群
minikube start --driver=docker --container-runtime=docker --gpus=all --cpus=8 --memory=16g
😄 minikube v1.35.0 on Ubuntu 22.04 (kvm/amd64)
✨ Using the docker driver based on user configuration
📌 Using Docker driver with root privileges
👍 Starting "minikube" primary control-plane node in "minikube" cluster
🚜 Pulling base image v0.0.46 ...
💾 Downloading Kubernetes v1.32.0 preload ...
> preloaded-images-k8s-v18-v1...: 333.57 MiB / 333.57 MiB 100.00% 230.98
🔥 Creating docker container (CPUs=8, Memory=16384MB) ...
🐳 Preparing Kubernetes v1.32.0 on Docker 27.4.1 ...
▪ Generating certificates and keys ...
▪ Booting up control plane ...
▪ Configuring RBAC rules ...
🔗 Configuring bridge CNI (Container Networking Interface) ...
🔎 Verifying Kubernetes components...
▪ Using image nvcr.io/nvidia/k8s-device-plugin:v0.17.0
▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟 Enabled addons: storage-provisioner, nvidia-device-plugin, default-storageclass
💡 kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
注意
如果您在设置集群和启用 GPU 支持时遇到问题,请查看 Using NVIDIA GPUs with minikube 获取更多详细信息。
GPU operator 将随集群设置自动安装,我们无需单独安装它。
2. 在 minikube 中启用 LoadBalancer 服务#
LoadBalancer 类型的服务可以通过 minikube tunnel 命令暴露。它必须在单独的终端窗口中运行才能保持 LoadBalancer 运行。有关更多详细信息,请查看 LoadBalancer 访问。
在单独的终端中运行隧道,不要关闭此窗口。
minikube tunnel
Password:
Status:
machine: minikube
pid: 39087
route: 10.96.0.0/12 -> 192.168.64.194
minikube: Running
services: [hello-minikube]
errors:
minikube: no errors
router: no errors
loadbalancer emulator: no errors
3. 删除 minikube 集群#
完成测试后,您可以删除 minikube 集群
minikube delete
Kind#
1. 创建 nvkind 集群#
使用 nvkind 创建一个 Kubernetes 集群
nvkind cluster create --config-template=./hack/lambda-cloud/nvkind-cluster.yaml
这将设置一个具有 GPU 支持的单节点集群。确保您看到节点的 Ready 状态
kubectl get nodes
2. 设置 NVIDIA GPU Operator#
运行以下脚本以安装 NVIDIA GPU Operator 并配置云提供商
bash ./hack/lambda-cloud/setup.sh
总结
使用 Helm 安装 NVIDIA GPU Operator
安装 Cloud Provider Kind (cloud-provider-kind)
在后台运行 cloud-provider-kind 以进行云集成
3. 删除 Lambda Kind 集群#
完成测试后,您可以删除 nvkind 集群
# get your cluster name
kind get clusters
kind delete clusters nvkind-7kx6v # nvkind-7kx6v is the cluster name in this example
安装 AIBrix#
集群启动并运行后,安装 AIBrix 组件
安装依赖项
# install dependencies
kubectl apply -f "https://github.com/vllm-project/aibrix/releases/download/v0.4.1/aibrix-dependency-v0.4.1.yaml" --server-side
# install core components
kubectl create -f "https://github.com/vllm-project/aibrix/releases/download/v0.4.1/aibrix-core-v0.4.1.yaml"
验证 AIBrix 组件是否安装成功
kubectl get pods -n aibrix-system
现在,您可以按照 快速入门 部署您的模型。
结论#
您已成功在单节点 Lambda 实例上部署 AIBrix。此设置允许在本地环境中高效测试和调试 AIBrix 组件。
如果您遇到问题,请确保
NVIDIA GPU Operator 已正确安装
集群具有可用的 GPU 资源(kubectl describe nodes)
Docker 和 Kubernetes 配置符合 GPU 兼容性要求
测试愉快!