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 版本。