Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
    • Организация сине-зеленого и канареечного развертывания версий веб-сервиса
    • Автоматизация сборки образов с помощью Jenkins и Packer
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Тестирование приложений с помощью GitLab
    • Создание тестовых ВМ через GitLab CI
    • Интеграция GitLab с Tracker
    • Высокопроизводительные вычисления (HPC) на прерываемых ВМ
    • Нагрузочное тестирование gRPC-сервиса
    • HTTPS-тест с постоянной нагрузкой с помощью Phantom
    • HTTPS-тест со ступенчатой нагрузкой с помощью Pandora
    • HTTP-тест с нагрузкой по сценарию с помощью Pandora
    • Нагрузочное тестирование с нескольких агентов
    • Миграция результатов нагрузочного тестирования из OverLoad
    • Запуск внешних агентов для нагрузочного тестирования
    • Нагрузочный тест с помощью JMeter
    • Получение статистики запросов к объектам Object Storage с использованием Query
    • Получение количества запросов к объектам Object Storage
    • Вызов нагрузочного тестирования из GitLab CI
    • Развертывание GitLab Runner на виртуальной машине Compute Cloud
    • Сравнение результатов нагрузочных тестов

В этой статье:

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Подготовьте основную ВМ в облаке
  • Создайте ВМ
  • Настройте ВМ
  • Подготовьте кластер ВМ
  • Создайте кластер
  • Проверьте работу кластера
  • Настройте NFS
  • Подготовьте задачу для вычислений в кластере
  • Запустите и проанализируйте вычисления
  • Удалите созданные ресурсы
  1. Разработка и тестирование
  2. Высокопроизводительные вычисления (HPC) на прерываемых ВМ

Высокопроизводительные вычисления (HPC) на прерываемых виртуальных машинах

Статья создана
Yandex Cloud
Обновлена 28 апреля 2025 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Подготовьте основную ВМ в облаке
    • Создайте ВМ
    • Настройте ВМ
  • Подготовьте кластер ВМ
    • Создайте кластер
    • Проверьте работу кластера
    • Настройте NFS
  • Подготовьте задачу для вычислений в кластере
  • Запустите и проанализируйте вычисления
  • Удалите созданные ресурсы

HPC-кластеры используются в вычислительных целях, в частности в научных исследованиях и расчетных задачах. Вычислительный кластер представляет собой массив серверов (вычислительных узлов), объединенных сетью. Каждый вычислительный узел имеет несколько многоядерных процессоров, свою оперативную память и работает под управлением независимой операционной системы. Наиболее распространено использование однородных кластеров, где все узлы одинаковы по своей архитектуре и производительности.

По этой инструкции вы создадите кластер прерываемых ВМ, которые будут решать общую вычислительную задачу. Примером вычислительной задачи будет решение системы линейных алгебраических уравнений с помощью метода Якоби.

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

  1. Подготовьте облако к работе.
  2. Подготовьте основную ВМ в облаке.
  3. Подготовьте кластер ВМ.
  4. Создайте кластер.
  5. Подготовьте задачу для вычислений в кластере.
  6. Запустите и проанализируйте вычисления.
  7. Удалите созданные ресурсы.

Подготовьте облако к работеПодготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки серверов входит:

  • Плата за несколько запущенных ВМ (см. тарифы Yandex Compute Cloud).
  • Плата за использование динамического или статического публичного IP-адреса (см. тарифы Yandex Virtual Private Cloud).

Подготовьте основную ВМ в облакеПодготовьте основную ВМ в облаке

Создайте ВМСоздайте ВМ

