Поиск по сайту:

Более 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"

Эта команда ищет файл с именем «имя_файла» в указанном каталоге и его подкаталогах.

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 — это диспетчер задач в режиме реального времени, который отображает информацию о процессоре, памяти и процессах, что полезно для мониторинга использования ресурсов во время длительных задач машинного обучения.

top

Вы можете использовать htop, более удобную для пользователя версию, если она установлена.

kill (завершить процессы)

Если процесс потребляет слишком много ресурсов или зависает, вы можете завершить его с помощью команды kill с помощью идентификатора процесса (PID).

kill PID

Вы можете найти PID, используя ps aux или top.

nice/renice (Управление приоритетом процесса)

При выполнении ресурсоемких задач, таких как обучение модели машинного обучения, вам может потребоваться настроить приоритеты процессов с помощью команд nice и renice.

nice -n 10 python train.py
renice -n -10 PID

nice запускает процесс с определенным приоритетом, а renice настраивает приоритет запущенного процесса.

4. Мониторинг ресурсов Linux

Эффективное управление ресурсами имеет решающее значение для задач машинного обучения, поскольку многие из них требуют больших вычислительных затрат, но Linux предоставляет инструменты для мониторинга производительности вашей системы.

бесплатно (проверьте использование памяти)

При работе с большими наборами данных и моделями использование памяти является распространенной проблемой, но команда free дает вам обзор состояния памяти вашей системы.

free -h

Флаг -h делает выходные данные удобочитаемыми (т. е. отображает их в МБ или ГБ).

df (использование дискового пространства)

Мониторинг доступного дискового пространства имеет важное значение, особенно при хранении больших наборов данных, и команда df дает сводную информацию об использовании дискового пространства для ваших смонтированных файловых систем.

df -h

iotop (монитор дискового ввода-вывода)

Если вы хотите отслеживать дисковый ввод-вывод, iotop может показать вам, какие процессы используют диск больше всего.

sudo iotop

Вам нужно будет запустить его с помощью sudo для полного доступа к информации о диске.

nvidia-smi (мониторинг использования графического процессора)

Для инженеров машинного обучения, использующих графические процессоры (например, графические процессоры NVIDIA), команда nvidia-smi предоставляет важную информацию об использовании графического процессора, использовании памяти и активных процессах.

nvidia-smi

Это важно для отслеживания состояния вашего графического процессора во время обучения модели глубокого обучения.

5. Управление пакетами Linux

Linux предоставляет менеджеры пакетов, которые помогают устанавливать, обновлять и удалять пакеты программного обеспечения. Как инженер ML, вы будете постоянно устанавливать библиотеки и фреймворки.

подходящий (Debian/Ubuntu/Mint)

Если вы используете дистрибутив на основе Debian, например Ubuntu, apt — ваш идеальный инструмент для установки программного обеспечения.

sudo apt update
sudo apt install python3-pip

ням/днф (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, которая особенно полезна для инженеров машинного обучения, работающих на удаленных серверах или распределенных установках.

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 полезны для экспериментирования с различными функциями или версиями модели машинного обучения, не затрагивая основную базу кода.

git branch
git branch new_feature_branch

8. Виртуальные среды и управление зависимостями

Управление средами Python и зависимостями имеет решающее значение при работе над несколькими проектами машинного обучения, каждый из которых использует разные версии библиотек. Вот несколько команд для эффективного управления виртуальными средами и зависимостями.

Создайте виртуальную среду

Чтобы создать виртуальную среду, вы можете использовать следующую команду:

python3 -m venv env_name

Это создает изолированную среду Python, предотвращая конфликты между зависимостями проекта.

Активировать виртуальную среду

Чтобы активировать виртуальную среду и работать внутри нее, используйте следующую команду:

source env_name/bin/activate

После активации вы можете устанавливать пакеты и запускать сценарии Python, специфичные для этой среды.

Деактивировать виртуальную среду

Когда вы закончите работу в виртуальной среде, используйте деактивацию, чтобы выйти и вернуться в системную среду Python по умолчанию.

deactivate

Получение списка установленных пакетов

Чтобы просмотреть все установленные пакеты в вашей виртуальной среде или во всей системе, используйте:

pip freeze

Здесь показаны все установленные библиотеки Python и их версии, что полезно для создания файлов требований.

Установите зависимости из файла требований

Если вы работаете над проектом, вы часто делитесь файлом requirements.txt, в котором перечислены все необходимые библиотеки. Вы можете установить все зависимости из этого файла, используя:

pip install -r requirements.txt

9. Мониторинг и регистрация

Эксперименты по машинному обучению, особенно при обучении больших моделей, могут занять много времени. Мониторинг прогресса и протоколирование результатов имеют решающее значение для отслеживания экспериментов, отладки и оптимизации кода.

хвост (просмотр конца файлов)

При проверке журналов часто требуется просмотреть последние записи: команда Tail отображает несколько последних строк файла.

tail -f log_file.log

Опция -f позволяет просматривать новые записи журнала в режиме реального времени, что полезно для мониторинга живых экспериментов или процессов обучения модели.

смотреть (повторно выполнять команды)

Для мониторинга производительности системы или обучения модели в режиме реального времени используйте команду наблюдения для выполнения команды через регулярные промежутки времени.

watch -n 1 nvidia-smi

Это будет обновлять состояние графического процессора каждую секунду, что позволит вам отслеживать использование графического процессора во время обучения модели.

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, которая полезна, когда вам нужно, чтобы задача выполнялась один раз в определенное время.

echo "python train_model.py" | at 2:00 PM

12. Оптимизация системы и ресурсов

Задачи машинного обучения могут быть ресурсоемкими, и оптимизация производительности вашей системы может помочь сократить время обучения и повысить общую эффективность ваших экспериментов. Linux предоставляет несколько команд для оптимизации и эффективного управления системными ресурсами.

swapon (включить пространство подкачки)

Если в вашей системе не хватает оперативной памяти во время задач, требующих большого объема памяти, таких как обучение больших моделей, пространство подкачки может выступать в качестве памяти переполнения.

sudo swapon /swapfile

sysctl (изменить параметры ядра)

Linux предлагает sysctl для настройки параметров ядра для оптимизации производительности системы, что особенно полезно при выполнении рабочих нагрузок глубокого обучения.

sysctl -w vm.swappiness=10

В этом примере задается значение подкачки, которое определяет, как часто система обменивает данные из ОЗУ на диск.

13. Работа с контейнерами

Контейнеры необходимы для управления средами машинного обучения. Независимо от того, используете ли вы Docker или Kubernetes, эти инструменты помогают упростить развертывание моделей машинного обучения в воспроизводимой и изолированной среде.

докер (Управление контейнерами)

Docker — самый популярный инструмент контейнеризации, который можно использовать для создания, управления и запуска контейнеров, упаковывающих ваши модели и среды машинного обучения.

docker build -t ml_model .
docker run -it ml_model

Эти команды позволяют вам создать образ 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 поможет вам с легкостью ориентироваться в проектах машинного обучения.

В дополнение к основам вы обнаружите, что гибкость и мощная экосистема Linux позволяют адаптировать среду к вашим конкретным потребностям. Чем больше вы используете эти команды, тем быстрее и продуктивнее вы становитесь, позволяя вам сосредоточиться на том, что действительно важно: создании лучших моделей и достижении отличных результатов.

Статьи по данной тематике: