【conda】使用 conda 安装的 cuda-toolkit 时,安装的版本与指定版本不一致

【conda】使用 conda 安装的 cuda-toolkit 时,安装的版本与指定版本不一致

  • [1 问题描述](#1 问题描述)
  • [2 channel 介绍](#2 channel 介绍)
    • [2.1 conda-forge](#2.1 conda-forge)
    • [2.2 nvidia](#2.2 nvidia)
      • [2.2.1 cuda-toolkit](#2.2.1 cuda-toolkit)
  • [3 原因](#3 原因)
  • [4 解决方法](#4 解决方法)

1 问题描述

参考博客: Link

与参考博客的问题相似,我本机是 cuda 11.8,使用 conda 安装 cuda-toolkit 12.1,但最终 nvcc -V 显示为 12.6

执行 conda list 后发现安装 cuda 相关的包来自不同的 channel:

  • nvidia
  • nvidia/label/cuda-12.1.0
  • conda-forge

2 channel 介绍

2.1 conda-forge

参考文档: Link

conda-forge 是一个社区项目,为各种软件提供 conda 包,所有 conda-forge 包都可以在这里找到: Link

2.2 nvidia

nvidia 的所有包都可以在这里找到: Link

2.2.1 cuda-toolkit

安装 cuda-toolkit 后会改变虚拟环境中的 cuda 版本,所有版本 cuda-toolkit 的 conda channel: Link

如果要指定版本安装,应该选择相应的 channel,否则会安装最新的版本。

3 原因

参考文档: Link

我使用 .yml 文件来创建环境并安装各个包

bash 复制代码
conda env create -f /path/to/environment.yml

下面是我初始的 .yml 文件内容:

yaml 复制代码
channels:
  - pytorch
  - nvidia
  - nvidia/label/cuda-12.1.0
  - conda-forge
  - defaults
dependencies:
  - python=3.10
  - faiss-gpu=1.8.0
  - cuda-toolkit=12.1
  - pytorch=2.1.2
  - pytorch-cuda=12.1 
  - torchvision=0.16.2

默认情况下,conda 会优先选择来自高优先级 channel 的包,所以由于优先级的问题,导致 cuda-toolkit 中各个包安装的来源不同,版本不一致。

4 解决方法

  1. 删除原环境
bash 复制代码
conda remove -n xxx --all
  1. 修改 .yml 文件,将 nvidia/label/cuda-12.1.0 的优先级提前
yml 复制代码
channels:
  - pytorch
  - nvidia/label/cuda-12.1.0
  - nvidia
  - conda-forge
  - defaults
dependencies:
  - python=3.10
  - faiss-gpu=1.8.0
  - cuda-toolkit=12.1
  - pytorch=2.1.2
  - pytorch-cuda=12.1 
  - torchvision=0.16.2
  1. 创建环境并安装
bash 复制代码
conda env create -f environment.yml

如果过程中出错造成中断,可以通过 update 继续安装

bash 复制代码
conda activate xxx
conda env update -f environment.yml

安装完成后,就是 cuda 12.1

其中 cuda-version 这个包的 channel 为 conda-forge 的原因是在 conda 的 nvidia/label/cuda-12.1.0 这个 channel 中找不到 cuda-version 12.1.0,所以在低优先级的 channel 检索并安装。

相关推荐
人类群星闪耀时2 小时前
深度学习在灾难恢复中的作用:智能运维的新时代
运维·人工智能·深度学习
机器懒得学习2 小时前
从随机生成到深度学习:使用DCGAN和CycleGAN生成图像的实战教程
人工智能·深度学习
烟波人长安吖~3 小时前
【目标跟踪+人流计数+人流热图(Web界面)】基于YOLOV11+Vue+SpringBoot+Flask+MySQL
vue.js·pytorch·spring boot·深度学习·yolo·目标跟踪
最好Tony3 小时前
深度学习blog-Transformer-注意力机制和编码器解码器
人工智能·深度学习·机器学习·计算机视觉·自然语言处理·chatgpt
四口鲸鱼爱吃盐5 小时前
Pytorch | 利用SMI-FGRM针对CIFAR10上的ResNet分类器进行对抗攻击
人工智能·pytorch·python·深度学习·机器学习·计算机视觉
wenzhangli75 小时前
探寻 OneCode 核心优势:MVVM 进阶与前后端协同之魅
深度学习·低代码·前端框架
一个处女座的程序猿6 小时前
LLMs之o3:《Deliberative Alignment: Reasoning Enables Safer Language Models》翻译与解读
人工智能·深度学习·机器学习
像污秽一样6 小时前
动手学深度学习-深度学习计算-1层和块
人工智能·深度学习
迪小莫学AI6 小时前
精准识别花生豆:基于EfficientNetB0的深度学习检测与分类项目
人工智能·深度学习·分类
源于花海8 小时前
一文快速预览经典深度学习模型(二)——迁移学习、半监督学习、图神经网络(GNN)、联邦学习
深度学习·迁移学习·图神经网络·gnn·联邦学习·半监督学习