IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Ubuntu 22.04 安装TensorFlow并启用GPU

    怕刺发表于 2023-11-09 07:35:53
    love 0

    TensorFlow不知道又干了什么,最近脑子抽风,删掉了conda相关的安装教程。只剩下pip和docker了,而pip安装在Ubuntu22.04上需要额外的折腾才能正常跑起来。下面把conda安装教程记录一下。

    安装miniconda

    具体的步骤可以找其他教程,其实一路确认就可以了。

    curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -o Miniconda3-latest-Linux-x86_64.sh
    bash Miniconda3-latest-Linux-x86_64.sh

    创建conda环境

    conda create --name tf python=3.9 # 环境名称为tf,python版本为3.9
    conda deactivate # 脱离原始conda环境
    conda activate tf # 进入刚才创建的tf环境

    设置GPU环境

    nvidia-smi # 查看是否安装了驱动

    安装CUDA和cuDNN

    conda install -c conda-forge cudatoolkit=11.2.2 cudnn=8.1.0

    配置自动激活工具,省得后面环境掉了还不知道

    mkdir -p $CONDA_PREFIX/etc/conda/activate.d
    echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/' > $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh

    安装TensorFlow

    pip install --upgrade pip
    pip install tensorflow==2.11.* # 注意不要用conda安装,会有一堆奇怪的bug

    确认GPU是否正常工作 先看完后面的Ubuntu 22.04配置再执行命令

    python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"

    正常工作会出现下列内容,机器有几张显卡就会出现几个物理设备。

    [
      "PhysicalDevice(name='/physical_device:GPU:0'",
      "device_type='GPU')",
      "PhysicalDevice(name='/physical_device:GPU:1'",
      "device_type='GPU')",
      "PhysicalDevice(name='/physical_device:GPU:2'",
      "device_type='GPU')",
      "PhysicalDevice(name='/physical_device:GPU:3'",
      "device_type='GPU')"
    ]

    Ubuntu 22.04的问题

    因为系统原因,直接上述的GPU检查,系统无法找到显卡,或者报错:

    Can't find libdevice directory ${CUDA_DIR}/nvvm/libdevice.
    Couldn't invoke ptxas --version
    InternalError: libdevice not found at ./libdevice.10.bc [Op:__some_op]

    需要按照以下步骤安装nvcc并正确配置:

    conda install -c nvidia cuda-nvcc=11.3.58 # 安装nvcc
    mkdir -p $CONDA_PREFIX/etc/conda/activate.d # 配置XLA cuda文件夹
    printf 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/\nexport XLA_FLAGS=--xla_gpu_cuda_data_dir=$CONDA_PREFIX/lib/\n' > $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
    source $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
    mkdir -p $CONDA_PREFIX/lib/nvvm/libdevice # 复制所需文件
    cp $CONDA_PREFIX/lib/libdevice.10.bc $CONDA_PREFIX/lib/nvvm/libdevice/


沪ICP备19023445号-2号
友情链接