旧PyTorch版本在RTX3080Ti上运行失败的解决方案咨询
解决RTX3080Ti运行PyTorch1.6项目的CUDA兼容问题
问题核心
RTX3080Ti的CUDA算力为sm_86,而PyTorch1.6官方预编译包仅支持到sm_75,且RTX30系列不兼容CUDA11以下版本,因此无法通过降级CUDA或使用官方预编译包解决,必须从源码编译PyTorch1.6并指定适配sm_86算力。
方案一:Docker环境下编译适配sm_86的PyTorch1.6
1. 编写Dockerfile
基于支持CUDA11.0的Ubuntu镜像(RTX30系列最低兼容CUDA11.0),构建包含Python3.8及编译依赖的环境:
# 基础镜像:CUDA11.0 + cuDNN8 + Ubuntu20.04 FROM nvidia/cuda:11.0.3-cudnn8-runtime-ubuntu20.04 # 设置环境变量 ENV DEBIAN_FRONTEND=noninteractive ENV PYTHON_VERSION=3.8 # 安装系统依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ git \ cmake \ libopenmpi-dev \ libssl-dev \ python${PYTHON_VERSION} \ python${PYTHON_VERSION}-dev \ python${PYTHON_VERSION}-distutils \ && rm -rf /var/lib/apt/lists/* # 设置Python3.8为默认 RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python${PYTHON_VERSION} 1 \ && update-alternatives --install /usr/bin/python python /usr/bin/python${PYTHON_VERSION} 1 # 安装pip RUN curl https://bootstrap.pypa.io/get-pip.py | python # 克隆PyTorch1.6源码并切换到指定版本 RUN git clone --depth 1 --branch v1.6.0 https://github.com/pytorch/pytorch.git /pytorch \ && cd /pytorch && git submodule update --init --recursive # 设置编译参数:指定sm_86算力、CUDA版本等 ENV TORCH_CUDA_ARCH_LIST="8.6" ENV CUDA_HOME="/usr/local/cuda-11.0" ENV CMAKE_PREFIX_PATH="$(dirname $(which conda))/../" # 编译并安装PyTorch1.6 RUN cd /pytorch && python setup.py install --verbose # 清理编译缓存 RUN rm -rf /pytorch # 复制项目代码并安装依赖(替换为你的项目路径) COPY . /qafacteval WORKDIR /qafacteval RUN pip install -r requirements.txt
2. 构建并运行容器
# 构建镜像 docker build -t qafacteval-pytorch1.6-sm86 . # 运行容器(需确保Docker已配置NVIDIA runtime) docker run --gpus all -it qafacteval-pytorch1.6-sm86
方案二:Conda/Venv环境下编译适配sm_86的PyTorch1.6
1. 创建并激活Python3.8环境
Conda版本:
conda create -n qafacteval python=3.8 conda activate qafacteval # 安装CUDA11.0 toolkit(conda提供的兼容包) conda install -c conda-forge cudatoolkit=11.0 cudnn=8.0
Venv版本:
python3.8 -m venv qafacteval-venv source qafacteval-venv/bin/activate # 安装CUDA11.0 toolkit(需手动从NVIDIA官网下载安装,确保环境变量CUDA_HOME指向安装路径)
2. 安装编译依赖
pip install cmake ninja
3. 克隆并编译PyTorch1.6
# 克隆源码并切换版本 git clone --depth 1 --branch v1.6.0 https://github.com/pytorch/pytorch.git cd pytorch git submodule update --init --recursive # 设置编译参数 export TORCH_CUDA_ARCH_LIST="8.6" export CUDA_HOME="/usr/local/cuda-11.0" # Conda环境可设置为$CONDA_PREFIX/lib/python3.8/site-packages/cuda # 编译安装 python setup.py install --verbose
4. 安装项目依赖
cd /path/to/qafacteval pip install -r requirements.txt
注意事项
- 编译过程耗时较长,需确保机器有足够的CPU核心和内存(建议至少8核16G内存)。
- 若编译中出现依赖缺失,可根据错误提示补充安装对应库(如
libtorch相关依赖)。 - 验证安装:运行
python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_capability())",应输出True和(8, 6)。
内容的提问来源于stack exchange,提问作者Osmosis D. Jones
相关产品推荐
相关产品推荐

