Ser*_*hiy 7 performance theano keras theano-cuda
我正在进行强化学习任务,并决定使用keras NN模型进行Q值近似.这种方法很常见:在每次操作之后,奖励存储在内存重放数组中,然后我从中获取随机样本并使用新数据拟合模型state-action => reward+predicted_Q(此处有更多详细信息).为了进行训练,必须为训练集中的每个项目预测Q值.
脚本运行速度非常慢,所以我开始调查.分析表明_predict_loop方法占用了56,87%的累积时间:
它看起来很奇怪,因为预测只是一种单向传播.只是一组数字的一次性乘法.我使用的模型非常简单:8个输入,隐藏层上5个节点,1个输出.
我已经安装并配置了CUDA,运行了一些示例测试,它显示了GPU的使用,我也可以看到巨大的GPU负载.当我运行我的代码时 - 有一条消息:"使用gpu device 0:GeForce GT 730",但我可以看到GPU负载非常低(大约10%).
预测功能花费这么多时间是正常的吗?有没有办法使用GPU进行此计算?
看起来NN的大小太小而无法充分利用GPU.通常,只有当输入/隐藏/输出层大小大于200~500(取决于实现代码)时,GPU才比多核CPU快.
然而,你的NN的大小只有8/5/1,这意味着大部分时间花费在GPU开销上,如CUDA内核启动,PCIe数据传输等.在这种情况下,调用次数是决定因素的主要因素.训练时间.为了加快速度,您可能需要在CPU上训练模型,并使用编程语言(如C/C++)来降低开销.
| 归档时间: |
|
| 查看次数: |
8444 次 |
| 最近记录: |