Чтобы создать ВМ:

  1. В консоли управления выберите каталог, в котором будет создана ВМ.

  2. В списке сервисов выберите Compute Cloud.

  3. На панели слева выберите Виртуальные машины.

  4. Нажмите кнопку Создать виртуальную машину.

  5. В блоке Образ загрузочного диска выберите образ Ubuntu.

  6. В блоке Расположение выберите зону доступности, в которой будет находиться ВМ.

  7. В блоке Диски и файловые хранилища выберите тип загрузочного диска SSD.

  8. В блоке Вычислительные ресурсы перейдите на вкладку Своя конфигурация и укажите параметры для решения текущих вычислительных задач:

    • Платформа — Intel Ice Lake.
    • vCPU — 4.
    • Гарантированная доля vCPU — 100%.
    • RAM — 4 ГБ.
    • Дополнительно — Прерываемая.
  9. В блоке Сетевые настройки:

    • В поле Подсеть укажите идентификатор подсети в зоне доступности создаваемой ВМ или выберите облачную сеть из списка.

      • У каждой сети должна быть как минимум одна подсеть. Если подсети нет, создайте ее, выбрав Создать подсеть.

      • Если сети нет, нажмите Создать сеть и создайте ее:

        • В открывшемся окне укажите имя сети и выберите каталог, в котором она будет создана.
        • (Опционально) Выберите опцию Создать подсети, чтобы автоматически создать подсети во всех зонах доступности.
        • Нажмите Создать сеть.
    • В поле Публичный IP-адрес выберите Автоматически, чтобы назначить виртуальной машине случайный внешний IP-адрес из пула Yandex Cloud, или выберите статический адрес из списка, если вы зарезервировали его заранее.

  10. В блоке Доступ выберите SSH-ключ и укажите данные для доступа к ВМ:

    • В поле Логин введите имя пользователя, который будет создан на виртуальной машине, например ubuntu.

      Внимание

      Не используйте логин root или другие имена, зарезервированные операционной системой. Для выполнения операций, требующих прав суперпользователя, используйте команду sudo.

    • В поле SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.

      Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:

      • Нажмите кнопку Добавить ключ.
      • Задайте имя SSH-ключа.
      • Загрузите или вставьте содержимое открытого SSH-ключа. Пару SSH-ключей для подключения к ВМ по SSH необходимо создать самостоятельно.
      • Нажмите кнопку Добавить.

      SSH-ключ будет добавлен в ваш профиль пользователя организации.

      Если в организации отключена возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя создаваемой виртуальной машины.

  11. В блоке Общая информация задайте имя ВМ. Для наглядности примера укажите master-node.

  12. Нажмите Создать ВМ.

Настройте ВМНастройте ВМ

  1. Зайдите по SSH на ВМ и перейдите в режим администратора в консоли:

    sudo -i
    
  2. Выполните обновление репозитория и поставьте требуемые утилиты:

    apt update
    apt install -y net-tools htop libopenmpi-dev nfs-common
    
  3. Выйдите из режима администратора и сгенерируйте SSH-ключи для доступа между ВМ:

    exit
    ssh-keygen -t ed25519
    
  4. Добавьте сгенерированный ключ в список разрешенных:

    cd ~/.ssh
    cat id_ed25519.pub >> authorized_keys
    

Подготовьте кластер ВМПодготовьте кластер ВМ

Создайте кластерСоздайте кластер

  1. В консоли управления перейдите в раздел Диски.
  2. Справа от диска ВМ master-node нажмите и выберите Создать снимок. Задайте имя master-node-snapshot. После того как снимок будет создан, он появится в разделе Снимки дисков.
  3. Перейдите в раздел Группы виртуальных машин и нажмите Создать группу виртуальных машин.
  4. Создайте группу ВМ:
    • В поле Имя укажите имя будущей группы ВМ, например compute-group.

    • В поле Сервисный аккаунт добавьте сервисный аккаунт к данной группе ВМ. Если у вас нет сервисного аккаунта, нажмите Создать, укажите его имя и нажмите на кнопку Создать.

      Чтобы иметь возможность создавать, обновлять и удалять ВМ в группе, назначьте сервисному аккаунту роль compute.editor. По умолчанию все операции в Instance Groups выполняются от имени сервисного аккаунта.

    • В поле Зона доступности выберите зону, в которой находится ВМ master-node. Зоны доступности должны совпадать, чтобы минимизировать задержки при взаимодействии ВМ.

    • В блоке Шаблон виртуальной машины нажмите кнопку Задать. Откроется экран создания шаблона.

      • В блоке Диски и файловые хранилища выберите Добавить диск. В открывшемся окне укажите:
        • Тип — SSD.
        • Наполнение — из созданного снимка master-node-snapshot.
      • В блоке Вычислительные ресурсы задайте конфигурацию, аналогичную конфигурации основной ВМ:
        • Платформа — Intel Ice Lake.
        • vCPU — 4.
        • Гарантированная доля vCPU — 100%.
        • RAM — 4 ГБ.
        • Дополнительно — Прерываемая.
      • В блоке Сетевые настройки укажите те же сеть и подсеть, что и у основной ВМ. Тип IP-адреса оставьте Автоматически.
      • В блоке Доступ укажите данные для доступа к ВМ:
        • В поле Логин введите предпочтительное имя пользователя, который будет создан на ВМ.
        • В поле SSH-ключ скопируйте ваш открытый SSH-ключ. Пару ключей для подключения по SSH необходимо создать самостоятельно, см. раздел о подключении к ВМ по SSH.
      • Нажмите кнопку Сохранить. Вы вернетесь на экран создания группы ВМ.
  5. В блоке Масштабирование выберите количество создаваемых ВМ. Укажите 3 ВМ.
  6. Нажмите кнопку Создать.

Проверьте работу кластераПроверьте работу кластера

