有没有人知道Alink怎么实现大量数据两两计算相关性,就是我已有大量文件两两匹配好了,想每两个输出一个相关性结果,单线程计算太慢了,所以想看看spark或者flink有没有啥好的解决方案,本来打算用spark的,但是rdd中没法嵌套rdd,而我看ALink的介绍,相关性算子CorrelationBatchOp好像也是单线程的,我设置了 BatchOperator.setParallelism(4);好像也没啥用,想在flink stream的算子中使用CorrelationBatchOp好像也不行
问题一:
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时,不需要等待前面的计算结果,可以并行执行。
问题一:
针对大量数据两两计算相关性的问题,可以考虑使用Spark或Flink的并行计算能力来加速计算。在Spark中,可以使用PairRDD来实现两两匹配的数据,并使用map函数来计算相关性。在Flink中,可以使用DataStream API来实现流式计算,并使用window操作来进行两两匹配和相关性计算。
对于ALink中的CorrelationBatchOp算子,可以尝试设置并行度来提高计算速度。如果设置并行度无效,可能是因为该算子本身不支持并行计算或者并行度设置不正确。可以尝试使用其他算子或方法来实现相关性计算。
问题二:
如果需要多次调用CorrelationBatchOp算子进行相关性计算,可以考虑使用循环或迭代的方式来实现。具体来说,可以将所有配对文件分成多个批次,每个批次内的文件两两调用CorrelationBatchOp算子进行计算。然后等待当前批次的计算完成后再进行下一个批次的计算。这样可以避免等待前面的计算结果,提高整体计算效率。
可以看看向量最近邻https://www.yuque.com/pinshu/alink_doc/vectornearestneighbortrainbatchop 。 或者写个多线程调用
—此回答来自钉群“Alink开源--用户群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
人工智能平台 PAI(Platform for AI,原机器学习平台PAI)是面向开发者和企业的机器学习/深度学习工程平台,提供包含数据标注、模型构建、模型训练、模型部署、推理优化在内的AI开发全链路服务,内置140+种优化算法,具备丰富的行业场景插件,为用户提供低门槛、高性能的云原生AI工程化能力。