作者:邓强 黄丽 刘琪 黄永健 广东轩辕网络科技股份有限公司
在算力就是生产力的时代,随着开源网络模型的日益普及,大家对AI算力的诉求类型也越来越广泛和细化。例如,在某些算力要求不高的场景下,AI模型在训练或推理时并不需要占用整张AI计算卡,而是希望能够以更低的资源配置满足要求,比如1/4切片;再或者,在教学场景下,一台AI服务器(可由单张或多张计算卡组成)希望可共享给整个班级使用。
使用虚拟化技术可以有效降低算力的使用成本,并且极大地提升算力资源的利用率,降低设备运营成本。
「轩辕DataLab人工智能开发平台」(以下简称“DataLab平台”)是国内率先基于科研第四范式理论,由轩辕网络倾力打造的科研数据AI分析引擎。平台集鲲鹏+昇腾算力、多领域科研样本数据、算法模型研发以及管理工具于一身,能有效支撑科研文献共引分析、知识抽取、关联规律、智能预测、决策推理、科研图表输出和专利网络分析等工作,让科学家、研究员和开发者从纷繁复杂的数据采集和管理中解放出来,聚焦科学研究与发现,借助深度学习和知识图谱等AI分析技术,加快科研产出。
首先准备一个Jupyter镜像,通过Kubernetes创建Jupyter容器,并把NPU挂载到容器中。
例如,上图中容器挂载了一颗昇腾910B的NPU,其各项参数为:
Power(功率):67.7
AICore占用率:0%
Temp(温度): 36 ºC
Memory-Usage(内存占用率):2215MB/15170MB
HBM(占用率):1MB/3268MB
(2) 进行昇思MindSpore云图搜模型训练
l 昇思MindSpore基础镜像:基于centos7.6,ubuntu18.04制作,内部集成训练通用的第三方库(系统包、pip)、MindSpore框架和NNAE训练引擎。根据实际需要,基于该基础镜像安装训练业务程序特定依赖,即可运行相应训练业务程序。
l 数据挂载以及解压:既然使用NPU进行训练,固然要将训练数据上传到容器挂载的目录下,并对要进行训练的数据解压。
l 数据处理:对分类模型,其数据格式是一张图片对应一个标签。我们可以使用一个类将硬盘数据转换为MindSpore模型,也可以使用列表、迭代器,其比较重要的是 __len__ 以及 __getitem__ 这两个方法,作用是计算数据个数以及使用索引的方式获取数据
l 模型训练:MindSpore封装了高阶的训练接口,训练时只需要定义好训练网络(net)、损失函数(loss)、优化器(optim)、训练轮次(args.epochs)、训练数据(t_dt)、回调列表(callback_list)即可。通过训练日志得出每一轮对数据训练大概需要3 m左右时间,可以见得NPU在运行一些图像相关的模型算法速度上也是非常快速的。
l 验证模型:我们使用生成的模型进行单个图片数据的分类预测,具体步骤为被预测的图片会随机生成,每次运行结果可能会不同,通过代码分类预测并得出如下图所示的运行结果。