在新服务器上配环境的 Cheat Sheet

| Views: | Total Words: 10k | Reading Time: 9 mins.

作为一个 CS 或者相关专业的研究者,在新的机器上配环境是一个非常经常遇到的情况,并且往往这些步骤都是重复而不好记的(总不能背那些 bash 命令吧!)。尤其是当笔者在微软实习的过程中,由于 Azure 租的机器都有时限,在机器过期时我就要把工作环境迁到新的机器上,一些东西就要重新开始。虽然大部分时间我都是快速网上查一下就知道怎么干了,但是我感觉把一些东西记下来好像也方便一些。因此这是一个 Cheat Sheet 性质的博客,会贴一些常用的步骤和 bash 命令。

我会持续在这里更新,当我遇到一些我感觉有必要记录下来的配环境步骤时,我就会把它贴在这里。

配置 Github SSH

首先需要机器上安装了 gitssh

  • 第一步,配置用户名和邮箱:
1
2
git config --global user.name "<your github username>"
git config --global user.email "<your email address>"

或者写在 .gitconfig 里。注意这里的邮箱会作为你 commit 里的信息,如果不是和你 Github 账号绑定的邮箱,应该不会算进你这个 Github 账号的 commit 数,同时头像会显示成白色的匿名头像。

  • 第二步,生成 ssh 公私钥匙。
1
ssh-keygen -t ed25519 -C "<your email address>"

可以用 -t 参数指定加密方式,默认是 rsa,个人比较推荐较短的 ed25519。这里的 -C 参数是 comment 的意思,也就是让你给这个 key 一个注解,不一定要是邮箱。不过在这个场景下我们用邮箱作为 comment。

在生成时,一般会问你要不要设置密语(passphrase)。我比较懒,一般不设置(直接按回车跳过)。如果设置了,之后每次访问私钥都需要输一遍。

  • 第三步,把公钥提交到 Github 上。
1
cat ~/.ssh/id_ed25519.pub

然后在 Github 网页端的 Setting - SSH / GPG Keys 里新建一个,把公钥贴过去就好。

搞完之后可以测试一下:

1
ssh -T [email protected]

配置深度学习环境

这里主要针对 N 卡用户。常用的深度学习环境的配置一般是 CUDA + PyTorch(Tensorflow 真不熟好吧)。不过为了让服务器好用一点,还需要配置一些比较边边角角的事情。

配置 Python 环境

一般来讲,我们会用 conda 包管理器(当然,还有很多别的,比如 pip、pdm、poetry 等等,但是 conda 的逻辑更适合科研人员一点),conda 的多环境可以方便地让我们在不同的 Python 版本以及对应的依赖之间切换。安装可以选择 Anaconda 或者 Miniconda,这边我推荐后者(更轻量化一点):

  • Miniconda 安装:Link

注意,一般来说安装完你需要进行一次 conda init,然后重启一次 shell。直到 bash 旁边出现 (base) 字样表示安装成功。

配置显卡驱动和 CUDA 环境

现在 CUDA 已经比较成熟了,只需要安装 Toolkit 就能配齐一整套东西,包括编译器 nvcc 等。关于 CUDA 的这些杂记有时间我大概会专开一篇来记录。

首先,先查看显卡驱动和 CUDA 版本对应关系:Link,通常是你需要什么版本的 CUDA(artifact 里写的) -> 你需要什么版本的驱动。如果你安装了显卡驱动,可以使用如下命令查看版本:

1
nvidia-smi

得到的结果一般长这样(在浏览器上看可能有点破碎)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 545.34 Driver Version: 546.26 CUDA Version: 12.3 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce GTX 1650 Ti On | 00000000:01:00.0 On | N/A |
| N/A 42C P5 7W / 50W | 1137MiB / 4096MiB | 33% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| No running processes found |
+---------------------------------------------------------------------------------------+

这里显示的 CUDA Version 指的是当前驱动支持的最高 CUDA 版本

安装驱动,首先要卸载旧版驱动。可以通过包管理器进行:

1
2
sudo apt-get remove --purge nvidia*
sudo apt autoremove

也可以用二进制文件进行:

1
2
# 一般在 /usr/bin 下
./nvidia-uninstall

卸载之后需要 reboot 机器一次。

然后下一步是安装新版驱动,一般直接使用包管理器安装即可:

1
sudo apt install nvidia-driver-530 # 530 是版本号

安装结束后使用 nvidia-smi 查看版本号即可。

关于 CUDA 安装,官网的链接有 CUDAToolkitcuDNN。不过其实现在安装 PyTorch 时可以帮你带上 cudatoolkit 和 cudnn 等等东西的安装,所以也可以跳过。

配置 PyTorch

PyTorch 一般直接使用 conda 安装即可。在官网选好版本会有命令给你复制:Link

不过如果 CUDA 版本比较非主流,可以指定安装时的 index 地址。官方提供的 whl 目录在这:Link。具体变成命令就是:

1
2
3
# 示例:安装 CUDA 12.1 的 torch
# torchvision 和 torchaudio 是 optional 的
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

如果你之前没安装 cuda toolkit 的话,

1
conda install pytorch torchvision torchaudio cudatoolkit=12.1 -c pytorch

(PS:现在似乎已经不用类似 CUDA_HOME 或者 CUDA_PATH 之类的环境变量了?不太确定)

安装完成之后可以检查一下版本是否对应:

1
2
3
4
5
6
7
8
9
10
# 查看cuda (这里的cuda版本指的是编译torch时用的版本)
import torch
torch.version.cuda

# 查看torch实际使用的运行时的cuda目录
import torch.utils.cpp_extension
torch.utils.cpp_extension.CUDA_HOME

# 查看是否可用
torch.cuda.is_available()