run x,runx2是什么

  run x,runx2是什么

  Runx教程介绍Runx是英伟达的深度学习实验管理工具开源,2020年3月开放。这是一个非常新的开源库。其功能是帮助深度学习研究人员自动执行一些常见的任务,如超参数扫描、输出日志记录、运行唯一目录创建、实验总结等。这是因为深度学习一个实验需要几个小时、几天甚至几个月的时间,如果不及时保存和记录会非常低效。

  安装pip快速安装pip安装runx源码安装git clone https://github.com/NVIDIA/runxcd runx Python setup . py安装-用户模块介绍Runx有三个主要模块,分别是Runx、logx和sumx。在设计之初,这些模块都是期望一起使用的,但如果你想只用runx,也是可以的。注意,sumx必须与logx一起使用。

  Runx使用一个简单的YAML文件来配置实验参数。runx将扫描这个文件并逐个执行。

  X logx保存度量、消息、检查点和张量板的记录。

  Sumx总结了训练结果。

  Runx runx主要是实验运行的配置扫描,一个一个执行。例如,带有train的Python脚本需要两个参数:学习率和学习者。您只需要配置以下名为sweep.yml的YAML文件

  cmd: python train . py h params:lr:[0.01,0.02] solver: [SGD , Adam]在命令行传递python -m runx.runx sweep.yml,然后下面的命令会自动逐一执行。它的执行参数是相互结合的。该模块对作业系统支持较好,当使用集群时,可以方便的进行任务提交。

  python train . py-lr 0.01-solver SGD python train . py-lr 0.01-solver adampython train . py-lr 0.02-solver SGD python train . py-lr 0.02-solver a Dam logx这个模块是我最常用的一个,也是后续sumx模块的必要步骤。只有将metric传递给logx,才能用sumx进行实验分析。同时,logx还支持标准输出的本地化,方便tensorboard记录模型已经快速保存。

  要使用此模块,您需要首先导入它。获得logx对象后,首先需要初始化它。初始化包括以下参数。

  X.初始化(logdir=none,#日志存储目录,如果不存在会自动创建coolname=False,#是否在logdir下生成唯一目录,hparams=None,#与runx一起使用,保存所有超级参数,tensorboard=False,#是否写入tensorboard文件,无手动writer _ timestamp=false,#是否启用时间戳命名global_rank=0,#分布式训练防止多输出eagle _ flush=true #即使tensorboard打开后写入过快也不会丢失)

  Logx.msg(content )只需用上面的函数替换所有的打印语句,这样所有的标准输出都将保存在logdir目录下的logging.log文件中,供以后查看。

  日志。metric (phase= val ,metrics=metrics,epoch=epoch)在传入的字典度量中记录数据,如果tensorboard打开,则自动添加_scalar。Phase表示不同的阶段,可选train和val,epoch表示全局轮次。

  日志。save _ model (save _ dict,#保存的检查点字典,它可以具有诸如“epoch”、“state_dict”和#评估指示符的度量。logx会维护这个指标的一系列值,如果变好了就保存新模型epoch,#当前轮更高_更好=True,#是否更高或更好,比如accuracy delete_old=True #是否删除旧模型)。sumx用于总结许多试运行的结果,并且依赖于logx生成的度量文件,因此避免读取tensorboard文件以增加分析速度。

  通过执行python -m runx.sumx sweep可以获得以下分析结果.

  LR解算器ACC Epoch Epoch _ Time Run 4 0.02 Adam 99.1 10 5:21 Run 3 0.02 SGD 99.0 10 5:02 Run 1 0.01 SGD 98.2 10 5:40 Run 2 0.01 Adam 98.1 10 5:25 Demo以下代码演示了一个为模型定型以拟合一元二次函数的示例。

  进口火炬进口数量为NP进口火炬。nn为nni进口火炬。optim as optim from runx。logx导入logx # datasetx=torch。一个16 * 10的大范围.视图(16,10)。float()x=x火炬。rand _ like(x)/10y=x * * 2 1 #模型类模型(nn .模块):def __init__(自身):超级(模型,自身)。__init__() self.fc1=nn .线性(1,10) self.fc2=nn .线性(10,1) def forward(self,x):x=self。fc1(x)x=nn。功能性。relu(x)x=self。fc2(x)返回x # loglogx。初始化(./logs/,coolname=True,tensor board=True)Model=Model()模型。cuda()标准=nn .ms loss()optimizer=optim .SGD(model.parameters(),lr=0.001)best _ loss=NP。范围(10)内epocn的INF:loss=0.0 # epoch训练损失losses _ valid=0.0 # epoch验证损失对于step,(x_,y_) in enumerate(zip(x,y)): # data x_,y_=x_ .cuda().视图(10,1),y_ .cuda().view(10,1) x_train,y_train=x_[:5],y_[:5] x_val,y_val=x_[5:],y _[5:]# forward out=model(x _ train)# loss loss _=criterion(out,y _ train)loss=loss _ # backward optimizer。零分损失.backward()优化器。step()#对火炬有效。no _ grad():pred=model(x _ val)valid _ loss=criterion(pred,y _ val)loss _ valid=valid _ loss metrics={ loss : loss :loss _ valid/(step 1)} logx。metric( train ,metrics,epocn) logx.metric(val ,metrics_valid,epocn)if loss _ valid best _ loss:best _ loss=loss _ valid save _ dict={ state _ dict格式(epocn,loss/(第一步),loss _ valid/(第一步)))这段训练代码执行后会生成如下结果,包含模型张量板检查站文件,标准输出日志(logging.log)以及公制的记录。

  打开张量板服务,可视化训练过程,结果如下,可以看到,logx已经自动记录了张量板文件。

  补充说明本文主要介绍了上海润显贸的使用(主要是函数模块的使用),该包其实是对深度学习实验过程的一些需求进行了封装而避免我们写很多繁琐的代码,比如张量板使用作者记录,比如失败变化判断是否模型更好等等功能,非常方便,具体详细的应用程序接口文档可以查看官方文档。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: