问题标签 [checkpointing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
310 浏览

matlab - 训练神经网络时如何将大型数据集保存到 MATLAB 中的检查点文件?

在 MATLAB 中训练具有大型数据集(和少量特征)的神经网络时,tr 结构将增长到 2 GB 以上,使得自动检查点保存功能无法使用。MATLAB 引发以下错误:

是否有任何解决方法。这是非常不幸的,因为检查点文件可能对大型数据集最有用。

0 投票
1 回答
489 浏览

caching - 用于检查点/缓存作业的 EMR 上的 Spark“超出内存限制”

我对缓存的理解是错误的吗?经过我所有的转换后得到的 RDD 非常小,比如 1 GB。计算它的数据非常大,大约 700 GB。

我必须运行逻辑来读取数千个相当大的文件,所有这些都是为了计算更小的结果 RDD。每次迭代都会处理下一批 400 个文件,当读入这些文件时,其大小可能会达到 700 GB 左右。传入的 RDD 以相同的方式处理(读取和转换),然后与累积的 RDD 合并。我在每次迭代后缓存和检查点(也取消持久化(使用blocking = true)生成的rdd的旧版本),以便我可以切断RDD沿袭,这样如果出现问题我就不必重新计算结果,并且以节省执行者的空间。所以,我认为在任何时候我真的只需要 1 GB * 迭代次数 + 大约 750 GB 的内存来完成我的工作,而 1.6 TB 应该绰绰有余。但显然我误解了一些东西。

在每次迭代中,GC 时间越来越长。Spark UI 显示执行程序位于红色区域(> 10% 的时间花在 GC 上)。然后整个工作可能在第 3 次或第 4 次迭代中失败,出现MemoryLimit exceededLost Executor/no path to executor和 YARN 杀死我的执行程序等消息。我认为通过缓存和检查点可以为我的执行程序节省大量空间。我只是不明白是否存在某种内存泄漏?为什么内存不断填满?

我正在使用 m3.large 实例在 EMR 上运行 Spark 2.1.1。我的集群的大小限制在 ~1.6 TB。我使用以下配置运行:

我的代码是什么样的:

我遵循了以下建议:https ://github.com/deeplearning4j/nd4j/issues/1251 ,并试图避免调整与 gc、内存分数和 jvm 相关的其他配置变量。同样,我正在寻找可能发生的事情的解释,以及我对缓存/检查点的假设可能是错误的。谢谢!

0 投票
1 回答
2046 浏览

validation - Keras 中的验证拆分和检查点最佳模型

Sequential让我们在拟合模型时使用 0.3 的验证拆分。什么将用于验证,第一个或最后 30% 的样本?

其次,检查最佳模型以 .hdf5 文件格式保存最佳模型权重。这是否意味着,对于某个实验,保存的模型是最佳调整模型?

0 投票
2 回答
864 浏览

scala - spark-scala 检查点清理

我正在“本地”模式下运行 spark 应用程序。它正确地检查点到 checkpointFolder 配置中定义的目录。但是,我看到有两个问题会导致一些磁盘空间问题。

1)由于我们有多个用户运行应用程序,服务器上的检查点文件夹是由第一个执行它的用户创建的,这导致其他用户的运行由于操作系统上的权限问题而失败。有没有办法在 checkpointFolder 中提供相对路径,例如 checkpointFolder=~/spark/checkpoint?

2) 我使用 spark.worker.cleanup.enabled=true 配置在运行后清理检查点文件夹,但没有看到这种情况发生。有没有通过应用程序清理它的替代方法,而不是求助于一些 cron 工作?

0 投票
1 回答
428 浏览

persistence - 如何在 Flink 中持久化可查询状态?

我正在使用 FLink v.1.4.0。我正在使用QueryableStateStream我以某种方式键入的 a,然后sink它创建一个Queryable State,例如:

只要我的Flink工作还在运行,这一切都很好。一旦作业被终止,该状态就不再可访问。

我有两个问题:

  1. 如何保持可查询状态?这可以像检查点一样定期完成吗?我应该改用托管状态解决方案吗?
  2. 如何QueryableState使用从先前执行中持久保存的数据来初始化 a?

我会很感激这两个问题的实际例子。谢谢。

0 投票
0 回答
360 浏览

tensorflow - 用于在线学习的 TensorFlow 检查点

我正在尝试构建一个基于 Mozilla DeepSpeech 的自适应语音识别系统(这是 DeepSpeech 论文的 TensorFlow 实现)

这个想法是,

  1. 我们将对特定声音的模型进行预训练。然后,保存模型 + 创建检查点。
  2. 保存的模型用于将语音转录为文本。
  3. 如果用户注意到某些内容被错误地转录,他可以就他刚刚录制的声音的正确文本提供反馈。
  4. 这形成了一个新的训练样本。模型恢复到之前的检查点,然后在新样本上进行训练。(我们还会使用一些数据增强技术来增加样本数量)
  5. 现在生成的模型应该更好地用于用户语音/发音
  6. 从第 3 步开始重复,如果有不正确的转录

这是使用检查点的正确方法吗?我的意思是,每次我在新样本上训练时,我都会恢复到最后一个检查点并用新样本替换完整的训练数据。

