美文网首页
OpenPai v1.1.1安装部署手册

OpenPai v1.1.1安装部署手册

作者: Markdown爱好者 | 来源:发表于2020-08-18 19:06 被阅读0次

    OpenPAI 1.1.1安装部署教程

    安装指南

    OpenPAI的体系结构已在v1.0.0中更新和优化。v1.0.0之前,OpenPAI基于Yarn和Kubernetes,数据由HDFS管理。从v1.0.0,OpenPAI已切换到纯基于Kubernetes的体系结构。许多新的功能,如AAD authorizationHivedschedulerKube RuntimeMarketplace,等,也包括在内。如果仍然要安装旧的基于Yarn的OpenPAI,请继续使用v0.14.0

    要安装OpenPAI> = v1.0.0,请首先检查 安装要求。然后,如果您没有安装旧版本的OpenPAI,请按照从头开始安装。否则,请首先遵循“ 清理先前的部署”,然后执行“ 从头开始安装”。

    安装要求

    OpenPAI的部署要求您至少拥有3台单独的节点:一台DevBox节点,一台master节点和一台worker 节点。

    在安装,维护和卸载期间,DevBox机器通过SSH控制master节点和worker节点。DevBox节点有且只有一台。master节点用于运行核心Kubernetes组件和核心OpenPAI服务。在大多数情况下,一台master节点就足够了。如果您希望群集具有高可用性,则可以设置多个master节点。我们建议您将仅CPU的节点用于DevBox节点和master节点。对于worker节点,所有机器均应具有GPU,并已正确安装GPU驱动程序。GPU驱动采用NVIDIA 418

    安装方式1:gpu驱动安装采用下载驱动包方式安装

    安装方式2:

    sudo add-apt-repository ppa:graphics-drivers/ppa 
    
    sudo apt update 
    
    sudo apt install nvidia-418 
    
    sudo reboot
    

    详细信息,请在安装前检查以下要求:

    • DevBox节点

      • Kubespray要求

        • Ubuntu 16.04(18.04应该可以运行,但尚未经过全面测试。)

        • 节点可以与所有其他节点(master节点和worker节点)通信

        • SSH服务已启用并共享相同的用户名/密码并具有sudo特权

        • 到所有其他节点(主节点和工作节点)的无密码SSH,配置免密,方法如下:

          ssh-keygen -t rsa
          
          ssh-copy-id <username>@<target_host_ip>
          
        • 与包含主节点和工作节点的群集分开

      • OpenPAI要求

        • Docker已安装,用于启动DevBox容器以进行服务部署。

          # step 1: 安装必要的一些系统工具
          sudo apt-get update
          sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
          # step 2: 安装GPG证书
          curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
          # Step 3: 写入软件源信息
          sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
          # Step 4: 更新并安装Docker-CE
          sudo apt-get -y update
          sudo apt-get -y install docker-ce
          
    • master节点:

      • Kubespray要求

        • 为每个节点分配一个静态IP地址,并确保节点可以相互通信。

        • 节点可以访问Internet,特别是需要访问docker hub注册表服务或其镜像的访问权限。部署过程将提取Docker映像。

        • SSH服务已启用,并且共享相同的用户名/密码并具有sudo特权。

        • 启用了NTP服务,并且etcd依赖于此。

          sudo apt-get install -y openssh-server ntp
          
      • OpenPAI要求

        • Ubuntu 16.04(18.04应该可以运行,但尚未经过全面测试。)
        • OpenPAI为运行服务保留内存和CPU,因此请确保有足够的资源来运行机器学习作业。检查硬件要求以了解详细信息。
        • OpenPAI的专用节点。OpenPAI管理节点的所有CPU,内存和GPU资源。如果还有其他工作负载,则可能由于资源不足而导致未知问题。
        • Docker已安装。
    • worker节点:

      • Kubespray要求

        • 为每个节点分配一个静态IP地址,并确保节点可以相互通信。

        • 节点可以访问Internet,特别是需要访问docker hub注册表服务或其镜像的访问权限。部署过程将提取Docker映像。

        • SSH服务已启用,并且共享相同的用户名/密码并具有sudo特权。

          sudo apt-get install -y openssh-server ntp
          
    • OpenPAI要求

      • Ubuntu 16.04(18.04应该可以运行,但尚未经过全面测试。)
      • 已安装GPU和GPU驱动程序。 您可以使用命令进行检查。如果未成功安装驱动程序,请参考FAQ中的安装指南。如果您想知道应该使用哪个版本的GPU驱动程序,请同时参阅常见问题解答。
      • Docker已安装。 您可以使用命令docker --version进行检查。如果未成功安装,请参阅Docker的安装指南。
      • 已安装nvidia-container-runtime或其他设备运行时。并配置为docker的默认运行时。请在docker -config-file中对其进行配置,因为kubespray将覆盖systemd的环境。
        • 您可以使用命令sudo docker run nvidia/cuda:10.0-base nvidia-smi进行检查。如果设置正确,此命令应输出可用GPU的信息。
        • 如果未成功设置,请参考安装指南。
      • OpenPAI为运行服务保留内存和CPU,因此请确保有足够的资源来运行机器学习作业。检查硬件要求以了解详细信息。
      • OpenPAI的专用节点。OpenPAI管理节点的所有CPU,内存和GPU资源。如果还有其他工作负载,则可能由于资源不足而导致未知问题。

      nvidia-container-runtime安装方法:

      sudo apt-get install nvidia-container-runtime
      

      docker-config-file配置方法:

      {
      "default-runtime": "nvidia",
      "runtimes": {
         "nvidia": {
             "path": "/usr/bin/nvidia-container-runtime",
             "runtimeArgs": []
         }
      }
      }
      

    使用仅CPU的工作程序的提示

    当前,OpenPAI对只有CPU的机器支持是有限的。如果您既有GPUworker节点又有CPU节点,请首先仅使用GPU节点设置PAI。成功安装PAI后,您可以将CPU节点附加到该PAI上并设置仅CPU的虚拟集群。有关详细信息,请参阅如何使用CPU节点。如果您只有CPU节点,那么还没有官方的安装支持。

    与网络相关的问题的提示

    如果您遇到网络问题,例如机器无法下载某些文件或无法连接到某些Docker注册表,请结合提示的错误日志和kubespray作为关键字,然后搜索解决方案。您还可以参考安装疑难解答。

    从头开始安装

    除了上述要求外,此安装脚本还要求所有工作机必须是同型GPU节点,并且它们具有相同的硬件,例如CPU类型和数量,GPU类型和数量,内存大小。如果您有不同类型的工作程序,请在安装过程中首先仅包括一种类型的工作程序,然后按照如何添加和删除节点添加不同类型的工作程序。现在,请确定您的开发机,主机和工作机。

    创建配置

    确定所有机器之后,请在dev box机器上创建一个master.csv,一个worker.csv和一个config文件。这些文件分别代表主节点列表,工作节点列表和自定义配置。以下是这3个文件的格式和示例。

    master.csv 格式

    不要在该文件中插入空白行或使用空格,也不要在主机名中使用大写字母。

    hostname(Node Name in k8s),host-ip
    
    master.csv
    openpai-master-01,10.1.0.1
    
    worker.csv 格式

    不要在该文件中插入空白行或使用空格,也不要在主机名中使用大写字母。

    hostname(Node Name in k8s),host-ip
    
    worker.csv
    openpai-001,10.0.0.1
    openpai-002,10.0.0.2
    openpai-003,10.0.0.3
    openpai-004,10.0.0.4
    
    config
    user: <your-ssh-username>
    password: <your-ssh-password>
    branch_name: pai-1.1.y
    docker_image_tag: v1.1.1
    
    # Optional
    
    #############################################
    # Ansible-playbooks' inventory hosts' vars. #
    #############################################
    # ssh_key_file_path: /path/to/you/key/file
    
    #####################################
    # OpenPAI's service image registry. #
    #####################################
    # docker_registry_domain: docker.io
    # docker_registry_namespace: openpai
    # docker_registry_username: exampleuser
    # docker_registry_password: examplepasswd
    
    ###########################################################################################
    #                         Pre-check setting                                               #
    # By default, we assume your gpu environment is nvidia. So your runtime should be nvidia. #
    # If you are using AMD or other environment, you should modify it.                        #
    ###########################################################################################
    # worker_default_docker_runtime: nvidia
    # docker_check: true
    
    # resource_check: true
    
    # gpu_type: nvidia
    
    ########################################################################################
    # Advanced docker configuration. If you are not familiar with them, don't change them. #
    ########################################################################################
    # docker_data_root: /mnt/docker
    # docker_config_file_path: /etc/docker/daemon.json
    # docker_iptables_enabled: false
    
    ## An obvious use case is allowing insecure-registry access to self hosted registries.
    ## Can be ipaddress and domain_name.
    ## example define 172.19.16.11 or mirror.registry.io
    # openpai_docker_insecure_registries:
    #   - mirror.registry.io
    #   - 172.19.16.11
    
    ## Add other registry,example China registry mirror.
    # openpai_docker_registry_mirrors:
    #   - https://registry.docker-cn.com
    #   - https://mirror.aliyuncs.com
    
    #######################################################################
    #                       kubespray setting                             #
    #######################################################################
    
    # If you couldn't access to gcr.io or docker.io, please configure it.
    # gcr_image_repo: "gcr.io"
    # kube_image_repo: "gcr.io/google-containers"
    # quay_image_repo: "quay.io"
    # docker_image_repo: "docker.io"
    # kubeadm_download_url: "https://storage.googleapis.com/kubernetes-release/release/{{ kubeadm_version }}/bin/linux/{{ image_arch }}/kubeadm"
    # hyperkube_download_url: "https://storage.googleapis.com/kubernetes-release/release/{{ kube_version }}/bin/linux/{{ image_arch }}/hyperkube"
    
    
    # openpai_kube_network_plugin: calico
    

    branch-name并且docker-image-tag要安装代表OpenPAI版本。该userpassword是从开发箱机的SSH用户名和密码来掌握机器和工人机器。换句话说,您应确保所有主节点和工作节点共享相同的SSH用户名和密码。至于可选配置,如果您确切知道它们是什么,请对其进行自定义。

    对于Azure用户:如果要在Azure中部署OpenPAI,请取消注释openpai_kube_network_plugin: calico上面的配置文件,并将其更改为openpai_kube_network_plugin: weave。这是因为Azure不支持calico。

    开始安装

    在DevBox机器上,使用以下命令克隆OpenPAI存储库:

    git clone https://github.com/microsoft/pai.git
    git checkout pai-1.1.y  # change to a different branch if you want to deploy a different version
    cd pai/contrib/kubespray
    

    该文件夹pai/contrib/kubespray包含用于kubespray和OpenPAI服务的安装脚本。请运行以下脚本以首先部署Kubernetes。您应该/path/to将这些文件修改为自己的绝对路径。不要使用相对路径。这将导致错误。

    /bin/bash quick-start-kubespray.sh -m /path/to/master.csv -w /path/to/worker.csv -c /path/to/config
    

    成功启动Kubernetes后,运行以下脚本以启动OpenPAI服务。您应该/path/to将这些文件修改为自己的绝对路径。不要使用相对路径。这将导致错误。

    /bin/bash quick-start-service.sh -m /path/to/master.csv -w /path/to/worker.csv -c /path/to/config
    

    如果一切顺利,您将收到以下消息:

    Kubernetes cluster config :     ~/pai-deploy/kube/config
    OpenPAI cluster config    :     ~/pai-deploy/cluster-cfg
    OpenPAI cluster ID        :     pai
    Default username          :     admin
    Default password          :     admin-password
    
    You can go to http://<your-master-ip>, then use the default username and password to log in.
    

    如消息所示,您可以使用adminadmin-password登录到Webportal,然后提交作业以验证安装。

    检查要求的提示

    如果有任何错误,请首先仔细检查环境要求。在这里提供了一个需求检查器来帮助您验证:

    /bin/bash requirement.sh -m /path/to/master.csv -w /path/to/worker.csv -c /path/to/config
    

    保留资料夹

    强烈建议您保留该文件夹~/pai-deploy以用于将来的操作,例如升级,维护和卸载。此文件夹中最重要的内容是:

    • Kubernetes集群配置(默认为~/pai-deploy/kube/config):Kubernetes配置文件。它用于kubectl连接到k8s api节点。
    • OpenPAI集群配置(默认为 ~/pai-deploy/cluster-cfg):这是一个包含节点布局和OpenPAI服务配置的文件夹。

    如果可能的话,您可以进行备份,~/pai-deploy以防意外删除。

    除了文件夹之外,您还应该记住您的OpenPAI集群ID,该ID用于指示您的OpenPAI集群。默认值为pai。某些管理操作需要确认此群集ID。

    清理先前的部署

    将数据保存到其他位置

    如果您之前安装过OpenPAI v1.0.0,则要安装OpenPAI> = v1.0.0,应首先清理先前的部署。您无法保留任何有用的数据:所有作业,用户信息,数据集将不可避免且不可逆地丢失。因此,如果您在以前的部署中有任何有用的数据,请确保已将它们保存到其他位置。

    HDFS数据

    在此之前v1.0.0,PAI将为您部署HDFS节点。之后v1.0.0,将不会部署HDFS节点,并且在升级时将删除以前的数据。以下命令可用于传输HDFS数据:

    # check data structure
    hdfs dfs -ls hdfs://<hdfs-namenode-ip>:<hdfs-namenode-port>/
    
    hdfs dfs -copyToLocal hdfs://<hdfs-namenode-ip>:<hdfs-namenode-port>/ <local-folder>
    

    <hdfs-namenode-ip>并且<hdfs-namenode-port>是PAI主站的IP,9000如果您未修改默认设置。请确保您的本地文件夹具有足够的容量来容纳要保存的数据。

    工作和用户的元数据

    作业和用户的元数据也将丢失,包括作业记录,作业日志,用户名,用户密码等。我们没有自动的工具来备份这些数据。如果发现有价值的数据,请手动传输。

    Kubernetes上的其他资源

    如果您在Kubernetes上部署了任何其他资源,请为其进行适当的备份,因为Kubernetes集群也将被破坏。

    删除以前的PAI部署

    要删除以前的部署,请使用以下命令:

    git clone https://github.com/Microsoft/pai.git
    cd pai
    #  checkout to a different branch if you have a different version
    git checkout pai-0.14.y
    
    # delete all pai service and remove all service data
    ./paictl.py service delete
    
    # delete k8s cluster
    ./paictl.py cluster k8s-clean -f -p <path-to-your-old-config>
    

    如果找不到旧的配置,则以下命令可以帮助您检索它:

    ./paictl.py config pull -o <path-to-your-old-config>
    

    您还应该通过使用root用户在每个GPU节点上执行以下命令来删除OpenPAI安装的GPU驱动程序:

    #!/bin/bash
    
    lsmod | grep -qE "^nvidia" &&
    {
        DEP_MODS=`lsmod | tr -s " " | grep -E "^nvidia" | cut -f 4 -d " "`
        for mod in ${DEP_MODS//,/ }
        do
            rmmod $mod ||
            {
                echo "The driver $mod is still in use, can't unload it."
                exit 1
            }
        done
        rmmod nvidia ||
        {
            echo "The driver nvidia is still in use, can't unload it."
            exit 1
        }
    }
    
    rm -rf /var/drivers
    reboot
    

    删除后,您现在可以从头开始安装来安装OpenPAI 。

    相关文章

      网友评论

          本文标题:OpenPai v1.1.1安装部署手册

          本文链接:https://www.haomeiwen.com/subject/pdikjktx.html