问题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有两个节点,我看一个节点有这个目录,另一个节点没有。
对于问题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开源--用户群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
人工智能平台 PAI(Platform for AI,原机器学习平台PAI)是面向开发者和企业的机器学习/深度学习工程平台,提供包含数据标注、模型构建、模型训练、模型部署、推理优化在内的AI开发全链路服务,内置140+种优化算法,具备丰富的行业场景插件,为用户提供低门槛、高性能的云原生AI工程化能力。