本文由 5moon 译注自 DeepFakes ClubHow to Create DeepFakes with Google Cloud GPU Services,原文地址为 https://www.deepfakes.club/google-cloud-fakeapp-tutorial/

5moon 注:基本按照原文译,有点长了,给个 30s Takeaway:

  1. Google Cloud 提供 GPU 服务,可选 Tesla K80 或 P100,跑 FakeApp 是够的;
  2. GPU 需要在控制台手动申请配额;
  3. Google Cloud 的新用户300美元赠金可用于 GPU 服务,但是要通过 GPU 配额的审批有可能得支付 35 美金作为预付款。

译文:

如果你想在 Windows 上使用 FakeApp 软件但是自己的电脑配置太差跑不起来,那你可以试试 Google Cloud 提供的 GPU 服务。这个教程会向你展示如何在 Google Cloud 里使用 FakeApp 制造“假象”。

重要提醒

Google Cloud 会按照使用其服务的时间来收取费用。如果你不能在使用结束后正确地终止一个虚拟机实例,月末的时候你可能会收到一张巨额账单。所以你最好清楚自己在做些什么。

你应该使用 Google Cloud 的 GPU 服务么?

云计算的价格

Google 的 GPU 服务并不便宜。一个还算可以的配置24小时不停跑满一个月要耗费200到300美元。有几个办法来减少费用。你可以在不使用实例的时候停止它。你还是得付一小笔钱来保留你的设置和数据,但假设你一个月只用一半时间,你就能减少一两百块的花费。

Google 目前给新用户提供了 300 美刀的免费额度。尽管你得升级为付费用户才能使用其 GPU 服务,但是这300美刀是可以使用的。这就足够你折腾 Google 云服务一个月并尝试做视频了。请不要滥用 Google 的慷慨善意。Google 的云服务不仅有商业用户,也有很多依赖它进行重要研究(如生物医学研究)的研究者和学生,谨记这点。如果经常使用请自觉付费(5moon 注:意思是不要故意注册好几个账号来获取免费额度)。

5moon 注:微软的 Azure 本来也提供200刀体验金。可是在创建实例时其带 GPU 的资源总是不可用,我刷了半天后来发现提示写的是并不向中国区域销售此服务。哼,还是用 Google 好了。

用云服务还是买一台新电脑

你应该看看你的钱包(和女朋友的脸色)来考虑是剁手一台新电脑还是升级现有电脑。如果你想全新配置一台机器来跑 FakeApp,你可能至少得花1000美刀来买一台中端。电费也是要考虑的呢(如果一直跑的话)。

如果你打算连着几个月都折腾 Deepfakes 视频的话,你最好就买一台新电脑。如果你只是想尝尝鲜,或者偶尔跑一跑,那么Google Cloud 就是你的贴心好朋友。

准备一个 Google Cloud 账号

注册并免费试用

你要做的第一件事就是注册。点这里注册并获取其赠送的300美金。

注册并填写资料。你必须有一个 Google 账户(或新建一个)。完成之后,你会被带到一个欢迎界面。

点击“创建一个新项目”。(5moon 注:Google Cloud 有中文版的,这里懒,用了原文的截图)

升级到付费服务来获取 GPU

你现在应该会拥有300美刀可以用于使用 Google Cloud. 但是,这个免费试用并不包含 GPU 服务。创建完项目后,为了获取 GPU,你必须升级你的账户。“升级”的按钮可能在顶部的横幅里,没看到的话,点击左上“菜单”-“账单”,你应该会在右上角看到这个选项。点击“升级”,填写账单信息并确认。(5moon 注:需要绑定银行卡,我以前绑定过澳洲 Master 储蓄卡)


申请 GPU 配额

注意:有些用户反映 Google 现在要求支付一笔35美刀的费用来获取配额。这个要求是否是根据地域或是其他账户属性而异目前尚不清楚。

5moon 注:我在申请之后就收到了邮件要求我支付一笔35美刀的费用或者出示曾经使用过的等额费用的账单。作为参考,我绑定的银行卡和账单信息都是澳洲的。

即使你升级了账户,你仍然需要手动申请增加 GPU 配额,因为默认在全域都没有配额。配额是根据主机所在地区来划分的,所以先决定好区域再来申请。

