【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 小时前
词向量与词嵌入
人工智能·深度学习·nlp·机器翻译·词嵌入
夏莉莉iy4 小时前
[MDM 2024]Spatial-Temporal Large Language Model for Traffic Prediction
人工智能·笔记·深度学习·机器学习·语言模型·自然语言处理·transformer
pchmi5 小时前
CNN常用卷积核
深度学习·神经网络·机器学习·cnn·c#
pzx_0015 小时前
【机器学习】K折交叉验证(K-Fold Cross-Validation)
人工智能·深度学习·算法·机器学习
造夢先森7 小时前
Transformer & LLaMA
深度学习·transformer·llama
神经美学_茂森7 小时前
神经网络防“失忆“秘籍:弹性权重固化如何让AI学会“温故知新“
人工智能·深度学习·神经网络
阿_旭7 小时前
【超详细】神经网络的可视化解释
人工智能·深度学习·神经网络
武乐乐~8 小时前
QARepVGG--含demo实现
深度学习
OpenCSG8 小时前
免部署|DeepSeek模型上线 CSGHub Serverless API|即刻免费试用
人工智能·深度学习·社区
CS_木成河9 小时前
【深度学习】预训练和微调概述
人工智能·深度学习·语言模型·微调·预训练