在AWS上执行大规模深度学习处理是一种廉价且有效的学习和开发方式。几十G内存,几十个CPU,多块GPU,小钱推荐。如果您不熟悉使用EC2或Linux命令,这些命令在云端执行深度学习脚本时非常有效。这篇文章的主要内容包括:在本地机器和EC2实例之间复制数据使脚本安全地运行在每日、每周和每月的基础上监控进程、系统和GPU性能注意:所有命令都在类linux环境中执行(Linux,OSxorcygwin)0.环境约定假设AWSEC2已经正常运行。为了方便,设置环境如下:EC2服务器IP地址为54.218.86.47用户名为ec2-userSSHkey位于~/.ssh/,文件名为aws-keypair.pem;使用Python脚本有关如何设置基于GPU的EC2实例以执行深度学习,请参阅:https://machinelearningmastery.com/develop-evaluate-large-deep-learning-models-keras-amazon-web-services/1.登录服务器在进行任何操作之前,您必须先登录到目标服务器。简单地说,使用SSH命令。使用有意义的文件名将SSH密钥存储在~/.ssh/中,例如aws-keypair.pem。使用以下命令登录EC2主机,注意地址和用户名:ssh-i~/.ssh/aws-keypair.pemec2-user@54.218.86.472,复制文件到服务器使用SCP命令将本地文件复制到服务器,例如脚本。将py文件复制到EC2服务器的命令如下:scp-i~/.ssh/aws-keypair.pemscript.pyec2-user@54.218.86.47:~/3。让脚本在服务器后台运行,在服务后台执行脚本。可以忽略其他信号量,忽略标准输入和输出,并将所有输出和错误消息重定向到日志文件。这对于长期运行的深度学习模型是必要的。>nohuppython/home/ec2-user/script.py>/home/ec2-user/script.py.log&1&该命令中的script.py和script.py.log位于/home/ec2-在user/目录下。nohup和redirection可以参考其他详细介绍(比如wikipedia中的介绍)。4.在服务器指定的GPU上执行脚本。如果EC2支持,建议同时运行多个脚本。例如,如果EC2有4个GPU,您可以在每个GPU上分别运行一个脚本。示例代码如下:CUDA_VISIBLE_DEVICES=0nohuppython/home/ec2-user/script.py>/home/ec2-user/script.py.log&1&如果有4个GPU,可以指定CUDA_VISIBLE_DEVICESfrom0到3,这个在以TF为背景的Keras上是可行的,但是没有在Theano上测试过。有关CUDA_VISIBLE_DEVICES的更多信息,请访问https://devblogs.nvidia.com/parallelforall/cuda-pro-tip-control-gpu-visibility-cuda_visible_devices/5。如果监控脚本的输出中有项目分数或算法,那么实时监控脚本的输出是有意义的。这里有一个例子:tail-fscript.py.log不幸的是,当屏幕上有一段时间没有输出时,AWS会关闭这个终端,所以最好使用:watch"tailscript.py.log"whichissometimesinvisible标准输出python的,不知道是python的问题还是EC2的问题。6.监控系统和进程性能监控EC2系统的性能是有意义的,特别是有多少内存已经被使用或剩余。例如:top-M或者指定进程IDPID:top-pPID-M7,监控GPU性能如果多个脚本同时在GPU上执行,如果是并行执行,最好检查一下每个GPU的性能和使用情况。例如:watch"nvidia-smi"8.检查脚本是否还在服务器上运行一般保持终端一直打开。watch"ps-ef|greppython"9.在服务器上编辑文件一般不建议直接在服务器上修改,当然熟悉vi的除外:vi~/script.pyvi的用法这里不再赘述。10、从服务器下载文件与上传文件相反。这是下一个png文件的示例:scp-i~/.ssh/aws-keypair.pemec2-user@54.218.86.47:~/*.png。需要注意几点如果要同时运行多个脚本,最好选择多GPU的EC2。最好在本地编写脚本,将执行结果输出到文件,下载到本地进行分析。使用watch命令保持终端运行,在本地远程执行。命令
