在Kubernetes集群中使用GPU用于机器学习

随着机器学习应用的普及,改善其开发和部署平台对于提高机器学习应用的应用开发、测试以及上线效率提升非常关键,目前在看很多家AI企业正在研发其自身的深度学习PaaS平台,Kubernetes作为容器编排的入口,毫无疑问是最应该被支持的。值得高兴的是,Nvidia官方以及在Github上说明如何将自家Nvidia-docker2工具和Kubernetes结合的方案,本文结合前一篇博客,做了一个简单的用例,使得我们在Kubernetes集群中可以使用GPU的运算能力,顺便为我司灵雀云做个小广告,我们PaaS平台已经在客户的生产环境部署了深度学习的应用。

前提

  • Node节点安装了Nvidia 的Driver
  • Node节点安装了nvidia-docker2工具
  • 修改/etc/docker/daemon.json,修改默认的容器运行时
  • NVIDIA drivers ~= 361.93
  • Kubernetes version = 1.11
    具体请参考我的上一篇内容,如何低成本的在Docker中运行TensorFlow

集群的修改

部署了GPU的所有Nodes,/etc/systemd/system/kubelet.service.d/10-kubeadm.conf增加如下的修改:

Environment="KUBELET_EXTRA_ARGS=--feature-gates=DevicePlugins=true"

然后重启kubelete:

sudo systemctl daemon-reload
sudo systemctl restart kubelet

接着需要创建一个Daemonset

kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v1.11/nvidia-device-plugin.yml

That’s All!

测试下

好了,我们现在在master节点中,部署下测试Pod,yaml文件如下:
vi hello.yaml

piVersion: apps/v1
kind: Deployment
metadata:
  name: hello
spec:
  selector:
    matchLabels:
      app: hello
      tier: backend
      track: stable
  replicas: 1
  template:
    metadata:
      labels:
        app: hello
        tier: backend
        track: stable
    spec:
      containers:
        - name: hello
          image: "tensorflow/tensorflow:latest-gpu"
          ports:
            - name: tcp
              containerPort: 8888
---
kind: Service
apiVersion: v1
metadata:
  name: hello
spec:
  type: NodePort
  selector:
    app: hello
    tier: backend
  ports:
  - protocol: TCP
    port: 80
    nodePort: 30011
    targetPort: 8888
kubectl create -f hello.yaml

服务nodeport部署,你可以尝试下咯~
这里写图片描述

下一篇会尝试如何将一个简单的训练模型,打成镜像,然后丢在集群里去训练。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值