原文: https://machinelearningmastery.com/run-deep-learning-experiments-linux-server/
编写代码后,必须在具有大量 RAM,CPU 和 GPU 资源的大型计算机上运行深度学习实验,通常是云中的 Linux 服务器。
最近,我被问到这个问题:
“你如何进行深度学习实验?”
这是一个我喜欢回答的好问题。
在这篇文章中,您将发现我用于在 Linux 上运行深度学习实验的方法,命令和脚本。
阅读这篇文章后,你会知道:
- 如何设计建模实验以将模型保存到文件。
- 如何运行单个 Python 实验脚本。
- 如何从 shell 脚本顺序运行多个 Python 实验。
让我们开始吧。
如何在 Linux 服务器上运行深度学习实验 Patrik Nygren 的照片,保留一些权利。
我在工作站上编写了所有建模代码,并在远程 Linux 服务器上运行所有代码。
目前,我的偏好是在 EC2 上使用亚马逊深度学习 AMI 。有关为自己的实验设置此服务器的帮助,请参阅帖子:
我编写代码,以便每个 python 文件有一个实验。
大多数情况下,我正在处理大型数据,如图像字幕,文本摘要和机器翻译。
每个实验都适合模型,并将整个模型或权重保存到 HDF5 文件,以便以后重复使用。
有关将模型保存到文件的更多信息,请参阅以下帖子:
我尝试准备一套实验(通常是 10 个或更多)以便在一个批次中运行。我还尝试将数据准备步骤分离为首先运行的脚本,并创建可随时加载和使用的训练数据集的 pickle 版本。
每个实验可能会在训练期间输出一些诊断信息,因此,每个脚本的输出都会重定向到特定于实验的日志文件。如果事情失败,我也会重定向标准错误。
在运行时,Python 解释器可能不会经常刷新输出,尤其是在系统负载不足的情况下。我们可以使用 Python 解释器上的 -u 标志强制将输出刷新到日志中。
运行单个脚本(myscript.py
)如下所示:
python -u myscript.py >myscript.py.log 2>&1
我可以创建一个“_ 模型”_ 和一个“_ 结果”_ 目录,并更新要保存到这些目录的模型文件和日志文件,以保持代码目录清晰。
每个 Python 脚本都按顺序运行。
创建一个 shell 脚本,按顺序列出多个实验。例如:
#!/bin/sh
# run experiments
python -u myscript1.py >myscript1.py.log 2>&1
python -u myscript2.py >myscript2.py.log 2>&1
python -u myscript3.py >myscript3.py.log 2>&1
python -u myscript4.py >myscript4.py.log 2>&1
python -u myscript5.py >myscript5.py.log 2>&1
该文件将保存为“ run.sh”,与代码文件放在同一目录中并在服务器上运行。
例如,如果所有代码和 run.sh 脚本都位于“ ec2-user ”主目录的“experiments
”目录中,则脚本将按如下方式运行:
nohup /home/ec2-user/experiments/run.sh > /home/ec2-user/experiments/run.sh.log </dev/null 2>&1 &
该脚本作为后台进程运行,无法轻易中断。我还捕获了这个脚本的结果,以防万一。
您可以在本文中了解有关在 Linux 上运行脚本的更多信息:
就是这样。
如果您希望深入了解,本节将提供有关该主题的更多资源。
- 源代码深度学习 AMI(CUDA 8,亚马逊 Linux)
- 保存并加载您的 Keras 深度学习模型
- 如何在 Keras 检查深度学习模型
- 10 个亚马逊网络服务深度学习命令行方案
- 如何使用亚马逊网络服务上的 Keras 开发和评估大型深度学习模型
在这篇文章中,您发现了我用于在 Linux 上运行深度学习实验的方法,命令和脚本。
具体来说,你学到了:
- 如何设计建模实验以将模型保存到文件。
- 如何运行单个 Python 实验脚本。
- 如何从 shell 脚本顺序运行多个 Python 实验。
你有任何问题吗? 在下面的评论中提出您的问题,我会尽力回答。