本博客将介绍深度学习工作中最常用的 Linux 指令,包括 环境管理、文件操作、数据处理、GPU 监控 等方面,并附带示例。

常用的相关指令,故记录下来,有不全的欢迎提出补充~

1. 服务器环境管理

1.1 远程连接服务器

当我们使用云服务器(如 AWS、Google Cloud)或实验室的 Linux 服务器时,通常需要 SSH 远程连接

ssh 用户名@服务器IP

示例:

用户名为alice,服务器IP为100.100.1.100

ssh alice@100.100.1.100

如果服务器使用了 非默认端口(如 2222),需要指定端口:

ssh -p 2222 alice@192.168.1.100

1.2 在后台运行 Python 代码

如果关闭 SSH 连接,程序会终止。以下命令可以让代码在 后台持续运行

nohup python train.py > output.log 2>&1 &
  • nohup:即使退出 SSH,也能继续运行程序。
  • > output.log 2>&1:将 标准输出和错误日志 保存到 output.log
  • &:将进程放入后台

查看后台运行的任务:

ps aux | grep python

如果想终止进程,可以使用:

kill -9 进程ID

2. 文件和数据管理

2.1 下载数据

(1) 使用 wget 下载文件
wget https://example.com/dataset.zip

如果需要 断点续传

wget -c https://example.com/dataset.zip
(2) 使用 scp 传输数据

从本地传输数据到服务器:

scp 本地文件 用户名@服务器IP:目标路径
scp dataset.zip alice@192.168.1.100:/home/alice/

从服务器下载数据到本地:

scp 用户名@服务器IP:远程文件 本地路径
scp alice@192.168.1.100:/home/alice/dataset.zip .

如果数据很大,推荐使用 rsync

rsync -avP dataset/ alice@192.168.1.100:/home/alice/
  • -a:保留文件属性(权限、时间等)。
  • -v:显示详细信息。
  • -P:显示进度条,并支持断点续传。

2.2 解压/压缩数据

参考:AutoDL 帮助文档

如无特殊需要,推荐使用.tar格式的包,因为该格式仅打包不会压缩,而多数情况图片和视频等都无法进一步压缩,因此仅打包不压缩是速度最快、消耗资源最少的打包和解压方式。

由于安装的zip、rar包等都只能解压或压缩某一种压缩包,这里提供一个小工具,支持解压格式:.tar, .zip, .rar, .7z,支持压缩/打包格式:.zip.tar

# 下载安装工具

curl -L -o /usr/bin/arc http://autodl-public.ks3-cn-beijing.ksyun.com/tool/arc && chmod +x /usr/bin/arc

# 压缩/打包

arc compress xxx.zip path/to/directory

# 解压

arc decompress xxx.zip

或者解压到指定目录

arc decompress xxx.zip path/to/directory

(1) 压缩zip和解压zip

# 压缩。如果没有zip命令,安装命令:apt-get update && apt-get install -y zip
zip -r <自定义压缩包名称>.zip <待压缩目录的路径>

# 解压。如果没有zip命令,安装命令:apt-get update && apt-get install -y unzip
unzip  <待解压压缩包名称>.zip -d <解压到哪个路径>

(2) 压缩tar和解压tar

# 压缩(具体是指打包,未压缩,非常推荐这种方式,因为压缩/解压都耗时,但是图片等都无法再压缩)
tar -cf <自定义压缩包名称>.tar <待压缩目录的路径>

# 解压
tar -xf <待解压压缩包名称>.tar -C <解压到哪个路径>

(3) 压缩tar.gz和解压tar.gz

# 压缩
tar -czf <自定义压缩包名称>.tar <待压缩目录的路径>

# 解压
tar -xzf <待解压压缩包名称>.tar -C <解压到哪个路径>

(4)解压rar

# 不推荐使用rar的包,linux下非常不常用
# 解压。如果没有zip命令,安装命令:apt-get update && apt-get install -y unrar
unrar e <待解压压缩包名称>.rar

3. GPU 资源管理

3.1 查看 GPU 资源

当深度学习任务需要 CUDA GPU 运行时,我们可以使用 nvidia-smi 监控显卡状态:

