项目介绍:Hugging Face 的 Exporters 模块
项目概述
Hugging Face 的 Exporters 模块是一个正在开发中的软件包,其主要功能是将 🤗 Transformers 模型导出为 Core ML 格式。尽管 Transformers 模型常用的实现框架是 PyTorch、TensorFlow 或 JAX,但在实际部署中,可能需要使用其他框架,比如 Core ML。Exporters 正是为此而生,它旨在简化模型转换过程,并与 🤗 Transformers 库及 Hugging Face Hub 紧密集成。
为什么选择 Exporters
Exporters 模块的设计理念是比自己用 coremltools 编写转换脚本更方便。此外,它还与文件下载、模型转换和上传至 Hugging Face Hub 进行了自动化集成,极大地简化了操作。对于不想进行本地安装的用户,可以直接使用一个无需编写代码的转换平台进行模型转换。
需要注意的是,Transformer 模型通常较大,因此可能不太适合移动设备。使用 🤗 Optimum 优化模型可提升推理的效率。
模块安装
要使用 Exporters,首先需要克隆代码仓库:
git clone https://github.com/huggingface/exporters.git
接着,进入目录并安装为 Python 包:
cd exporters
pip install -e .
完成安装后,即可在 macOS 或 Linux 系统上使用该模块进行 Core ML 导出,虽然推荐使用 macOS。
Core ML 简介
Core ML 是 Apple 提供的一个高效设备端模型推理库,适用于包括 macOS、iOS、tvOS 和 watchOS 在内的平台。该库充分利用了 CPU、GPU 和 Apple 神经引擎进行优化。虽然 Core ML 本身是专有软件,但其文件格式是开放的。
利用 Exporters,用户可以通过 coremltools 将 PyTorch 或 TensorFlow 的模型转换为 Core ML 格式。Exporters 提供了一系列预定义的配置文件,可以轻松适应不同的模型结构,比如 BERT、GPT-2、Vision Transformer (ViT) 等。
如何导出模型
用户可以直接在命令行中使用 Python 模块来导出模型。例如,使用现成的配置导出 checkpoint:
python -m exporters.coreml --model=distilbert-base-uncased exported/
这将把指定的模型 checkpoint 导出为 Core ML 格式,并保存在 exported
目录中。导出的文件名将是 Model.mlpackage
。如果转换成功,模型文件可以直接集成到 Xcode 项目中,适用于 macOS 或 iOS 应用程序。
使用导出的模型
导出后的模型可以像其他 Core ML 模型一样在应用中使用。在 Xcode 中加载模型后,将自动生成一个 Swift 类,允许在应用内部进行预测。
对于图像输入,没有必要对图像进行预处理,因为模型会自动对像素进行归一化。对于文本模型,仍然需要手动对输入数据进行标记化。
结束语
Exporters 模块旨在通过一个高效、直观的方法使 🚀 Transformers 模型在苹果生态系统中变得简单易用。对于开发者和企业,它不仅节省了开发时间,而且降低了模型部署的复杂性。希望这样的工具能够帮助更多的用户更便捷地使用机器学习技术。