再也不用重复下pytorch和cudatoolkit——Conda的多用户使用的合理配置
相信大家在使用conda的时候都有过一个痛点,多个用户在使用conda的时候,明明别人已经安装过的包,自己安装包的时候还要再下载一遍,又浪费时间,又浪费空间。
大多数conda在多用户的场景下,一般要么是每个用户装一遍conda,要么是装一个conda,每个用户初始化一遍。但是这样都没法共享已经下载的包,不能直接链接已经安装过的包。这篇文章就是解决这一个痛点。
这个配置能达到以下效果,一个服务器上安装一个conda,所有用户创建的环境在自己的home下,新安装下载的包会存在conda下的pkgs里,如果用相同的包不会重复下载而是会直接链接。base环境需要root权限才能修改。
配置步骤:
- 创建用户组(假定用户组名users)
2. root安装conda,保证conda安装的硬盘和用户home的硬盘一样
3. conda安装目录(假定/usr/local/conda)修改用户组从属到users
sudo chgrp -R users /usr/local/conda
4. conda下的envs恢复用户组从属到root
sudo chgrp root /usr/local/conda/envs
5. 修改conda下的pkgs的所有文件夹的权限 g+s g+x
sudo find /usr/local/conda/pkgs/ -type d -exec chmod g+s {} \;
sudo find /usr/local/conda/pkgs/ -type d -exec chmod g+x {} \;
6. 修改conda下的pkgs的所有文件权限 g+w
sudo chmod -R g+w /usr/local/conda/pkgs/
7. 对于一个在users里的用户,使用安装的conda初始化
/usr/local/conda/bin/conda init
8. 所有用户的home下的.condarc源设置一样
遇到过很多问题测试了很多次,虽然不能保证这个配置步骤是最小步骤,但是确实是测试成功的步骤。自己测试安装最新的pytorch,第二个用户安装可以省略下载步骤直接链接安装。
这其中主要原理是,conda中主要的两个目录的pkgs和envs的权限会决定用户最后使用的路径。用户如果无法获取conda目录下的pkgs和envs的权限,会在home下面的.conda里面创建pkgs和envs来保存用户自己安装的包和自己创建的环境,其他的用户是无法获取的。反之,用户可以获取conda目录下的pkgs和envs的权限,就会使用原生的路径,这个路径是所有用户都可以获取的。