在阿里云上轻松部署Kubernetes GPU集群,遇见TensorFlow

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Kubernetes在版本1.6后正式加入了Nvidia GPU的调度功能,支持在Kubernetes上运行运行和管理基于GPU的应用。而在2017年9月12日,阿里云发布了新的异构计算类型GN5,基于P100 nvidia GPU, 提供灵活强悍的异构计算模型,从基础设施到部署环境全面升级,可有效提升矩阵运算、视频识别、机器学习、搜索排序等处理计算效率。

Kubernetes在版本1.6后正式加入了Nvidia GPU的调度功能,支持在Kubernetes上运行运行和管理基于GPU的应用。而在2017年9月12日,阿里云发布了新的异构计算类型GN5,基于P100 nvidia GPU, 提供灵活强悍的异构计算模型,从基础设施到部署环境全面升级,可有效提升矩阵运算、视频识别、机器学习、搜索排序等处理计算效率。当Kubernetes和GPU在阿里云上相遇,会有什么样美好的事情发生呢?

在阿里云的GN5上部署一套支持GPU的Kubernetes集群是非常简单的,利用ROS模板一键部署,将阿里云强大的计算能力便捷的输送到您的手中。不出10分钟,您就可以开始在阿里云的Kubernetes集群上开始您的Kubernetes+GPU+TensorFlow的深度学习之旅了。

前提准备

  • 您需要开通容器服务、资源编排(ROS)服务和访问控制(RAM)服务。
    登录 容器服务管理控制台ROS 管理控制台RAM 管理控制台 开通相应的服务。
  • 所创建的资源均为按量付费,根据阿里云的计费要求,请确保您的现金账户余额不少于 100 元。
  • 目前,按量付费的异构计算gn5需要申请工单开通。 请登录阿里云账号后 ,按照如下内容提交 ECS 工单
我需要申请按量付费的GPU计算型gn5,请帮忙开通,谢谢。

当审批通过后,您就可以在 ECS控制台按量付费 的计费方式下查看GPU节点是否可用。

使用限制

目前仅支持华北2(北京),华东2(上海)和华南1(深圳)创建Kubernetes的GPU集群。

集群部署

在本文中, 我们提供了部署单Master节点,并可以配置worker的节点数,同时可以按需扩容和缩容,创建和销毁集群也是非常简单的。

  1. 选择ROS创建入口
  • 单击此处创建一个位于华北2的GPU Kubernetes集群
  • 单击此处创建一个位于华东2的GPU Kubernetes集群
  • 单击此处创建一个位于华南1的GPU Kubernetes集群

2. 填写参数并单击 创建

  • 栈名:所部署的 Kubernetes 集群属于一个 ROS 的栈,栈名称在同一个地域内不能重复。
  • 创建超时:整个部署过程的超时时间,默认为 60 分钟,无需修改。
  • 失败回滚:选择 失败回滚 时,如果部署过程中发生不可自动修复性错误,将删除所有已创建资源;反之,已创建资源将被保留,以便进行问题排查。
  • Master节点ECS实例规格:指定 Master 节点所运行的 ECS 实例的规格,默认为 ecs.n4.large。
  • Worker节点ECS实例规格:指定 Worker 节点所运行的包含GPU的 ECS 实例规格,默认为 ecs.gn5-c4g1.xlarge。具体配置可以查看ECS规格文档
  • 部署GPU节点的可用区:指定 GPU节点可以部署的可用区,请根据具体地域选择。
  • ECS系统镜像:目前指定 centos_7。
  • Worker节点数:指定 Worker 节点数,默认为 2,支持后期扩容。
  • ECS登录密码:所创建的 ECS 实例可通过此密码登录,请务必牢记密码。

3. 单击 创建, 启动部署

这样,部署请求已经成功提交。 可以单击 进入事件列表 实时监控部署过程

4. 点击概览查看,部署完成后的输出结果

通过输出结果中返回的信息,可以对 Kubernetes 集群进行管理:

  • APIServer_Internet:Kubernetes 的 API server 对公网提供服务的地址和端口,可以通过此服务在用户终端使用 kubectl 等工具管理集群。
  • AdminGateway:可以直接通过 SSH 登录到 Master 节点,以便对集群进行日常维护。
  • APIServer_Intranet:Kubernetes 的 API server 对集群内部提供服务的地址和端口。

5. 通过通过 kubectl 连接 Kubernetes 集群 , 并且通过命令查看GPU节点

kubectl describe  node {node-name}
Name:            cn-beijing.i-{name}
Role:
...
Addresses:
  InternalIP:    192.168.2.74
Capacity:
 alpha.kubernetes.io/nvidia-gpu:    1
 cpu:                    4
 memory:                30717616Ki
 pods:                    110
Allocatable:
 alpha.kubernetes.io/nvidia-gpu:    1
 cpu:                    4
 memory:                30615216Ki
 pods:                    110
...

可以看到总共的和可分配的GPU数量都为1。

部署GPU应用

最后我们部署一个基于GPU的TensorFlow Jupyter应用来做一下简单的测试,以下为我们的Jupyter的部署配置文件jupyter.yml

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: jupyter
spec:
  replicas: 1
  template:
    metadata:
      labels:
        k8s-app: jupyter
    spec:
      containers:
      - name: jupyter
        image: registry-vpc.cn-beijing.aliyuncs.com/tensorflow-samples/jupyter:1.1.0-devel-gpu
        imagePullPolicy: IfNotPresent
        env:
          - name: PASSWORD
            value: mypassw0rd
        resources:
          limits:
            alpha.kubernetes.io/nvidia-gpu: 1
        volumeMounts:
        - mountPath: /usr/local/nvidia
          name: nvidia
      volumes:
        - hostPath:
            path: /var/lib/nvidia-docker/volumes/nvidia_driver/375.39
          name: nvidia

---
apiVersion: v1
kind: Service
metadata:
  name: jupyter-svc
spec:
  ports:
  - port: 80
    targetPort: 8888
    name: jupyter
  selector:
    k8s-app: jupyter
  type: LoadBalancer

Deployment配置:

  • alpha.kubernetes.io/nvidia-gpu 指定调用nvidia gpu的数量
  • type=LoadBalancer 指定使用阿里云的负载均衡访问内部服务和负载均衡
  • 为了能让GPU容器运行起来,需要将Nvidia驱动和CUDA库文件指定到容器中。这里需要使用hostPath,在阿里云上您只需要将hostPath指定到/var/lib/nvidia-docker/volumes/nvidia_driver/375.39即可,并不需要指定多个bin和lib目录。
  • 环境变量 PASSWORD 指定了访问Jupyter服务的密码,您可以按照您的需要修改

1. 按照文档介绍的方式连接Kubernetes Web UI, 点击 CREATE 创建应用

2. 单击 Upload a YAML or JSON file。选择刚才创建的 jupyter.yml 文件

3. 待部署成功后, 在 Kubernetes Web UI 上定位到 default 命名空间,选择 Services。

可以看到刚刚创建的 jupyter-svc 的 jupyter 服务的外部负载均衡地址(External endpoints)

4. 点击外部负载均衡的地址,您就可以直接访问到Jupyter服务, 通过web Terminal内执行nvidia-smi命令查看容器内GPU设备状况。我们可以看到当前的容器里已经分配了一块Tesla P100 的GPU卡。

这样,您就可以正式开始自己的深度学习之旅

总结

利用阿里云容器服务的Kubernetes+GPU部署方案,您无需操心复杂Nvidia驱动和Kubernetes集群配置,一键部署,不出十分钟就可以轻松获得阿里云强大的异构计算能力和Kubernetes的GPU应用部署调度能力。这样您就可以专心的构建和运行自己的深度学习应用了。欢迎您尝试和体验。

后续我们会提供通过阿里云容器服务直接和部署Kubernetes+GPU的能力,敬请期待哦!

