/
kimudev
/
rubicon_test
Обзор
Документация
Войти
/
kimudev
/
rubicon_test
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
scripts/vm_create.sh
71 строка
4 KB
Rubicon
Распознавание людей в ИК-диапазоне с беспилотника
04 авг 2026, 08:33
04 авг 2026, 08:33
e8c6dfe
Код
Авторство
О чём код?
#!/usr/bin/env bash # # Создаёт виртуальную машину с GPU в Yandex Cloud и отдельный диск под данные. # # Идентификаторы облака и каталога берутся из вашей конфигурации `yc`, в скрипте # ничего не зашито. Перед запуском нужно: # yc init — авторизация и выбор каталога # и квота compute.instanceT4Gpus.count >= 1 (по умолчанию 0, поднимается # в консоли: Квоты -> Compute Cloud, либо запросом в поддержку) # # Использование: # ./scripts/vm_create.sh [имя] [зона] # set -euo pipefail NAME="${1:-rubicon-gpu}" ZONE="${2:-$(yc config get compute-default-zone 2>/dev/null || echo ru-central1-a)}" DISK_NAME="${NAME}-data" SSH_KEY="${SSH_KEY:-$HOME/.ssh/id_ed25519.pub}" # Конфигурация под задачу. Платформа standard-v3-t4 допускает только фиксированные # сочетания: 4/16, 8/32, 16/64 или 32/128 (vCPU/ГБ). Взято 8/32 — замеры показали, # что узким местом становится подготовка данных загрузчиком, а не видеокарта: # на четырёх ядрах GPU простаивает. PLATFORM=standard-v3-t4 CORES=8 MEMORY=32 DISK_SIZE=50 # данных примерно на 10 ГБ: два датасета плюс прогоны IMAGE_FAMILY=ubuntu-2204-lts-cuda-12-2 [ -f "$SSH_KEY" ] || { echo "нет публичного ключа: $SSH_KEY (задайте SSH_KEY=...)"; exit 1; } echo "==> создаю диск под данные: ${DISK_SIZE} ГБ, network-hdd" # HDD, а не SSD: датасет весит ~2 ГБ против 32 ГБ оперативной памяти, после первой # эпохи он целиком осядет в страничном кэше и скорость диска перестанет влиять. yc compute disk create \ --name "$DISK_NAME" --zone "$ZONE" \ --type network-hdd --size "$DISK_SIZE" >/dev/null echo "==> создаю виртуальную машину: T4, ${CORES} vCPU, ${MEMORY} ГБ" # --preemptible вдвое дешевле. Взамен Яндекс может остановить машину в любой # момент и принудительно останавливает через 24 часа. Для обучения на полтора-два # часа приемлемо: веса пишутся на отдельный диск после каждой эпохи. yc compute instance create \ --name "$NAME" --zone "$ZONE" --platform "$PLATFORM" \ --gpus 1 --cores "$CORES" --memory "$MEMORY" \ --create-boot-disk "image-folder-id=standard-images,image-family=${IMAGE_FAMILY},type=network-ssd,size=30" \ --network-interface "subnet-name=$(yc vpc subnet list --format json \ | python3 -c 'import json,sys;print(next(s["name"] for s in json.load(sys.stdin)))'),nat-ip-version=ipv4" \ --ssh-key "$SSH_KEY" \ --preemptible >/dev/null echo "==> подключаю диск с данными" yc compute instance attach-disk "$NAME" \ --disk-name "$DISK_NAME" --device-name data --auto-delete=false >/dev/null IP=$(yc compute instance get "$NAME" --format json \ | python3 -c 'import json,sys;print(json.load(sys.stdin)["network_interfaces"][0]["primary_v4_address"]["one_to_one_nat"]["address"])') cat <<EOF Готово. машина : $NAME ($ZONE) адрес : $IP диск : $DISK_NAME, ${DISK_SIZE} ГБ, не удаляется вместе с машиной Дальше: ./scripts/vm_setup.sh $IP Внешний адрес эфемерный и меняется при каждой остановке машины. EOF