[ExecuTorch 系列] 3. 导出自定义的大语言模型

[ExecuTorch 系列] 3. 导出自定义的大语言模型

如果你有自己的 PyTorch 模型且该模型是大型语言模型(LLM),本文档将展示如何手动将其导出并适配到 ExecuTorch,其中包含许多与之前的 指南中相同的优化。

本文档提供一个实际示例以利用 ExecuTorch 导入自定义 LLM。主要目标是提供:关于如何将 ExecuTorch 与自定义 LLM 集成的指南。

方法适用于其他语言模型 ,因为 ExecuTorch 具有模型无关性。PyTorch – Exporting custom LLMs

首先,需要下载 ExecuTorch 仓库并安装依赖项。ExecuTorch 建议使用 Python 3.10 并使用 Conda 来管理环境。

可以参考另一篇文档:[ExecuTorch 系列] 1. 从源码构建 ExecuTorch

我这里安装的 python 版本是 3.12.12。

文档示例使用 Karpathy 的 nanoGPT,教程同样适用于其他大语言模型,因为 ExecuTorch 是模型不变的。

使用 ExecuTorch 运行模型有两个步骤:

  1. 导出模型:将模型预处理为适合 ExecuTorch Runtime 执行的 格式。
  2. 运行:加载模型文件并使用 ExecuTorch Runtime 运行。

导出到 ExecuTorch (基础版)

首先,需要下载 nanoGPT 模型和相应的分词器词汇表:

然后,创建一个名为 的文件,其中包含以下内容:

然后,通过执行该文件,在当前目录下得到导出后的模型:

gpt 教程

后端委派 (Backend Delegation)

ExecuTorch 为多个不同目标提供了专用后端,包括但不限于通过 XNNPACK 后端实现 x86 和 ARM CPU 加速,通过 Core ML 后端和 Metal Performance Shader(MPS)后端实现苹果加速,以及通过 Vulkan 后端实现 GPU 加速。

为了在导出期间将模型委托给特定的后端,ExecuTorch 使用了函数。该函数接收来自的导出程序以及一个特定于后端的分区器对象。分区器会识别计算图中可由目标后端优化的部分。在内部,导出的程序会被转换为边缘方言程序。之后,分区器会将兼容的图部分委托给后端以进行加速和优化。任何未被委托的图部分都由 ExecuTorch 的默认算子实现来执行。

也就是说,要将导出的模型委托给特定后端,我们需要先从 ExecuTorch 代码库导入其分区器和边缘编译配置,然后调用。

如下示例,说明如何将 nanoGPT 委派给 XNNPACK:

量化

具体请参考:Quantization

更多请参考:ExecuTorch 中的量化

Runtime 的调用

ExecuTorch 提供了一组 Runtime API 和类型来加载和运行模型。

创建一个名为 的文件,其中包含以下内容:

将以下文件下载到与 相同的目录中:

构建 ExecuTorch

要使用 ExecuTorch Runtime 运行 LLM,还需要构建 ExecuTorch Runtime,具体内容可以参考: [ExecuTorch 系列] 1. 从源码构建 ExecuTorch 。ExecuTorch 使用 CMake 构建系统。

构建示例代码

创建一个名为 的文件,其中包含以下内容:

完成上述准备工作后,完整目录应包含以下文件:

最后,我们只需要构建示例工程:

运行

成功构建后,在 目录下生成了可执行文件,我们把生成的模型和词汇表文件放入 目录。

运行测试代码:

在我的电脑上跑效果不太好,生成回复的速度非常慢,回答也不准确。

据文档中描述:此时,它可能会运行得非常缓慢。这是因为 ExecuTorch 没有被告知要针对特定的硬件后端 (delegation),并且它以 32 位浮点数 (无量化) 执行所有计算。

  1. nanoGPT: karpathy/nanoGPT
  2. ExecuTorch: pytorch/executorch
  3. 语雀 – 从源码构建 ExecuTorch
  4. PyTorch – Executorch 中的 LLM 简介
  5. PyTorch – 将 LLM 部署到 ExecuTorch
  6. PyTorch – Deploying LLMs to ExecuTorch
  7. PyTorch – Exporting custom LLMs
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:Ai探索者,转载请注明出处:https://javaforall.net/273973.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月12日 下午12:48
下一篇 2026年3月12日 下午12:48


相关推荐

关注全栈程序员社区公众号