专栏名称: 机器之心
专业的人工智能媒体和产业服务平台
目录
相关文章推荐
爱可可-爱生活  ·  【[45星]NVIDIA ... ·  昨天  
爱可可-爱生活  ·  【如何通过编写大约 400 行 Go ... ·  2 天前  
机器之心  ·  字节跳动 2025 奖学金计划启动!每人 ... ·  2 天前  
51好读  ›  专栏  ›  机器之心

教程 | 如何使用Kubernetes GPU集群自动训练和加速深度学习?

机器之心  · 公众号  · AI  · 2017-06-14 12:24

正文

请到「今天看啥」查看全文


  • Kubernetes by example (http://kubernetesbyexample.com/)

  • Kubernetes basics - interactive tutorial (https://kubernetes.io/docs/tutorials/kubernetes-basics/)


  • 集群结构的概览


    主要思想:即用一个小 CPU 作为主控节点(master node)来控制一个集群的 GPU-工作节点(GPU-worker nodes)。



    初始化节点


    在我们使用集群之前,先对集群进行初始化是很重要的。因此每个节点必须被手动初始化,然后才能加入到集群当中。


    我的配置


    此配置对上述案例十分适用——对其他实例或操作系统来说,往往需要一些额外的调试。


    Master 主控节点


    • 有根权限的 Ubuntu 16.04

    • 我使用的是谷歌计算引擎 VM-Instance

    • SSH 访问

    • ufw 停用

    • 启用端口(udp 和 tcp)

    • 6443, 443, 8080

    • 30000-32767(仅在你的应用需要它们的情况下)

    • 从集群外部访问服务器


    Worker 工作站


    • 有根权限的 Ubuntu16.04

    • 我使用的是谷歌计算引擎

    • SSH 访问

    • ufw 停用

    • 启用端口(udp 和 tcp)

    • 6443, 443


    关于安全性:在使用过程中你应该关闭一些防火墙——为了更加简单,应该禁用 ufw。为实际的生产工作负载设置 Kubernetes 当然应该包括启用一些防火墙,像 ufw, iptables 或你的云端服务器的防火墙。也要注意在云端设置一个工作集群可能更加复杂。你的云端供应商通常会提供一个他们自己的防火墙,这是和主机防火墙相分离的。你可能必须要停用 ufw,并且也要启用云端供应商的防火墙,使本教程的步骤可以正常进行下去。


    设置向导


    这些说明涵盖了我们在 Ubuntu 16.04 系统上的操作经验,可能有些地方并不适合于转移到其他操作平台。


    如下所示,我们构建了两个脚本,它们能完全启动主控节点(master node)和工作节点(worker node)。如果你希望快速运行,那么就只需要使用以下两个脚本就行。否则的话,我建议跟着设置向导一步步阅读。


    快速通道—设置脚本


    下面我们将利用脚本进行快速设定。首先需要复制对应的脚本到主节点和工作节点的机器上:


    • 主控节点:https://github.com/Langhalsdino/Kubernetes-GPU-Guide/blob/master/scripts/init-master.sh

    • 工作结点:https://github.com/Langhalsdino/Kubernetes-GPU-Guide/blob/master/scripts/init-worker.sh


    主控节点


    执行上面的主控节点初始化脚本,并记下代号。代号通常看起来像:--token f38242.e7f3XXXXXXXXe231e


    chmod +x init-master.sh

    sudo ./init-master.sh


    工作节点


    执行上面的工作节点初始化脚本,并要求输入正确的主控节点代号和 IP,端口通常使用 6443。


    chmod +x init-worker.sh

    sudo ./init-worker.sh :


    详细的安装说明


    主控节点


    1. 添加 Kubernetes 资源库到软件包管理器中:


    sudo bash -c 'apt-get update && apt-get install -y apt-transport-https

    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

    cat < /etc/apt/sources.list.d/kubernetes.list

    deb http://apt.kubernetes.io/ kubernetes-xenial main

    EOF

    apt-get update'


    2. 安装 docker-engine、kubeadm、kubectl 和 kubernetes-cni 库


    sudo apt-get install -y docker-engine

    sudo apt-get install -y kubelet kubeadm kubectl kubernetes-cni

    sudo groupadd docker

    sudo usermod -aG docker $USER

    echo 'You might need to reboot / relogin to make docker work correctly'


    3. 因为我们希望使用 GPU 构建一个计算机集群,所以我们需要 GPU 能在主控节点中进行加速。当然,也许该说明会因为新版本的 Kubernetes 出现而需要更改。


    3.1 将 GPU 支持添加到 Kubeadm 配置中,这个时候集群是没有初始化的。这一步需要在集群每一个节点的机器中完成,即使有一些没有 GPU。


    sudo vim /etc/systemd/system/kubelet.service.d/< >-kubeadm.conf


    因此,添加 flag --feature-gates="Accelerators=true" 到 ExecStart 中,命令行大概如下所示:







    请到「今天看啥」查看全文