Ubuntu多卡服务器、普通用户安装paddlepaddle环境

该文详细介绍了在Ubuntu多卡服务器上,作为普通用户如何创建conda虚拟环境,无权限修改系统依赖的情况下安装paddlepaddle-gpu,包括选择合适的cuda版本,解决cuda和NCCL的依赖问题,以及设置环境变量以避免每次都手动配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前在本地的Ubuntu机器上安装paddle环境还挺顺利的,但是在多卡服务器上安装确遇到了很多问题,主要是服务器上已经安装了cuda等环境,普通用户也没有权限修改系统的依赖,多卡环境与单卡也有些区别。
主要参考资料就是paddle官方文档paddle安装说明

1. 建立conda虚拟环境

  1. 新建虚拟环境
conda create -n paddle_env python=3.9
  1. 进入虚拟环境
conda activate paddle_env

2. 安装paddlepaddle gpu版本

这里强调一下,一定要用conda安装,conda安装可以直接在当前环境下安装独立的cuda等依赖,这样就不会与系统预装的依赖环境冲突,pip安装就比较麻烦。

2.1 选择cuda版本

建议在终端输入nvidia-smi 查看系统的CUDA Version,选择比系统版本小的cuda版本,例如我当前机器的CUDA Version是11.5,所以我选择安装cuda 11.2
在这里插入图片描述

2.2 安装paddle

conda install paddlepaddle-gpu==2.4.2 cudatoolkit=11.2 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/ -c conda-forge 

3. 验证及排错

3.1 验证方法

安装完成后您可以使用 python3 进入 python 解释器,输入import paddle ,再输入 paddle.utils.run_check()

如果出现PaddlePaddle is installed successfully!,说明您已成功安装。

3.2 第一次报错:cuda问题

W0505 03:08:12.283917 3969672 dynamic_loader.cc:307] The third-party dynamic library (libcudnn.so) that Paddle depends on is not configured correctly. (error code is /usr/local/cuda/lib64/libcudnn.so: cannot open shared object file: No such file or directory)
  Suggestions:
  1. Check if the third-party dynamic library (e.g. CUDA, CUDNN) is installed correctly and its version is matched with paddlepaddle you installed.
  2. Configure third-party dynamic library environment variables as follows:
  - Linux: set LD_LIBRARY_PATH by `export LD_LIBRARY_PATH=...`
  - Windows: set PATH by `set PATH=XXX;

在这里插入图片描述

  • 解决方法
    查看环境安装的路径下,其实已经有了cuda相关的依赖:
    在这里插入图片描述
    但是目前还是寻找的系统目录,所以指定到环境目录就可以,在终端输入命令:
export LD_LIBRARY_PATH=[安装路径]/miniconda3/envs/paddle_env/lib

再次验证,可以看到刚才的错误已经不在了。

3.3 第二次报错:NCCL问题(多卡)

W0505 03:22:18.677640 3977430 dynamic_loader.cc:278] You may need to install 'nccl2' from NVIDIA official website: https://developer.nvidia.com/nccl/nccl-downloadbefore install PaddlePaddle.
[2023-05-05 03:22:18,678] [ WARNING] install_check.py:281 - PaddlePaddle meets some problem with 4 GPUs. This may be caused by:
 1. There is not enough GPUs visible on your system
 2. Some GPUs are occupied by other process now
 3. NVIDIA-NCCL2 is not installed correctly on your system. Please follow instruction on https://github.com/NVIDIA/nccl-tests 
 to test your NCCL, or reinstall it following https://docs.nvidia.com/deeplearning/sdk/nccl-install-guide/index.html
[2023-05-05 03:22:18,679] [ WARNING] install_check.py:289 - 
 Original Error is: (PreconditionNotMet) The third-party dynamic library (libnccl.so) that Paddle depends on is not configured correctly. (error code is libnccl.so: cannot open shared object file: No such file or directory)
  Suggestions:
  1. Check if the third-party dynamic library (e.g. CUDA, CUDNN) is installed correctly and its version is matched with paddlepaddle you installed.
  2. Configure third-party dynamic library environment variables as follows:
  - Linux: set LD_LIBRARY_PATH by `export LD_LIBRARY_PATH=...`
  - Windows: set PATH by `set PATH=XXX; (at /paddle/paddle/phi/backends/dynload/dynamic_loader.cc:305)

