Фаза 00 · урок 11

Linux для AI

Цель урока: Вы разрабатываете в macOS или Windows. Но как только подключаетесь по SSH к облачной GPU-машине, арендуете экземпляр Lambda или запускаете машину EC2, то оказываетесь в Ubuntu. Терминал — единственный интерфейс. Здесь нет Finder,…

Текущий релиз AlexBred.com: первые 100 уроков русскоязычной программы.

Курс
AI Engineering from Scratch
Фаза
Настройка и инструменты
Чтение
9 мин.
Проверено
Содержание урока
  1. Цели обучения
  2. Проблема
  3. Устройство файловой системы
  4. Основные команды
  5. Перемещение
  6. Файлы и каталоги
  7. Чтение файлов
  8. Поиск
  9. Права доступа
  10. Управление пакетами через apt
  11. Пользователи и sudo
  12. Процессы и systemd
  13. Дисковое пространство
  14. Сеть
  15. tmux: сохраняйте сеансы
  16. WSL2 для пользователей Windows
  17. Подводные камни при переходе с macOS на Linux
  18. Краткая памятка
  19. Упражнения

Большинство AI-систем работает в Linux. Нужно знать достаточно, чтобы не оказаться в тупике.

Тип: Теория Языки:Предварительные требования: Фаза 0, урок 01 Время: около 30 минут

Цели обучения

  • Перемещаться по файловой системе Linux и выполнять основные операции с файлами из командной строки.
  • Управлять правами файлов с помощью chmod и chown, устраняя ошибки «Permission denied».
  • Устанавливать системные пакеты через apt и подготавливать новую GPU-машину к работе с AI.
  • Распознавать различия macOS и Linux, которые часто мешают разработчикам на удалённых машинах.

Проблема

Вы разрабатываете в macOS или Windows. Но как только подключаетесь по SSH к облачной GPU-машине, арендуете экземпляр Lambda или запускаете машину EC2, то оказываетесь в Ubuntu. Терминал — единственный интерфейс. Здесь нет Finder, Проводника и графической оболочки. Если вы не умеете перемещаться по файловой системе, устанавливать пакеты и управлять процессами из командной строки, придётся оплачивать простаивающий GPU, пока вы ищете в интернете, как распаковать файл в Linux.

Это руководство по выживанию. В нём ровно то, что нужно для работы с AI на удалённой Linux-машине, и ничего лишнего.

Устройство файловой системы

Linux организует всё под единым корнем /. Здесь нет C:\ или /Volumes. Каталоги, с которыми вы действительно будете работать:

Диаграмма к уроку «Linux для AI»

Домашний каталог обозначается ~ или /home/ваше-имя. Почти вся работа происходит здесь.

Основные команды

Следующие 15 команд покрывают 95% действий на удалённой GPU-машине.

Перемещение

pwd                         # Where am I?
ls                          # What's here?
ls -la                      # What's here, including hidden files with details?
cd /path/to/dir             # Go there
cd ~                        # Go home
cd ..                       # Go up one level

Файлы и каталоги

mkdir my-project            # Create a directory
mkdir -p a/b/c              # Create nested directories in one shot

cp file.txt backup.txt      # Copy a file
cp -r src/ src-backup/      # Copy a directory (recursive)

mv old.txt new.txt          # Rename a file
mv file.txt /tmp/           # Move a file

rm file.txt                 # Delete a file (no trash, it's gone)
rm -rf my-dir/              # Delete a directory and everything inside

rm -rf удаляет безвозвратно. Отмены нет. Дважды проверьте путь, прежде чем нажать Enter.

Чтение файлов

cat file.txt                # Print entire file
head -20 file.txt           # First 20 lines
tail -20 file.txt           # Last 20 lines
tail -f log.txt             # Follow a log file in real time (Ctrl+C to stop)
less file.txt               # Scroll through a file (q to quit)

Поиск

grep "error" training.log           # Find lines containing "error"
grep -r "learning_rate" .           # Search all files in current directory
grep -i "cuda" config.yaml          # Case-insensitive search

find . -name "*.py"                 # Find all Python files under current dir
find . -name "*.ckpt" -size +1G     # Find checkpoint files larger than 1GB

