Lambda Cloud#

本指南提供了一个分步教程,用于在单节点 Lambda 实例上部署 AIBrix 以进行测试。设置包括安装依赖项、验证安装、设置集群和部署 AIBrix 组件。

先决条件#

1. 获取 Lambda Cloud 实例#

您可以按照 lambda cloud 文档 启动一个实例。

lambda-cloud-instance

启动实例后,您可以获取实例的 IP 地址并通过 ssh 连接到实例。

lambda-cloud-ssh

您也可以在不管理 SSH 密钥的情况下进入 Jupyter Notebook。

2. 克隆 AIBrix 代码库#

将 AIBrix 代码库克隆到您的本地机器

git clone https://github.com/vllm-project/aibrix.git
cd aibrix

3. 安装依赖项#

运行以下脚本安装必要的依赖项,包括 nvkindminikubekubectlHelmGoNVIDIA Container Toolkit

bash hack/lambda-cloud/install.sh

总结

  • 安装所需的系统软件包(jqGokubectlkindHelm

  • 安装 nvkindminikube(具有 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 环境#

我们提供两种设置环境的方法

  1. Minikube(推荐):Minikube 是本地测试和开发的推荐选项。它提供了一个稳定的单节点 Kubernetes 集群。

  2. Kind:Kind 也可以使用,但由于 Kind 集群基于容器的特性,我们经常观察到容器意外收到 SIGTERM 信号。(参见 issue#683issue#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

注意

  1. 如果您在设置集群和启用 GPU 支持时遇到问题,请查看 Using NVIDIA GPUs with minikube 获取更多详细信息。

  2. 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 兼容性要求

测试愉快!