跳到正文
Atelico · AI 游戏开发博客· 一手来源·· 1 天前精选AI 评分78

Bobium Brawlers 移植 Android 的端侧 AI 推理实践

Porting Bobium Brawlers to Android

推荐理由

文章分享了在移动端利用ARM SME2指令集实现本地AI推理的优化经验。

正文 · AI 翻译

当生成式AI在游戏内部运行,而不是通过云端API时,会发生什么变化?我们最近与ARM合作,使我们的游戏Bobium Brawlers能够在Android上运行。

如果你还没有玩过,Bobium Brawlers是一款快节奏的PvP卡牌骰子对战游戏,你可以用文字描述任何出现在你脑海中的生物(见下面那只有趣的蜥蜴间谍),游戏会将其构建出来。你的文字变成艺术品和可玩的牌组,因此每个创作都拥有独一无二的视觉效果和战斗风格。到目前为止,Bobium Brawlers仅在iOS上运行;现在我们也让它能在Android上运行,完全在设备端完成,无需任何云端AI成本。

将其移植到 Android 意味着依赖 SME2(Scalable Matrix Extension 2,可扩展矩阵扩展 2),这是 Arm CPU 的一项扩展,旨在加速 AI 推理背后以矩阵为主的数学运算。我们扩展了我们的 AI 引擎——该引擎为 Bobium Brawlers 的整个本地 AI 体验提供支持——以支持它。在实践中,这为我们提供了在 CPU 上快速运行语言模型的设备端路径,同时让 GPU 专注于图形和图像生成,这正是我们的引擎设计用来利用的 CPU/GPU 协作方式。为了高效使用 SME2,我们依赖于专门为其构建的内核:其中一些是我们自己编写的,而对于核心矩阵数学运算,我们采用了 Arm 的 KleidiAI 微内核,效果显著。这些内核直接作用于量化模型:4 位权重永远不会被扩展回全精度,而是以整数点积形式进行计算,从而节省时间和内存。KleidiAI 最终处理了模型中绝大多数矩阵乘法(在我们的测量中,占矩阵乘法工作量的 95%)。我们将重点放在它们周围的工作上:将每个 Transformer 层融合为单次传递,并在 CPU 核心之间对工作进行分块,以榨取游戏的最佳性能。

非常感谢 ARM 团队与我们合作;您可以在此处阅读他们的更深入的技术说明。

但让我们从头开始:我们如何在《Bobium Brawlers》中将 AI 作为体验的核心?

AI 作为游戏循环的一部分

《Bobium Brawlers》以三种不同的方式利用 AI:

  • 一个小型语言模型生成结构化的卡牌和卡组数据
  • 一个图像模型绘制生物图像
  • 嵌入分类器检查玩家输入的内容是否违反我们的内容安全准则

卡牌和美术生成可以放在加载动画之后进行,或者在玩家执行其他操作时预先准备。但审核不能这样做。它必须在玩家输入时即时响应,延迟低于200毫秒,否则体验会严重受损。因此,当玩家请求创建生物时,我们首先运行审核;如果通过安全准则检查,我们再并行运行卡牌组和图像生成。

我们的AI引擎作为游戏的一部分运行:共享资源、围绕渲染调度工作,并决定每个模型应使用哪个处理器。这一点很重要,因为与运行旁路进程不同,我们可以协调对内存和计算资源的访问,避免影响渲染性能。

在 Android 上运行 Bobium Brawlers 和我们的 AI 引擎让我们学到了几点经验:

  • 较小的语言模型在 SME2 CPU 上的生成速度比在 GPU 上更快。对于较大的模型,结果则各有优劣,而 GPU 在预填充阶段更快,这更充分地利用了并行化优势。
  • 图像生成仍保留在 GPU 上。即使我们将 CPU 生成时间从 46 秒缩短至 16 秒,GPU 仍然是正确的选择。它在该用例中速度最快,并允许我们在 CPU 上同时运行 SLM 生成,从而显著减少了实际耗时。
  • 更多的 CPU 核心并不自动意味着更快的速度。内存带宽在核心数量成为瓶颈之前就已经达到了上限。

有用的架构教训:对真实游戏进行性能分析,将每项工作负载放在其实际表现最佳的位置,并针对玩家体验进行优化。同时运行 CPU 和 GPU 意味着我们可以同时生成牌组和插图,并在战斗中悄悄准备升级卡牌。

端侧是一种设计选择和技术展示

将云从核心循环中移除会同时改变两件事。

它改变了体验:你创建和战斗时无需等待云端推理为每个资产提供服务,且审核是本地且快速的。

它也改变了经济模型:基于云的生成式游戏每次玩家创建内容时都要支付推理费用。人们越喜欢它,成本就越高。而在端侧,我们不为每只生物、每副牌组或每次审核支付服务费用。

实现这一目标正是我们 AI 引擎的目的。它负责处理模型在哪里运行、如何共享 GPU,以及生成内容与护栏如何在玩家设备上协同工作。《Bobium Brawlers》是我们首次在游戏中的完整技术演示,但我们构建该引擎是为了使其可复用。我们的目标是为其他开发者提供相同的基础设施,使他们能够将 AI 真正融入游戏玩法,而不会让每次玩家互动都变成数据中心账单。

下一步是什么

我们目前正在进行 iOS 封闭测试。注册 并告诉我们你的想法!在准备好推出 Android 版本之前可能还需要一段时间,但我们在过程中学到了很多,并将继续分享我们的发现。

来源:Atelico · AI 游戏开发博客 · atelico.studio