你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:在 Azure 容器应用中使用无服务器 GPU 生成映像

本文介绍如何创建使用无服务器 GPU 为 AI 应用程序提供支持的容器应用。

使用无服务器 GPU 时,可以直接访问 GPU 计算资源,而无需执行手动基础结构配置,例如安装驱动程序。 只需部署 AI 模型的映像。

本教程介绍以下内容:

  • 创建新的容器应用和环境
  • 将环境配置为使用无服务器 GPU
  • 将应用部署到 Azure 容器应用
  • 使用新的无服务器 GPU 启用应用程序
  • 启用项目流式处理以减少 GPU 冷启动

Prerequisites

资源 说明
Azure 帐户 需要一个具有活动订阅的 Azure 帐户。 如果还没有,则可以免费创建一个
访问无服务器 GPU 只有在请求 GPU 配额后,才能访问 GPU。 可以通过客户支持案例提交 GPU 配额请求。
资源 说明
Azure 帐户 需要一个具有活动订阅的 Azure 帐户。 如果还没有,则可以免费创建一个
访问无服务器 GPU 只有在请求 GPU 配额后,才能访问 GPU。 可以通过客户支持案例提交 GPU 配额请求。
Azure CLI 安装 Azure CLI 或升级到最新版本。

创建容器应用

  1. 转到 Azure 门户,搜索并选择“容器应用”

  2. 选择“创建”,然后选择“容器应用”。

  3. 在“基本信息”窗口中,在每个部分中输入以下值。

    在“项目详细信息”下输入以下值:

    设置
    订阅 选择 Azure 订阅。
    资源组 选择“新建”并输入“my-gpu-demo-group”
    容器应用名称 输入“my-gpu-demo-app”
    部署源 选择“容器映像”。

    在“容器应用环境”下输入以下值

    设置
    区域 选择 瑞典中部

    有关更多受支持的区域,请参阅在 Azure 中使用无服务器 GPU
    容器应用环境 选择“新建”。

    在“创建容器应用环境”窗口中,输入以下值

    设置
    环境名称 输入“my-gpu-demo-env”

    选择“创建”

    选择“下一步: 容器 >”

  4. 在“容器”窗口中,输入以下值:

    设置
    名称 输入“my-gpu-demo-container”
    映像源 选择“Docker Hub 或其他注册表”。
    映像类型 选择“公共”
    注册表登录服务器 输入“mcr.microsoft.com”
    映像和标记 输入“k8se/gpu-quickstart:latest”
    工作负载配置文件 选择 消耗 - 最多 4 个 vCPU、8 Gib 内存
    GPU 选中复选框。
    GPU 类型 选择“Consumption-GPU-NC8as-T4 - 最多 8 个 vCPU,56 GiB 内存”,然后选择用于将配置文件添加到环境的链接。

    选择“下一步: 流入量 >”

  5. 在“流入量”窗口中,输入以下值:

    设置
    流入量 选中“已启用”复选框。
    入口流量 选择“接受来自任何位置的流量”单选按钮。
    目标端口 输入 80
  6. 选择“查看 + 创建”

  7. 选择“创建”

  8. 等待部署完成,然后选择“转到资源”

    此过程可能需要五分钟才能完成。

使用 GPU 应用

在“概述”窗口中,选择“应用程序 URL”链接,在浏览器中打开 Web 应用前端并使用 GPU 应用程序。

注意

  • 若要实现 GPU 应用的最佳性能,请按照以下步骤改进无服务器 GPU 的冷启动
  • 当应用程序中有多个容器时,第一个容器可以访问 GPU。

创建环境变量

定义以下环境变量。 在运行此命令之前,请将 <PLACEHOLDERS> 替换为您的值。

RESOURCE_GROUP="<RESOURCE_GROUP>"
ENVIRONMENT_NAME="<ENVIRONMENT_NAME>"
LOCATION="swedencentral"
CONTAINER_APP_NAME="<CONTAINER_APP_NAME>"
CONTAINER_IMAGE="mcr.microsoft.com/k8se/gpu-quickstart:latest"
WORKLOAD_PROFILE_NAME="NC8as-T4"
WORKLOAD_PROFILE_TYPE="Consumption-GPU-NC8as-T4"

创建容器应用

  1. 创建资源组以包含在本教程中创建的资源。 此命令应输出 Succeeded

    az group create \
      --name $RESOURCE_GROUP \
      --location $LOCATION \
      --query "properties.provisioningState"
    
  2. 创建容器应用环境来托管容器应用。 此命令应输出 Succeeded

    az containerapp env create \
      --name $ENVIRONMENT_NAME \
      --resource-group $RESOURCE_GROUP \
      --location "$LOCATION" \
      --query "properties.provisioningState"
    
  3. 将工作负荷配置文件添加到环境。

    az containerapp env workload-profile add \
      --name $ENVIRONMENT_NAME \
      --resource-group $RESOURCE_GROUP \
      --workload-profile-name $WORKLOAD_PROFILE_NAME \
      --workload-profile-type $WORKLOAD_PROFILE_TYPE
    
  4. 创建容器应用。

    az containerapp create \
      --name $CONTAINER_APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --environment $ENVIRONMENT_NAME \
      --image $CONTAINER_IMAGE \
      --target-port 80 \
      --ingress external \
      --cpu 8.0 \
      --memory 56.0Gi \
      --workload-profile-name $WORKLOAD_PROFILE_NAME \
      --query properties.configuration.ingress.fqdn
    

    此命令输出容器应用的应用程序 URL。

使用 GPU 应用

在浏览器中打开容器应用的应用程序 URL。 请注意,启动容器应用最多可能需要五分钟的时间。

Azure 容器应用使用无服务器 GPU 的应用程序允许您输入提示以生成图像。 还可以直接选择 Generate Image 使用默认提示。 在下一步中,你将查看 GPU 处理的结果。

注意

  • 若要实现 GPU 应用的最佳性能,请按照以下步骤改进无服务器 GPU 的冷启动
  • 当应用程序中有多个容器时,第一个容器可以访问 GPU。

监视 GPU

生成映像后,使用以下步骤查看 GPU 处理的结果:

  1. 在 Azure 门户中打开容器应用。

  2. 从“监视”部分选择“控制台”。

  3. 选择副本。

  4. 选择你的容器。

  5. 选择 “重新连接”。

  6. 在“选择启动命令”窗口中选择“/bin/bash”,然后选择“连接”

  7. 设置 shell 后,输入命令 nvidia-smi 以查看 GPU 的状态和输出。

清理资源

本教程中创建的资源会影响 Azure 帐单。

如果不打算长期使用这些服务,请按照步骤删除本教程中创建的所有内容。

  1. 在 Azure 门户中,搜索并选择“资源组”

  2. 选择“my-gpu-demo-group”

  3. 选择“删除资源组”

  4. 在确认框中,输入“my-gpu-demo-group”

  5. 选择“删除”。

运行以下命令。

az group delete --name $RESOURCE_GROUP

后续步骤