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

有没有人知道机器学习PAI 的Alink怎么实现大量数据两两计算相关性?

有没有人知道Alink怎么实现大量数据两两计算相关性,就是我已有大量文件两两匹配好了,想每两个输出一个相关性结果,单线程计算太慢了,所以想看看spark或者flink有没有啥好的解决方案,本来打算用spark的,但是rdd中没法嵌套rdd,而我看ALink的介绍,相关性算子CorrelationBatchOp好像也是单线程的,我设置了 BatchOperator.setParallelism(4);好像也没啥用,想在flink stream的算子中使用CorrelationBatchOp好像也不行

展开
收起
乐天香橙派 2023-12-01 10:22:56 56 0
3 条回答
写回答
取消 提交回答
  • 问题一:
    Alink的CorrelationBatchOp确实是单线程的,但是可以通过设置并行度来提高计算速度。你可以尝试将BatchOperator.setParallelism(4)改为BatchOperator.setNumThreads(4),这样可以将计算分配到多个线程上进行。另外,你还可以考虑使用Flink或Spark来实现大量数据的两两计算相关性。在Spark中,可以使用PairRDD和mapToPair等方法来实现两两匹配和计算相关性;在Flink中,可以使用DataStream API和KeyedStream API来实现类似的功能。

    问题二:
    如果需要多次调用CorrelationBatchOp,可以考虑使用异步执行的方式。在Alink中,可以使用ComputationGraph.addSource()方法将CorrelationBatchOp添加到计算图中,并使用ComputationGraph.compile()方法编译计算图。然后,可以使用ComputationGraph.execute()方法异步执行计算图。这样,每次调用CorrelationBatchOp时,不需要等待前面的计算结果,可以并行执行。

    2023-12-02 16:35:54
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    问题一:

    针对大量数据两两计算相关性的问题,可以考虑使用Spark或Flink的并行计算能力来加速计算。在Spark中,可以使用PairRDD来实现两两匹配的数据,并使用map函数来计算相关性。在Flink中,可以使用DataStream API来实现流式计算,并使用window操作来进行两两匹配和相关性计算。

    对于ALink中的CorrelationBatchOp算子,可以尝试设置并行度来提高计算速度。如果设置并行度无效,可能是因为该算子本身不支持并行计算或者并行度设置不正确。可以尝试使用其他算子或方法来实现相关性计算。

    问题二:

    如果需要多次调用CorrelationBatchOp算子进行相关性计算,可以考虑使用循环或迭代的方式来实现。具体来说,可以将所有配对文件分成多个批次,每个批次内的文件两两调用CorrelationBatchOp算子进行计算。然后等待当前批次的计算完成后再进行下一个批次的计算。这样可以避免等待前面的计算结果,提高整体计算效率。

    2023-12-01 21:37:21
    赞同 展开评论 打赏
  • 可以看看向量最近邻https://www.yuque.com/pinshu/alink_doc/vectornearestneighbortrainbatchop 。 或者写个多线程调用
    —此回答来自钉群“Alink开源--用户群”

    2023-12-01 11:06:16
    赞同 展开评论 打赏

热门讨论

热门文章

相关电子书

更多
大规模机器学习在蚂蚁+阿里的应用 立即下载
阿里巴巴机器学习平台AI 立即下载
机器学习及人机交互实战 立即下载