Некоторые статистические алгоритмы, например, mcmc, требуют значительного времени. Время своего ноутбука тратить жалко, можно использовать время других компьютеров. Кроме того, неплохо бы использовать все ядра современных процессоров!

library("foreach")
library("doMC")
## Loading required package: iterators
## Loading required package: parallel

Amazon

Амазон — самый крупный продавец компьютерных мощностей. Многие известные проекты используют ресурсы на амазоне. Например, dropbox на самом деле перепродаёт подороже место на жестких дисках амазона. Тот же rpubs задествует мощности амазона.

Хорошее видео на 12 минут, как, имея кредитную карточку и 100 рублей на ней, запустить R-studio на амазоновском компьютере и получить доступ к нему через web-интерфейс.

Чтобы соединится по ssh с амазоновским инстансом:

chmod 600 your_key.pem
ssh -i your_key.pem ubuntu@your-ec2-ip-address

После соединения, добавляем пользователя:

sudo adduser new_user_name

Сменить пароль существующего пользователя, если ставилась какая-то внешняя AMI

sudo passwd new_user_name

Обновиться и установить R

sudo apt-get update
sudo apt-get install r-base

Скачать и установить R-studio

sudo apt-get install gdebi-core
sudo apt-get install libapparmor1
wget http://download2.rstudio.org/rstudio-server-0.97.551-amd64.deb
sudo gdebi rstudio-server-0.97.551-amd64.deb

Проверка

sudo rstudio-server verify-installation

Запустить-остановить-перезапустить R-studio server:

sudo rstudio-server stop
sudo rstudio-server start
sudo rstudio-server restart

Запустить скрипт на амазоне, а свой комп выключить :)

ssh -i your_key.pem ubuntu@your-ec2-ip-address
tmux
Rscript your_R_script.R

Далее нажимаем ctrl-B и затем D. Интересующий нас скрипт сейчас работает внутри сессии tmux. Теперь можно спокойно отсоединиться от удалённого компа

logout

Теперь можно принять ванну, выпить чашечку кофе и потом глянуть, как там дела там у амазона:

ssh -i your_key.pem ubuntu@your-ec2-ip-address
tmux list-sessions
tmux attach

Готовые AMI образы с Rstudio. * Louis Aslett * Bioconductor

Засчита от terminate, лучше включить.

Если выбрать terminate инстанс, то по умолчанию его жесткий диск исчезнет вместе с ним. Если заранее сделать snapshot жесткого диска, то snapshot не исчезнет после terminate инстанс. Можно убрать галочку delete on termination при создании инстанса.

volume можно присоединить к инстансу только если они в одном регионе, поэтому при создании volume из образа (snapshot) нужно быть аккуратным в выборе региона.

Примонтировать подключенный volume

df -h # список примонтированных дисков
lsblk # список всех дисков (и непримонтированных)
sudo mkdir /mnt/my_drive # создаем папку
sudo mount /dev/xvda /mnt/my_drive/ # монтируем
lsblk
df -h  

Дальше с ним можно работать как с обычной папкой

cd /mnt/my_drive

Зачем мы запускаем комп в облаке? Чтобы он ел мёд? Чтобы использовать все его ядра! Здесь нам особо помогут пакеты foreach, doMC и морковка caret которая реализует много алгоритмов с использованием доступных ядер.

registerDoMC(2) # Два ядра лучше чем одно :)

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

Sagemath

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

Последовательность действий: * Регистрируетесь * Создаёте новый проект (New project) * Запускаете новый терминал (New terminal) * В открывшемся суровом линуксе ;) запускаете R. (Нажать R, затем Enter) * Перед нами чистый R. Можно ставить пакеты.

install.packages("ggplot2")
x <- rnorm(10^7)
save(x,"10_millions.Rdata")


qplot(x[1:1000])
ggsave("1000_normal.png")

Если график строится без ggplot2, то сохраняется он так:

png(filename="plot_1000.png")
plot(x)
dev.off()

Еще на sagemath есть также возможность работать он-лайн в sage notebook, в которых можно использовать и R.

Opencpu

Проект opencpu позволяет создать своё облачко :) чтобы на нём болтало ножками написанное на R приложение. Среди примеров приложений есть автоматом обновляющийся Rmd, которым можно воспользоваться по-быстрому, чтобы показать Rmd на семинаре ;)

Ссылки: