问题标签 [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.
matlab - 训练神经网络时如何将大型数据集保存到 MATLAB 中的检查点文件?
在 MATLAB 中训练具有大型数据集(和少量特征)的神经网络时,tr 结构将增长到 2 GB 以上,使得自动检查点保存功能无法使用。MATLAB 引发以下错误:
是否有任何解决方法。这是非常不幸的,因为检查点文件可能对大型数据集最有用。
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 exceeded、Lost 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 相关的其他配置变量。同样,我正在寻找可能发生的事情的解释,以及我对缓存/检查点的假设可能是错误的。谢谢!
validation - Keras 中的验证拆分和检查点最佳模型
Sequential
让我们在拟合模型时使用 0.3 的验证拆分。什么将用于验证,第一个或最后 30% 的样本?
其次,检查最佳模型以 .hdf5 文件格式保存最佳模型权重。这是否意味着,对于某个实验,保存的模型是最佳调整模型?
scala - spark-scala 检查点清理
我正在“本地”模式下运行 spark 应用程序。它正确地检查点到 checkpointFolder 配置中定义的目录。但是,我看到有两个问题会导致一些磁盘空间问题。
1)由于我们有多个用户运行应用程序,服务器上的检查点文件夹是由第一个执行它的用户创建的,这导致其他用户的运行由于操作系统上的权限问题而失败。有没有办法在 checkpointFolder 中提供相对路径,例如 checkpointFolder=~/spark/checkpoint?
2) 我使用 spark.worker.cleanup.enabled=true 配置在运行后清理检查点文件夹,但没有看到这种情况发生。有没有通过应用程序清理它的替代方法,而不是求助于一些 cron 工作?
persistence - 如何在 Flink 中持久化可查询状态?
我正在使用 FLink v.1.4.0
。我正在使用QueryableStateStream
我以某种方式键入的 a,然后sink
它创建一个Queryable State
,例如:
只要我的Flink
工作还在运行,这一切都很好。一旦作业被终止,该状态就不再可访问。
我有两个问题:
- 如何保持可查询状态?这可以像检查点一样定期完成吗?我应该改用托管状态解决方案吗?
- 如何
QueryableState
使用从先前执行中持久保存的数据来初始化 a?
我会很感激这两个问题的实际例子。谢谢。
tensorflow - 用于在线学习的 TensorFlow 检查点
我正在尝试构建一个基于 Mozilla DeepSpeech 的自适应语音识别系统(这是 DeepSpeech 论文的 TensorFlow 实现)
这个想法是,
- 我们将对特定声音的模型进行预训练。然后,保存模型 + 创建检查点。
- 保存的模型用于将语音转录为文本。
- 如果用户注意到某些内容被错误地转录,他可以就他刚刚录制的声音的正确文本提供反馈。
- 这形成了一个新的训练样本。模型恢复到之前的检查点,然后在新样本上进行训练。(我们还会使用一些数据增强技术来增加样本数量)
- 现在生成的模型应该更好地用于用户语音/发音
- 从第 3 步开始重复,如果有不正确的转录
这是使用检查点的正确方法吗?我的意思是,每次我在新样本上训练时,我都会恢复到最后一个检查点并用新样本替换完整的训练数据。
任何建议,将不胜感激!
提前致谢!
apache-flink - 在 Flink 中检查点事件时间水印
我们正在接收来自 no 的事件。独立数据源,因此到达我们的 Flink 拓扑(通过 Kafka)的数据将是无序的。
我们在 Flink 拓扑中创建 1 分钟的事件时间窗口,并在源操作符处生成事件时间水印(当前事件时间 - 某个阈值(30 秒))。
如果一些事件在设置的阈值之后到达,这些事件将被简单地忽略(在我们的例子中是可以的,因为属于该分钟的大多数事件已经到达并在相应的窗口中得到处理)。
现在,问题是如果程序崩溃(无论出于何种原因)然后从最后一个成功的检查点再次恢复,无序到达的事件将触发过去(已经处理的)窗口的执行(只有极少数事件在该窗口)覆盖上一个结果。该窗口的计算。
如果 Flink 有检查点事件时间水印,则不会发生此问题。
所以,我想知道是否有办法在 Flink 中强制执行事件时间水印的检查点......
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 镜像作为基础
mpi - Linux 进程状态恢复后重新连接到 MPI
讲故事的时间!考虑以下场景:
- 使用 Hydra,MPICH 产生 2 个不同的进程(模拟器)。叫他们苹果和橙子!
- Apple 和 Orange 开始,他们加载一个动态链接库,并使用该库调用 MPI_Init 并进行所有 MPI 通信。(那个 DLM 是我做的)
- 稍后我们启动一个检查点
- Apple 将所需的所有内容保存到一个文件中,该文件在重新启动时加载
- 然而,Orange 会保存整个 Linux 进程状态并在重新启动时将其重新加载。
- 现在稍后,我们想从检查点加载模拟以使用不同的参数运行它。
- 我们用新参数再次调用 Hydra 来启动 Apple 和 Orange
- Apple 出现,加载它的东西,加载我的库,然后调用 MPI_Init (Allgood)
- 梨加载整个旧状态备份!很好,除了 MPI 状态变量也作为进程状态的一部分被加载,所以橙色的 MPI 认为它已经被初始化,但它不知道这个新网络,它的变量是用于旧 MPI 网络的从第一次模拟开始。
所以这是我现在的问题:
我如何告诉 Orange 再次调用 MPI_Init(或任何其他方式,因为我知道不允许重复调用 mpi_init),以便它可以了解新网络?
事实:
- 我可以随心所欲地编辑我的图书馆。它们是 c++ 库。
- 我无法编辑 Apple 和 Orange 模拟器如何保存检查点或重新启动。它们是专有的模拟器,没有可用的源代码。
- 模拟运行数天,因此必须先运行通用部分,然后保存检查点作为其他模拟的起点。
我的研究:
- 我知道调用 MPI_Init 的重复调用不是一种选择
- 我查看了 MPICH 的源代码,它检查它是否已初始化,但我宁愿不修改 MPICH 并拥有自己的新版本!
- 我查看了邮件列表、堆栈溢出和谷歌,但在进程状态恢复时如何连接到新的 MPI 网络却没有运气。
潜在答案:
当然,我可以让我的库启动一个新进程并在那里做所有事情,但是从模拟器到这个新进程的通信会有很大的性能开销。此外,正确地做是另一罐蠕虫,如果可以的话,我宁愿不打开。
所以......关于如何告诉这个恢复的 Orange 进程状态这是一个新的 MPI 网络并且您现在需要与这个网络交谈的任何想法?
提前致谢 :)
apache-flink - 如果我为 Flink 检查点配置本地文件系统会发生什么?
我看过一个名为Managing State in Apache Flink - Tzu-Li (Gordon) Tai
. 在这个视频中,它使用分布式文件系统存储数据。
我想知道如果我为 Flink 检查点配置了本地文件系统会发生什么?
例如:
我假设 Flink 集群的每个节点都会保留自己的数据。它会运作良好吗?