任何建议,将不胜感激!

提前致谢!

0 投票
2 回答
833 浏览

apache-flink - 在 Flink 中检查点事件时间水印

我们正在接收来自 no 的事件。独立数据源,因此到达我们的 Flink 拓扑(通过 Kafka)的数据将是无序的。

我们在 Flink 拓扑中创建 1 分钟的事件时间窗口,并在源操作符处生成事件时间水印(当前事件时间 - 某个阈值(30 秒))。

如果一些事件在设置的阈值之后到达,这些事件将被简单地忽略(在我们的例子中是可以的,因为属于该分钟的大多数事件已经到达并在相应的窗口中得到处理)。

现在,问题是如果程序崩溃(无论出于何种原因)然后从最后一个成功的检查点再次恢复,无序到达的事件将触发过去(已经处理的)窗口的执行(只有极少数事件在该窗口)覆盖上一个结果。该窗口的计算。

如果 Flink 有检查点事件时间水印,则不会发生此问题。

所以,我想知道是否有办法在 Flink 中强制执行事件时间水印的检查点......

0 投票
1 回答
427 浏览

docker - 使用 CRIU 进行 Docker 检查点/恢复 - 内核不支持 PTRACE_O_SUSPEND_SECCOMP

我正在尝试使用 CRIU ( https://criu.org/Docker ) 做一个 docker checkpoint/restore 的 hello-world 示例。

这是来自的输出criu check --all

当我实际创建检查点时遇到问题,它不会停止正在运行的容器,而是说它创建了检查点。我认为这是因为 --all 报告了上述错误。当然之后,当我去恢复时,它并没有真正恢复。

我看到了支持 Docker 的 CRIU 所需的多个内核补丁。RHEL7.4 是否支持这些补丁?我发现的关于内核补丁的最佳讨论在这里:https ://trello.com/c/CqLRhFSk/91-follow-up-on-criu-checkpoint-restart-in-userspace-support-and-test-基本场景快照恢复

我现在的环境:

  • RHEL 7.4
  • Docker 版本 17.12.0-ce,构建 c97c6d6
  • 运行一个 centos 7.4 docker 镜像作为基础
0 投票
0 回答
50 浏览

mpi - Linux 进程状态恢复后重新连接到 MPI

讲故事的时间!考虑以下场景:

  1. 使用 Hydra,MPICH 产生 2 个不同的进程(模拟器)。叫他们苹果和橙子!
  2. Apple 和 Orange 开始,他们加载一个动态链接库,并使用该库调用 MPI_Init 并进行所有 MPI 通信。(那个 DLM 是我做的)
  3. 稍后我们启动一个检查点
  4. Apple 将所需的所有内容保存到一个文件中,该文件在重新启动时加载
  5. 然而,Orange 会保存整个 Linux 进程状态并在重新启动时将其重新加载。
  6. 现在稍后,我们想从检查点加载模拟以使用不同的参数运行它。
  7. 我们用新参数再次调用 Hydra 来启动 Apple 和 Orange
  8. Apple 出现,加载它的东西,加载我的库,然后调用 MPI_Init (Allgood)
  9. 梨加载整个旧状态备份!很好,除了 MPI 状态变量也作为进程状态的一部分被加载,所以橙色的 MPI 认为它已经被初始化,但它不知道这个新网络,它的变量是用于旧 MPI 网络的从第一次模拟开始。

在此处输入图像描述

所以这是我现在的问题:

我如何告诉 Orange 再次调用 MPI_Init(或任何其他方式,因为我知道不允许重复调用 mpi_init),以便它可以了解新网络?

事实

  1. 我可以随心所欲地编辑我的图书馆。它们是 c++ 库。
  2. 我无法编辑 Apple 和 Orange 模拟器如何保存检查点或重新启动。它们是专有的模拟器,没有可用的源代码。
  3. 模拟运行数天,因此必须先运行通用部分,然后保存检查点作为其他模拟的起点。

我的研究:

  1. 我知道调用 MPI_Init 的重复调用不是一种选择
  2. 我查看了 MPICH 的源代码,它检查它是否已初始化,但我宁愿不修改 MPICH 并拥有自己的新版本!
  3. 我查看了邮件列表、堆栈溢出和谷歌,但在进程状态恢复时如何连接到新的 MPI 网络却没有运气。

潜在答案

当然,我可以让我的库启动一个新进程并在那里做所有事情,但是从模拟器到这个新进程的通信会有很大的性能开销。此外,正确地做是另一罐蠕虫,如果可以的话,我宁愿不打开。

所以......关于如何告诉这个恢复的 Orange 进程状态这是一个新的 MPI 网络并且您现在需要与这个网络交谈的任何想法?

提前致谢 :)

0 投票
1 回答
404 浏览

apache-flink - 如果我为 Flink 检查点配置本地文件系统会发生什么?

我看过一个名为Managing State in Apache Flink - Tzu-Li (Gordon) Tai. 在这个视频中,它使用分布式文件系统存储数据。

我想知道如果我为 Flink 检查点配置了本地文件系统会发生什么?

例如:

我假设 Flink 集群的每个节点都会保留自己的数据。它会运作良好吗?