前言
本人正在学习人工智能相关的内容。由于是新手,很多东西都是一知半解,想要进行实战遇到了不少的问题,比如环境的搭建,算力的来源。总之,这些东西对于新手来说还是有着一定的门槛。
好在,在朋友的介绍下,知道了启智这样一个平台,它可以提供一整套完整的人工智能学习环境,还提供免费的算力。免去了自己折腾环境等繁琐的步骤,可以将更多的精力放在学习人工智能上!
在此感谢一下启智!也希望大家能够知道这个平台。
平台介绍
启智AI协作平台,简称 启智社区 ,是一个开源在线Web应用,旨在为人工智能算法、模型开发提供在线协同工作环境,它提供了代码托管、数据集管理与共享、免费云端算力资源支持(GPU/NPU)、共享镜像等功能。启智社区是基于Gitea发展而来的,我们对其进行了Fork并基于此扩展了人工智能开发中需要的功能,如数据集管理和模型训练等。对于和代码托管相关的功能,您可以参考Gitea的文档。
平台提供的算力
平台可以提供训练任务的算力资源如下:
集群 | 卡类型 | 算力卡 |
启智集群 | GPU | A100 |
V100 | ||
NPU | Ascend 910 | |
智算集群 | GPU | A100 |
V100 | ||
NPU | Ascend 910 |
目前其中启智集群A100资源排队时间较久,若使用GPU训练,可以优先选择V100或智算集群的资源
以上数据来源于平台文档。
准备工作
注册启智
首先我们得注册,这样才可以使用平台提供的免费算力
注册请点击:启智社区注册地址
注意:注册成功后,必须激活!通过邮件点击了激活链接成功才算激活成功。
安装Git工具
启智的代码协作平台是fork自Gitea的,因此启智平台的代码管理工具使用git就可以。
因本文章的目的是为了记录并分享使用启智算力进行模型训练的,因此安装GIT以及GIT操作相关的,本文不再赘述,不过可以参考下面大佬的安装使用教程。
参考教程:https://blog.csdn.net/qq_41521682/article/details/122764915
编写代码
创建代码仓库
首先,我们需要将自己的模型训练代码托管到启智。
登录协作平台后,点击右上方的“+”,选择创建项目

输入项目名称等信息,勾选最后一个复选框。然后就可以创建项目了。

创建成功后,可以根据具体情况将代码托管到启智。可以创建一个新的项目,也可以将已有的本地仓库推送到启智。

编写训练代码
我们可以根据自己的实际情况编写代码,不过要注意几个点。因为这个是启智平台提供的算力,他应该是使用了容器化技术,对目录有一点要求,如果我们要使用的自己数据集的话,需要遵循以下的规则:
训练脚本存储在 /code 中,数据集存储在 /dataset 中,预训练模型存放在运行参数 ckpt_url 中,训练输出请存储在 /model 中以供后续下载。
解释一下:我们可以认为启智给我们提供了一台有A100或V100的Linux服务器,那么它的路径就可以按照如下理解:
训练脚本存储在 /code 中,即根目录的code文件夹,这里相当于就是将仓库里面的代码路径结构,放到了/code下
数据集存储在 /dataset 中,即根目录的dataset文件夹,代码上要从这个路径获取数据集,示例如下:
train_loader,valid_loader,test_loader = read_dataset(batch_size=batch_size,pic_path='/dataset/')
训练输出请存储在 /model 中,即根目录的model文件夹,最后训练成功的模型需要下载的话,是默认从这个目录打包下载的。使用其他路径保存是会提示没有权限的。保存示例如下:
torch.save(model.state_dict(), '/model/resnet18_cifar10.pt')
本代码使用CIFAR-10数据集,使用Pytorch训练resnet模型,我的仓库地址是:https://openi.pcl.ac.cn/xiahb/torch_resnet 代码经过本人测试是可以成功训练的。
在本文中,我用的是其他大佬已有的代码,稍作改动。附上原作者代码地址。
使用启智算力训练
准备数据集
虽然CIFAR-10数据集可以在代码中自动下载,但是由于国内某些原因,下载速度会比较慢。那么针对这个问题,启智社区提供很多数据集可以使用,社区也欢迎大家提交数据集需求,方便自己的同时也帮助他人。比如此次使用的CIFAR-10,在启智社区中就有提供。
由于一些我不知道的原因,目前平台的数据集在使用时显示解压失败,因此我自己下载了CIFAR-10数据集,并上传到了项目中:https://openi.pcl.ac.cn/xiahb/torch_resnet/datasets

数据集目录结构

创建训练任务
在代码仓库界面,点击“云脑”标签页。

这里有四种类型的任务可以创建,本次我们创建训练任务。

创建训练任务我们主要关注参数设置,包括使用的代码分支、使用的容器镜像、训练脚本名、使用的数据集、以及资源规格等信息。

我选择的镜像是公开镜像的第二个,当然也可以上传自己的镜像。

至此,训练任务创建完成。接下来等待训练结果就行了。
查看训练日志
创建任务之后,我们可以在任务列表中,点击任务名称进入任务详细信息,查看任务运行状态和日志输出以及下载训练结果。

结果下载
训练成功完成后,任务状态应为”SUCCEEDED“,我们可以在任务详细信息的结果下载标签页中下载输出结果和日志信息。因为训练过程可能会失败,因此建议在每进行一轮训练后,都进行一个保存备份,这样的话即使由于某些原因失败了,那也还是有个输出结果的。

至此,我们就完成了resnet18的训练了。
文章到此结束,自己记录一下,希望对大家有所帮助!