0
早在 2019 年 3 月,我就建立了一个名为 AI Dungeon 的 hackathon 项目。这个项目是一个经典的文本冒险游戏。故事的内容和所呈现的潜在动作都是通过机器学习产生的:
图片来源:AI Dungeon Classic
这款游戏在 hackathon 很受欢迎,总会有一小群人在线,但总的来说,离我的预想还有差距。
首先,玩家只能从游戏提供的选项中进行选择。我想要一个真正开放的世界,玩家可以随心所欲地写作;另一方面,在长时间的游戏过程中,游戏很快就变得容易胡言乱语:
图片来源:AI Dungeon Classic
不幸的是,这两个问题都没有很明确的解决方法。我在当时最大的可用参数版本 GPT-2 上建立了 AI Dungeon。尽管 GPT-2 是可用的最强大的模型,但实际上还远远不够。经过几个月的修复和调整,我的游戏有了很大的改进,但还是遇到了同样的问题。
然而,在 11 月,OpenAI 发布了完整的 15 亿参数 GPT-2 模型,并为新版本的游戏打开了大门,这个版本更接近我最初的想法。一个月后,我发布了 AI Dungeon 2,一个基于 GPT-2 模式的真正开放的文本冒险游戏:
图片来源:AI Dungeon
在游戏中,你可以做任何事情。组建一个骷髅摇滚乐队?吃月亮?安装 Windows 10?一切皆有可能。
游戏反响非常好。我们登上了黑客新闻的榜首,一些受欢迎的玩家发布了相关视频,Twitter 上满是 ML 生成的冒险的截图。一周之内,我们有了超过 10 万名玩家,其中超过一半玩家从头到尾完成了游戏。
然而,由于突然引起关注,我们的成本也大大增加。
如何在 GCP 上花费 50000 美元
当我第一次发布 AI Dungeon 2 时,它并不是一个托管应用,而是一个用户可以复制并运行的 Google Colab notebook,用户可以下载 AI Dungeon 模型并安装游戏界面。
图片来源:Google Colab
这种方法之所以有意义,有几个原因。首先,Colab 是免费的,这使得它成为了一个很好的辅助项目平台。其次,Google 为每个 Colab notebook 提供了一个免费的 GPU 实例,这是运行 5GB 模型所必需的。
我们遇到的第一个问题是我们的模型几乎不适合 GPU 实例。如果由于某种原因,你的游戏需要一点额外的内存,整个游戏可能会崩溃。
第二个更严重的问题是资金问题。
我之所以选择 Colab 是基于成本的考虑,但我没有考虑数据下载的费用。由于每个 Colab notebook 都需要下载 5GB 的模型,而且用户分布在不同的地区,因此每次下载的成本在 0.30 到 0.40 美元之间。
当每天的账单达到 2000 美元时,比亚迪的感知控制认知实验室(PCCL)非常友好地处理了这些费用;当成本达到 7000 美元时,他们还可以接受;但是当成本达到 15000 美元时,他们开始紧张起来;在成本达到 20000 美元时,我们都同意我们需要做点什么;在成本达到 30000 美元时,他们都想拔掉插头了。
到一切都谈妥时,三天内总帐已达 50000 美元。
在不中断的情况下按比例部署 GPT-2
在 PCCL 关闭 AI Dungeon 2 的 12 小时内,我们的社区已经通过 torrent 分享模型的点对点解决方案,这意味着游戏是备份的,没有下载收费。
然而,这显然是一项临时措施。AI Dungeon 2 的愿景是,它是一个任何人都可以玩的游戏,而不仅仅是那些有技术头脑的人运行一个 Colab notebook。为了做到这一点,我们需要发布一个真正的应用程序游戏。
要构建一个完整的 AI Dungeon 2 应用程序,我们的模型需要部署为后端 web 服务器。你可以将它当成是一个“预测API”,我们的应用程序可以通过用户的输入进行查询,从而生成接下来的故事。以前使用过 microservices 的人都应该熟悉这种模式。
问题是,如何在 ML 模型的基础上构建微服务?
事实证明,有一个开源工具可以自动实现它,那就是 Cortex。在高层上,Cortex 将会:
将模型打包在 API 中并将其容器化
将模型部署到云中,将 API 公开为 HTTP 端点
自动缩放实例以处理流量波动
我们没有使用 Flask、Docker、Kubernetes 和一大堆 AWS 服务来构建自己的基础设施,我们可以整合和自动化我们的基础设施。
这种架构允许我们将我们的模型作为网络和移动应用程序的后端,向不能使用 Colab 的玩家开放游戏。然而,它也需要一些优化,以便我们能够负担得起其费用。
首先,我们需要配置积极的自动缩放。我们每运行一个实例就收取一分钟的费用,为了服务于许多并行用户,我们需要启动许多实例。为了最高效地利用我们的资源,我们需要在任何给定的时刻提高所需实例的最小数量,并快速地删除任何不必要的实例。
其次,我们需要选择最佳的实例类型。这意味着要准确计算出我们的实例需要多大才能有效地承载模型,并利用 spot 实例——云提供商以大幅折扣出售的未使用实例。
经过一些修复,我们能够使我们的 Cortex 部署比以前 Colab 的设置成本效益高出大约 90%。在两周内,我们的服务器数量达到了 715 台的峰值,我们支持了超过 10 万名玩家。六周后,我们已经支持了超过了 100 万名用户,创建了 600 万个独特的故事。
扩展 AI Dungeon 需要社区的共同努力
在每个发展阶段,社区都是开启我们下一阶段规模的关键。
最明显的例子是那些玩 AI Dungeon 2 的人。没有他们,游戏就没有任何规模可言。不过,除了我们的玩家,我们还得到了社区成员的帮助,比如:
BYU PCCL 支付我们的初始 GCP 账单
在关闭后的 12 小时内,通过 torrent 将 AI Dungeon 2 重新上线的用户
Braydon Batungbacal,他自愿构建 iOS 和 Android 应用程序
继续支持 AI Dungeon 发展的 Patreon 支持者
像 Cortex 这样的开源项目曾经支持 AI Dungeon
随着我们继续开发 AI Dungeon,并有可能为其他由 ML 驱动的游戏提供一个更大的平台,毫无疑问,我们的社区将继续成为我们做出决策和执行决策的驱动力。
感谢所有参与的人,请继续关注下一步。
雷锋网雷锋网雷锋网
雷峰网版权文章,未经授权禁止转载。详情见转载须知。