Компания
41,56
рейтинг
20 января в 15:31

Разработка → FlyElephant как инструмент для вычислений на C++, R, Python или Octave


Приветствую всех!

Сегодня я расскажу о возможностях платформы FlyElephant для ученых и инженеров, которые в своей работе проводят различные вычисления на C++, R, Python или Octave. Это могут быть научные расчеты, анализ данных, моделирование или другие задачи. 22 января я буду проводить вебинар “Введение в FlyElephant”, на котором детально расскажу о платформе FlyElephant, а сегодня в общих чертах познакомлю вас с ней и покажу процесс проведения расчетов.

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

В качестве вычислительного ресурса мы пока используем облако Azure. Но наша команда продолжает работу над постройкой собственного вычислительного кластера, подключением облака Amazon, ряда суперкомпьютеров и GRID систем, что позволит значительно расширить наши вычислительные мощности. Отвечу на один часто задаваемый вопрос: “А чем вы лучше облаков?”. Конечно, каждый пользователь может взять облако, самостоятельно развернуть инфраструктуру, настроить ее, поддерживать систему и изменять при необходимости. В варианте использования FlyElephant обо всех этих времязатратных аспектах позаботимся мы! Вы же получаете готовую инфраструктуру заданных параметров с необходимым программным обеспечением. Кроме того, в будущем вы не только сможете проводить расчеты в облаке, но использовать для них суперкомпьютеры и другие специализированные вычислительные ресурсы, которые не всегда находятся в открытом доступе. Также при наличии собственных вычислительных мощностей, кластера или облака, вы сможете интегрироваться с платформой и при необходимости расширять ваши мощности или, наоборот, сдавать в аренду те ресурсы, которые не используются.

Платформа FlyElephant — это не только инструмент, который помогает вам проводить вычисления, а и сообщество. Одной из приоритетных задач нашей команды на этот год является постройка сильного сообщества вокруг FlyElephant. Мы хотим объединить в одном месте специалистов из различных областей, которые для решения задач нуждаются в использовании больших вычислительных мощностей, помочь им обмениваться знаниями и помогать друг-другу с решением проблем, а также объединяться для совместной работы над проектами. Пока работа над этим функционалом кипит, я приглашаю всех в наш slack-чат.

Какие языки и инструменты уже доступны?


Пользователи могут запускать вычислительные задачи, написанные при помощи С++ (с поддержкой OpenMP), R, Python (v2 & v3), Octave и Scilab на серверах с количеством ядер от 1 до 32 и оперативной памятью до 448 ГБ. Кроме этого, участники программы бета-тестирования сейчас помогают нам отладить работоспособность следующих инструментов: Java (v7 & v8), Julia, OpenFOAM, GROMACS, Blender и Public API. Следующие на очереди — инструменты для визуализации результатов расчетов, а также базы данных для сбора и хранения больших объемов информации. Мы активно работаем над расширением нашего каталога, поэтому, если у вас есть необходимость в каких-то инструментах, сообщите, и мы постараемся их быстро интегрировать в платформу.

Как запустить задачу?


На примере программ, написанных с использованием C++, R, Python или Octave, мы сейчас рассмотрим весь процесс работы в FlyElephant. Для начала работы нам необходимы три вещи.
Первое — необходимо зарегистрироваться.
Если вы этого еще не сделали, то регистрация здесь. После регистрации на вашем счету будет 10$; воспользовавшись промо-кодом 127575063277 и, введя его в Личном кабинете, вы можете пополнить счет еще на 100$.
Второе — необходим репозиторий с кодом вашей программы.
Мы подготовили несколько тестовых репозитория, которые можно брать за основу:

Репозиторий должен содержать файлы с кодом вашей программы, а также два обязательных файла build.sh и run.sh. В первом необходимо прописать команды, которые должны быть выполнены на сервере перед запуском вычисления (это может быть какая-то донастройка окружения, загрузка данных или еще что-то). Во втором файле прописываются команды запуска самой вычислительной программы.
Третье — загрузить данные.
Если для вашего вычисления необходимо работать с какими-то данными, которые не находятся в репозитории или во внешнем источнике, то вам нужно загрузить их в разделе Хранилище.

Когда все подготовлено, можно запускать вычисление. Для этого необходимо зайти в систему и выполнить следующие шаги:
  • Переходим в раздел “Вычисления” и выбираем нужный для нас язык или инструмент.
  • Перейдя в него, нажимаем кнопку “Запуск задачи”.
  • Появляется форма, в которой необходимо заполнить поля следующим образом:
    • Название задачи — даем задаче название.
    • Выберите файл данных — если необходимо, указываем файл, который необходимо загрузить на сервер для выполнения задачи. Вы можете выполнить задачу без загрузки дополнительного файла; выбрать файл, который был загружен в «Хранилище»; выбрать файл, который является результатом выполнения другой задачи. Файл будет загружен на сервере в корневую директорию вашего репозитория.
    • Название файла результата — указываем название файла, в который будет сохранен программой результат. Этот файл будет загружен в “Хранилище” и доступен в нем, а также в деталях задачи.
    • Репозиторий — указываем адрес репозитория, в котором находится ваша программа. Сейчас доступна работа только с публичными репозиториями, но в ближайшем обновлении можно будет работать и с закрытыми.
    • Параметры сервера — выбираем конфигурацию сервера, на котором будет запущена программа для выполнения. Возможно запустить задачу на сервере с количеством ядер от 1 до 32 и оперативной памятью до 448 ГБ. В ближайших релизах здесь также будут обновления, связанные с возможностью более гибкого конфигурировая вычислительной инфраструктуры и возможностью запуска задачи не только в облаке, но и на HPC кластере или в GRID.
  • Нажимаем кнопку “Запустить задачу”. Задача стартует, автоматически выполняется и становится доступной в разделе “Задачи”. Здесь можно посмотреть детали выполнения, результат и логи.