了解更多阿里云容器服务内容, 请访问https://www.aliyun.com/product/containerservice

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
5天前
|
Kubernetes 微服务 容器
Aspire项目发布到远程k8s集群
Aspire项目发布到远程k8s集群
32 2
Aspire项目发布到远程k8s集群
|
4天前
|
异构计算 弹性计算 并行计算
|
6天前
|
运维 Kubernetes 调度
【kubernetes】关于k8s集群的污点、容忍、驱逐以及k8s集群故障排查思路
【kubernetes】关于k8s集群的污点、容忍、驱逐以及k8s集群故障排查思路
|
6天前
|
Kubernetes 微服务 容器
Aspire项目发布到win11本地k8s集群
Aspire项目发布到win11本地k8s集群
14 0
Aspire项目发布到win11本地k8s集群
|
7天前
|
运维 Prometheus 监控
Kubernetes 集群的监控与维护策略
【5月更文挑战第30天】 在微服务架构日益普及的背景下,容器编排工具如Kubernetes成为确保服务高效运行的关键。本文聚焦于Kubernetes集群的监控和维护,首先探讨了监控系统的重要性及其对集群健康的影响,随后详细介绍了一套综合监控策略,包括节点性能监控、应用服务质量跟踪以及日志管理等方面。此外,文章还提出了一系列实用的集群维护技巧和最佳实践,旨在帮助运维人员预防故障发生,快速定位问题,并确保集群长期稳定运行。
|
7天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理实践深入理解PHP的命名空间与自动加载机制
【5月更文挑战第30天】 在容器化和微服务架构日益普及的背景下,Kubernetes 已成为众多企业的首选容器编排工具。然而,随之而来的挑战是集群的监控与日志管理。本文将深入探讨 Kubernetes 集群监控的最佳实践,包括节点资源使用情况、Pods 健康状态以及网络流量分析等关键指标的监控方法。同时,我们也将讨论日志聚合、存储和查询策略,以确保快速定位问题并优化系统性能。文中将介绍常用的开源工具如 Prometheus 和 Fluentd,并分享如何结合这些工具构建高效、可靠的监控和日志管理系统。
|
7天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与维护最佳实践
【5月更文挑战第30天】 在现代云计算环境中,容器编排工具如Kubernetes已成为部署和管理微服务的关键。随着其日益广泛的应用,对集群进行有效的监控和维护显得尤为重要。本文将深入探讨Kubernetes集群监控的策略,并分享维护的最佳实践,以确保系统的稳定性和性能优化。我们将从监控工具的选择、关键指标的跟踪到故障排除流程等方面进行详细阐述,并提供实用的操作建议。
|
3天前
|
机器学习/深度学习 算法 TensorFlow
【图像识别】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别
谷物识别系统,本系统使用Python作为主要编程语言,通过TensorFlow搭建ResNet50卷积神经算法网络模型,通过对11种谷物图片数据集('大米', '小米', '燕麦', '玉米渣', '红豆', '绿豆', '花生仁', '荞麦', '黄豆', '黑米', '黑豆')进行训练,得到一个进度较高的H5格式的模型文件。然后使用Django框架搭建了一个Web网页端可视化操作界面。实现用户上传一张图片识别其名称。
22 0
【图像识别】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别
|
7天前
|
机器学习/深度学习 人工智能 算法
中草药识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
中草药识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
41 0
|
17天前
|
机器学习/深度学习 人工智能 算法
食物识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
食物识别系统采用TensorFlow的ResNet50模型,训练了包含11类食物的数据集,生成高精度H5模型。系统整合Django框架,提供网页平台,用户可上传图片进行食物识别。效果图片展示成功识别各类食物。[查看演示视频、代码及安装指南](https://www.yuque.com/ziwu/yygu3z/yhd6a7vai4o9iuys?singleDoc#)。项目利用深度学习的卷积神经网络(CNN),其局部感受野和权重共享机制适于图像识别,广泛应用于医疗图像分析等领域。示例代码展示了一个使用TensorFlow训练的简单CNN模型,用于MNIST手写数字识别。
45 3

相关产品

  • 容器服务Kubernetes版