Права доступа

У каждого файла Linux есть владелец и биты разрешений. Вы столкнётесь с ними, когда скрипт не запускается или в каталог невозможно записать данные.

ls -l train.py
# -rwxr-xr-- 1 user group 2048 Mar 19 10:00 train.py
#  ^^^             owner permissions: read, write, execute
#     ^^^          group permissions: read, execute
#        ^^        everyone else: read only

Распространённые исправления:

chmod +x train.sh           # Make a script executable
chmod 755 deploy.sh         # Owner: full, others: read+execute
chmod 644 config.yaml       # Owner: read+write, others: read only

chown user:group file.txt   # Change who owns a file (needs sudo)

Сообщение «Permission denied» почти всегда указывает на проблему с правами. В большинстве случаев помогают chmod +x или sudo.

Управление пакетами через apt

Ubuntu использует apt для установки системного программного обеспечения.

sudo apt update             # Refresh the package list (always do this first)
sudo apt install -y htop    # Install a package (-y skips confirmation)
sudo apt install -y build-essential  # C compiler, make, etc. Needed by many Python packages
sudo apt install -y tmux    # Terminal multiplexer (keep sessions alive after disconnect)

apt list --installed        # What's installed?
sudo apt remove htop        # Uninstall

Пакеты, которые обычно устанавливают на новую GPU-машину:

sudo apt update && sudo apt install -y \
    build-essential \
    git \
    curl \
    wget \
    tmux \
    htop \
    unzip \
    python3-venv

Пользователи и sudo

Обычно вы входите как обычный пользователь. Некоторым операциям нужен доступ root, то есть администратора.

whoami                      # What user am I?
sudo command                # Run a single command as root
sudo su                     # Become root (exit to go back, use sparingly)

На облачном GPU-экземпляре вы обычно единственный пользователь и уже имеете доступ к sudo. Не запускайте всё от имени root — применяйте sudo только при необходимости.

Процессы и systemd

Когда обучение зависло или нужно проверить работающие программы:

htop                        # Interactive process viewer (q to quit)
ps aux | grep python        # Find running Python processes
kill 12345                  # Gracefully stop process with PID 12345
kill -9 12345               # Force kill (use when graceful doesn't work)
nvidia-smi                  # GPU processes and memory usage

systemd управляет службами — фоновыми демонами. Он понадобится при запуске серверов инференса:

sudo systemctl start nginx          # Start a service
sudo systemctl stop nginx           # Stop it
sudo systemctl restart nginx        # Restart it
sudo systemctl status nginx         # Check if it's running
sudo systemctl enable nginx         # Start automatically on boot

Дисковое пространство

У GPU-машин часто ограничен объём диска. Модели и наборы данных быстро его заполняют.

df -h                       # Disk usage for all mounted drives
df -h /home                 # Disk usage for /home specifically

du -sh *                    # Size of each item in current directory
du -sh ~/.cache             # Size of your cache (pip, huggingface models land here)
du -sh /data/checkpoints/   # Check how big your checkpoints are

# Find the biggest space hogs
du -h --max-depth=1 / 2>/dev/null | sort -hr | head -20

Распространённые способы освободить место:

# Clear pip cache
pip cache purge

# Clear apt cache
sudo apt clean

# Remove old checkpoints you don't need
rm -rf checkpoints/epoch_01/ checkpoints/epoch_02/

Сеть

Из командной строки вы будете скачивать модели, передавать файлы и обращаться к API.

# Download files
wget https://example.com/model.bin                   # Download a file
curl -O https://example.com/data.tar.gz              # Same thing with curl
curl -s https://api.example.com/health | python3 -m json.tool  # Hit an API, pretty-print JSON

# Transfer files between machines
scp model.bin user@remote:/data/                     # Copy file to remote machine
scp user@remote:/data/results.csv .                  # Copy file from remote to local
scp -r user@remote:/data/checkpoints/ ./local-dir/   # Copy directory

# Sync directories (faster than scp for large transfers, resumes on failure)
rsync -avz --progress ./data/ user@remote:/data/
rsync -avz --progress user@remote:/results/ ./results/

Для больших объёмов выбирайте rsync, а не scp: он передаёт только изменившиеся данные и умеет продолжать работу после разрыва соединения.

tmux: сохраняйте сеансы

Если закрыть ноутбук во время SSH-подключения, запущенное обучение завершится. tmux предотвращает это.

tmux new -s train           # Start a new session named "train"
# ... start your training, then:
# Ctrl+B, then D            # Detach (training keeps running)

tmux ls                     # List sessions
tmux attach -t train        # Reattach to session

# Inside tmux:
# Ctrl+B, then %            # Split pane vertically
# Ctrl+B, then "            # Split pane horizontally
# Ctrl+B, then arrow keys   # Switch between panes

Всегда запускайте длительное обучение внутри tmux. Всегда.

WSL2 для пользователей Windows

В Windows WSL2 предоставляет полноценную среду Linux без двойной загрузки.

# In PowerShell (admin)
wsl --install -d Ubuntu-24.04

# After restart, open Ubuntu from Start menu
sudo apt update && sudo apt upgrade -y

WSL2 запускает настоящее ядро Linux. Всё из этого урока работает внутри него. Файлы Windows доступны из WSL по пути /mnt/c/Users/YourName/.

Проброс GPU работает, если драйвер NVIDIA установлен в Windows. Установите драйвер NVIDIA для Windows, а не Linux, после чего CUDA будет доступна внутри WSL2.

[!note] Примечание переводчика Версия Ubuntu, команды установки WSL2 и требования к драйверам отражают исходную ревизию от 25 июня 2026 года. Перед настройкой сверяйте их с актуальной документацией Microsoft и NVIDIA.

Подводные камни при переходе с macOS на Linux

Если вы пришли из macOS, вас могут запутать следующие различия:

macOS Linux Примечание
brew install sudo apt install Имена пакетов иногда отличаются. brew install htop и sudo apt install htop работают одинаково, а brew install readline и sudo apt install libreadline-dev — нет.
open file.txt xdg-open file.txt На удалённой машине графического интерфейса обычно нет, поэтому используйте cat или less.
pbcopy / pbpaste Недоступны Передача в буфер обмена и из него не работает через SSH.
~/.zshrc ~/.bashrc macOS по умолчанию использует zsh, большинство Linux-серверов — bash.
/opt/homebrew/ /usr/bin/, /usr/local/bin/ Исполняемые файлы находятся в разных местах.
sed -i '' 's/a/b/' file sed -i 's/a/b/' file В macOS после -i нужна пустая строка, в Linux — нет.
Файловая система без учёта регистра С учётом регистра Model.py и model.py в Linux — два разных файла.
Переводы строк \n Переводы строк \n Одинаковы, но Windows использует \r\n, что ломает Bash-скрипты. Для исправления запустите dos2unix.

Краткая памятка

Навигация:      pwd, ls, cd, find
Файлы:          cp, mv, rm, mkdir, cat, head, tail, less
Поиск:          grep, find
Права:          chmod, chown, sudo
Пакеты:         apt update, apt install
Процессы:       htop, ps, kill, nvidia-smi
Службы:         systemctl start/stop/restart/status
Диск:           df -h, du -sh
Сеть:           curl, wget, scp, rsync
Сеансы:         tmux new/attach/detach

Упражнения

  1. Подключитесь по SSH к любой Linux-машине или откройте WSL2 и перейдите в домашний каталог. Создайте папку проекта, внутри неё три пустых файла командой touch, затем выведите их через ls -la.
  2. Установите htop через apt, запустите его и найдите процесс, использующий больше всего памяти.
  3. Запустите сеанс tmux, выполните в нём sleep 300, отсоединитесь, выведите список сеансов и присоединитесь снова.
  4. Проверьте свободное дисковое пространство командой df -h, затем найдите занимающие место элементы кэша с помощью du -sh ~/.cache/*.
  5. Передайте файл с локальной машины на удалённую через scp, затем повторите передачу с rsync и сравните процесс.

Источник: Linux for AI — оригинал Навигация: назад: 00.10 — Терминал и командная оболочка · Фаза 0 — Настройка и инструменты · Полный каталог · далее: 00.12 — Отладка и профилирование.