问题1:KerasSequentialClassifierTrainBatchOp 在机器学习PAI这个组件使用并行度大于1在flink集群上运行不起来,会报一下错误,怎么处理?错误如下: 2023-06-01 15:10:36,301 ERROR com.alibaba.alink.common.dl.DLRunner [] – Got exception during python running com.alibaba.flink.ml.util.MLException: worker:0 python process exited with code 1 at com.alibaba.alink.common.dl.ProcessPythonRunnerV2.runProcess(ProcessPythonRunnerV2.java:224) ~[alink_core_flink-1.13_2.11-1.6.1.jar:?] at com.alibaba.alink.common.dl.ProcessPythonRunnerV2.runScript(ProcessPythonRunnerV2.java:116) ~[alink_core_flink-1.13_2.11-1.6.1.jar:?] at com.alibaba.alink.common.dl.DLRunner.runScript(DLRunner.java:195) ~[alink_core_flink-1.13_2.11-1.6.1.jar:?] at com.alibaba.alink.common.dl.DLRunner.run(DLRunner.java:169) [alink_core_flink-1.13_2.11-1.6.1.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_252] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_252] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_252] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_252] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252] 问题2:/tmp/work_dir_0_5724059440842652293/model_dir/keras也是要共享的吗?我的flink有两个节点,我看一个节点有这个目录,另一个节点没有。
在机器学习PAI这个组件使用并行度大于1在flink集群上运行不起来,会报一下错误,怎么处理?[阿里云机器学习PAI]
「点点赞赏,手留余香」
还没有人赞赏,快来当第一个赞赏的人吧!
对于问题1,KerasSequentialClassifierTrainBatchOp 在机器学习PAI这个组件使用并行度大于1在flink集群上运行不起来,一种解决方法是将并行度设置为 1。你可以在代码中指定参数
setNumWorkers(1)
来设置并行度为 1,或者在提交任务时使用 PAI 控制台中的“高级配置选项”将并行度设置为 1。如果一定要使用多个并行度,则可能需要检查程序是否存在并行度相关的问题,例如是否有全局变量或静态变量等会导致冲突的地方。对于问题2,/tmp/work_dir_0_5724059440842652293/model_dir/keras 这个目录是 KerasSequentialClassifierTrainBatchOp 组件用于保存训练模型的目录,需要在运行时指定一个可供所有节点访问的路径。你需要将这个目录放在所有节点都可以访问的共享存储(如 HDFS 或 NAS 等)中,以便所有节点都可以读取和写入这个目录。如果这个目录只在一个节点上存在,其他节点无法访问它,则会出现错误。可以通过在代码中指定
setModelPath("hdfs://xxx/model_dir/keras")
或者通过修改提交任务时的参数来指定共享目录的路径。对于问题1,根据错误提示信息,这个问题可能是由于Python进程在执行期间出现了错误,导致进程退出并返回了非零的退出码。您可以尝试检查Python代码中是否存在语法错误、依赖项缺失或其他运行时错误,并进行修复。另外,您可以查看日志中的详细错误信息,以确定问题的具体原因。
如果您确定代码本身没有问题,您可以尝试降低并行度来解决这个问题。在机器学习PAI中,您可以通过调整train()函数的参数来设置并行度。具体来说,您可以将batch_size参数设置为小于总样本数的值,以降低并行度。例如,如果您有1000个样本,可以将batch_size设置为100或更小的值,以确保每个批次都可以在单个Python进程中处理。
对于问题2,/tmp/work_dir_0_5724059440842652293/model_dir/keras是保存Keras模型的目录,它需要在所有节点之间共享。如果您在不同的节点上运行同一个作业,并且每个节点都有自己的工作目录,那么您需要确保这些目录都可以在所有节点之间共享。您可以使用NFS或其他共享文件系统来实现目录共享,或者将目录保存在所有节点都可以访问的共享存储中。
如果您使用的是机器学习PAI,您可以将模型保存到OSS等云存储中,以便在不同的节点之间共享模型。在训练完成后,您可以将模型下载到本地或其他节点上进行推理或部署。
针对问题1的回答:你这个可能是机器上没有 /tmp 目录导致的。另外,如果是在多机的 Flink 集群上跑的话,checkpointFilePath 需要指定到那种共享的文件系统上。针对问题2的回答:现在应该是没有设置 checkpointFilePath,然后用的默认 local 路径 /tmp。此回答整理自钉群“Alink开源–用户群”