conda的配置文件.condarc频道优先级和定义频道

先观察清华源的conda配置文件:

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  deepmodeling: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/

频道的结论

我没有看官方的文档,太多了,直接实践吧。
结论1:频道名其实就是目录名。比如:pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
在cloud目录下,必然有一个pytorch目录,这就是频道的实现方式,用目录名映射频道名。

频道的优先级

猜测就是开头的channel按出现的顺序定义的优先级。
比如我想定义:nvidia, pytorch, defaults这个优先级顺序,我就如下定义:

channels:
  - nvidia
  - pytorch
  - defaults

检测正确性

先把配置文件 .condarc 改为如下:

channels:
  - nvidia
  - pytorch
  - pytorch-lts
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
custom_channels:
  nvidia: https://mirrors.sustech.edu.cn/anaconda-extra/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

1、检查是否能被正确读取:conda config --show,如果在输出能看到上述配置,说明被正确读取了。
2、检查优先级是否正确,搜索一个多个频道都存在的包,打印出来,看看打印先后的顺序,就知道优先级了。
conda search cuda-cudart=12.4.127 --json
输出:

{
  "cuda-cudart": [
    {
      "arch": null,
      "build": "0",
      "build_number": 0,
      "channel": "https://mirrors.sustech.edu.cn/anaconda-extra/cloud/nvidia/linux-64",
      "constrains": [],
      "depends": [],
      "fn": "cuda-cudart-12.4.127-0.tar.bz2",
      "md5": "3f783f2954e59ff9f8df2b2dbc854266",
      "name": "cuda-cudart",
      "platform": null,
      "sha256": "5b229895b7684dfe8f923742036e15ebf9a6a0d304aa32e3792c12931a94c82b",
      "size": 203174,
      "subdir": "linux-64",
      "timestamp": 1710544194723,
      "url": "https://mirrors.sustech.edu.cn/anaconda-extra/cloud/nvidia/linux-64/cuda-cudart-12.4.127-0.tar.bz2",
      "version": "12.4.127"
    },
    {
      "arch": null,
      "build": "h99ab3db_0",
      "build_number": 0,
      "channel": "https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64",
      "constrains": [],
      "depends": [
        "__glibc >=2.17,<3.0.a0",
        "cuda-cudart_linux-64 12.4.127 hd681fbe_0",
        "cuda-version >=12.4,<12.5.0a0",
        "libgcc-ng >=11.2.0",
        "libstdcxx-ng >=11.2.0"
      ],
      "fn": "cuda-cudart-12.4.127-h99ab3db_0.conda",
      "legacy_bz2_md5": "bbd342944f4c340faf2a7c40afaf9981",
      "legacy_bz2_size": 21372,
      "license": "LicenseRef-NVIDIA-End-User-License-Agreement",
      "md5": "96db1f9a35b0ae5b516c4baebb57244a",
      "name": "cuda-cudart",
      "platform": null,
      "sha256": "2dead6f0b62112e0c270aeb4ff766559beaf85cae3bf480fa0a76ecf2c78988b",
      "size": 21378,
      "subdir": "linux-64",
      "timestamp": 1714768620619,
      "url": "https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/cuda-cudart-12.4.127-h99ab3db_0.conda",
      "version": "12.4.127"
    }
  ]
}

加入参数 --json 就是为了输出更全的信息,看到 南方科技大学的频道在前,默认频道在后,说明正确设置了优先级。

配置修改说明

默认频道有 3 个,分别是 main,r,msys2应该是对应 python语言,r语言,msys2系统的包。
我是 ubuntu24.04 系统,r 和 msys2 暂时不用,删掉。

自定义频道,保留pytorch,pytorch-lts,其他都暂时用不到,删掉。

注意:清华源单独为 pytorch 开辟一个频道,和清华源的默认频道是有区别的,目录是不一样的。

分析 pytorch 的安装命令

conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia

pytorch, torchvision, torchaudio这三个包在 pytorch 频道内查找安装。
pytorch-cuda=12.1 这是针对pytorch包做个特别说明,要求安装 使用 cuda 12.1编译的pytorch包。
如果系统已经存在cuda 12.1 及以上版本时,被cuda 12.1编译的pytorch显然有更优的性能。

验证pytorch-cuda=12.1

搜索 12.1 找到对应的包

(torch) logic@PC:~$ conda search pytorch-cuda=12.1
Loading channels: done
# Name                       Version           Build  Channel             
pytorch-cuda                    12.1      ha16c6d3_5  pytorch    

搜索 12.5 没有找到对应的包

(torch) logic@PC:~$ conda search pytorch-cuda=12.5                                                                                                                                      
Loading channels: done                                                                                                                                                                  
No match found for: pytorch-cuda=12.5. Search: *pytorch-cuda*=12.5                                                                                                                      
                                                                                                                                                                                        
PackagesNotFoundError: The following packages are not available from current channels:                                                                                                  
                                                                                                                                                                                        
  - pytorch-cuda=12.5  

所以说,编译 pytorch 的 cuda 环境最新的是 12.1 版本。

posted @ 2024-06-08 10:57  立体风  阅读(365)  评论(0编辑  收藏  举报