使用 Keras 和 TensorFlow Lite 的设备端大型语言模型

1. 准备工作

近期,最令人兴奋的机器学习突破之一是大型语言模型 (LLM)。这些模型可用于生成文字、翻译语言以及以全面且信息丰富的方式回答问题。LLM(如 Google LaMDAPaLM)已基于大量文本数据进行训练,使其能够学习字词和短语之间的统计模式和关系。这样,它们就可以生成类似于人工撰写的文本,并能够很准确地进行翻译。

LLM 会占用很多存储空间,并且通常需要消耗大量的算力才能运行,这意味着它们通常部署在云端,并且由于移动设备上的计算能力有限,对设备端机器学习 (ODML) 而言极具挑战性。不过,您也可以在新型 Android 设备上运行较小规模的 LLM(例如 GPT-2),并且仍能取得令人瞩目的成果。

在此 Codelab 中,您将学习如何通过以下方式构建由 LLM 提供支持的应用:

  • 使用 KerasNLP 加载预训练的 LLM (GPT-2)
  • 使用 KerasNLP 对 LLM (GPT-2) 进行微调
  • 使用 TensorFlow Lite 在 Android 上转换、优化和部署 LLM

前提条件

  • 掌握 Keras 和 TensorFlow Lite 的中级知识
  • 掌握 Android 开发方面的基础知识

学习内容

  • 如何使用 KerasNLP 加载和微调预先训练的 LLM
  • 如何量化 LLM 并将其转换为 TensorFlow Lite
  • 如何使用转换后的 TensorFlow Lite 模型进行推断

所需条件

  • 能够访问 Colab
  • 安装最新版本的 Android Studio
  • 具有超过 4G RAM 的新型 Android 设备

2. 进行设置

如需下载此 Codelab 的代码,请执行以下操作:

  1. 找到此 Codelab 的 GitHub 仓库
  2. 依次点击 Code > Download zip,下载此 Codelab 的所有代码。

仓库图片

  1. 解压缩已下载的 ZIP 文件,这会解压缩 examples 根文件夹,其中包含您需要的所有资源。

3. 运行起始应用

  1. examples/lite/examples/generative_ai 文件夹导入 Android Studio。
  2. 启动 Android 模拟器,然后点击导航菜单中的 execute.png Run

运行和探索应用

应用应在 Android 设备上启动。该应用也称为“Auto-complete”。界面非常简单:您可以在文本框中输入一些种子字词,然后点按 Generate;接着,应用使用该 LLM 进行推断,并根据您的输入生成其他文本。

目前,如果您在输入一些字词后点按 Generate,系统不会执行任何操作。这是因为它尚未运行 LLM。

起始应用的屏幕截图

4. 准备将 LLM 部署到设备端

5. 完成 Android 应用

现在,您已将 GPT-2 模型转换为 TensorFlow Lite,您最终可以在应用中部署该模型了。

运行应用

  1. 将上一步中下载的 autocomplete.tflite 模型文件拖到 Android Studio 的 app/src/main/assets/ 文件夹中。

将模型添加到 Android Studio

  1. 点击导航菜单中的 execute.png Run,然后等待应用加载。
  2. 在文本字段中输入一些种子字词,然后点按 Generate

完成后的应用的屏幕截图

6. 关于 Responsible AI 的说明

正如原始的 OpenAI GPT-2 公告中所述,GPT-2 模型存在值得注意的事项和限制条件。事实上,如今的 LLM 通常存在一些众所周知的挑战,例如幻觉、公平性和偏见;这是因为这些模型是根据真实数据训练的,因此能够反映现实问题。

创建此 Codelab 只是为了演示如何使用 TensorFlow 工具创建由 LLM 提供支持的应用。本 Codelab 中生成的模型仅用于培训目的,适用于生产环境。

在生产环境中使用 LLM 时需要谨慎选择训练数据集和全面的安全缓解措施。如需详细了解 LLM 领域的 Responsible AI,请务必观看 2023 年 Google I/O 大会的“使用生成式语言模型进行安全且负责任的开发”技术专题演讲,并查看 Responsible AI 工具包

7. 总结

恭喜!您构建了一个应用,该应用能够完全在设备端运行预训练的大型语言模型并根据用户输入生成连贯的文本!

了解更多内容