美文网首页
从头搭建神经网络模型环境

从头搭建神经网络模型环境

作者: cnwinds | 来源:发表于2023-04-01 11:32 被阅读0次

    本文档记录了从头开始搭建环境的过程,主要是中间遇到的问题以及解决方法。
    本文档安装的程序会尽量带上版本号,因为很多问题都是版本不匹配引起的。
    使用环境是Windows10系统。

    安装python3.7(略)

    安装pip(略)

    安装jupyter notebook

    pip install jupyter==1.0.0
    

    启动命令:

    jupyter notebook
    

    安装tensorflow

    pip install tensorflow-gpu==2.10.1 pandas
    

    支持GPU

    前提是你要有一块Nvidia的高性能显卡。主要是安装CUDA和cuDNN,可以按照你访问网站时的最新版本下载安装,两个程序版本是配套的就行。我这里安装的版本是可以和tensorflow 2.10.1 正常配合使用的。

    安装CUDA 12.1

    https://developer.nvidia.com/cuda-downloads
    安装目录默认在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1

    下载 cuDNN 8.8.1 for CUDA 12.x

    https://developer.nvidia.com/rdp/cudnn-download
    cuDNN的版本要和CUDA配套。解压出的bin目录内容复制进入C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin目录中。其实就是将所有的dll文件放入CUDA的bin目录中。

    问题汇总

    启动jupyter notebook后出现错误:ImportError: cannot import name 'soft_unicode' from 'markupsafe'

    解决方法:

    pip install MarkupSafe==2.0.1
    

    出现各种dll动态库无法加载的问题。

    解决方法:
    1、将C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin里面的所有dll都复制到C:\Windows\System32目录下
    2、将cuDNN压缩包里面bin目录下的dll文件都复制到C:\Windows\System32目录下

    出现错误:error: Can't find libdevice directory ${CUDA_DIR}/nvvm/libdevice

    解决方法:
    设置系统环境变量 XLA_FLAGS=--xla_gpu_cuda_data_dir="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1"
    注意里面的引号不能少。

    验证GPU是否能工作

    识别GPU

    import tensorflow as tf
    device_gpu = tf.config.list_physical_devices('GPU')
    print(device_gpu)
    
    [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
    

    如果数据不是空数组,说明GPU识别成功。

    调用GPU计算

    import tensorflow as tf
    gpus = tf.config.list_physical_devices("GPU")
    print(gpus)
    
    import time
    from contextlib import contextmanager
    
    @contextmanager
    def timer():
        start_time = time.perf_counter()
        yield
        end_time = time.perf_counter()
        print(f"Code block took {end_time - start_time:.6f} s to run")
    
    
    with timer():
        with tf.device("/gpu:0"):
            tf.random.set_seed(0)
            a = tf.random.uniform((10000,100),minval = 0,maxval = 3.0)
            b = tf.random.uniform((100,100000),minval = 0,maxval = 3.0)
            c = a@b
            tf.print(tf.reduce_sum(tf.reduce_sum(c,axis = 0),axis=0))
    
    
    with timer():
        with tf.device("/cpu:0"):
            tf.random.set_seed(0)
            a = tf.random.uniform((10000,100),minval = 0,maxval = 3.0)
            b = tf.random.uniform((100,100000),minval = 0,maxval = 3.0)
            c = a@b
            tf.print(tf.reduce_sum(tf.reduce_sum(c,axis = 0),axis=0))
    
    [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
    2.24953778e+11
    Code block took 0.443041 s to run
    2.24953778e+11
    Code block took 5.125858 s to run
    

    如果这个代码能正常执行,说明你的环境已经准备好了。

    GPU相关的命令行

    命令行 说明
    nvidia-smi 提供监控GPU使用情况和更改GPU状态的功能。GPU之nvidia-smi命令详解

    相关文章

      网友评论

          本文标题:从头搭建神经网络模型环境

          本文链接:https://www.haomeiwen.com/subject/ibmkddtx.html