在机器学习的实践中,用好Shell可以帮你节省很多时间。以下是他分享的4个技巧。由于本文涉及的shell脚本较多,大家可以到文末地址查看所有脚本的源码。抓取远程文件当你监控远程服务器上的程序运行时,如果你想抓取远程文件在本地查看,你通常会怎么做?记下文件路径,打开终端,使用rsync等工具同步到本地,然后在文件浏览器中查看。其实大可不必这么麻烦。只需要提前写好几个shell脚本,就可以避免重复的机械劳动。这里我强烈推荐iTerm2,它比Mac自带的终端强大很多,可以指定一个trigger关键字来执行相应的命令。iTerm2下载地址:https://www.iterm2.com/首先在远程服务器上设置一个脚本t。当我们输入rawesome_video.mp4时,它会搜索awesome_video.mp4文件所在的路径,并打印出字符串rtransfer和主机名。rtransfer作为iTerm2的触发关键字,解析出host和path,然后调用另一个本地脚本t2。脚本t2将该视频文件传输到临时目录,然后在该目录中打开Finder。使用iTerm2触发关键字函数调用脚本可以大大提高效率,前期你只需要花时间自定义脚本即可。远程访问TensorBoard除了抓取远程文件,另一个痛苦的事情就是访问远程服务器上的TensorBoard实例。您可以设置SSH端口转发,但是哪个端口到哪个服务器?它们都在Docker容器中。ngrok允许您将对本地端口的访问更改为访问URL。比如输入ngrokhttp6006后,它会为你生成一个URL地址http://683acac3.ngrok.io,你可以在该地址查看TensorBoard实例。结合脚本n启动ngrok更快,然后使用脚本tb打开浏览器,启动TensorBoard,十秒内从运行目录到显示图形。ngrok的一个缺点是它一次只允许一个会话,所以你需要在使用它之前杀死之前的ngork进程。如果您忘记在另一台服务器上杀死ngrok,那可能会很麻烦。ngrok下载地址:https://ngrok.com/使用tbplot代替TensorBoard绘图对于运行大量指标的情况,我们需要等待很长时间让TensorBoard加载所有图形。如果使用tbplot脚本,速度会快很多,直接生成图像文件即可。tbplot其实是调用了Matplotlib,缺点是目前只能生成标量图。tbplot下载地址:https://github.com/mrahtz/tbplot自动崩溃监控运行代码时,最耗费精力的就是担心遇到错误和崩溃,所以需要不断地检查它们的运行状态。带有警报的自动监控可以减轻程序出现问题时的担忧。通常,警报可以发送到邮箱。为避免此类麻烦,您可以使用sqs-alerts,它依赖于AWSAWSSimpleQueue服务来存储和接收消息。在每台远程计算机上,使用cron运行一个脚本来监视日志并在检测到中断时将消息发送到队列。然后在本地机器上运行一个服务来监控队列并在收到消息时弹出警报。sqs-alerts下载地址:https://github.com/mrahtz/sqs-alerts***,本文用到的所有shell脚本都可以在以下地址找到:https://github.com/mrahtz/dotfiles/树/master/.local/bin