ubuntu下Anaconda环境安装GPU的pytorch(docker镜像)

文章讲述了在实验室环境中如何为团队成员分配Docker容器,包括基础环境配置、Anaconda的安装、PyTorch和CUDA的配置过程,以及遇到的Conda错误和解决方案,重点介绍了清华镜像源的使用和更换以确保GPU版本的PyTorch安装。

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

实验室需要给每个人分配docker的container环境,为了节省系统的空间,打算把anaconda和深度学习的开发环境配置好拉取镜像以省时间。

基础环境配置

apt更新了清华源
安装了基础环境
gcc
vim Linux文本编辑库
openssh-server ssh远程连接库
net-tools 包含ifconfig,netstat等指令
iputils-ping 包含ping指令
wget 下载文件指令
curl 网络请求指令
git 版本控制

annaconda配置

官网wget拉取linux的annaconda下载后,bash安装即可(因为实验室服务器没有梯子,个人是下载到了本地然后scp传输到了服务器)

pytorch,cuda,cudnn配置

起初使用annaconda自带的环境,每次配置时间过长,而且一直报错👇

CondaError: Downloaded bytes did not match Content-Length

在安装pytorch的时候安装到半路,显示CondaError: Downloaded bytes did not match Content-Length。

网上的解决方法是添加清华源的镜像,但我的已经是清华源镜像了,所以解决方法是把timeout放大,600还是不行,把时间延长到1000.0就成功安装了。命令如下:

conda config --set remote_read_timeout_secs 1000.0

但是这个解决方法并不是很有效果👆

后来网上查询清华镜像问题,很多都是不全的镜像,安装起来很容易装成cpu版本。

GPU的pytorch安装教程
👆最后采取的这一篇的安装方法。

conda安装踩坑

镜像源如果不全或者当天挂了,容易在找包的时候报错,
个人尝试这个源没问题👇 更换文件使用 vim ~/.condarc 然后把下面的这一坨更换覆盖了就行

channels:
  - defaults
show_channel_urls: true
channel_alias: http://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2

  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
custom_channels:
  conda-forge: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

想恢复源 把~/.condarc删除了
然后执行

换回默认源:conda config --remove-key channels

在安装pytorch的时候,首先
官网的推荐链接中
在这里插入图片描述
其中的 -c pytoch -c nvidia 建议去掉 因为有这个会默认按照annaconda的官网地址下载。
更换源之后
可以去搜索一下源是否能下载想使用的包

conda search pytorch
conda search cudatoolkit

下载的时候指令最好是 pytorch和cuda一起安装,要不然会默认安装cpu版pytorch

整体安装流程👇

安装完anaconda后,本地安装的cuda显示正常
在这里插入图片描述

然后换源操作
(base) root@finaltest:~# vim ~/.condarc

在这里插入图片描述

更换后保存退出。输入
conda info查看源已经被替换

在这里插入图片描述
conda search pytorch 看到cloud/pytorch 源已经换成功
在这里插入图片描述
在这里插入图片描述
很奇怪 换到这个镜像后可以找到pytorch-cuda了,直接使用了官网指令,记得去掉后面的-c
conda install pytorch torchvision torchaudio pytorch-cuda=11.8
在这里插入图片描述还是加载不上👆
在这里插入图片描述
在这里插入图片描述

打算安装这个cuda11.8的版本
(base) root@finaltest:~# conda install pytorch=2.1.0 pytorch-cuda=11.8
结果加载过慢,打算换成cudatoolkit
在这里插入图片描述
(base) root@finaltest:~# conda install pytorch=2.1.0 cudatoolkit=11.8.0

如果查询不到或者安装失败 可以看看这个教程 👇
GPU的pytorch安装教程

如果nvcc -V查询不到cuda,使用👇方法

加nvcc环境变量

接下来使用可以用以下指令复制环境,方便对于gpu的使用

conda create -n <new_conda_name> --clone bash