Зайдите по SSH на каждую из ВМ в группе compute-group и убедитесь, что с них есть доступ к ВМ master-node по SSH:

ping master-node
ssh master-node

Настройте NFSНастройте NFS

Чтобы ВМ могли использовать одни и те же исходные файлы, создайте общую сетевую директорию с помощью протокола сетевого доступа NFS:

  1. Зайдите на ВМ master-node по SSH и установите NFS-сервер:

    ssh <публичный IP-адрес ВМ master-node>
    sudo apt install nfs-kernel-server
    
  2. Создайте директорию shared, которая будет общей для всех ВМ:

    mkdir ~/shared
    
  3. Откройте файл /etc/exports любым текстовым редактором, например, nano:

    sudo nano /etc/exports
    
  4. Добавьте запись для доступа к директории shared в файл:

    /home/<имя пользователя>/shared *(rw,sync,no_root_squash,no_subtree_check)
    

    Сохраните файл.

  5. Примените настройки и перезагрузите сервис:

    sudo exportfs -a
    sudo service nfs-kernel-server restart
    

Смонтируйте директории на ВМ из группыСмонтируйте директории на ВМ из группы

На каждой ВМ из группы compute-group смонтируйте созданную директорию:

  1. Создайте директорию shared и смонтируйте туда директорию с ВМ master-node:

    mkdir ~/shared
    sudo mount -t nfs master-node:/home/<имя пользователя>/shared ~/shared
    
  2. Убедитесь, что директория была успешно смонтирована:

    df -h
    

    Результат:

    Filesystem                                   Size  Used  Avail  Use%  Mounted on
    ...
    master-node:/home/<имя пользователя>/shared  13G   1.8G  11G    15%   /home/<имя пользователя>/shared
    

Подготовьте задачу для вычислений в кластереПодготовьте задачу для вычислений в кластере

  1. Зайдите по SSH на ВМ master-node, перейдите в директорию shared и скачайте исходный файл task.c с вычислительной задачей:

    cd ~/shared
    wget https://raw.githubusercontent.com/cloud-docs-writer/examples/master/hpc-on-preemptible/task.c
    

    Этот код решает систему линейных алгебраических уравнений с помощью метода Якоби. Задача имеет одну из распределенных реализаций с помощью MPI.

  2. Скомпилируйте исходный файл в исполняемый:

    mpicc task.c -o task
    

    В директории shared должен был появиться исполняемый файл task.

Запустите и проанализируйте вычисленияЗапустите и проанализируйте вычисления

Совет

Для проверки загрузки ядер ВМ можно выполнять команду htop в отдельной SSH-сессии на каждой ВМ.

  1. Запустите выполнение задачи на 2 ядрах, используя ресурсы только ВМ master-node:

    mpirun -np 2 task
    

    После выполнения задачи программа выведет затраченное на решение время:

    JAC1 STARTED
    1: Time of task=45.104153
    0: Time of task=45.103931
    
  2. Запустите выполнение задачи на 4 ядрах, используя ресурсы только ВМ master-node:

    mpirun -np 4 task
    

    Результат:

    JAC1 STARTED
    1: Time of task=36.562328
    2: Time of task=36.562291
    3: Time of task=36.561989
    0: Time of task=36.561695
    
  3. Запустите выполнение задачи на 4 ядрах, используя ресурсы двух ВМ, по 2 ядра на каждой ВМ. Для этого запустите выполнение задачи с ключом -host, который принимает параметры вида <IP-адрес ВМ>:<количество ядер>[,<ip>:<cores>[,...]]:

    mpirun -np 4 -host localhost:2,<IP-адрес ВМ>:2 task
    

    Результат:

    JAC1 STARTED
    0: Time of task=24.539981
    1: Time of task=24.540288
    3: Time of task=24.540619
    2: Time of task=24.540781
    
  4. По аналогии можно продолжать увеличивать число используемых ВМ и ядер и убедиться, что распределенные вычисления позволяют значительно увеличивать скорость выполнения задачи.

Удалите созданные ресурсыУдалите созданные ресурсы

Чтобы перестать платить за развернутый сервер и группу ВМ, достаточно удалить ВМ master-node и группу compute-group.

Если вы зарезервировали статический публичный IP-адрес специально для этой ВМ:

  1. Выберите сервис Virtual Private Cloud в вашем каталоге.
  2. Перейдите на вкладку IP-адреса.
  3. Найдите нужный IP-адрес, нажмите значок и выберите пункт Удалить.

Была ли статья полезна?

Предыдущая
Интеграция GitLab с Tracker
Следующая
Нагрузочное тестирование gRPC-сервиса
Проект Яндекса
© 2025 ООО «Яндекс.Облако»