火车:我可以重置任务的状态吗? (从“中止”回到“正在运行”)

Posted

技术标签:

【中文标题】火车:我可以重置任务的状态吗? (从“中止”回到“正在运行”)【英文标题】:Trains: Can I reset the status of a task? (from 'Aborted' back to 'Running') 【发布时间】:2020-10-20 13:34:03 【问题描述】:

我不得不在中途停止训练,这将 Trains 状态设置为 Aborted。 后来我从最后一个检查点继续,但状态仍然是Aborted。 此外,自动训练指标不再出现在仪表板中(尽管自定义指标仍然如此)。

我可以将状态重置回 Running 并让 Trains 再次记录训练统计信息吗?

编辑:继续训练时,我使用Task.get_task() 而不是Task.init() 检索任务。也许这就是训练数据不再更新的原因?

Edit2:我也试过Task.init(reuse_last_task_id=original_task_id_string),但它只是创建了一个新任务,并没有重复使用给定的任务ID。

【问题讨论】:

【参考方案1】:

免责声明:我是 Allegro Trains 团队的成员

继续训练时,我使用 Task.get_task() 而不是 Task.init() 检索任务。也许这就是训练数据不再更新的原因?

是的,这是继续执行相同任务的唯一方法。 您也可以用task.mark_started() 将其标记为开始,表示不会启动自动日志记录,因为Task.get_task 通常用于访问以前执行的任务而不继续它(如果您认为继续用例很重要,请感觉免费打开一个GitHub issue,我绝对可以看到那里的价值)

你也可以做一些不同的事情,从上次运行结束的最后一次迭代继续创建一个新任务。请注意,如果您加载权重文件 (PyTorch/TF/Keras/JobLib),它将自动将其与上一次运行中创建的模型连接起来(假设模型存储在同一位置,或者如果您有模型https/S3/Gs/Azure 而你正在使用trains.StorageManager.get_local_copy())

previous_run = Task.get_task()
task = Task.init('examples', 'continue training')
task.set_initial_iteration(previous_run.get_last_iteration())
torch.load('/tmp/my_previous_weights')

顺便说一句:

我也尝试过 Task.init(reuse_last_task_id=original_task_id_string),但它只是创建了一个新任务,并没有重用给定的任务 ID。

这是一个让界面继续之前运行的好主意,请随时将其添加为 GitHub 问题。

【讨论】:

@michael-litvin 注意我编辑了答案,它应该说“set_initial_iteration”而不是“set_last_iteration”:) 已添加an issue on github

以上是关于火车:我可以重置任务的状态吗? (从“中止”回到“正在运行”)的主要内容,如果未能解决你的问题,请参考以下文章

Heroku - ClearDB:连接中止 - 对等方重置连接

我可以在不重置浏览器状态的情况下按顺序运行多个 RSpec/Selenium 测试吗?

如何在windows窗体应用程序c#中中止当前任务

我应该在路由器导航上重置商店状态吗?

javax.net.ssl.SSLException:SSL 握手中止连接由对等方重置,同时调用 web 服务 Android

从批处理脚本中引发 Jenkins 作业中止