目前来看,AI的浪潮不只体现在那些尖端的比较前沿的工业环境的应用。虽然类似于GPT这样的Large Model非常的炫酷,各个互联网大企业所使用的推荐模型、NLP模型、CV模型等应用非常的广泛,但是对于大部分高校的AI研究实验室、甚至某些个人AI开发者、个人AI爱好者来说,这些AI模型所需求的算力是可望而不可及的。面对这些可以说是目前来说最广泛的AI群体来讲,一般则是在拥有的几台带有NVIDIA GPU的公用服务器或者个人服务器上进行AI的训练,甚至仅仅是在自己拥有NVIDIA GPU(Notebook)的Laptop进行训练。
以上的这种情况通常会遇到以下两个痛点:1. 要想在服务器上运行上GPU加速的AI训练,首先需要找到适合你拥有的GPU版本的NVIDIA驱动、CUDA版本、CUDNN版本,然后安装需要版本的深度学习训练框架库的GPU版本,这是一个比较繁琐且容易出错的过程,主要操作集中在Linux进行,对于一部分AI从业者来说并没有很熟练的Liunx使用经验,而且大多情况下就是网络搜索教程按部就班的搬运而已,稍有出错的情况就得全盘重来;2. 个人使用的Laptop或者GPU服务器还好,因为只是属于单个人的开发环境,但是说如果是队对于共享的多人使用的服务器来说,就老是会出现多个人的操作下配置的环境冲突、对版本需求不一致、对GPU的抢占导致可能会会出现的显存爆表或加速效果降低明显的情况,共享总是会出现冲突,体系结构的很多思想或者问题如隔离、并发等均是基于此类问题出现的。
那就是针对以上的两个痛点我们希望从系统层面工程方向去解决现有的一些问题,如果可以减少AI研究者或者开发者诸如环境配置、冲突处理上面的一些时间,使得使用GPU服务器的体验提升并有了一定的门槛降低,那么对整体工作的效率提升是很有一定的帮助的。
环境的开箱即用、很好的系统级别的隔离,这两个问题目前来看最优的解法无非就是容器了,因为Docker是容器领域最出名也是很成熟的容器方案,且目前Docker对个人版和学术是免费使用的,所以这里就用Docker来作为AI容器化的工具。如果有对Containerd的需求,后续可能会出Containerd相关的教程。
现在云原生的概念很火,利用Kubernetes进行AI训练的方式也被很多企业所使用,但是这里并不建议个人开发者或者AI学术实验室采用Kubernetes的方式,主要原因是Kubernetes的定位就是大规模的容器编排系统,其所拥有的很多特性对个人开发者并没有太大的帮助,而且其软件体量还很重,对服务器的配置要求还很高。同时Kubernetes的概念过于庞杂,其学习成本也很高,虽然笔者是做Kubernetes开发的,但是这里不建议追求前沿或者潮流直接上Kubernetes,价值并不大。
这里主要分概述、基础知识介绍、环境配置、具体使用四个部分来叙述,本文为概述。