Skip to content

ebulochkin/no

Repository files navigation

bachelors_diploma

Проект состоит из двух основных частей:

  • experiments/ - симуляция в MuJoCo, запись демонстраций, обучение и оценка policy.
  • prototype_web_interface/ и prototype_manipulator/ - простой веб-прототип заказа и сценарий, который читает CSV-заказ и запускает манипулятор в симуляции.

Ниже описано, как это запускать в текущем состоянии репозитория.

Структура

  • requirements.txt - зависимости для блока experiments/.
  • experiments/record_sim_episodes.py - запись HDF5-эпизодов.
  • experiments/visualize_episodes.py - визуализация записанного эпизода.
  • experiments/imitate_episodes.py - обучение и eval модели ACT.
  • prototype_web_interface/app.py - Flask-приложение, которое формирует CSV с заказом.
  • prototype_manipulator/main.py - загрузка CSV-заказа и прогон манипулятора в симуляции.
  • comands.txt - черновик команд автора проекта.

Что нужно для запуска

  • Python 3.10-3.11.
  • Для обучения на NVIDIA T4 нужен PyTorch со сборкой под CUDA 11.6.
  • Скрипты теперь умеют выбирать устройство через --device и по умолчанию используют cuda, если она доступна.
  • MuJoCo / dm-control.
  • ffmpeg не обязателен, так как видео пишется через OpenCV, но OpenCV должен корректно установиться.

Установка зависимостей

Для экспериментов:

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Для веб-прототипа и prototype_manipulator/ можно поставить либо Flask отдельно, либо использовать набор зависимостей из папки прототипа:

pip install Flask

или

pip install -r prototype_manipulator/requirements.txt

Основной workflow: experiments

1. Запись датасета

Поддерживаемые задачи в коде:

  • single_cube
  • single_torus
  • multiple_red
  • multiple_green
  • multiple_blue
  • mix_cube

Пример:

python experiments/record_sim_episodes.py \
  --task_name mix_cube \
  --dataset_dir /absolute/path/to/data/mix_cube \
  --num_episodes 50 \
  --onscreen_render

Результат: в dataset_dir появятся файлы вида episode_0.hdf5, episode_1.hdf5, ...

2. Просмотр записанного эпизода

python experiments/visualize_episodes.py \
  --dataset_dir /absolute/path/to/data/mix_cube \
  --episode_idx 0

Скрипт сохранит рядом:

  • episode_0_video.mp4
  • episode_0_qpos.png

3. Обучение модели ACT

Пример команды:

python experiments/imitate_episodes.py \
  --dataset_dir /absolute/path/to/data/mix_cube \
  --kl_weight 10 \
  --chunk_size 100 \
  --hidden_dim 512 \
  --batch_size 8 \
  --dim_feedforward 3200 \
  --lr 1e-5 \
  --seed 0 \
  --task_name mix_cube \
  --ckpt_dir /absolute/path/to/ckpt/mix_cube \
  --num_epochs 1000 \
  --policy_class ACT \
  --device cuda

Результат:

  • в ckpt_dir сохраняются dataset_stats.pkl, policy_best.ckpt и промежуточные артефакты;
  • для лучшей модели используется файл policy_best.ckpt.

4. Оценка модели

python experiments/imitate_episodes.py \
  --dataset_dir /absolute/path/to/data/mix_cube \
  --kl_weight 10 \
  --chunk_size 100 \
  --hidden_dim 512 \
  --batch_size 8 \
  --dim_feedforward 3200 \
  --lr 1e-5 \
  --seed 0 \
  --task_name mix_cube \
  --ckpt_dir /absolute/path/to/ckpt/mix_cube \
  --num_epochs 1000 \
  --policy_class ACT \
  --eval \
  --onscreen_render \
  --temporal_agg \
  --device cuda

При eval скрипт сохраняет видео роллаутов и текстовый файл с метриками в ckpt_dir.

Пути к данным

По умолчанию используются относительные директории внутри репозитория:

experiments -> data/experiments
prototype_manipulator -> data/prototype_manipulator

Переопределить их можно двумя способами:

  • через CLI, например --dataset_dir /path/to/dataset;
  • через переменные окружения BACHELORS_DIPLOMA_EXPERIMENTS_DATA_DIR и BACHELORS_DIPLOMA_PROTOTYPE_DATA_DIR.

Веб-прототип

Запуск:

python prototype_web_interface/app.py

После этого открыть http://127.0.0.1:5000/.

Что делает приложение:

  • показывает список товаров;
  • добавляет выбранные товары в корзину;
  • по кнопке Order and Download CSV генерирует и скачивает CSV-файл заказа.

CSV содержит колонки:

  • product_name
  • product_id

Прототип манипулятора

Скрипт читает CSV-заказ и прогоняет симуляцию манипулятора на основе обученной модели.

Запуск:

python prototype_manipulator/main.py \
  --ckpt_dir /absolute/path/to/trained_model \
  --csv_path /absolute/path/to/ordered_products.csv \
  --device cuda

Ожидания от входных данных:

  • в ckpt_dir должны лежать policy_best.ckpt и dataset_stats.pkl;
  • csv_path должен указывать на CSV, который генерирует веб-прототип.

На выходе скрипт сохраняет видео роллаута в папку чекпоинта.

Известные проблемы текущего состояния

  • prototype_web_interface хранит корзину в памяти процесса Flask, то есть это демо без постоянного хранилища.
  • В репозитории есть дублирование кода между experiments/ и prototype_manipulator/.
  • Файл comands.txt полезен как черновик, но команды в нём не стоит считать источником истины.
  • Под CUDA 11.6 важно ставить совместимые версии torch и torchvision; сам репозиторий это автоматически не настраивает.

Быстрый старт

Если нужен минимальный путь "посмотреть, что работает":

  1. Установить зависимости из requirements.txt.
  2. Запустить python prototype_web_interface/app.py.
  3. Скачать CSV заказа через браузер.
  4. Запустить python prototype_manipulator/main.py --ckpt_dir ... --csv_path ... --device cuda.

Если нужен ML-пайплайн:

  1. Сгенерировать HDF5 через experiments/record_sim_episodes.py.
  2. Запустить обучение с --dataset_dir ... --device cuda.
  3. При необходимости продолжить обучение через --resume_ckpt ....
  4. Проверить результат через --eval или experiments/visualize_episodes.py.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors