模型:

apple/ane-distilbert-base-uncased-finetuned-sst-2-english

英文

DistilBERT 优化适配苹果神经引擎

这是适用于苹果神经引擎(ANE)的 distilbert-base-uncased-finetuned-sst-2-english 模型,正如文章 Deploying Transformers on the Apple Neural Engine 中描述的那样。

源代码取自苹果的 ml-ane-transformers GitHub 存储库,稍作修改以使其能够从 ? Transformers 库中使用。

关于 DistilBERT 的更多细节,请用户查看 this model card

如何使用

使用示例:

import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer

model_checkpoint = "apple/ane-distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)
model = AutoModelForSequenceClassification.from_pretrained(
    model_checkpoint, trust_remote_code=True, return_dict=False,
)

inputs = tokenizer(
    ["The Neural Engine is really fast"],
    return_tensors="pt",
    max_length=128,
    padding="max_length",
)

with torch.no_grad():
    outputs = model(**inputs)

使用 Core ML 模型

PyTorch 不使用 ANE,并且在 CPU 或 GPU 上运行此版本的模型可能比原始模型更慢。要利用 ANE 的硬件加速功能,请使用 Core ML 版本的模型, DistilBERT_fp16.mlpackage。

Python 中使用 Core ML 的示例:

import coremltools as ct

mlmodel = ct.models.MLModel("DistilBERT_fp16.mlpackage")

inputs = tokenizer(
    ["The Neural Engine is really fast"],
    return_tensors="np",
    max_length=128,
    padding="max_length",
)

outputs_coreml = mlmodel.predict({
    "input_ids": inputs["input_ids"].astype(np.int32),
    "attention_mask": inputs["attention_mask"].astype(np.int32),
})

要从 Swift 中使用该模型,您需要根据 BERT 规则自行对输入进行分词。您可以找到一个 Swift 实现版本的 BERT tokenizer here