适合每位机器学习工程师的 40 多个 Linux 命令
Linux 是许多机器学习 (ML) 工作流程的支柱。凭借其强大的命令行界面,Linux 为工程师提供了流畅的 ML 体验所需的灵活性和控制力。
在过去的十年中,我逐渐理解了掌握各种 Linux 命令对于提高生产力、简化任务和有效管理资源的重要性。
无论您是设置环境、管理文件还是优化代码,Linux 都提供了强大的工具包来支持您的机器学习之旅。
本文涵盖了每个机器学习工程师都应该了解的基本 Linux 命令,以及为初学者设计的解释,但对于有经验的用户来说足够详细。
1. 浏览文件系统
使用 Linux 的一个主要部分是有效地浏览文件系统。作为机器学习工程师,您将不断处理数据文件、模型、代码和结果。掌握基本的导航命令至关重要。
cd(更改目录)
cd 命令用于更改当前工作目录,这是在目录之间移动时的基础。
cd /path/to/directory
ls(列出目录内容)
进入目录后,您可以使用 ls 命令查看当前位置有哪些文件或子目录。
ls
您可以使用 ls -l
获取详细列表,或使用 ls -a
显示隐藏文件。
ls -l
ls -a
pwd(打印工作目录)
使用 pwd 命令显示当前工作目录的绝对路径,当您需要确认您在文件系统中的位置时,这是一个有用的命令。
pwd
mkdir(创建目录)
作为机器学习工程师,您需要使用 mkdir 命令为不同的数据集、模型或实验结果创建目录。
mkdir new_directory
rm(删除文件和目录)
清理系统时,您可能需要使用 rm 命令删除文件或目录。
rm filename
rm -r directory_name
2. 文件管理与检索
使用数据、代码和模型需要处理大量文件。 Linux 提供了强大的工具来管理、搜索和操作文件。
查找(搜索文件)
find 是一个功能强大的命令,可根据名称、类型或修改日期等特定条件搜索文件和目录。
find /path/to/search -name "filename"
该命令在指定目录及其子目录中搜索名为“filename”的文件。
grep(搜索文件内部)
grep 命令允许您搜索文件内的模式,这在处理大型数据集或脚本、搜索文件内的特定术语时非常有用。
grep "pattern" file.txt
要在目录中递归搜索,请使用:
grep -r "pattern" /path/to/directory
cp(复制文件)
使用 cp 命令复制文件和目录,这在创建备份或复制数据集时很有用。
cp source_file destination_file
cp -r source_directory destination_directory
mv(移动或重命名文件)
mv 命令允许您在目录之间移动文件或重命名它们。
mv old_filename new_filename
mv file_name /path/to/destination/
tar(压缩文件)
使用tar命令来压缩和归档大型数据集和模型等文件。
tar -cvf archive.tar /path/to/directory
tar -xvf archive.tar
-c
选项创建存档,-x
提取存档,-v
使操作变得详细。
chmod(更改文件权限)
使用chmod命令更改代码或脚本的读、写和执行权限。
chmod 755 script.sh
这将为所有者设置读、写和执行权限,并为其他人设置读执行权限。
3.Linux进程管理
管理流程是优化机器学习工作流程的关键部分。 Linux 命令提供了监视、控制和管理计算机上运行的进程的工具。
ps(显示正在运行的进程)
ps 命令显示当前进程的快照。
ps aux
要查看与Python相关的进程,您可以使用:
ps aux | grep python
顶部(监控系统资源)
top 命令是一个实时任务管理器,可以显示 CPU、内存和进程信息,有助于监控长时间运行的 ML 任务期间的资源使用情况。
top
您可以使用 htop,这是一个更用户友好的版本(如果已安装)。
Kill(终止进程)
如果进程消耗太多资源或挂起,您可以在进程 ID (PID) 的帮助下使用 Kill 命令终止它。
kill PID
您可以使用 ps aux
或 top
查找 PID。
Nice/renice(管理进程优先级)
当运行资源密集型任务(例如训练机器学习模型)时,您可能需要使用 Nice 和 renice 命令来调整进程优先级。
nice -n 10 python train.py
renice -n -10 PID
nice 启动具有特定优先级的进程,而 renice 调整正在运行的进程的优先级。
4.Linux资源监控
高效的资源管理对于机器学习任务至关重要,因为其中许多任务的计算成本很高,但 Linux 提供了用于监控系统性能的工具。
免费(检查内存使用情况)
在处理大型数据集和模型时,内存使用情况是一个常见问题,但 free 命令可以让您概览系统的内存状态。
free -h
-h
标志使输出可读(即以 MB 或 GB 为单位显示)。
df(磁盘空间使用情况)
监视可用磁盘空间至关重要,尤其是在存储大型数据集时,并且 df 命令提供了已安装文件系统的磁盘空间使用情况的摘要。
df -h
iotop(监控磁盘 I/O)
如果您想监视磁盘 I/O,iotop 可以显示哪些进程使用磁盘最多。
sudo iotop
您需要使用 sudo 运行它才能完全访问磁盘信息。
nvidia-smi(监控 GPU 使用情况)
对于使用 GPU(例如 NVIDIA GPU)的机器学习工程师来说,nvidia-smi
命令提供有关 GPU 使用情况、内存使用情况和活动进程的关键信息。
nvidia-smi
它对于在深度学习模型训练期间跟踪 GPU 的状态至关重要。
5.Linux包管理
Linux 提供了包管理器来帮助安装、更新和删除软件包。作为一名机器学习工程师,您将不断安装库和框架。
apt(Debian/Ubuntu/Mint)
如果您使用的是基于 Debian 的发行版(例如 Ubuntu),那么 apt 是您安装软件的首选工具。
sudo apt update
sudo apt install python3-pip
yum/dnf(RHEL/Rocky/Alma Linux)
对于基于 Red Hat 的发行版(例如 CentOS 或 Fedora),yum 和 dnf 管理软件包。
sudo yum install python3-pip
OR
sudo dnf install python3-pip
pip(Python 包管理)
Python 是机器学习的首选语言,因此您经常使用 pip 命令来安装 TensorFlow、PyTorch 或 Scikit-learn 等库。
pip install tensorflow
conda(管理环境和包)
在使用多个 Python 环境时,conda 是一个出色的工具,可以帮助管理依赖项、库,甚至非 Python 包。
conda create --name ml_env python=3.8
conda activate ml_env
conda install tensorflow
6.Linux 网络命令
机器学习工程师经常在分布式环境中工作,这使得网络知识对于数据传输、集群管理或云计算等任务至关重要。
scp(安全复制)
要在机器之间安全地传输数据,请使用 scp 命令,这对于在远程服务器或分布式设置上工作的 ML 工程师特别有用。
scp local_file username@remote_host:/path/to/destination
rsync(远程同步)
rsync 是另一个用于在计算机或目录之间复制或同步文件的优秀工具,它比 scp 更快,因为它只传输更改。
rsync -avz /path/to/source/ username@remote_host:/path/to/destination
ssh(安全外壳)
使用 ssh 命令安全地连接到远程服务器,这对于远程执行脚本、管理模型或在云基础设施上运行实验至关重要。
ssh username@remote_host
7.Git 用于版本控制
Git 对于管理代码版本、与团队协作以及跟踪更改至关重要。
git clone(克隆存储库)
要开始使用 GitHub 上的项目,您可以克隆存储库。
git clone https://github.com/user/repository.git
git status(检查存储库状态)
在提交更改之前,请检查工作目录的状态。
git status
git commit(提交更改)
当您准备好将更改保存到存储库时,请使用 git commit 。
git commit -m "Commit message"
此命令提交您的更改,并带有一条描述性消息来解释修改的内容。
git Push(推送更改)
在本地提交更改后,使用 git push 将其推送到远程存储库。
git push origin branch_name
这会将您的更改上传到远程存储库(例如 GitHub)上的指定分支。
git pull(拉取更新)
要使用远程存储库中的最新更改来更新本地存储库,请使用 git pull。
git pull origin branch_name
这可确保您始终使用最新的代码库,并防止与团队成员协作时发生冲突。
git分支(创建或列出分支)
Git 分支对于在不影响主代码库的情况下试验 ML 模型的不同功能或版本非常有用。
git branch
git branch new_feature_branch
8. 虚拟环境和依赖管理
在处理多个机器学习项目(每个项目都具有不同版本的库)时,管理 Python 环境和依赖关系至关重要。以下是一些有效管理虚拟环境和依赖项的命令。
创建虚拟环境
要创建虚拟环境,可以使用以下命令:
python3 -m venv env_name
这会设置一个隔离的 Python 环境,防止项目依赖项之间发生冲突。
激活虚拟环境
要激活虚拟环境并在其中工作,请使用以下命令:
source env_name/bin/activate
激活后,您可以安装软件包并运行特定于该环境的 Python 脚本。
停用虚拟环境
当您在虚拟环境中完成工作后,使用 deactivate 退出并返回到系统默认的 Python 环境。
deactivate
列出已安装的软件包
要查看虚拟环境或系统范围内所有已安装的软件包,请使用:
pip freeze
这显示了所有已安装的 Python 库及其版本,这对于创建需求文件非常有用。
从需求文件安装依赖项
如果您正在协作开发一个项目,您通常会共享一个 requirements.txt
文件,其中列出了所需的所有库。您可以使用以下命令安装该文件中的所有依赖项:
pip install -r requirements.txt
9. 监控和记录
机器学习实验,尤其是训练大型模型时,可能需要很长时间。监视进度和记录输出对于跟踪实验、调试和优化代码至关重要。
tail(查看文件末尾)
在检查日志时,经常想查看最新的条目,tail命令显示文件的最后几行。
tail -f log_file.log
-f
选项允许您实时查看新的日志条目,这对于监控实时实验或模型训练过程非常有用。
watch(重复运行命令)
为了实时监控系统性能或模型训练,可以使用watch命令定期执行命令。
watch -n 1 nvidia-smi
这将每秒更新 GPU 状态,让您可以在模型训练期间监控 GPU 使用情况。
10. 磁盘使用分析
有效管理磁盘空间至关重要,尤其是在处理大型数据集或保存模型时。这些命令可帮助您分析和管理磁盘使用情况。
du(磁盘使用情况)
要检查文件或目录的磁盘使用情况,请使用 du 命令,这对于检查大型数据集或模型消耗了多少空间特别有用。
du -sh /path/to/directory
-s
选项提供摘要,而 -h
使输出易于理解。
ncdu(交互式磁盘使用分析器)
对于更加用户友好的磁盘使用情况分析,ncdu 是一个出色的工具,它提供了一个交互式界面来探索磁盘使用情况。
ncdu /path/to/directory
11. Linux 中的自动化任务
自动化对于提高效率和避免重复任务至关重要。 Linux 拥有多种工具,可以轻松实现机器学习项目中工作流程的自动化。
cron(计划任务)
cron 实用程序允许您安排作业以特定的时间间隔运行。您可以使用 cron 来自动执行任务,例如运行模型训练脚本或备份数据集。
crontab -e
此命令打开 cron 配置文件。您可以添加条目以在特定时间(例如每天或每周)运行脚本。
at(安排一次性任务)
对于一次性计划任务,请使用 at 命令,当您需要在某一时间执行一次任务时,该命令非常有用。
echo "python train_model.py" | at 2:00 PM
12. 系统和资源优化
机器学习任务可能是资源密集型的,优化系统性能有助于减少训练时间并提高实验的整体效率。 Linux 提供了多种命令来有效地优化和管理系统资源。
swapon(启用交换空间)
如果您的系统在训练大型模型等内存密集型任务期间耗尽 RAM,则交换空间可能会充当溢出内存。
sudo swapon /swapfile
sysctl(修改内核参数)
Linux 提供 sysctl 用于调整内核参数以优化系统性能,这在运行深度学习工作负载时特别有用。
sysctl -w vm.swappiness=10
此示例设置 swappiness 值,该值控制系统将数据从 RAM 交换到磁盘的频率。
13. 使用容器
容器对于管理机器学习环境至关重要。无论您使用 Docker 还是 Kubernetes,这些工具都有助于简化机器学习模型在可重复且隔离的环境中的部署。
docker(管理容器)
Docker 是最流行的容器化工具,您可以使用它来构建、管理和运行打包 ML 模型和环境的容器。
docker build -t ml_model .
docker run -it ml_model
这些命令允许您为 ML 模型创建 Docker 映像并在隔离的容器中运行它。
docker-compose(管理多容器应用程序)
对于涉及多个容器的更复杂的设置,可以使用 docker-compose 工具,它允许您使用单个配置文件定义和管理多容器应用程序。
docker-compose up
14. 安全最佳实践
当处理敏感数据或在生产中部署模型时,安全性成为一个主要问题。 Linux 提供了多种命令来帮助保护您的环境并维护数据机密性。
chmod/chown(更改权限/所有权)
借助 chmod 设置文件权限和 chown 更改文件所有权来限制对敏感数据文件或脚本的访问非常重要。
chmod 700 sensitive_data.csv
chown user:user sensitive_data.csv
结论
Linux 命令对于每个机器学习工程师来说都是必不可少的。从管理文件和资源到自动化任务和优化性能,Linux 命令使您能够更高效地工作、简化工作流程并确保项目顺利运行。
无论您是初学者还是经验丰富的用户,熟悉这些顶级 Linux 命令都将帮助您轻松导航 ML 项目。
除了基础知识之外,您还会发现 Linux 的灵活性和强大的生态系统允许您根据您的特定需求定制环境。使用这些命令越多,您就会变得越快、越高效,使您能够专注于真正重要的事情:构建更好的模型并取得出色的结果。