Closed lutaojian closed 6 years ago
@jacquesqiao 麻烦也看下这个问题?
可能和这个issue 有关系么 https://github.com/PaddlePaddle/Paddle/issues/2121
@lutaojian 可否用v1版本测下训练的性能呢,怀疑是v2集群训练性能的问题,可以帮助排除下,v1的配置方法文档:http://doc.paddlepaddle.org/release_doc/0.9.0/doc/
@typhoonzero 本地1500w样本也训练得很慢,我理解耗时应该与是不是集群任务没有关系?
是的,paddle支持大规模离散DNN性能不好,我也遇到一样的问题,Paddle V1
可否统计一下load data的耗时? @typhoonzero @lutaojian ,怀疑数据读取这里有问题。一般数量级上的差异是对HDFS读取处理不当造成的。实现上的性能差异不可能有那么大。 @lutaojian paddle主要是NN类型的算法,对传统的大规模LR算法支持没有特别优化过,其中对owqln是大面积地修改了parameter server的接口,支持不算友好。你提到之前用的LR算法我们优化了近两年,快20%-30%左右属于正常范围。
可以先在event_handler中,记录下100或1000个batch的时间和读取数据的时间,观察下。HDFS的数据是在计算开始前下载到节点上的,所以数据读取是直接读取本地磁盘,没有走网络。在程序中记录时间也并不会包含此步骤的时间消耗。
在程序的每个步骤记录下时间debug下严重影响性能的部分,参考:https://github.com/PaddlePaddle/Paddle/issues/3675
@lutaojian paddle主要是NN类型的算法
这里面说的NN类型是指什么? @dzhwinter
Neural Network
原本一直使用LR模型作为CTR预估模型,最近正在调研LearningToRank模型(PaddlePaddle/models/ltr),随后便开始了对Paddle的学习。目前,遇到的最大问题是一轮训练(one pass)时间过长。
使用相同数据规模(7亿样本)、相同特征方案(离散化后的0/1稀疏特征3亿维)、相同cpu集群(40个节点),使用owlqn或LBFGS做优化的传统LR模型# 训练60轮平均耗时2小时,而使用Paddle实现的LR模型仅# 训练一轮就需要超过3小时。
以下是我使用Paddle实现的LR模型:
优化算法选用Adam,配置代码如下:
对于上面这个没有任何隐层的模型,目前的训练耗时已经无法接受,导致使用LearningToRank模型替代传统LR模型的方案也无法继续开展。
另外,我还在本地使用小数据集做了测试(1500W样本,feature_dim=3亿,batch_size=5W),及时小数据集训练一轮的平均耗时也仍在1.5个小时。
我需要请教的问题主要有三个: 1)是什么原因导致我模型训练耗时这么长?是否与我的模型配置有关? 2)从我的实验结果上来看,Paddle训练一轮的耗时基本是传统owlqn实现的四五十倍。这是正常的现象吗?... 3)对于大规模离散数据的模型优化,Paddle同学们有什么建议吗?