跑模型GPU加速没搞定?没关系,只要你量不太大,试试CPU加速也不错!

发布时间:2024年01月06日

Tensorflow

嗯嗯,是的,没错,都对,就是搞不定哈?我相信任何一个捅咕deep learning的人都与这个Tensorflow渣渣做过非常痛苦的斗争。

我的训练集其实并不大,最原始的代码是用tensorflow == 2.15写完的,这个处理给我埋下了一个巨大的雷(隐患)。随着CQF的课程慢慢临近尾声,我的训练集是越来越大。想尝试的东西也是越来越多。从最开始的单一数据模型,进行加工后来到了多输入单一输出模型。这样的量似乎好像挺多的,但是由于自己的操作不当和学习不够仔细,给自己引入的一个误区就是:GPU加速也许能给我提供质的飞跃。

是的没错,GPU的确能给任何人带来质的飞跃,但是我的训练集真的有慢到一定要用GPU么?答案其实是否定的。我的数据集是从2015年开始的,哪怕是10个特征,数据切割好后撑死了也就500万,能多大?!

我在Tensorflow上遇到的问题

版本和Bug让我痛不欲生(1周)

目前来讲,想在Windows上进行GPU加速,你不仅仅要严格安装CUDA,并配备相对应的CUDNN库,还不能使用大于2.10版的Tensorflow,也就是说后期的修正都和我没关系了,我的代码就出现了很多问题。

  1. 自定义Attention Class需要把get_config搞定,否则报错;
    • 解决方法是在Class后面要进行get_config的编写。
  2. 如果你引入了LSTM模组,很有可能导致模型不开始训练,卡在epoch 1,不报错,不声明,啥都没有就卡着;
    • 解决方法是将CUDNN升级到8.9.6.55版本,才能够正常训练。
  3. 如果你引入了学习率梯度下降Class,你会遇到ValueError: Attempt to convert a value (<keras.optimizers.schedules.learning_rate_schedule.ExponentialDecay object at 0x00000247A305AD60>) with an unsupported type (<class 'keras.optimizers.schedules.learning_rate_schedule.ExponentialDecay'>) to a Tensor.
    • 解决方法是,对不起解决不了,翻遍了整个互联网,没有答案,就是tensorflow的一个严重bug,主要是因为 None Value 转 Tensor 的一个机制出现了问题,很多Class类都会出现这个问题,直到后期才修复的。但是我的代码是2.15版写的,对不起,再见,GPU和我基本上没啥关系了。

决定就用CPU了

Tensorflow 的GPU和CPU在2.10版后进行了分家,说实话,给学习者带来了很多的困扰和烦恼。我也不是什么CS专业的技术大咖,我只是一个金融专业的普通从业者而已,真让我天天去面对Linux,我也吃不消,那里的问题更丰富多彩。咬着牙就用CPU的最新版本咯。

CPU也是可以加速的

大家可以在跑代码之前可以进行这些操作:

import tensorflow as tf
import os
tf.config.set_soft_device_placement(True)
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
os.environ['TF_ENABLE_ONEDNN_OPTS'] = '1'
os.environ['TF_ENABLE_MKL_NATIVE_FORMAT'] = '1'
os.environ['TF_ONEDNN_USE_SYSTEM_ALLOCATOR'] = '1'
os.environ['TF_MKL_OPTIMIZE_PEIMITIVE_MEMUSE'] = '0'
os.environ['OMP_NUM_THREADS'] = '24'   # 自己CPU有几个核心能用,自己看着办吧

这些参数具体是做什么的,在Intel的官网上是有明确表述的,可以自行学习。

另外我通过PROCESS LASSO软件也给python.exe进行了核心上的分配,发现挺有趣的,我的13900K这么设置还挺有效率的,希望对一些朋友有所启发。我也尝试过给更多的核心,边训练边加核心,似乎效果都没有这个好,不懂为啥。好像也不是越多越给力?!
PROCESS LASSO

结语

其实GPU也不是一定要用的,刚开始学习,CPU是够用的,真以为Intel是吃干饭的?哈哈哈哈~

文章来源:https://blog.csdn.net/weixin_44736043/article/details/135425467
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。