Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

01. Проверка устройства AMD ROCm и окружения

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

Практический Notebook к этой задаче: 01_device_env_check.ipynb.

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

После этой задачи вы сможете самостоятельно:

  • проверить, корректно ли ROCm распознаёт GPU или APU AMD;
  • оценить, есть ли запас по видеопамяти, системной памяти и температуре во время обучения;
  • разместить датасеты, checkpoint и кэш Hugging Face на подходящем диске;
  • настроить базовую связь с удалённой машиной по SSH, прокси и токену;
  • составить таблицу ресурсов устройства, чтобы сравнивать результаты экспериментов.

Проверка ресурсов устройства

На устройстве AMD выполните:

rocm-smi --showuse --showtemp --showmemuse
python - <<'PY'
import torch
print("torch", torch.__version__)
print("cuda_available", torch.cuda.is_available())
print("device_count", torch.cuda.device_count())
if torch.cuda.is_available():
    print("device_name", torch.cuda.get_device_name(0))
PY

В журнале эксперимента обязательно запишите:

ПараметрПример заполнения
Модель устройстваAMD Ryzen AI MAX+ 395 / Radeon GPU
Версия системыUbuntu 24.04 / WSL / другая
Версия ROCmНапример, 7.x
Версия PyTorchНапример, сборка для ROCm
Температура в простоеНапример, 30–45 °C
Температура при обученииНапример, 75–85 °C
Видеопамять в простоеНапример, 9%
Видеопамять при обученииОтдельно для ACT / SmolVLA / pi_0

Понимание унифицированной памяти и видеопамяти

У некоторых APU AMD используется архитектура унифицированной памяти. Операционная система, GPU, процессы загрузки данных и браузер могут разделять один и тот же физический объём памяти. Если выделить видеопамяти много, обучение не станет стабильнее: при нехватке системной памяти может упасть загрузка данных или инициализация модели.

Судите о ресурсах по записям эксперимента, а не по предположениям:

watch -n 2 'rocm-smi --showuse --showtemp --showmemuse; free -h'

Если обучение ещё не началось, загрузка GPU равна 0%, а память процесса Python растёт, скорее всего, идёт загрузка модели или весов. Если загрузка GPU долго держится на 100%, температура растёт, а функция потерь нормально снижается, это обычное обучение.

Планирование каталогов для крупных файлов

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

export PROJECT_ROOT=/path/to/every-embodied/mujoco-reproduction-act-pi0-smolvla
export DATA_ROOT=/path/to/datasets/every_embodied
export HF_HOME=/path/to/cache/huggingface
export CHECKPOINT_ROOT=$PROJECT_ROOT/ckpt

К крупным файлам относятся:

  • кэш моделей Hugging Face;
  • наборы данных LeRobot;
  • checkpoint;
  • видео rollout;
  • файлы JSONL пакетной оценки;
  • промежуточные журналы.

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

Сеть и права Hugging Face

Для pi_0 нужна закрытая модель, например google/paligemma-3b-pt-224. Перед запуском убедитесь, что:

  1. учётная запись Hugging Face приняла условия закрытой модели;
  2. у токена есть право чтения публичных закрытых репозиториев;
  3. удалённая машина имеет доступ к Hugging Face;
  4. токен не появляется в командной строке, журналах и выводе Notebook.

Сначала проверьте права скриптом smoke-теста, а не запускайте сразу долгое обучение.

Checkpoint

Завершая задачу, сохраните воспроизводимую таблицу ресурсов:

| Параметр | Результат |
| --- | --- |
| ROCm видит GPU | Да / Нет |
| torch.cuda.is_available | True / False |
| Температура в простое | |
| Видеопамять в простое | |
| Каталог данных | Используется переменная; указано, на каком типе диска лежат данные |
| Права gated в HF | Пройдено / не пройдено |