Linux是许多机器学习的支柱(机器学习) 工作流程。凭借其强大的命令行界面,Linux为工程师提供了顺利进行所需的灵活性和控制机器学习经验。
在过去的十年里,我逐渐理解了掌握一门技术的重要性。提高生产力、简化任务并有效管理资源。
无论您是设置环境、管理文件还是优化代码,Linux 都提供了强大的工具包来支持您的机器学习之旅。
本文涵盖每个机器学习工程师都应该知道,其中的解释是为初学者设计的,但对于有经验的用户来说足够详细。
1. 浏览文件系统
工作的一个主要部分是与Linux正在有效地浏览文件系统。作为机器学习工程师,您将不断处理数据文件、模型、代码和结果。母带处理很关键。
cd(更改目录)
这用于更改当前工作目录,这是在目录之间移动时的基础。
cd /path/to/directory
ls(列出目录内容)
进入目录后,您可以使用查看当前位置中有哪些文件或子目录。
ls
你可以使用ls -l
如需详细列表或ls -a
显示隐藏文件。
ls -l ls -a
pwd(打印工作目录)
使用显示当前工作目录的绝对路径,当您需要确认您在文件系统中的位置时,这是有用的命令。
pwd
mkdir(创建目录)
作为机器学习工程师,您需要使用为不同的数据集、模型或实验结果创建目录。
mkdir new_directory
rm(删除文件和目录)
什么时候,您可能需要使用删除文件或目录。
rm filename rm -r directory_name
2. 文件管理与检索
使用数据、代码和模型需要处理大量文件。 Linux 提供了强大的工具来管理、搜索和操作文件。
查找(搜索文件)
是一个功能强大的命令,可根据名称、类型或修改日期等特定条件搜索文件和目录。
find /path/to/search -name "filename"
该命令搜索名为“文件名”在指定目录及其子目录中。
grep(搜索文件内部)
允许您搜索文件内的模式,这在处理大型数据集或脚本、搜索文件内的特定术语时非常有用。
grep "pattern" file.txt
要在目录中递归搜索,请使用:
grep -r "pattern" /path/to/directory
cp(复制文件)
使用对于复制文件和目录,这在创建备份或复制数据集时非常有用。
cp source_file destination_file cp -r source_directory destination_directory
mv(移动或重命名文件)
允许您在目录之间移动文件或重命名它们。
mv old_filename new_filename mv file_name /path/to/destination/
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 aux
要查看与Python相关的进程,您可以使用:
ps aux | grep python
顶部(监控系统资源)
是一个实时任务管理器,显示 CPU、内存和进程信息,有助于监控长时间运行的 ML 任务期间的资源使用情况。
top
你可以使用,一个更用户友好的版本(如果已安装)。
Kill(终止进程)
如果进程消耗太多资源或挂起,您可以使用以下命令终止它借助进程 ID (PID)。
kill PID
您可以使用以下命令找到 PIDps aux
或者top
。
Nice/renice(管理进程优先级)
当运行资源密集型任务时,例如训练机器学习模型,您可能需要使用命令。
nice -n 10 python train.py renice -n -10 PID
好的启动具有特定优先级的进程,而 renice 调整正在运行的进程的优先级。
4.Linux资源监控
高效的资源管理对于机器学习任务至关重要,因为其中许多任务的计算成本很高,但 Linux 提供了用于监控系统性能的工具。
免费(检查内存使用情况)
在处理大型数据集和模型时,内存使用是一个常见问题,但是为您提供系统内存状态的概览。
free -h
这-h
标志使输出可读(即以 MB 或 GB 为单位显示)。
df(磁盘空间使用情况)
监控可用磁盘空间至关重要,尤其是在存储大型数据集和给出已安装文件系统的磁盘空间使用情况的摘要。
df -h
iotop(监控磁盘 I/O)
如果你想监控磁盘I/O,可以显示哪些进程使用磁盘最多。
sudo iotop
你需要运行它sudo
以完全访问磁盘信息。
nvidia-smi(监控 GPU 使用情况)
对于使用 GPU(例如 NVIDIA GPU)的机器学习工程师来说,nvidia-smi
命令提供有关 GPU 使用情况、内存使用情况和活动进程的关键信息。
nvidia-smi
它对于在深度学习模型训练期间跟踪 GPU 的状态至关重要。
5.Linux包管理
Linux 提供了包管理器来帮助安装、更新和删除软件包。作为一名机器学习工程师,您将不断安装库和框架。
apt(Debian/Ubuntu/Mint)
如果您使用的是像乌班图一样,是您安装软件的首选工具。
sudo apt update sudo apt install python3-pip
yum/dnf(RHEL/Rocky/Alma Linux)
为了(喜欢中央操作系统或者软呢帽),和管理软件包。
sudo yum install python3-pip OR sudo dnf install python3-pip
pip(Python 包管理)
Python 是机器学习的首选语言,因此您会经常使用安装类似的库TensorFlow,火炬, 或者。
pip install tensorflow
conda(管理环境和包)
当使用多个 Python 环境时,康达是一个优秀的工具,可以帮助管理依赖项、库,甚至非 Python 包。
conda create --name ml_env python=3.8 conda activate ml_env conda install tensorflow
6.Linux 网络命令
机器学习工程师经常在分布式环境中工作,这使得网络知识对于数据传输、集群管理或云计算等任务至关重要。
scp(安全复制)
要在机器之间安全地传输数据,请使用,这对于在远程服务器或分布式设置上工作的 ML 工程师特别有用。
scp local_file username@remote_host:/path/to/destination
rsync(远程同步)
是另一个用于在机器或目录之间复制或同步文件的优秀工具,它比SCP因为它只传输更改。
rsync -avz /path/to/source/ username@remote_host:/path/to/destination
ssh(安全外壳)
使用安全连接到远程服务器,这对于远程执行脚本、管理模型或在云基础设施上运行实验至关重要。
ssh username@remote_host
7.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 -f log_file.log
这-f
选项允许您实时查看新的日志条目,这对于监控实时实验或模型训练过程非常有用。
watch(重复运行命令)
如需实时监控系统性能或模型训练,请使用定期执行命令。
watch -n 1 nvidia-smi
这将每秒更新 GPU 状态,让您可以在模型训练期间监控 GPU 使用情况。
10. 磁盘使用分析
有效管理磁盘空间至关重要,尤其是在处理大型数据集或保存模型时。这些命令可帮助您分析和管理磁盘使用情况。
你(磁盘使用情况)
要检查文件或目录的磁盘使用情况,请使用,这对于检查大型数据集或模型消耗了多少空间特别有用。
du -sh /path/to/directory
这-s
选项提供摘要,同时-h
使输出可读。
ncdu(交互式磁盘使用分析器)
为了更加人性化的磁盘使用情况分析,是一个优秀的工具,它提供了一个交互式界面来探索磁盘使用情况。
ncdu /path/to/directory
11. Linux 中的自动化任务
自动化对于提高效率和避免重复任务至关重要。 Linux 拥有多种工具,可以轻松实现机器学习项目中工作流程的自动化。
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 -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设置文件权限和更改文件所有权。
chmod 700 sensitive_data.csv chown user:user sensitive_data.csv
结论
对于每个机器学习工程师来说都是必不可少的。从管理文件和资源到自动化任务和优化性能,Linux 命令使您能够更高效地工作、简化工作流程并确保项目顺利运行。
无论您是初学者还是经验丰富的用户,都需要熟悉将帮助您轻松浏览 ML 项目。
除了基础知识之外,您还会发现 Linux 的灵活性和强大的生态系统允许您根据您的特定需求定制环境。您使用这些命令的次数越多,您就会变得越快、越高效,从而使您能够专注于真正重要的事情:构建更好的模型并取得出色的结果。