原文链接:http://tecdat.cn/?p=6339
我最近一直做R中的一些模拟研究,涉及计算机密集型MCMC采样。通常我会使用我所在机构的计算集群来做这些,利用大量的计算机核心,但暂时缺乏这种可用性导致我调查使用亚马逊的Web服务(AWS)系统。在这篇文章中,我将描述我在R中进行模拟的步骤。
使用Amazon Web Services进行初始设置
首先注册https://aws.amazon.com上的免费帐户。
接下来,您需要完成此处描述的所有步骤。EC2是我们将使用的亚马逊服务。请
第1步 - 注册AWS
步骤2 - 创建IAM用户
步骤3 - 创建密钥对
步骤4 - 创建虚拟私有云(VPC)
步骤5 - 创建安全组
我们将在一分钟内启动我们可以连接的云计算机。
开始第一个实例
我们现在将设置我们的第一台云计算机。亚马逊将其中一个称为实例。首先,使用您之前设置的IAM凭据登录,访问:https://your_aws_account_id.signin.aws.amazon.com/console/,替换前一地址中的AWS账户ID。然后单击主页左上角的EC2。这会将您带到EC2仪表板。
要启动实例,请按照此处说明的步骤1进行操作。
完成实例操作后,请确保通过右键单击实例并选择终止,从EC2仪表板终止。
在实例上安装R
上面提到的入门说明描述了如何设置运行Amazon Linux AMI的实例,据我所知,这是他们创建的亚马逊自己的Linux风格。为了运行R,我改为使用普通的Ubuntu安装。Ubuntu是Linux操作系统最受欢迎的版本之一。
启动一个新实例,运行主列表中显示的Ubuntu AMI。然后使用Putty通过SSH连接到它。请注意,对于Amazon AMI,用户名是ec2-user,对于Ubuntu,您需要连接的用户名是ubuntu。
接下来我们可以安装R。首先,在Putty类型:
- sudo nano /etc/apt/sources.list
将sources.list文件加载到nano文本编辑器中。我们需要添加一行来指向可以下载R的位置。在文件底部添加如下行:
- deb http://cran.rstudio.com/bin/linux/ubuntu trusty/
然后按Ctrl + X,键入Y,然后输入,以保存文件。接下来,依次键入以下三个命令,在需要时选择Y为yes:
- sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
- sudo apt-get install r-base
如果成功,您现在应该安装R。应该看到:
- R version 3.2.2 (2015-08-14) -- "Fire Safety"
- Copyright (C) 2015 The R Foundation for Statistical Computing
- Platform: x86_64-pc-linux-gnu (64-bit)
- R is free software and comes with ABSOLUTELY NO WARRANTY.
- You are welcome to redistribute it under certain conditions.
- Type 'license()' or 'licence()' for distribution details.
- Natural language support but running in an English locale
- R is a collaborative project with many contributors.
- Type 'contributors()' for more information and
- 'citation()' on how to cite R or R packages in publications.
- Type 'demo()' for some demos, 'help()' for on-line help, or
- 'help.start()' for an HTML browser interface to help.
- Type 'q()' to quit R.
您现在可以从命令行在R中工作。
如果运行模拟,我会在桌面上准备一个R脚本文件,然后将其复制到AWS以运行它。如果您确实想在AWS上运行RStudio,请参阅Louis Aslett关于在AWS上运行R和RStudio 。
运行并行仿真
我尝试让AWS 运行的最初原因是在R中运行计算机仿真。我这样做的方法是首先启动一个具有多个核心的实例类型(36),特别是c4.8xlarge类型。为了并行运行模拟,我使用脚本文件调用R,该脚本文件启动R的多个实例。要编写此脚本文件,请myscript.sh在命令行键入:nano 。这将打开纳米文本编辑器程序。输入以下行:
- #!/bin/bash
- for set in {1..36}
- do
- nohup Rscript myrprog.R $set > ~/outputs/myprogoutputs_$set 2>&1 &
- done
接下来,我们必须更改我们刚刚创建的脚本文件的权限,以使其能够被执行。为此,请在Putty命令提示符下键入以下内容:
- chmod +x myscript.sh
在运行我们的脚本文件之前,我们需要编辑我们的R程序以利用我们传递给它的参数。在我的R程序的顶部,我添加了以下行:
- args=(commandArgs(TRUE))
- set <- as.numeric(args[[1]])
我们假设我们想要执行3600次模拟。如果我们使用36核心实例,我们可以在每次调用R时运行100次模拟。然后,每次调用都会保存一个包含100次模拟结果的数据集。然后,我们可以将36个数据集组合在一起,形成所需3600个模拟结果的数据集。
为了保存结果,在我的R程序结束时如下:
results <- list(estimates=estimates, ciLower=ciLower, ciUpper=ciUpper) setwd("outputs") save(results, file=paste("results_",set,".RData",sep=""))
这将一个名为results_set的R数据文件保存到outputs文件夹,其中set是我们的set变量。- 本文固定链接: https://maimengkong.com/zu/891.html
- 转载请注明: : 萌小白 2022年5月2日 于 卖萌控的博客 发表
- 百度已收录