开发者社区 > 大数据与机器学习 > 人工智能平台PAI > 正文

在机器学习PAI这个组件使用并行度大于1在flink集群上运行不起来,会报一下错误,怎么处理?

问题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有两个节点,我看一个节点有这个目录,另一个节点没有。

展开
收起
三分钟热度的鱼 2023-06-05 15:38:32 137 0
3 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    对于问题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") 或者通过修改提交任务时的参数来指定共享目录的路径。

    2023-06-05 22:09:00
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    对于问题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等云存储中,以便在不同的节点之间共享模型。在训练完成后,您可以将模型下载到本地或其他节点上进行推理或部署。

    2023-06-05 21:31:15
    赞同 展开评论 打赏
  • 针对问题1的回答:你这个可能是机器上没有 /tmp 目录导致的。另外,如果是在多机的 Flink 集群上跑的话,checkpointFilePath 需要指定到那种共享的文件系统上。针对问题2的回答:现在应该是没有设置 checkpointFilePath,然后用的默认 local 路径 /tmp。此回答整理自钉群“Alink开源--用户群”

    2023-06-05 15:58:51
    赞同 展开评论 打赏

相关产品

  • 人工智能平台 PAI
  • 热门讨论

    热门文章

    相关电子书

    更多
    大规模机器学习在蚂蚁+阿里的应用 立即下载
    基于Spark的面向十亿级别特征的 大规模机器学习 立即下载
    基于Spark的大规模机器学习在微博的应用 立即下载