最先进的网络机器学习。跑🤗变压器直接在您的浏览器中,无需服务器!
现在,你可以直接在 Web 浏览器上运行 HuggingFace Transformers,实现各种 AI 功能了。
仅需 3 行 JavaScript 代码,即可快速集成使用。
该项目现已支持执行以下 AI 任务:
📝 NLP:文本分类、摘要、翻译和文本生成
🖼️ 视觉:图像分类、对象检测和分割
🗣️ 音频:自动语音识别
🐙 多模态:零示例图像分类
最先进的网络机器学习。跑🤗变压器直接在您的浏览器中,无需服务器!
Transformers.js 在功能上等同于 Hugging Face 的 transformers python 库,这意味着您可以使用非常相似的 API 运行相同的预训练模型。这些模型支持不同形式的常见任务,例如:
- 📝 自然语言处理:文本分类、命名实体识别、问答、语言建模、摘要、翻译、多项选择和文本生成。
- 🖼️ 计算机视觉:图像分类、对象检测和分割。
- 🗣️ 音频:自动语音识别和音频分类。
- 🐙 多模式:零镜头图像分类。
转换器.js使用 ONNX 运行时在浏览器中运行模型。最好的部分是,您可以使用以下方法轻松地将预训练的PyTorch,TensorFlow或JAX模型转换为ONNX。🤗最佳.
有关更多信息,请查看完整文档。
快速浏览
从现有代码翻译非常简单!就像python库一样,我们支持API。管道将预训练模型与输入的预处理和输出的后处理组合在一起,使其成为使用库运行模型的最简单方法。pipeline
蟒蛇(原版) | Javascript (我们的) |
---|---|
from transformers import pipeline
# Allocate a pipeline for sentiment-analysis
pipe = pipeline('sentiment-analysis')
out = pipe('I love transformers!')
# [{'label': 'POSITIVE', 'score': 0.999806941}]
|
import { pipeline } from '@xenova/transformers';
// Allocate a pipeline for sentiment-analysis
let pipe = await pipeline('sentiment-analysis');
let out = await pipe('I love transformers!');
// [{'label': 'POSITIVE', 'score': 0.999817686}]
|
还可以通过将模型 ID 或路径指定为函数的第二个参数来使用其他模型。例如:pipeline
// Use a different model for sentiment-analysis
let pipe = await pipeline('sentiment-analysis', 'nlptown/bert-base-multilingual-uncased-sentiment');
安装
要通过 NPM 安装,请运行:
npm i @xenova/transformers
或者,您可以使用 CDN 或静态托管在原版 JS 中使用它,而无需任何捆绑器。例如,使用 ES 模块,您可以使用以下内容导入库:
<script type="module">
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@xenova/transformers';
</script>
例子
想直接跳进去吗?开始使用我们的示例应用程序/模板之一:
平台 | 描述 | 源代码 |
---|---|---|
反应 | 多语言翻译网站 | 链接 |
浏览器扩展 | 文本分类扩展 | 链接 |
电子 | 文本分类应用程序 | 链接 |
节点.js | 情绪分析接口 | 链接 |
接下来.js | 即将推出 | 链接 |
自定义用法
默认情况下,Transformers.js 使用托管的预训练模型和预编译的 WASM 二进制文件,这些二进制文件应开箱即用。您可以按如下方式自定义此操作:
设置
import { env } from '@xenova/transformers';
// Specify a custom location for models (defaults to '/models/').
env.localModelPath = '/path/to/models/';
// Disable the loading of remote models from the Hugging Face Hub:
env.allowRemoteModels = false;
// Set location of .wasm files. Defaults to use a CDN.
env.backends.onnx.wasm.wasmPaths = '/path/to/files/';
有关可用设置的完整列表,请查看 API 参考。
将模型转换为 ONNX
我们建议使用我们的转换脚本在单个命令中将 PyTorch、TensorFlow 或 JAX 模型转换为 ONNX。在幕后,它使用🤗最佳以执行模型的转换和量化。
python -m scripts.convert --quantize --model_id <model_name_or_path>
例如,使用以下方法转换和量化 bert-base-uncased:
python -m scripts.convert --quantize --model_id bert-base-uncased
这会将以下文件保存到:./models/
bert-base-uncased/
├── config.json
├── tokenizer.json
├── tokenizer_config.json
└── onnx/
├── model.onnx
└── model_quantized.onnx
支持的任务/模型
以下是Transformers.js当前支持的所有任务和模型的列表。 如果您没有看到此处列出的任务/模型或尚不受支持,请随意 以在此处打开功能请求。
任务
自然语言处理
任务 | 身份证 | 描述 | 支持? |
---|---|---|---|
对话的 | conversational |
在给定提示的情况下生成相关、连贯和知识渊博的对话文本。 | ❌ |
填充面膜 | fill-mask |
屏蔽句子中的一些单词,并预测哪些单词应该取代这些掩码。 | ✅ |
问答 | question-answering |
从给定文本中检索问题的答案。 | ✅ |
句子相似性 | sentence-similarity |
确定两个文本的相似程度。 | ✅ |
综述 | summarization |
生成文档的较短版本,同时保留其重要信息。 | ✅ |
表问答 | table-question-answering |
回答有关给定表中的信息的问题。 | ❌ |
文本分类 | text-classification 或sentiment-analysis |
为给定文本指定标注或类。 | ✅ |
文本生成 | text-generation |
通过预测序列中的下一个单词来生成新文本。 | ✅ |
文本到文本生成 | text2text-generation |
将一个文本序列转换为另一个文本序列。 | ✅ |
代币分类 | token-classification 或ner |
为文本中的每个标记分配标签。 | ✅ |
译本 | translation |
将文本从一种语言转换为另一种语言。 | ✅ |
零镜头分类 | zero-shot-classification |
将文本分类为训练期间看不到的类。 | ✅ |
视觉
任务 | 身份证 | 描述 | 支持? |
---|---|---|---|
深度估计 | depth-estimation |
预测图像中存在的对象的深度。 | ❌ |
图像分类 | image-classification |
为整个图像分配标签或类。 | ✅ |
图像分割 | image-segmentation |
将图像划分为多个段,其中每个像素映射到一个对象。此任务具有多个变体,例如实例分割、全景分割和语义分割。 | ✅ |
图像到图像 | image-to-image |
转换源图像以匹配目标图像或目标图像域的特征。 | ❌ |
面具生成 | mask-generation |
为图像中的对象生成蒙版。 | ❌ |
物体检测 | object-detection |
识别图像中某些已定义类的对象。 | ✅ |
视频分类 | 不适用 | 为整个视频分配标签或类。 | ❌ |
无条件图像生成 | 不适用 | 在任何上下文(如提示文本或其他图像)中生成无条件的图像。 | ❌ |
音频
任务 | 身份证 | 描述 | 支持? |
---|---|---|---|
音频分类 | audio-classification |
为给定音频分配标签或类。 | ❌ |
音频到音频 | 不适用 | 从输入音频源生成音频。 | ❌ |
自动语音识别 | automatic-speech-recognition |
将给定的音频转录为文本。 | ✅ |
文本转语音 | 不适用 | 在给定文本输入的情况下生成听起来自然的语音。 | ❌ |
表格式的
任务 | 身份证 | 描述 | 支持? |
---|---|---|---|
表格分类 | 不适用 | 根据属性集对目标类别(组)进行分类。 | ❌ |
表格回归 | 不适用 | 在给定一组属性的情况下预测数值。 | ❌ |
模 态
任务 | 身份证 | 描述 | 支持? |
---|---|---|---|
文档问答 | document-question-answering |
回答有关文档图像的问题。 | ❌ |
特征提取 | feature-extraction |
将原始数据转换为可处理的数值特征,同时保留原始数据集中的信息。 | ✅ |
图像转文本 | image-to-text |
从给定图像输出文本。 | ✅ |
文本到图像 | text-to-image |
从输入文本生成图像。 | ❌ |
视觉问答 | visual-question-answering |
根据图像回答开放式问题。 | ❌ |
零镜头图像分类 | zero-shot-image-classification |
将图像分类为训练期间看不到的类。 | ✅ |
强化学习
任务 | 身份证 | 描述 | 支持? |
---|---|---|---|
强化学习 | 不适用 | 通过反复试验与环境互动,并从行动中学习,并获得奖励(消极或积极)作为反馈。 | ❌ |
模型
- ALBERT(来自谷歌研究和芝加哥丰田技术研究所)发表了论文ALBERT:A Lite BERT for Self-supervised Learning of Language Representations,作者是Zhenzhong Lan,Mingda Chen,Sebastian Goodman,Kevin Gimpel,Piyush Sharma,Radu Soricut。
- BART(来自Facebook)与论文BART一起发布:自然语言生成,翻译和理解的去噪序列到序列预训练,作者是Mike Lewis,Yinhan Liu,Naman Goyal,Marjan Ghazvininejad,Abdelrahman Mohamed,Omer Levy,Ves Stoyanov和Luke Zettlemoyer。
- BERT(来自Google)与Jacob Devlin,Ming-Wei Chang,Kenton Lee和Kristina Toutanova的论文BERT:用于语言理解的深度双向变压器的预训练一起发布。
- CLIP(来自OpenAI)与Alec Radford,Jong Wook Kim,Chris Hallacy,Aditya Ramesh,Gabriel Goh,Sandhini Agarwal,Girish Sastry,Amanda Askell,Pamela Mishkin,Jack Clark,Gretchen Krueger,Ilya Sutskever的论文一起发布。
- CodeGen(来自Salesforce)与Erik Nijkamp,Bo Pang,Hiroaki Hayashi,Lifu Tu,Huan Wang,Yingbo Zhou,Silvio Savarese,Caim Xiong的论文A Conversational Paradigm for Program Synthesis 一起发布。
- DETR(来自Facebook)与Nicolas Carion,Francisco Massa,Gabriel Synnaeve,Nicolas Usunier,Alexander Kirillov,Sergey Zagoruyko的T端到端对象检测一起发布。
- DistilBERT(来自HuggingFace),与论文DistilBERT一起发布,DistilBERT是BERT的蒸馏版本:更小,更快,更便宜,更轻,由Victor Sanh,Lysandre Debut和Thomas Wolf撰写。相同的方法已被应用于将GPT2压缩为DistilGPT2,RoBERTa压缩为DistilRoBERTa,将多语言BERT压缩为DistilmBERT和德语版本的DistilBERT。
- FLAN-T5(来自谷歌人工智能)在存储库谷歌研究/t5x中发布,由钟亨元、侯乐、谢恩·朗普雷、巴雷特·佐夫、郑毅、威廉·费杜斯、埃里克·李、王学志、穆斯塔法·德加尼、悉达多·梵天、阿尔伯特·韦伯森、顾世祥、戴竹云、米拉克·苏兹贡、陈馨云、阿坎沙·乔杜里、夏兰·纳朗、高拉夫·米什拉、亚当斯·余、赵文森特、黄艳萍、戴安德鲁、 于洪坤、斯拉夫·彼得罗夫、埃德·奇、杰夫·迪恩、雅各布·德夫林、亚当·罗伯茨、丹尼·周、郭五乐和杰森·魏
- GPT Neo(来自EleutherAI)由Sid Black,Stella Biderman,Leo Gao,Phil Wang和Connor Leahy在EleutherAI/gpt-neo存储库中发布。
- GPT-2(来自OpenAI)与Alec Radford*,Jeffrey Wu*,Rewon Child,David Luan,Dario Amodei**和Ilya Sutskever**一起发布的论文语言模型是无监督多任务学习者。
- 玛丽安·使用Jörg Tiedemann的OPUS数据训练的机器翻译模型。Marian 框架由 Microsoft 翻译团队开发。
- MobileBERT(来自CMU / Google Brain)与论文MobileBERT:资源有限设备的紧凑任务无关BERT一起发布,作者是Zhiqing Sun,Hongkun Yu,Xiaodan Song,Renjie Liu,Yiming Yang和Denny Zhou。
- MT5(来自Google AI)随论文mT5一起发布:由Linting Xue,Noah Constant,Adam Roberts,Mihir Kale,Rami Al-Rfou,Aditya Siddhant,Aditya Barua,Colin Raffel发布的大规模多语言预训练文本到文本转换器。
- NLLB(来自 Meta)与 NLLB 团队的论文《No Language Left Behind: Scaling Human-Centric Machine Translation》一起发布。
- SqueezeBERT(来自伯克利)与论文SqueezeBERT一起发布:计算机视觉可以教NLP关于高效神经网络的什么?作者:Forrest N. Iandola,Albert E. Shaw,Ravi Krishna和Kurt W. Keutzer。
- T5(来自Google AI)与Colin Raffel和Noam Shazeer以及Adam Roberts和Katherine Lee以及Sharan Narang和Michael Matena和Yanqi Zhou以及Wei Li和Peter J. Liu的论文一起发布。
- T5v1.1(来自Google AI)由Colin Raffel和Noam Shazeer和Adam Roberts和Katherine Lee和Sharan Narang和Michael Matena和Yanqi Zhou以及Wei Li和Peter J. Liu在存储库google-research/text-to-text-transfer-transformer中发布。
- 视觉转换器(ViT)(来自Google AI)与论文一起发布 图像价值16×16 Words:Transformers for Image Recognition at Scale 作者:Alexey Dosovitskiy,Lucas Beyer,Alexander Kolesnikov,Dirk Weissenborn,Xiaohua Zhai,Thomas Unterthiner,Mostafa Dehghani,Matthias Minderer,Georg Heigold,Sylvain Gelly,Jakob Uszkoreit,Neil Houlsby。
- Whisper(来自OpenAI)与Alec Radford,Jong Wook Kim,Tao Xu,Greg Brockman,Christine McLeavey,Ilya Sutskever的论文一起发布。