Таким образом, выполнив несколько шагов, вы получаете готовый результат.

Мы продолжаем трудиться над улучшением схемы работы и в ближайшем будущем расширим список поддерживаемых инструментов и вычислительных ресурсов. А чтобы этот список пополнился нужными для вас инструментами, приглашаем принять участие в опросе.

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

Присоединяйтесь к нашим страницам в соц. сетях (Facebook, Twitter, LinkedIn) и следите за последними новостями команды FlyElephant.

Для нас очень важны любые замечания, предложения и отзывы. Мы ответим на них в комментариях к этому посту или на почте: support@flyelephant.net.
Автор: @m31
FlyElephant
рейтинг 41,56
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Комментарии (19)

  • 0
    Здравствуйте! Отличный проект! Хотел попробовать его для обработки изображений. Но их у меня много, как можно загрузить много файлов в систему Fly Elephant?
    • 0
      Спасибо за хороший отзыв. Напиши мне на почту пожалуйста, созвонимся по скайпу и придумаем решение для этой задачи.
      • +1
        Написал на support@flyelephant.net
    • 0
      Думаю, можно использовать атласы изображений
      • 0
        т.е. взять все изображения, склеить, загрузить, а потом обрабатывать?
        • 0
          да, но я не знаю вашу задачу и не очень знаком с платформой, просто предложил вариант решения «как сделать много файлов одним?»
          • 0
            Спасибо!
  • 0
    А куда о багах писать? А то что-то не нашел, или тоже на support@flyelephant.net?
    • 0
      Можно прямо на support@flyelephant.net писать. Большое спасибо за помощь в тестировании и отлавливании багов;)
  • 0
    Приветствую!

    Это третий на моей памяти пост на хабре про слона. Что я хочу отметить:

    1. впервые по лэндингу я понял, о чём вообще речь. Зачёт.
    2. Статья тоже хорошо в тему
    3. Program по английски пишется с одним м. (это внизу, где вы приглашаете на бета тест)
    4. Правда я не совсем понял, зачем вам репозиторий и программа в сырцах. Всё равно ведь она будет запускаться на некой виртуальной машине? Под мою задачу, к примеру, одних данных на 300 Гб в паре сотен файлов — что будет удобно загружать как-то сразу.
    • 0
      Спасибо за хороший отзыв, стараемся расти. Ошибку исправил, спасибо.
      Относительно репозитория, то первоначально мы ориентировались на большие проекты с большим количеством файлов, поэтому и репозиторий. Сейчас работаем над тем, чтобы в ближайшем времени можно было бы и без репозитория запускать, а также прямо в системе редактировать файлы, например, при помощи IPython Notebook или RStudio Server. Также сейчас перерабатываем механизм загрузки данных больших объемов, чтобы легко можно было бы работать с ними.
      Если у вас есть идеи/варианты, как вам было бы удобно работать с такими объемами данных, буду рад услышать ваши предложения.
      • +1
        Да тут скорее не предложения, а хотелки.

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

        Получается, что оптимальное решение — виртуальная машина, просто нарастить ядер и памяти. А переделывать из концепции «системы» в концепцию «задач над данными» — трудоёмко, хотя и не невозможно.

        В общем, пока я с вашей инфраструктурой не познакомился глубоко, поэтому может всё написанное и банально и уже можно сделать.
        • 0
          Хотелки — это хорошо. Был бы рад пообщаться скайпом и детальнее узнать о вашем проекте. Думаю, точно что-то удобное для вашего случая можно будет придумать + нам очень интересны любые проекты, с помощью которых мы сможем сделать определенные кейсы и о них рассказать.
  • 0
    В файле LR.r, который выложен на гитхаб есть такая строчка:
    data < — read.csv('~/workdir/rosn.txt', sep='\t')

    Значит ли это, что после развёртывания, всё, что есть в репозитории на гитхаб, попадает в папку "~/workdir/"?
    • 0
      да, на данный момент это рабочая директория, где все происходит.
  • 0
    И ещё один вопрос: как попасть в ваш slack чат?
    • 0
      Регистрация здесь — slack.flyelephant.net Дальше на почту придет приглашение. Для удобства можно поставить клиент, чтобы не сидеть из под браузера — slack.com/downloads
  • 0
    Спасибо, интересная штука,
    UPD: ответ нашел сам, вопрос снят.
  • 0
    и ещё вопросы, уже по результатам:
    проверил какие библиотеки (из интересующих меня) у вас есть. Скажите, а opencv в python2.7 хотя бы в планах есть? а на других языках? А есть ли где место в хелпе где прописаны все доступные библиотеки чтобы не пришлось опытным путём это выяснять?

    и заодно обратил внимание на время выполнения: а почему время статуса «в очереди» учитывается в выполнение задачи?

    подробности про время
    в коде:
    import time
    t=time.clock()
    
    #...тут собственно код
    
    t=time.clock()-t
    f.write('almost overall time for process '+str(t) +' c\n')
    print t
    f.close()
    


    в результатах:
    almost overall time for process 1.335347 c
    а в статусе
    image

    итого:
    image

    а если посчитать из результата, то вообще получается
    60*0.001014/0.02 = 3.042 минут

    в то время как задача длилась вряд-ли сильно дольше замеренных 1.3 c (ну пусть плюс 1 сек на очень медленную запись огромного файла ~40кб)

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

Самое читаемое Разработка