上云无忧 > 文档中心 > 百度智能云容器引擎服务 CCE 实践:部署 TensorFlow Serving 推理服务
容器引擎服务CCE
百度智能云容器引擎服务 CCE 实践:部署 TensorFlow Serving 推理服务

文档简介:
本文介绍如何部署 TensorFlow Serving 推理服务,并指定队列、GPU资源。 前提条件: 您已成功安装 CCE GPU Manager 和 CCE AI Job Scheduler 组件,否则云原生 AI 功能将无法使用。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

本文介绍如何部署 TensorFlow Serving 推理服务,并指定队列、GPU资源。

前提条件

  • 您已成功安装 CCE GPU Manager 和 CCE AI Job Scheduler 组件,否则云原生 AI 功能将无法使用。

操作步骤示例

这里用 TensorFlow Serving 作为示例,演示如何通过 deployment 部署推理服务。

  1. 部署 TensorFlow Serving 推理服务

    • 指定使用 default 队列:scheduling.volcano.sh/queue-name: default
    • 申请 1张GPU卡的50%的算力,10Gi显存
    • 调度器指定为 volcano (必须)

参考 yaml 如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: gpu-demo
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gpu-demo
  template:
    metadata:
      annotations:
         scheduling.volcano.sh/queue-name: default
      labels:
        app: gpu-demo
    spec:
      containers:
        - image: registry.baidubce.com/cce-public/tensorflow-serving:demo-gpu
          imagePullPolicy: Always
          name: gpu-demo
          env:
            - name: MODEL_NAME
              value: half_plus_two
          ports:
          - containerPort: 8501
          resources:
            limits:
              cpu: "2"
              memory: 2Gi
              baidu.com/v100_32g_cgpu: "1"
              baidu.com/v100_32g_cgpu_core: "50"
              baidu.com/v100_32g_cgpu_memory: "10"
            requests:
              cpu: "2"
              memory: 2Gi
              baidu.com/v100_32g_cgpu: "1"
              baidu.com/v100_32g_cgpu_core: "50"
              baidu.com/v100_32g_cgpu_memory: "10"
          # if gpu core isolation is enabled, set the following preStop hook for graceful shutdown.
          # `tf_serving_entrypoint.sh` needs to be replaced with the name of your gpu process.
          lifecycle:
              preStop:
                exec:
                  command: ["/bin/sh", "-c", "kill -10 `ps -ef | grep tf_serving_entrypoint.sh |
 grep -v grep | awk '{print $2}'` && sleep 1"]
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: volcano

  1. 执行以下命令,查看任务运行状态

kubectl get deployments
NAME       READY   UP-TO-DATE   AVAILABLE   AGE
gpu-demo   1/1     1            1           30s

kubectl get pod -o wide
NAME                            READY   STATUS      RESTARTS   AGE    IP            NODE
           NOMINATED NODE   READINESS GATES
gpu-demo-65767d67cc-xhdgg       1/1     Running     0          63s 
   172.23.1.86   192.168.48.8   <none>           <none>

  1. 验证 Tensorflow 推理服务是否可用
# 需替换 <172.23.1.86> 为实际 pod ip
curl -d '{"instances": [1.0, 2.0, 5.0]}'   -X POST http://172.23.1.86:8501/v1/models/half_plus_two:predict

# 输出类似如下结果:
{
    "predictions": [2.5, 3.0, 4.5]
}

队列使用说明

可通过 annotations 指定队列

annotations:
   scheduling.volcano.sh/queue-name: <队列名称>

资源申请说明

单卡独占示例

resources:
      requests:
        baidu.com/v100_32g_cgpu: 1 // 1卡
        cpu: "4"
        memory: 6Gi
      limits:
        baidu.com/v100_32g_cgpu: 1 // limit与request必须一致
        cpu: "4"
        memory: 6Gi

多卡独占示例:

resources:
      requests:
        baidu.com/v100_32g_cgpu: 2 // 2卡
        cpu: "4"
        memory: 6Gi
      limits:
        baidu.com/v100_32g_cgpu: 2 // limit与request必须一致
        cpu: "4"
        memory: 6Gi

单卡共享【不进行算力隔离,只有显存隔离】示例:

resources:
      requests:
        baidu.com/v100_32g_cgpu: 1 // 1卡
        baidu.com/v100_32g_cgpu_memory: 10 // 10GB
        cpu: "4"
        memory: 6Gi
      limits:
        baidu.com/v100_32g_cgpu: 1 // limit与request必须一致
        baidu.com/v100_32g_cgpu_memory: 10
        cpu: "4"
        memory: 6Gi

单卡共享【同时支持显存隔离和算力隔离】示例:

resources:
      requests:
        baidu.com/v100_32g_cgpu: 1 // 1卡
        baidu.com/v100_32g_cgpu_core: 50 // 50%, 0.5卡算力
        baidu.com/v100_32g_cgpu_memory: 10 // 10GB
        cpu: "4"
        memory: 6Gi
      limits:
        baidu.com/v100_32g_cgpu: 1 // limit与request必须一致
        baidu.com/v100_32g_cgpu_core: 50
        baidu.com/v100_32g_cgpu_memory: 10
        cpu: "4"
        memory: 6Gi

GPU卡类型和资源名称对比关系

目前以下类型的GPU支持显存和算力的共享与隔离:

GPU卡型号 资源名称
Tesla V100-SXM2-16GB baidu.com/v100_16g_cgpu
Tesla V100-SXM2-32GB baidu.com/v100_32g_cgpu
Tesla T4 baidu.com/t4_16g_cgpu

相似文档
  • 在CCE中使用AI Training Operator与Horovod训练框架实现分布式训练的弹性与容错功能。 模型训练是深度学习中重要的环节,模型复杂的训练任务有运行时间长、算力需求大的特征。传统分布式深度学习任务中,一旦提交训练任务,无法在运行中动态调整Workers的数量。
  • 本文档将列出 Linux 操作系统常用的参数配置以及相应说明。 文件句柄限制: 在大流量的业务场景下,可以调整以下内核设置和内置限制,以占用部分系统内存的代价来处理更大的量。
  • 部分容器化应用需要对容器网络命名空间的 sysctl 参数进行优化,尽管可以使用带有特权的 initContainer 实现初始化配置,但更推荐的方式是利用 CNI 原生支持。 CCE CNI 提供了 sysctl 插件,基于 CNI Chain 能够进行灵活的配置。 本文描述了如何使用和配置 CCE CNI,从而实现集群粒度和应用粒度的容器 sysctl 配置。
  • 容器运行时(Container Runtime)是 Kubernetes 重要的组件之一,负责管理镜像和容器的生命周期。本文通过对比两种运行时的使用场景、调用链,并通过对比 docker 和 containerd 两种容器引擎常用命令,帮助您根据需求场景选择合适的容器运行时。
  • 通过 kubectl 连接 Kubernetes 集群: 如果需要从本地个人计算机连接到百度智能云的 Kubernetes 集群,需要使用 Kubernetes 命令行客户端 kubectl,kubectl 的安装步骤如下所示 操作步骤: kubectl 的安装可以参见 kubernetes 官方安装和设置 kubectl文档。 注意: 本操作指南给出的操作步骤都是基于 linux 操作环境的。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部