<think>好的,我现在需要帮助用户解决在同一个Docker镜像中同时使用Python 3和CUDA的问题,以及排查兼容性问题。首先,我得回忆一下Docker镜像构建的基本知识,特别是关于Python和CUDA的结合使用。 用户的需求很明确,就是要在镜像里同时支持Python 3和CUDA。这可能是因为他们需要运行深度学习框架,比如TensorFlow或PyTorch,这些框架通常依赖CUDA来加速计算。所以,我应该从选择合适的基础镜像开始考虑。 首先,CUDA的官方镜像通常已经包含了特定版本的CUDA驱动和工具包,而NVIDIA也提供了不同的镜像标签,比如runtime、devel等。用户需要根据实际需求选择,如果只是运行应用,runtime镜像可能就够了;如果需要编译CUDA代码,可能需要devel镜像。同时,这些镜像可能基于不同的操作系统,比如Ubuntu或CentOS,这会影响到后续安装Python的方式。 接下来是Python的安装。CUDA镜像可能已经预装了Python,但版本可能不符合用户的需求。例如,用户可能需要Python 3.8,而镜像自带的是3.6。这时候需要考虑如何安全地升级或安装指定版本的Python,同时不破坏原有的CUDA环境。可能需要使用APT包管理器(如果镜像是基于Ubuntu)或者从源码编译Python,但后者比较复杂,容易出错。 另一个可能性是使用conda环境。conda可以管理不同版本的Python和CUDA工具包,用户可以在Dockerfile中安装Miniconda或Anaconda,然后创建虚拟环境安装特定版本的Python和CUDA库。这可能更灵活,特别是当用户需要多个版本的Python或CUDA时。不过,这样可能会增加镜像的大小,而且需要处理conda的环境激活问题,在Dockerfile中需要正确设置PATH变量。 然后要考虑的是兼容性问题。CUDA版本和Python的深度学习框架版本必须匹配。例如,PyTorch 1.8可能只支持CUDA 11.1,而如果镜像中的CUDA是11.4,这可能会导致问题。用户需要检查他们使用的框架文档,确认支持的CUDA版本,并选择对应的基础镜像。此外,显卡驱动的版本也需要与CUDA版本兼容。不过,在Docker中,通常宿主机的驱动需要与容器内的CUDA版本匹配,这可能需要用户确保宿主机安装了正确的NVIDIA驱动。 构建镜像时的步骤可能包括:选择正确的基础镜像安装Python及所需依赖,安装CUDA相关的库,配置环境变量(如PATH、LD_LIBRARY_PATH),以及安装Python包。在Dockerfile中,每一个步骤都可能引入问题。例如,错误的环境变量设置可能导致CUDA库无法找到,或者Python包安装时编译出错。 接下来,我需要考虑如何验证镜像的正确性。用户可能需要运行一个测试脚本,检查Python版本,导入深度学习框架并验证CUDA是否可用。例如,在Python中执行`import torch; print(torch.cuda.is_available())`。如果返回False,就需要排查CUDA路径是否正确,库是否安装,或者版本是否匹配。 常见的兼容性问题可能包括:CUDA版本与框架不匹配,Python包未正确编译(例如,缺少CUDA头文件或库),环境变量未正确设置,或者宿主机驱动版本过低。此外,Docker的NVIDIA运行时是否安装正确也是一个关键点,用户需要安装nvidia-docker2并配置Docker使用NVIDIA运行时。 总结一下,解决步骤可能包括: 1. 选择合适的基础镜像,如`nvidia/cuda:11.3.1-runtime-ubuntu20.04` 2. 在Dockerfile中安装Python 3.8,可能需要添加PPA或使用conda 3. 安装所需的Python包,确保版本与CUDA兼容 4. 设置环境变量,确保CUDA路径正确 5. 构建镜像并运行测试脚本,验证CUDA可用性 在编写Dockerfile时,需要注意每个步骤的顺序,比如更新包列表、安装依赖、清理缓存以减少镜像大小。同时,使用多阶段构建可能有助于优化镜像大小,但可能会增加复杂度。 可能遇到的问题和解决方法: - 如果Python包找不到CUDA,检查LD_LIBRARY_PATH是否包含CUDA库路径,如`/usr/local/cuda/lib64` - 如果安装过程中出现依赖错误,可能需要安装额外的系统库,如`libcupti-dev`或`libcudnn8` - 如果宿主机无法识别GPU,检查nvidia-docker是否正确安装,运行容器时是否使用`--gpus all`参数 最后,需要确保用户了解如何正确运行容器,包括使用NVIDIA运行时和传递必要的参数。用户可能需要参考NVIDIA的官方文档或Docker的最佳实践来优化他们的配置。</think>在Docker镜像中同时使用Python 3和CUDA时,需重点关注基础镜像选择、版本匹配和环境配置。以下是具体方法和常见兼容性问题的排查步骤: --- ### 一、选择基础镜像 1. **官方CUDA镜像** 优先使用[NVIDIA官方CUDA镜像](https://hub.docker.com/r/nvidia/cuda)作为基础,例如: ```dockerfile FROM nvidia/cuda:11.8.0-runtime-ubuntu22.04 ``` 镜像标签中`runtime`表示仅包含运行库,`devel`包含开发工具。建议根据实际需求选择CUDA版本和操作系统[^1]。 2. **验证CUDA可用性** 在容器内运行以下命令验证CUDA是否识别GPU: ```bash nvidia-smi # 查看GPU状态 ``` --- ### 二、安装Python环境 1. **通过APT安装Python** 对于Ubuntu镜像: ```dockerfile RUN apt-get update && apt-get install -y python3 python3-pip ``` 2. **使用Miniconda管理环境** 若需多版本Python或复杂依赖: ```dockerfile RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh \ && bash miniconda.sh -b -p /opt/conda \ && rm miniconda.sh ENV PATH="/opt/conda/bin:$PATH" ``` --- ### 三、兼容性问题排查 1. **CUDA与Python包的版本匹配** - **PyTorch**:需匹配CUDA版本,例如CUDA 11.8对应`pip install torch==2.0.1+cu118` - **TensorFlow**:要求严格,如`tensorflow==2.10.0`仅支持CUDA 11.2[^2] 2. **环境变量配置** 确保CUDA库路径已加入`LD_LIBRARY_PATH`: ```dockerfile ENV LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH" ``` 3. **依赖缺失问题** 安装系统级依赖库: ```dockerfile RUN apt-get install -y libgl1 libglib2.0-0 libcudnn8 ``` --- ### 四、完整Dockerfile示例 ```dockerfile # 使用CUDA 11.8和Ubuntu 22.04 FROM nvidia/cuda:11.8.0-runtime-ubuntu22.04 # 安装Python和基础工具 RUN apt-get update && \ apt-get install -y python3 python3-pip git && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* # 配置CUDA环境变量 ENV LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH" # 安装PyTorch(需匹配CUDA版本) RUN pip3 install torch==2.0.1+cu118 --extra-index-url https://download.pytorch.org/whl/cu118 # 验证CUDA是否可用 COPY test_cuda.py /app/test_cuda.py CMD ["python3", "/app/test_cuda.py"] ``` --- ### 五、验证脚本示例 创建`test_cuda.py`: ```python import torch print(f"PyTorch CUDA可用性: {torch.cuda.is_available()}") print(f"检测到GPU数量: {torch.cuda.device_count()}") ``` --- ### 常见问题及解决 1. **`nvidia-smi`命令不可用** 确保宿主机已安装NVIDIA驱动,且运行容器时添加`--gpus all`参数: ```bash docker run --gpus all -it your_image ``` 2. **CUDA版本与Python包不匹配** 通过框架官网查询支持的CUDA版本,例如[PyTorch版本表](https://pytorch.org/get-started/previous-versions/)。 3. **库加载失败(如`libcudart.so.11.8`)** 检查`LD_LIBRARY_PATH`是否包含CUDA库路径,或重新安装对应版本的CUDA Toolkit。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值