利用Google Compute Engine进行低成本GPU渲染(以及耐心的其他有趣练习)

在开发Elliot&Ko(一个(希望)可爱的小游戏,您应该完全检查一下)的同时,我往往需要大量的GPU资源和时间。 我选择处理预高质量的渲染(因此需要资源),然后将其实时合成为2D图像,而不是处理使各种低端设备实时看起来精美的传统难题。具有虚假3D物理特性的资产。

除了我的GPU像土豆一样的事实之外,一切都很好。 借用了一位朋友的更好的硬件后,我颇具讽刺意味的是,他是一名开发人员Google Compute Engine,之后,我决定直接研究源代码,并在云硬件上设置一个低成本的远程系统。

  • 通过远程处理高要求的作业来节省时间并释放PC资源(同时节省功耗)
  • 3D渲染或烘焙,尤其是在Blender
  • 高GPU产量,例如After Effects渲染,各种Unity任务(预先计算的照明等)

如果您还不知道,当您首次注册其云平台时, Google会提供$ 300的信用额 。 再加上今年早些时候Google以较低的成本推出了“可抢占式” GPU,您可以获得以美分/小时的价格运行几千美元的硬件,第一次免费试用技术……谁知道要花多长时间。

成本和可用性因地区而异,但最终比诱人的信誉要便宜于亚马逊的“现场实例”。 不过,如果您对AWS感兴趣,那么这里概述的所有内容都适用于此,并且这里有一个精妙而相似的草案会详细介绍AWS设置。

请注意,这两种服务的每小时价格都四舍五入 。 它们的配置选项也都非常通用,因此经常需要花费一小部分时间才能完成的功能更强大(每小时成本更高)的安装,既节省了成本又节省了时间。 玩起来很容易,可以根据自己的喜好进行调整。

在本文中,由于两个原因,我们还将在我们的实例上使用Linux:它更便宜,并且(通常)更快。 对于某些程序(例如Windows 10上的Blender),这种程序尤其明显,因为它需要经历称为Windows Display Driver Model的程序 ,并且开销很大。 就是说,有人写了一篇很棒的文章来绕过此特定问题。

第一步是如果尚未在Google注册。 瞧! 三百 您正好有365天的时间来花钱。 在此处,转到实例控制面板,然后选择创建实例 ,在其中将出现以下选项菜单:

为您的实例命名一个令人难忘或与众不同的名称,例如GCE渲染等。 之后,单击“ 更改”以配置操作系统和大小。 我选择Ubuntu 16.04.5 LTS,因为它是我惯用的,但是如果您更熟悉其他Linux发行版,请尝试一下! 您还需要设置磁盘大小-存储很便宜,但是您仍然需要为此付费,因此请选择需要的空间,并留出一点空间。 我选择了大约15 GB左右的存储空间,而我几乎都无法实现。

接下来,我们可以设置机器类型区域。 回想一下,并非所有地区都可以使用所有硬件,并且价格各不相同。 在Google进行审核,并进行相应配置; 您以后可以毫不费力地换出VM上的GPU,CPU和RAM,但是更改区域要求您完全创建一个新的VM实例。 出于我的目的,我去了美国东部地区,这使我可以使用Tesla K80和功能更强大的Tesla P100,这两者对于我自己的目的来说绰绰有余。

如果您正在寻找机器类型的确切规格,我们将为您服务! 它完全取决于手头的工作和资源限制。 有些作业严重依赖CPU并需要大量内存,而其他作业可能会充分利用2x或4x GPU设置。 确实,我的实例始终根据针对任何给定工作的分析进行调整,这确实是处理事情的最佳方法。 评估工作的进行情况,使用情况,限制和执行时间,并根据需要进行调整。 我在下面添加了“性能分析”部分,但是当我们谈论几分钱时,一小时的超调几乎不是代价高昂的错误。

接下来,单击管理,安全性,磁盘,网络,唯一租赁以展开一些其他选项。

启动脚本

将以下内容粘贴到启动脚本中(或您选择的Linux发行版的等效命令,Google在此处具有类似的说明)。 这将在启动期间安装CUDA,这对于在Nvidia卡上进行GPU渲染是绝对必要的。 您会注意到,我已经包括(但已注释掉了)最后一行用于显式设置应用程序时钟速度,具体取决于硬件。 Nvidia此处提供了使用nvidia-smi -q -i 0 -d SUPPORTED_CLOCKS确定可用速度的指南。 找到最大时钟速度后,可以调整启动脚本以匹配或只是手动运行命令,但这不是绝对必要的。

您将需要命令行SSH访问权限来安装和运行程序,并且需要SFTP访问权限才能将作业文件发送到远程计算机并下载结果输出。 本文假定您对这两种方法都有一定的了解,但是如果您陷入困境,只需在Twitter上给我发送一条消息,然后我将尝试对其进行扩展。

Google似乎在倡导使用自己的控制台进行连接很麻烦,但是我更喜欢使用外部工具,此处提供了详细的说明。 在Windows上,对于SSH,通常是PuTTy或Cmder;对于SFTP,通常是WinSCP。

最后,我们来看一个用例! 这部分很有趣。 继续进行SSH到您的计算机,我们可以安装Blender。 由于启动脚本已为我们处理了驱动程序,因此您无需弄乱驱动程序。

我建议不要使用apt安装Blender,因为在编写2.79的打包版本时,根据我的经验有一些主要的渲染工件。 您可以在https://download.blender.org/release/上选择稳定的版本,也可以在https://builder.blender.org/download/上选择最先进的功能(新功能,不稳定)。 甚至可以尝试一些,然后尝试不同的结果。 我与前者的问题最少。

cd进入您选择的目录(我倾向于使用render/ ),然后运行以下命令,并适当替换URL:

 wget 'https://download.blender.org/release/Blender2.79/blender-2.79b-linux-glibc219-x86_64.tar.bz2'tar -jxvf blender*.tar.bz2 

将您的.blend文件上载到易于访问的位置,并减少总体上载时间,请在“保存”上设置“ 压缩文件”并重新保存。

Blender允许您在带有或不带有Blend文件的情况下运行无头命令,甚至可以配置其他设置,例如禁用不必要的功能。 完整的命令行文档在这里,但是您会注意到我们可以传入python脚本来为我们执行一些操作! 我倾向于大量使用以下两个文件:

  • 一个adjust.py用于进行快速调整,例如样本数,切换图层(或最终等于2.8的任何图层)等等, 而无需进行渲染。 这意味着您可以上传文件并即时调整其值,而不必为每次更改重新上传。
  • 用于设置(或覆盖)全局设置并执行渲染作业的render.py 。 这对于确保启用GPU渲染也至关重要,无论您在本地保存文件时的偏好设置如何。

例如,在2.79中,我大量使用图层来一次渲染单独的场景元素。 有时,我喜欢增加采样数,关闭/打开某些图层或调整其他设置,例如照明和降噪。 要获取特定设置的python属性,您可以在Blender中右键单击它,然后选择复制数据路径

因此,我重申:经常进行测试和分析。

我希望这是有见地的,也许可以为您节省一些头疼和几个小时! 如果您有任何疑问,或者想查看我记录的其他小东西,请给我留言或在Twitter上关注我@ElliotAndKo

渲染愉快!