只有部分区域提供 GPU 服务。点此看看哪个区离你最近。不同区域 GPU 价格有些许不同,但为了减少访问实例时的延迟,选一个地理上离你最近的吧。(5moon 注:对中国用户来说,海外线路一直很迷。比如以前很多人选择日本机房,造成拥堵之后,实际访问体验甚至还不如延迟高的美国东部。)

你可以选择 Tesla K80 或 P100 显卡。P100 性能确实强劲,但价格是 K80 的三倍。作为首次尝试,你可以选择更便宜的K80. 壕当我没说。

现在假设你选择了一个提供 GPU 的区域,比如我选择可以提供 K80 的 asia-east1-a。

单击“菜单”-“Compute Engine”-“配额”,你会看到一个很长的列表。在“区域”下拉菜单选择你的区域来缩小范围,比如这里我选择“asia-east1”。

在筛选过的列表中(通常在下方)找到 NVIDIA K80 GPUs 配额。勾选它,回到页面上方选择“编辑配额”。

在跳出的表格中,选择1枚GPU,因为 FakeApp 并不会利用多枚 GPU 来运行。你还得写下理由,然后提交申请等就行了。我在一分钟内审批成功,有些人则花了5分钟不等。(5moon 注:我从提交申请到收到要求缴费的邮件到获取配额大概一个工作日的时间,猜测也许在美帝会快一些)

获得配额后就可以来部署 GPU 实例了。

在 Google Cloud 上安装 FakeApp

创建一个GPU实例

我们现在需要新建一台虚拟机用来安装 FakeApp。

回到 Google Cloud 控制台,点击“菜单”-“Compute Engine”-“VM实例”。

如果这是你的第一个实例,你可能会看到上面图片那样的选项。点击“创建”。

你现在需要对虚拟机配置进行一些选择。你可以使用默认的实例名字。在区域一栏,记得选择申请了 GPU 配额的同一区域。虚拟机的类型有很多不同的选项。我会建议使用2个vCPU和7.5G作为起步。添加更多资源会增加这个实例的费用。

在启动盘一栏选择 Windows Server 2016.你可以选择 SSD 或者普通永久磁盘,最低容量为50G。我最终选择了稍微贵那么一点点的 SSD。(5moon 注:穷如我还是用了普通磁盘 =.=)

我们还得加上 GPU。在虚拟机类型栏目下选择自定义。点击"GPU"展开更多菜单。设置 GPU 数量为“1”,并且选择你的 GPU(这里为 NVIDIA Tesla K80)。

防火墙选项下勾选允许 HTTP 和 HTTPS 流量。

其他选项按需选择之后点击“创建”。右上角你可以看到一个月的估计花费。如果你按照上面说的来设置,这个花费大约在350~375 美刀每个月。如果你允许你的实例以“抢占式”模式运行,每个月还能再省个100刀。抢占式实例是允许 Google 在别人需要用到资源的时候中断你的服务的一种模式,你的服务最多不能连续运行超过24小时。点此了解更多。这里我先选非抢占式的实例。如果你愿意,可以在上图“管理,磁盘,网络,SSH密钥”菜单中找到并调整这个选项。

创建实例之后可能需要等几分钟才能开始使用。你会看到关于你的实例的一个概要。

连接到实例

你会用上远程桌面协议(RDP)来连接实例。如果你在用 Windows,那么你已经有一个很好的自带的 RDP 客户端了。否则,你得自己找一个客户端。剩下的教程会假设你在自己的电脑上使用Windows.

在实例概要中点击“RDP”右边的下拉按钮选择“设置 Windows 密码”。选择一个用户名用来登录(默认为你的 Google 用户名)。点击“设置”会生成一个密码,把这个密码记下来。

如果按了“设置”按钮之后除了一直在移动的点的动画效果外就没反应了,那么尝试:

  • 关掉广告屏蔽插件/软件;
  • 清除Cookies,关掉并重开浏览器,再试一次;
  • 换个浏览器,有些 Chrome 或 Firefox 用户偶尔会出现问题。
    (注:我一开始用 Chrome 出现了此问题,换成 Firefox 就好了。奇怪,自己家的东西反而不好使了。)

回到那个“RDP”按钮并选择“下载 RDP 文件”。

在键盘上按下“Win”键或者在系统的搜索中输入“远程桌面连接”。单击运行搜索结果。

在弹出的窗口中,在“连接设置”下选择“打开”,载入刚才下载的 RDP 文件,它便会帮你自动填写设置。

注意,在没有申请静态IP的情况下每一次停止实例运行都可能更换一次IP地址。如果你无法连接,重新下载一次RDP文件。(5moon 注:如果需改了默认用户名,记得用修改后的用户名登录)

最简单的在家里电脑和虚拟机实例之间传输文件的办法就是向虚拟机共享硬盘。在远程桌面连接的“本地资源”选项卡中,点击最下面一栏“本地设备和资源”中的“更多”按钮,在弹出的窗口中选择想要共享的分区。


设置完毕后,点击“连接”,输入密码,你就可以连接到这台虚拟机了。
(5moon 注:Link S-tar-t!)

DeepFakes 软件安装

软件的安装和在正常 Windows 上安装大致相同。

下面是几个在 Windows 虚拟机实例上使用的技巧。

你可以用上面说的共享驱动器的办法来传输文件。打开文件浏览器,你会看到一个类似“李狗蛋的D盘”之类的文件夹。需要注意的是你的RDP连接受到上传和下载速度的限制。如果你在上传文件,那么你的操作可能会有个10秒左右的延迟。还有,当你在共享文件驱动器里打开了一个拥有很多文件的文件夹,它可能需要很长时间来把所有文件列出。

我建议你在家里的硬盘上创建一个文件夹专门用来放这些要传输的文件。对于大文件夹可能还得压缩成ZIP(5moon 注:Windows 支持解压ZIP文件)。传输文件的时候请耐心等候。

当你用虚拟机上网的时候,安全设置可能对新手来说会有一点麻烦(5moon 注:诶,我并没有进行什么安全设置直接就能上网了吖)。我建议你在本地准备好所有需要的文件再传输过去(5moon 注:我不建议。自己下载+传输在国内这种小水管中太慢了,我在虚拟机中直接下载速度可以达到150兆每秒,需要安装的 G 级软件十几秒就下完了)。

简要安装步骤(详见):

  • 安装显卡驱动
  • 安装 CUDA 8.0 和补丁
  • 安装 Visual C++ Redistributable for Visual Studio 2015
  • 安装 FakeApp
  • 设置与检查所有相关 PATH 环境变量
  • 准备好训练数据集
  • Have Fun!

现在你应该可以用 Google Cloud 来训练你的 FakeApp 模型了。默认的模型参数在 K80 的 11G 显存下表现良好。

5moon 注:也得根据实际情况进行调整。我在A有600张图,B有1000张图的情况下,默认参数运行良好;然而当A增加到900张以上的时候,机子的7.5G内存就不够了。后来还是 Google 智能地建议我增大了实例的内存才能跑起来。模型方面,为了质量考虑,层级和节点并没有更改,但是 Batch Size 降低到了32来运行。显存的话基本是够的。

退出会话

想退出,关掉RDP窗口即可。

然后,回到控制台中停止实例。停止后的实例仍然会产生一笔小费用用于维护,但是肯定比一直运行要便宜的多。当然,如果你已经玩够了,那删除实例就好。不过删除之前记得备份(5moon 注:特别是模型,模型是可以再用的)。不要忘了这一步噢,不然可能会产生天价账单。

5moon 后记:
这是一篇傻瓜式的教程,原作者讲的很详细,有些话我还没翻译出来。

环境配置不是难点,我也是第一次使用 Windows 作为服务器端的系统,以前都是 CentOS、Ubuntu之类的,就是 Win 还要 License Fee 有些心疼,系统升级自动重启还一度中断了程序。

如果使用 FakeApp 2.1 版本,基本可以做到不输入代码全图形化操作了。1.1的版本相对麻烦一点。

感谢算法和软件的作者让小白也有机会可以近距离体验什么是「深度学习」、「机器学习」和「AI」。也感谢 Google 这样的公司,在赚大钱的同时,切实地推动技术进步,为社会提供先进的生产工具。

最后说一句,技术无罪,谨慎使用!