PaddlePaddle is installed successfully ONLY for single GPU! Let's start deep learning with PaddlePaddle now.

  • 解决方法
    下载安装NCCL,这个需要去NVIDIA 官网下载,下载地址
    在这里插入图片描述
    下载完解压
tar xvf nccl_2.17.1-1+cuda11.0_x86_64.txz

解压后可以直接把库拷贝到环境安装目录下
在这里插入图片描述
这时再次验证即可通过!

4. 设置环境变量,可以不用每次设置依赖目录

  • 如果要进入paddle环境,需要设置环境变量
export LD_LIBRARY_PATH=[安装路径]/miniconda3/envs/paddle_env/lib
  • 可以设置为每次打开终端,自动设置环境变量
vim ~/.bashrc

再最下边输入

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:[环境目录]/miniconda3/envs/paddle_env/lib

保存退出后,重新打开终端即生效。

### Docker 中实现分布式 GPU 计算的方法 在现代机器学习和深度学习领域,利用个 GPU 进行分布式计算是一种常见的需求。通过 Docker 容器化技术,可以更方便地管理和部署这些复杂的分布式环境。以下是关于如何在 Docker 中配置并使用分布式 GPU 的详细介绍。 #### 1. 基础概念 分布式 GPU 计算是指将大规模的任务分解成若干子任务,在不同的 GPU 上运行,并最终汇总结果的过程。这种模式通常用于加速神经网络训练或其他高性能计算场景。为了支持这一功能,Docker 提供了 NVIDIA Container Toolkit 来管理 GPU 资源[^1]。 #### 2. 配置单机的分布式 GPU 环境 对于单台服务器上的个 GPU ,可以通过设置环境变量来控制进程间的通信方式以及分配给每个节点的工作负载: ```bash export NCCL_IB_DISABLE=1; export NCCL_P2P_DISABLE=1; NCCL_DEBUG=INFO \ python -m torch.distributed.launch \ --nproc_per_node=<number_of_gpus> \ --nnodes=1 \ --node_rank=0 \ --master_addr="localhost" \ --master_port=<port_number> \ train.py ``` 上述命令中的参数解释如下: - `--nproc_per_node` 表示每台设备启动少个进程。 - `--nnodes` 是参与整个作业的所有节点数(此处为单一主机)。 - `--node_rank` 当前节点在整个集群里的编号。 - `--master_addr` 和 `--master_port` 则定义了主控地址及其监听端口号[^5]。 #### 3. 创建适合的 Dockerfile 文件 构建自定义镜像时,需确保基础操作系统已安装必要的驱动程序和支持库。例如 PaddlePaddle 文档提供了详细的 Dockerfile 编写指南,可作为模板引入个人项目中[^2]: ```dockerfile FROM nvidia/cuda:11.0-base-ubuntu18.04 RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ build-essential \ cmake \ git \ wget \ ca-certificates \ libjpeg-dev \ libpng-dev \ curl \ vim \ nano \ unzip \ ffmpeg \ sox \ swig \ python3-pip \ python3-setuptools \ python3-wheel \ locales && \ rm -rf /var/lib/apt/lists/* ENV LANG C.UTF-8 ENV LC_ALL C.UTF-8 WORKDIR /workspace/ COPY requirements.txt . RUN pip3 install --upgrade pip && \ pip3 install -r requirements.txt CMD ["bash"] ``` 此脚本会拉取预装 CUDA 工具链的基础镜像,并进一步扩展其功能性以满足特定应用的需求。 #### 4. 启动带 GPU 支持的容器实例 当完成定制化的镜像制作之后,可通过下面这条语句激活相应的硬件资源访问权限: ```bash docker run --gpus all -it <image_name> ``` 这里的关键选项 `--gpus all` 就是用来授予内部应用程序完全操控物理显的能力^。 另外需要注意的是,如果希望外部能够连接至该服务,则应该指定具体的转发规则而不是简单依赖 `-P` 参数自动处理一切公开接口绑定事宜;因为后者可能会带来安全风险同时也缺乏灵活性[^3]. 最后一步就是按照之前提到过的 Python API 或者框架原生工具包所提供的机制去实际执行跨节点同步操作啦! ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值