如何解决为什么 Databricks 笔记本单元永远训练我的 ML 模型“运行命令...”?
我正在 Azure Databricks 集群(在笔记本上)训练 PyTorch 模型,使用 PyTorch Lightning,并使用 mlflow 进行跟踪。
我想在 Databricks 托管的跟踪服务器上存储训练指标 + 工件。
要启用它,代码如下:
mlflow.pytorch.autolog()
trainer = pl.Trainer(gpus=1,max_epochs=30,callbacks=[EarlyStopping(monitor='val_loss',patience = 6)],progress_bar_refresh_rate=0)
trainer.fit(classifier,train_dl,valid_dl)
print("Done")
然而,笔记本单元卡在“运行命令...”状态太久了:
即使在驱动程序日志中执行似乎已经结束:
并且实验在 mlflow UI 中标记为已完成:
手动停止执行也不能解决问题,因为单元格将永远处于“正在取消...”状态。所以剩下的唯一选择就是清除集群状态。
这是一个问题,因为我无法执行对工件记录有用的其他命令:
mapping.to_json("/tmp/mapping.json",orient = "records")
mlflow.log_artifact("/tmp/mapping.json","mapping")
torch.save(classifier.state_dict(),"/tmp/model.pt")
mlflow.log_artifact("/tmp/model.pt","model.pt")
这个问题似乎与 GC 问题相关:
2021-04-22T07:58:58.025+0000:[GC(分配失败)[PSYoungGen: 28399104K->100290K(28499456K)] 28696488K->397698K(85935104K), 0.0755720 秒] [时间:用户=0.15 系统=0.06,真实=0.08 秒] 2021-04-22T08:01:01.645+0000: [GC (System.gc()) [PSYoungGen: 4522724K->54360K(28561920K)] 4820132K->351776K(85997568K),0.0237712 秒] [时间:用户=0.09 系统=0.01,真实=0.02 秒] 2021-04-22T08:01:01.669+0000: [Full GC (System.gc()) [PSYoungGen: 54360K->0K(28561920K)] [ParOldGen: 297416K->123173K(57435648K)] 351776K->123173K(85997568K),[元空间:203356K->203325K(219136K)], 0.3513905 秒] [时间:用户=0.99 系统=0.00,真实=0.36 秒]
我做错了吗?我应该以另一种方式跟踪实验 + 工件吗?运行单节点和集群都不起作用,也不会减小训练集的大小。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。