Conda相关操作记录
Conda虚拟环境
- Conda虚拟环境的基本管理
1 |
|
各个虚拟环境之间是隔离的,体现在文件夹中,每个环境都被存放在$ANACONDA_PATH/envs/<env_name>
目录下。
- 关闭Conda base环境自动激活
1 |
|
Conda环境中配置cuda
在实际开发中,一种很常见的情况是我们的每个Conda环境对应不同的CUDA版本,例如cuda11.7、cuda11.8等等,不同的项目对应不同的cuda版本。我们希望做到是在不同Conda环境中管理相应的cuda。
Conda环境中安装相应版本的cuda
在不同Conda环境中管理相应的cuda,我们可以直接在对应Conda环境中安装对应版本的cuda即可。安装的方式就是直接通过conda install,不过具体的package分为两种。
第一种package指的是cudatoolkit和cudatoolkit-dev,可以通过如下命令安装:
1 |
|
- 这种方式需要额外安装相应版本的nvcc等dev工具,即这里的
cudatoolkit-dev
- 这种方式支持
cuda11.7
以及之前的版本 - 通过这种方式安装之后,对应的dev工具会被安装到Conda虚拟环境目录下的
/bin
中,可能需要手动export CUDA_HOME=xxx
第二种pacakge指的是cuda-toolkit,可以通过如下命令安装:
1 |
|
- 注意这里需要指定channel来优先指定使用对应channel,否则可能出现的情况是只有cuda-toolkit安装了对应版本,其他关联package都在default中下载了最新版本
- 这种方式同时包括了相应版本的nvcc等dev工具,无需额外安装。安装完成之后,可以使用
which nvcc
来查看具体使用的命令路径 - 这种方式支持
cuda11.3
以及之后的版本,不过推荐cuda11.7
以及之前使用第一种方法,cuda11.8
以及之后使用第二种方法
Conda环境与cuda路径绑定
该方式相对来说不推荐,更加推荐使用第一种方法。
下面的方法适用于已经在本机的/usr/local
中安装了多个版本的cuda,然后希望不同的Conda环境使用本机上不同的cuda。
如果我们在系统的.bashrc
文件中指定cuda路径,那么所有的项目环境都是使用相同的cuda版本,使用起来较为不方便。于是下面介绍一种能够让每个Conda环境对应不同cuda版本的方法。
- 找到需要绑定cuda版本的Conda环境的目录,该目录可以通过
conda env list
找到 - 找到对应目录之后,在环境目录中找到目录
etc/conda/activate.d/
,该目录如果不存在,则手动创建 - 在该目录下创建脚本
env_vars.sh
,按照下面的格式输入对应内容,指定cuda版本,在例子我们指定了cuda11.8
1 |
|
- 之后
source .bashrc
后,重新激活该环境,就可以切换版本
系统寻找要使用的cuda版本,实际上是通过path环境变量来寻找的。上面过程的原理实际上是,每次激活环境,都会执行该目录下的脚本,我们将cuda环境变量写在env_vars.sh脚本中,在每次激活环境的时候都会更新cuda路径到path环境变量,以起到绑定版本的效果。
由于原理仅是执行了一次脚本文件,所以如果在同一个shell中,我们先激活A环境(绑定了cuda版本a),退出后再次激活B环境(没有绑定cuda版本),此时B环境中使用的cuda版本仍然是a,而不是系统原先的版本,因为在这个过程中没有进行path环境变量的更新。
因此最佳实践是,如有需要的话,每个conda环境都手动绑定一个cuda版本。
同理,其他必要的path环境变量的更新也可以通过类似的操作来完成。
Jupyter配置
- jupyter支持Conda虚拟环境
默认情况下打开jupyter notebook是无法检测到Conda中的虚拟环境,需要进行如下配置。
1 |
|
- jupyter支持代码提示和补全
默认情况下,通过浏览器打开jupyter notebook是没有代码提示与自动补全功能的,可以参考xxx,通过安装相关插件来增加对应功能。
当然也可以通过在Pycharm中使用jupyter来解决。利用Pycharm打开.ipynb
文件,其中会自带代码提示和补全的支持。
服务器安装Anaconda
在为服务器安装Anaconda的时候,我们希望在系统中仅安装一个Anaconda,同时给多用户提供服务。
- 首先通过root用户或者sudo权限将Anaconda安装到一个公共的目录,例如
/opt
。在安装完成之后不执行conda init,后续手动修改环境配置。
1 |
|
- 创建用户组conda,并将Anaconda安装目录的权限都设置为该group。
1 |
|
- 目前仍然只有root用户可以使用Anaconda。如果新用户想要使用,则需要将其添加到conda用户组中,并修改自身home目录下的环境配置。
1 |
|
1 |
|
Jupyter Lab相关配置
在服务器上安装了Anaconda之后,base环境中自带了Jupyter Lab,我们可以启动服务器上的Jupyter Lab,并将其转发到本机的端口上,实现通过本地浏览器进行访问。
- 生成配置文件
jupyter
lab配置文件默认位于~/.jupyter/jupyter_notebook_config.py
,如果没有该文件,可以通过下面的命令生成:
1 |
|
- 修改登录密码
首先进入python交互式环境,通过下面方式生成密码:
1 |
|
根据提示进行密码设置,得到对应的hash表示。之后将该hash表示配置在jupyter lab配置文件中:
1 |
|
- 修改启动端口。启动端口的修改只需要修改配置文件即可
1 |
|
- 之后我们可以在本地启动jupyter lab。可以通过命令行直接启动,这里提供一个参考脚本
1 |
|
- 启动之后,可以通过ssh端口转发,然后在本地通过浏览器访问localhost来进入jupyter lab。注意这里端口要与上面修改的port相对应。
1 |
|