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. Перед запуском убедитесь, что:
- учётная запись Hugging Face приняла условия закрытой модели;
- у токена есть право чтения публичных закрытых репозиториев;
- удалённая машина имеет доступ к Hugging Face;
- токен не появляется в командной строке, журналах и выводе Notebook.
Сначала проверьте права скриптом smoke-теста, а не запускайте сразу долгое обучение.
Checkpoint
Завершая задачу, сохраните воспроизводимую таблицу ресурсов:
| Параметр | Результат |
| --- | --- |
| ROCm видит GPU | Да / Нет |
| torch.cuda.is_available | True / False |
| Температура в простое | |
| Видеопамять в простое | |
| Каталог данных | Используется переменная; указано, на каком типе диска лежат данные |
| Права gated в HF | Пройдено / не пройдено |