nvidia-smi
  • Memory-Usage:显存使用情况
  • Utilization:GPU 计算负载
  • Processes:运行的进程

如果要实时监控:

watch -n 1 nvidia-smi

-n 1 表示 每秒更新一次

3.2 限制 GPU 使用

有时候,我们不希望占用所有的 GPU,而是指定某些 GPU 运行任务:

CUDA_VISIBLE_DEVICES=0 python train.py

如果有多个 GPU(如 0 和 2),可以这样:

CUDA_VISIBLE_DEVICES=0,2 python train.py

3.3 终止占用 GPU 资源的进程

如果某个 Python 进程占用了 GPU 但需要终止:

nvidia-smi

找到进程 PID,然后:

kill -9 进程ID

4. Python 虚拟环境管理

常使用的是conda

4.1 使用 Conda

创建一个新的 Conda 虚拟环境:

命名为myenv(根据实际情况自己取)

python版本也需根据需求更改

conda create -n myenv python=3.8

激活环境:

conda activate myenv

安装 PyTorch(此处需要在以下网站找到适合自己GPU的版本!):

Previous PyTorch Versions | PyTorch

conda install pytorch torchvision torchaudio -c pytorch

退出环境:

conda deactivate

删除环境:

conda remove -n myenv --all

查看已有环境

conda info --env

查看安装的库

conda list

5. 调试

5.1 查看 CPU 进程

如果 CPU 负载过高:

top

5.2 查看磁盘空间

df -h

示例输出:

5.3 查看文件夹大小

du -sh 文件夹名

6. 如何使用HF-Mirror

深度学习常需要用到huggingface的模型和数据集

参考的教程:如何使用HF-Mirror🌟

6.1 方法一:网页下载

在本站搜索,并在模型主页的Files and Version中下载文件。

6.2 方法二:huggingface-cli

huggingface-cli 是 Hugging Face 官方提供的命令行工具,自带完善的下载功能。

1. 安装依赖

pip install -U huggingface_hub

2. 设置环境变量

export HF_ENDPOINT=https://hf-mirror.com

建议将上面这一行写入 ~/.bashrc

3.1 下载模型

huggingface-cli download --resume-download gpt2 --local-dir gpt2

3.2 下载数据集

huggingface-cli download --repo-type dataset --resume-download wikitext --local-dir wikitext

6.3 方法三:使用 hfd

hfd 是 huggingface 专用下载工具,基于成熟工具 aria2,可以做到稳定高速下载不断线

1. 下载hfd

wget https://hf-mirror.com/hfd/hfd.shchmod a+x hfd.sh

2. 设置环境变量

export HF_ENDPOINT=https://hf-mirror.com

3.1 下载模型

./hfd.sh gpt2

3.2 下载数据集

./hfd.sh wikitext --dataset

7.AutoDL内置 学术资源加速

7.1 学术加速

参考:AutoDL 帮助文档

以下为可以加速访问的学术资源地址:

  • github.com
  • githubusercontent.com
  • githubassets.com
  • huggingface.co

如果在终端中使用:

source /etc/network_turbo

如果是在Notebook中使用:

import subprocess
import os

result = subprocess.run('bash -c "source /etc/network_turbo && env | grep proxy"', shell=True, capture_output=True, text=True)
output = result.stdout
for line in output.splitlines():
    if '=' in line:
        var, value = line.split('=', 1)
        os.environ[var] = value

7.2 取消学术加速

如果不再需要建议关闭学术加速,因为该加速可能对正常网络造成一定影响。

unset http_proxy && unset https_proxy

如果你有其他的 Linux 常用指令,欢迎分享!

8.参考

如何使用HF-Mirror🌟

AutoDL帮助文档

Logo

「智能机器人开发者大赛」官方平台,致力于为开发者和参赛选手提供赛事技术指导、行业标准解读及团队实战案例解析;聚焦智能机器人开发全栈技术闭环,助力开发者攻克技术瓶颈,促进软硬件集成、场景应用及商业化落地的深度研讨。 加入智能机器人开发者社区iRobot Developer,与全球极客并肩突破技术边界,定义机器人开发的未来范式!

更多推荐