服务器指定gpu命令,用于亚马逊网络服务深度学习的10个命令行技巧

在亚马逊网络服务CE2上运行大型深度学习进程是学习和开发模型的一种廉价有效的方法。你只需花费几美元就能够使用几千兆的内存,数十个CPU内核和多个GPU。我强烈推荐它。如果你敢接触到CE2或者Linux命令行,当你在云上运行深度学习脚本时你会发现一套价值无法估量的命令。

读完这篇文章,你就会知道:

如何从EC2实例复制数据。

如何安全的运行脚本几天、几周或几个月。

如何监控流程、系统和GPU性能。

现在开始

注意:来自工作站的所有命令都假定你正在一个Linux类型的环境中(如Linux、OS X或cygwin)。

中运行

综述

本文中给出的命令假定你的AWS EC2实例已经在运行了。

为了保持一致性,还做了一些其他的假设:

你的服务器IP地址是54.218.86.47;将它更改为你的服务器实例的IP地址。

你的用户名是ec2-user;将它更改为你的实例上的用户名。

你的SSH密钥位于~ /。ssh /并有文件名aws – keypair.pem;将它更改为SSH密钥位置和文件名。

你正在使用Python脚本。

如果你需要建立并运行一个基于GPU的AWS EC2的实例进行深度学习,请参阅教程:

1 从工作站登录到服务器

在开始工作之前,需要先登录服务器。

你可以使用SSH安全壳轻松登录。

我建议在~/.ssh/目录中存储SSH密钥。使用“aws – keypair.pem”这个名字。记住:文件必须具有权限600。

使用下面的命令登录到你的服务器实例。请记住将用户名和IP地址更改为你的相关用户名和服务器实例IP地址。

ssh -i ~/.ssh/aws-keypair.pem ec2-user@54.218.86.47

2 将工作站的文件复制到服务器

使用安全复制(scp)将工作站的文件复制到服务器实例。

下面是运行工作站上的复制脚本的例子,将工作站上本地目录中的script.py Python脚本复制到服务器实例。

scp -i ~/.ssh/aws-keypair.pem script.py ec2-user@54.218.86.47:~/

3 在服务器上运行脚本作为后台进程

你可以运行Python脚本作为后台进程。

此外,你可以以这样一种方式运行它:让它忽略其他进程的信号,忽略任何标准输入(stdin),并将所有输出和错误转发到日志文件。

根据我的经验,这些需要长时间运行的脚本,以适应大型深度学习模型。

nohup python /home/ec2-user/script.py >/home/ec2-user/script.py.log &1 &

假设你正在运行位于/ home / ec2 – user/目录中的py Python脚本。将此脚本的输出转发到位于同一目录下script.py.log中。

调整需求。

如果这是你第一次使用nohup,可以在这里学到更多:

如果这是你第一次使用重定向标准输入(stdin)、标准输出(stout)和标准错误(sterr),可以在这里学到更多:

4 在服务器特定的GPU上运行脚本

如果AWS EC2实例能够解决你的问题,我建议一次运行多个脚本。

例如,你选择的EC2实例可能有4个GPU,你可以在每一个GPU上运行一个脚本。

使用CUDA,你可以指定环境变量CUDA_VISIBLE_DEVICES使用哪个GPU设备。

我们使用和上面一样的命令去运行脚本,并且指定特定的GPU设备。

CUDA_VISIBLE_DEVICES=0 nohup python /home/ec2-user/script.py >/home/ec2-user/script.py.log &1 &

如果你的实例上有4个GPU设备,可以指定CUDA_VISIBLE_DEVICES = 0到CUDA_VISIBLE_DEVICES = 3。

我希望这可以为Theano后端工作,但我只对Keras的TensorFlow后端进行了测试。

你可以在文章中了解更多关于CUDA_VISIBLE_DEVICES的信息:

5 在服务器上监控脚本输出

当脚本运行的时候你可以监控脚本的输出。

如果在每一个新纪元或每个算法运行之后输出一个分数,这可能是有用的。

这个示例将列出你的脚本日志文件的最后几行,并将输出作为新行添加到脚本中。

tail -f script.py.log

如果屏幕在一段时间内没有得到新的输出,亚马逊可能会积极关闭你的终端。

另一种选择是使用watch命令。我发现亚马逊将一直保持这个终端开放:

watch "tail script.py.log"

python脚本中标准输出并不经常更新。

我不知道它是属于EC2还是Python。这意味着你可能不会经常看到日志中的输出。当缓冲区达到固定大小或运行结束时,它似乎会被缓冲并输出。

6 在服务器上监控系统和过程性能

监控EC2系统性能是一个好想法,特别是对你正在使用的和剩余的RAM数量。

你可以使用几秒更新一次的top 命令。

top -M

如果你知道进程标识符(PID),你还可以监控系统和流程。

top -p PID -M

7 在服务器上监控GPU性能

一直关注GPU性能是非常好的。

如果你打算GPU RAM中并行运行多个脚本,请关注GPU运行和GPU利用率。

你可以使用nvidia-smi命令来关注GPU的使用情况。 我喜欢使用保持终端打开的watch命令,并为每个新结果清除屏幕。

watch "nvidia-smi"

8 在服务器上检查仍然运行的脚本

关注仍在运行的脚本也很重要。

可以使用ps命令执行此操作。

我喜欢使用watch命令来保持终端的打开状态。

watch "ps -ef | grep python"

9 在服务器上编辑文件

我不建议在服务器上编辑文件,除非真的有必要。

不过,可以使用vi编辑器编辑文件。

下面的例子是在vi中打开脚本。

vi ~/script.py

当然,你可以使用你喜欢的命令行编辑器,如emacs。

如果这是你第一次接触到vi,你可以在这里了解更多:

10 将文件从服务器下载到工作站

我建议你将模型、所有结果和图形显式保存为新的、单独的文件作为脚本的一部分。

你可以使用安全复制(scp)将这些文件从服务器实例下载到工作站。

下面的例子在你的工作站运行,并将所有PNG文件从主目录复制到工作站。

scp -i ~/.ssh/aws-keypair.pem ec2-user@54.218.86.47:~/*.png .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值