机器学习PAI在集群上计算批量数据batchoperator的数据量,不能用count,有什么方法可以获取吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在机器学习PAI平台上,如果需要在集群上计算批量数据(BatchOperator)的数据量,但无法直接使用count
方法时,可以通过以下方法实现数据量的统计。这些方法基于知识库中的相关资料,提供了替代方案和具体操作步骤。
可以利用ColumnsToVectorBatchOp
组件将数据列转换为向量,并通过输出结果表的元信息来间接获取数据量。以下是具体步骤:
代码实现: 使用ColumnsToVectorBatchOp
将指定列转换为向量列,并输出结果表。
from pyalink.alink import *
def main(sources, sinks, parameter):
data = sources[0]
op = ColumnsToVectorBatchOp() \
.setSelectedCols(["f0", "f1"]) \ # 指定需要转换的列
.setReservedCols(["row"]) \ # 保留的列
.setVectorCol("vec") \ # 设置向量列名
.linkFrom(data)
result = op.linkFrom(data)
result.link(sinks[0])
BatchOperator.execute()
获取数据量: 在生成的结果表中,可以通过查询表的行数(如row
列的数量)来间接获取数据量。
如果数据是以文本形式存储的,可以借助ngram-count
组件对数据进行统计分析,从而间接获取数据量。以下是具体配置步骤:
字段设置:
参数设置:
执行调优: 通过N-gram统计结果表中的count
列,汇总所有分片的计数值以获取总数据量。
如果数据已经过向量化处理,可以使用hitrate_gl_ext
组件进行向量召回评估,并通过输出表的统计信息获取数据量。以下是具体操作:
命令示例:
pai -name hitrate_gl_ext \
-Ditem_emb_table='item_emb_table' \
-Duser_emb_table='user_emb_table' \
-Dtrue_seq_table='true_seq_table' \
-Dhitrate_details='hitrate_details' \
-Dtotal_hitrate='total_hitrate' \
-Drecall_type='u2i' \
-Dk=5 \
-Demb_dim=10 \
-Dmetric=1 \
-Dstrict=False \
-Dbatch_size=1024 \
-Dworker_count=1 \
-Dworker_memory=20000 \
-Dlifecycle=7;
获取数据量:
hitrate_details
和total_hitrate
中会包含数据的统计信息。对于大规模数据集,可以使用ElasticBatch作业类型进行分布式处理,并通过AIMaster节点动态监测数据分片的处理情况,从而获取数据总量。具体步骤如下:
任务配置:
数据量统计:
worker_count
和worker_memory
参数,以提高计算效率。kubectl
命令检查节点状态)。通过上述方法,您可以在不直接使用count
的情况下,高效地获取批量数据的数据量。
人工智能平台 PAI(Platform for AI,原机器学习平台PAI)是面向开发者和企业的机器学习/深度学习工程平台,提供包含数据标注、模型构建、模型训练、模型部署、推理优化在内的AI开发全链路服务,内置140+种优化算法,具备丰富的行业场景插件,为用户提供低门槛、高性能的云原生AI工程化能力。