python - 在 Amazon ec2 上部署科学 python 算法

标签 python numpy amazon-ec2 scipy starcluster

我有一个 Python 科学模型,它调用一些 C 代码并使用 numpy、scipy 和许多地理分析模块。我想将它部署在 EC2 上,但我对 EC2 还不是很了解。

我已经检查过在设置从 StarCluster AMI 派生的 AMI 后我可以使用 StarCluster 包来部署我的堆栈。这些已经有 numpy、scipy 和 ipython,所以我所要做的就是添加地理模块。

我的计划是编写一个在客户机器上运行的独立 GUI,并确保他们的输入对我的模型有效。然后,独立的 GUI 将最多约 10 GB 的压缩文件发送到 FTP 位置。然后他们登录到我在 EC2 上运行的网页,他们在其中配置运行属性(实例数、模型运行数)。该网页启动了一个脚本,该脚本在客户指定大小的集群上完成客户的工作。后处理器处理模型输出并写入结果网页和图形,这些网页和图形最初受密码保护,仅供客户查看。我的模型运行包括可能需要 5 分钟到 3 小时的单独迭代。

谁能就此模型的理想设置提供任何建议?我想我可以弄清楚其中的科学部分,但我不明白运行 Web 界面的起点是什么......

谢谢

最佳答案

有趣的项目!

可以通过 pip 将模块添加到您部署在 AWS EC2 上的 AMI。首先,您需要通过 SSH 访问您的实例。有关此的文档在这里: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html 然后如果你还没有安装它,你可以安装 pip 和你的附加包和模块,如下所示:

sudo apt-get install -y python-pip
sudo pip install numpy (already installed so no need for this)
sudo pip install scipy (same as above)

Ubuntu 和 Debian sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose

Ubuntu 12.10 和 Debian 7.0 中的版本符合当前的 Scipy 堆栈规范。用户可能还想为额外的 Scipy 包添加 NeuroDebian 存储库。 软呢帽 sudo yum install numpy scipy python-matplotlib ipython python-pandas sympy python-nose

Fedora 17 及更早版本的用户应使用 pip 升级 IPython: sudo pip install --upgrade ipython (以上信息通过 scipy 文档找到:http://www.scipy.org/install.html)

关于您的 GUI 和大文件上传计划,请查看用于文件存储的 AWS S3(尽管这有一些限制),并且根据您希望将解决方案推到多远,您可以使用分块文件上传或流式传输类似于这些文件传输解决方案的多部分请求:

https://github.com/blueimp/jQuery-File-Upload/wiki/Chunked-file-uploads
https://devcenter.heroku.com/articles/paperclip-s3
https://github.com/heiflo/play21-file-upload-streaming
https://github.com/netty/netty/issues/845
https://github.com/playframework/playframework/pull/884
https://github.com/floatingfrisbee/amazonfileupload
http://blog.assimov.net/blog/2011/04/03/multi-file-upload-with-uploadify-and--carrierwave-on-rails-3/

(快速搜索“chunked file uploads github”或“chunked file uploads google code”应该会在可用代码和详细信息方面找到很多选项。)

但是,文件上传/传输的更简单方向可能是查看如下解决方案:

http://www.bucketexplorer.com/be-download.html
https://forums.aws.amazon.com/thread.jspa?messageID=258228&tstart=0
https://forums.aws.amazon.com/thread.jspa?messageID=257781&tstart=0
http://www.jfileupload.com/products/js3upload/index.html
http://codeonaboat.wordpress.com/2011/04/22/uploading-a-file-to-amazon-s3-using-an-asp-net-mvc-application-directly-from-the-users-browser/

无论如何,您需要确保 EC2 实例和/或 S3 存储桶上的环境配置为允许大文件上传和处理。例如,您的 AMIs php 版本需要通过 php.ini 进行编译和设置以上传超过特定大小的文件 - 您还需要注意超时 - 您可能需要 64 位 AMI 以及大型 EBS为这一切提供动力。

至于不太复杂的 GUI 前端组件,jQuery 或 node.js 是很好的起点。 Github 或 AWS EC2/S3 论坛中还有大量代码包和文档,例如:

https://github.com/josegonzalez/upload

在不知道您的具体要求、计划和时间/预算限制的情况下,这是我能提供的最多建议。但是,请随时回复此线程或直接向我发送任何其他问题。

关于python - 在 Amazon ec2 上部署科学 python 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10236786/

相关文章:

Python:使用数组作为另一个数组的条件

python - Python 3 中 for 循环的数据类型和文档

python - 为什么 matplotlib 的缺口箱线图会自行折叠?

python - 将矢量数据与 numpy 相关联

amazon-ec2 - 将 Amazon EC2 AMI 转换为虚拟盒或 Vagrant 盒

amazon-web-services - AWS EC2 自动缩放 - 通过 ssh 在 EC2 上自定义设置

python - 如何修复UnicodeDecodeError

python - Fit 和 inverse_transform 中不同形状的 MinMaxScaler

python - 创建一个数组,其中一个字母重复另一个数组给定的给定次数

amazon-web-services - 为什么我的 ec2 实例被 elastic-beanstalk 终止?