Фаза 00 · урок 11
Linux для AI
Цель урока: Вы разрабатываете в macOS или Windows. Но как только подключаетесь по SSH к облачной GPU-машине, арендуете экземпляр Lambda или запускаете машину EC2, то оказываетесь в Ubuntu. Терминал — единственный интерфейс. Здесь нет Finder,…
Текущий релиз AlexBred.com: первые 100 уроков русскоязычной программы.
Содержание урока
- Цели обучения
- Проблема
- Устройство файловой системы
- Основные команды
- Перемещение
- Файлы и каталоги
- Чтение файлов
- Поиск
- Права доступа
- Управление пакетами через apt
- Пользователи и sudo
- Процессы и systemd
- Дисковое пространство
- Сеть
- tmux: сохраняйте сеансы
- WSL2 для пользователей Windows
- Подводные камни при переходе с macOS на Linux
- Краткая памятка
- Упражнения
Большинство 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. Каталоги, с которыми вы действительно будете работать:
Домашний каталог обозначается ~ или /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
Упражнения
- Подключитесь по SSH к любой Linux-машине или откройте WSL2 и перейдите в домашний каталог. Создайте папку проекта, внутри неё три пустых файла командой
touch, затем выведите их черезls -la. - Установите
htopчерез apt, запустите его и найдите процесс, использующий больше всего памяти. - Запустите сеанс tmux, выполните в нём
sleep 300, отсоединитесь, выведите список сеансов и присоединитесь снова. - Проверьте свободное дисковое пространство командой
df -h, затем найдите занимающие место элементы кэша с помощьюdu -sh ~/.cache/*. - Передайте файл с локальной машины на удалённую через
scp, затем повторите передачу сrsyncи сравните процесс.
Источник: Linux for AI — оригинал Навигация: назад: 00.10 — Терминал и командная оболочка · Фаза 0 — Настройка и инструменты · Полный каталог · далее: 00.12 — Отладка и профилирование.