综合介绍
Transformers.js 是由 Hugging Face 开发的一个 JavaScript 库,旨在让用户能够直接在浏览器中运行最先进的机器学习模型,而无需服务器支持。该库与 Hugging Face 的 Python 版 transformers 库功能等效,支持多种预训练模型,涵盖自然语言处理、计算机视觉和语音识别等任务。Transformers.js 使用 ONNX Runtime 运行模型,支持在 CPU 和 WebGPU 上执行,提供了高效的模型转换和量化工具,方便用户将 PyTorch、TensorFlow 或 JAX 模型转换为 ONNX 格式并在浏览器中运行。
功能列表
- 自然语言处理:文本分类、命名实体识别、问答系统、语言建模、摘要生成、翻译、多项选择和文本生成。
- 计算机视觉:图像分类、目标检测、图像分割和深度估计。
- 语音识别:自动语音识别、音频分类和文本转语音。
- 多模态任务:嵌入、零样本音频分类、零样本图像分类和零样本目标检测。
- 模型转换和量化:支持将 PyTorch、TensorFlow 或 JAX 模型转换为 ONNX 格式,并进行量化以优化性能。
- WebGPU 支持:在支持的浏览器中使用 WebGPU 运行模型,提高计算效率。
使用帮助
安装
Transformers.js 可以通过 NPM 安装,也可以通过 CDN 或静态托管在浏览器中使用。以下是安装步骤:
NPM 安装
npm i @huggingface/transformers
CDN 使用
在 HTML 文件中添加以下脚本标签:
<script type="module">
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@huggingface/transformers@3.1.0';
</script>
使用示例
Transformers.js 提供了类似于 Python 版 transformers 库的 pipeline API,使得模型的使用变得非常简单。以下是一些常见任务的示例:
情感分析
import { pipeline } from '@huggingface/transformers';
// 分配一个情感分析的 pipeline
const pipe = await pipeline('sentiment-analysis');
const out = await pipe('I love transformers!');
// 输出: [{'label': 'POSITIVE', 'score': 0.999817686}]
使用不同的模型
可以通过指定模型 ID 或路径来使用不同的模型:
const pipe = await pipeline('sentiment-analysis', 'Xenova/bert-base-multilingual-uncased-sentiment');
在 WebGPU 上运行模型
const pipe = await pipeline('sentiment-analysis', 'Xenova/distilbert-base-uncased-finetuned-sst-2-english', { device: 'webgpu' });
模型转换和量化
Transformers.js 支持将 PyTorch、TensorFlow 或 JAX 模型转换为 ONNX 格式,并进行量化以优化性能。以下是转换和量化的示例:
python -m scripts.convert --quantize --model_id bert-base-uncased
转换后的文件将保存在 ./models/
目录下,包括 model.onnx
和 model_quantized.onnx
文件。
示例应用
Transformers.js 提供了多个示例应用,帮助用户快速上手:
- Whisper Web:语音识别
- Doodle Dash:实时草图识别游戏
- Code Playground:浏览器内代码补全
- Semantic Image Search:文本搜索图像
- Text to Speech:文本转语音