AWS Trainium & Inferentia 文件

BERT

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

BERT

概述

BERT 是一種雙向 Transformer 模型,透過在未標註文字上預訓練,以預測句子中被遮蔽的詞元以及預測一個句子是否跟在另一個句子之後。其主要思想是,透過隨機遮蔽一些詞元,模型可以同時利用左側和右側的文字進行訓練,從而獲得更全面的理解。BERT 也非常通用,因為其學習到的語言表示可以透過微調額外的層或頭部來適應其他 NLP 任務。

您可以在 BERT 集合中找到所有原始 BERT 檢查點。

匯出到 Neuron

要在 Neuron 裝置上部署 🤗 Transformers 模型,您首先需要編譯模型並將其匯出為序列化格式以進行推理。下面有兩種編譯模型的方法,您可以選擇最適合您需求的一種。這裡我們以 feature-extraction 為例。

選項 1:CLI

您可以使用 Optimum 命令列介面匯出模型,如下所示:

optimum-cli export neuron --model google-bert/bert-base-uncased --task feature-extraction --batch_size 1 --sequence_length 128 bert_feature_extraction_neuronx/

執行 optimum-cli export neuron --help 以顯示所有命令列選項及其描述。

選項 2:Python API

from optimum.neuron import NeuronModelForFeatureExtraction

input_shapes = {"batch_size": 1, "sequence_length": 128}
compiler_args = {"auto_cast": "matmul", "auto_cast_type": "bf16"}
neuron_model = NeuronModelForFeatureExtraction.from_pretrained(
    "google-bert/bert-base-uncased",
    export=True,
    **input_shapes,
    **compiler_args,
)
# Save locally
neuron_model.save_pretrained("bert_feature_extraction_neuronx")

# Upload to the HuggingFace Hub
neuron_model.push_to_hub(
    "bert_feature_extraction_neuronx", repository_id="my-neuron-repo"  # Replace with your HF Hub repo id
)

NeuronBertModel

class optimum.neuron.NeuronBertModel

< >

( model: ScriptModule config: PretrainedConfig model_save_dir: str | pathlib.Path | tempfile.TemporaryDirectory | None = None model_file_name: str | None = None preprocessors: list | None = None neuron_config: NeuronDefaultConfig | None = None **kwargs )

引數

  • config (transformers.PretrainedConfig) — PretrainedConfig 是模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 optimum.neuron.modeling.NeuronTracedModel.from_pretrained 方法以載入模型權重。
  • model (torch.jit._script.ScriptModule) — torch.jit._script.ScriptModule 是嵌入了由 neuron(x) 編譯器編譯的 NEFF(Neuron 可執行檔案格式)的 TorchScript 模組。

裸 Bert 模型 Transformer 輸出原始隱藏狀態,頂部沒有任何特定頭部,用於“特徵提取”任務。

此模型繼承自 ~neuron.modeling.NeuronTracedModel。請檢視超類文件以瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

前向

< >

( input_ids: Tensor attention_mask: Tensor token_type_ids: torch.Tensor | None = None **kwargs )

引數

  • input_ids (torch.Tensor of shape (batch_size, sequence_length)) — 詞彙表中輸入序列詞元的索引。索引可以透過 AutoTokenizer 獲得。有關詳細資訊,請參閱 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是輸入 ID?
  • attention_mask (torch.Tensor | None of shape (batch_size, sequence_length), 預設為 None) — 避免對填充詞元索引執行注意力操作的掩碼。掩碼值選擇範圍為 [0, 1]
  • token_type_ids (torch.Tensor | None of shape (batch_size, sequence_length), 預設為 None) — 用於指示輸入的第一部分和第二部分的詞元索引。索引選擇範圍為 [0, 1]

NeuronBertModel 的前向方法,覆蓋了 __call__ 特殊方法。只接受編譯步驟中跟蹤的輸入。在推理過程中提供的任何額外輸入都將被忽略。要包含額外輸入,請使用指定的輸入重新編譯模型。

示例

>>> from transformers import AutoTokenizer
>>> from optimum.neuron import NeuronBertModel

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/bert-base-uncased-neuronx-bs1-sq128")
>>> model = NeuronBertModel.from_pretrained("optimum/bert-base-uncased-neuronx-bs1-sq128")

>>> inputs = tokenizer("Dear Evan Hansen is the winner of six Tony Awards.", return_tensors="pt")

>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> list(last_hidden_state.shape)
[1, 13, 384]

NeuronBertForMaskedLM

class optimum.neuron.NeuronBertForMaskedLM

< >

( model: ScriptModule config: PretrainedConfig model_save_dir: str | pathlib.Path | tempfile.TemporaryDirectory | None = None model_file_name: str | None = None preprocessors: list | None = None neuron_config: NeuronDefaultConfig | None = None **kwargs )

引數

  • config (transformers.PretrainedConfig) — PretrainedConfig 是模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 optimum.neuron.modeling.NeuronTracedModel.from_pretrained 方法以載入模型權重。
  • model (torch.jit._script.ScriptModule) — torch.jit._script.ScriptModule 是嵌入了由 neuron(x) 編譯器編譯的 NEFF(Neuron 可執行檔案格式)的 TorchScript 模組。

帶有 language modeling 頭部用於 Neuron 裝置上的掩碼語言建模任務的掩碼語言 Bert 模型。

此模型繼承自 ~neuron.modeling.NeuronTracedModel。請檢視超類文件以瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

前向

< >

( input_ids: Tensor attention_mask: Tensor token_type_ids: torch.Tensor | None = None **kwargs )

引數

  • input_ids (torch.Tensor of shape (batch_size, sequence_length)) — 詞彙表中輸入序列詞元的索引。索引可以透過 AutoTokenizer 獲得。有關詳細資訊,請參閱 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是輸入 ID?
  • attention_mask (torch.Tensor | None of shape (batch_size, sequence_length), 預設為 None) — 避免對填充詞元索引執行注意力操作的掩碼。掩碼值選擇範圍為 [0, 1]
  • token_type_ids (torch.Tensor | None of shape (batch_size, sequence_length), 預設為 None) — 用於指示輸入的第一部分和第二部分的詞元索引。索引選擇範圍為 [0, 1]

NeuronBertForMaskedLM 的前向方法,覆蓋了 __call__ 特殊方法。只接受編譯步驟中跟蹤的輸入。在推理過程中提供的任何額外輸入都將被忽略。要包含額外輸入,請使用指定的輸入重新編譯模型。

示例

>>> from transformers import AutoTokenizer
>>> from optimum.neuron import NeuronBertForMaskedLM

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/legal-bert-base-uncased-neuronx")
>>> model = NeuronBertForMaskedLM.from_pretrained("optimum/legal-bert-base-uncased-neuronx")

>>> inputs = tokenizer("This [MASK] Agreement is between General Motors and John Murray.", return_tensors="pt")

>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> list(logits.shape)
[1, 13, 30522]

NeuronBertForSequenceClassification

class optimum.neuron.NeuronBertForSequenceClassification

< >

( model: ScriptModule config: PretrainedConfig model_save_dir: str | pathlib.Path | tempfile.TemporaryDirectory | None = None model_file_name: str | None = None preprocessors: list | None = None neuron_config: NeuronDefaultConfig | None = None **kwargs )

引數

  • config (transformers.PretrainedConfig) — PretrainedConfig 是模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 optimum.neuron.modeling.NeuronTracedModel.from_pretrained 方法以載入模型權重。
  • model (torch.jit._script.ScriptModule) — torch.jit._script.ScriptModule 是嵌入了由 neuron(x) 編譯器編譯的 NEFF(Neuron 可執行檔案格式)的 TorchScript 模組。

Neuron 模型,頂部帶有一個序列分類/迴歸頭(在池化輸出頂部的一個線性層),例如用於 GLUE 任務。

此模型繼承自 ~neuron.modeling.NeuronTracedModel。請檢視超類文件以瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

前向

< >

( input_ids: Tensor attention_mask: Tensor token_type_ids: torch.Tensor | None = None **kwargs )

引數

  • input_ids (torch.Tensor of shape (batch_size, sequence_length)) — 詞彙表中輸入序列詞元的索引。索引可以透過 AutoTokenizer 獲得。有關詳細資訊,請參閱 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是輸入 ID?
  • attention_mask (torch.Tensor | None of shape (batch_size, sequence_length), 預設為 None) — 避免對填充詞元索引執行注意力操作的掩碼。掩碼值選擇範圍為 [0, 1]
  • token_type_ids (torch.Tensor | None of shape (batch_size, sequence_length), 預設為 None) — 用於指示輸入的第一部分和第二部分的詞元索引。索引選擇範圍為 [0, 1]

NeuronBertForSequenceClassification 的前向方法,覆蓋了 __call__ 特殊方法。只接受編譯步驟中跟蹤的輸入。在推理過程中提供的任何額外輸入都將被忽略。要包含額外輸入,請使用指定的輸入重新編譯模型。

示例

>>> from transformers import AutoTokenizer
>>> from optimum.neuron import NeuronBertForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/bert-base-multilingual-uncased-sentiment-neuronx")
>>> model = NeuronBertForSequenceClassification.from_pretrained("optimum/bert-base-multilingual-uncased-sentiment-neuronx")

>>> inputs = tokenizer("Hamilton is considered to be the best musical of human history.", return_tensors="pt")

>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> list(logits.shape)
[1, 2]

NeuronBertForTokenClassification

class optimum.neuron.NeuronBertForTokenClassification

< >

( model: ScriptModule config: PretrainedConfig model_save_dir: str | pathlib.Path | tempfile.TemporaryDirectory | None = None model_file_name: str | None = None preprocessors: list | None = None neuron_config: NeuronDefaultConfig | None = None **kwargs )

引數

  • config (transformers.PretrainedConfig) — PretrainedConfig 是模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 optimum.neuron.modeling.NeuronTracedModel.from_pretrained 方法以載入模型權重。
  • model (torch.jit._script.ScriptModule) — torch.jit._script.ScriptModule 是嵌入了由 neuron(x) 編譯器編譯的 NEFF(Neuron 可執行檔案格式)的 TorchScript 模組。

Neuron 模型,頂部帶有一個詞元分類頭(在隱藏狀態輸出頂部的一個線性層),例如用於命名實體識別 (NER) 任務。

此模型繼承自 ~neuron.modeling.NeuronTracedModel。請檢視超類文件以瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

前向

< >

( input_ids: Tensor attention_mask: Tensor token_type_ids: torch.Tensor | None = None **kwargs )

引數

  • input_ids (torch.Tensor of shape (batch_size, sequence_length)) — 詞彙表中輸入序列詞元的索引。索引可以透過 AutoTokenizer 獲得。有關詳細資訊,請參閱 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是輸入 ID?
  • attention_mask (torch.Tensor | None of shape (batch_size, sequence_length), 預設為 None) — 避免對填充詞元索引執行注意力操作的掩碼。掩碼值選擇範圍為 [0, 1]
  • token_type_ids (torch.Tensor | None of shape (batch_size, sequence_length), 預設為 None) — 用於指示輸入的第一部分和第二部分的詞元索引。索引選擇範圍為 [0, 1]

NeuronBertForTokenClassification 的前向方法,覆蓋了 __call__ 特殊方法。只接受編譯步驟中跟蹤的輸入。在推理過程中提供的任何額外輸入都將被忽略。要包含額外輸入,請使用指定的輸入重新編譯模型。

示例

>>> from transformers import AutoTokenizer
>>> from optimum.neuron import NeuronBertForTokenClassification

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/bert-base-NER-neuronx")
>>> model = NeuronBertForTokenClassification.from_pretrained("optimum/bert-base-NER-neuronx")

>>> inputs = tokenizer("Lin-Manuel Miranda is an American songwriter, actor, singer, filmmaker, and playwright.", return_tensors="pt")

>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> list(logits.shape)
[1, 20, 9]

NeuronBertForQuestionAnswering

class optimum.neuron.NeuronBertForQuestionAnswering

< >

( model: ScriptModule config: PretrainedConfig model_save_dir: str | pathlib.Path | tempfile.TemporaryDirectory | None = None model_file_name: str | None = None preprocessors: list | None = None neuron_config: NeuronDefaultConfig | None = None **kwargs )

引數

  • config (transformers.PretrainedConfig) — PretrainedConfig 是模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 optimum.neuron.modeling.NeuronTracedModel.from_pretrained 方法以載入模型權重。
  • model (torch.jit._script.ScriptModule) — torch.jit._script.ScriptModule 是嵌入了由 neuron(x) 編譯器編譯的 NEFF(Neuron 可執行檔案格式)的 TorchScript 模組。

Bert 頂部帶有一個 span 分類頭,用於抽取式問答任務(例如 SQuAD)(在隱藏狀態輸出頂部有一個線性層,用於計算 span start logitsspan end logits)。

此模型繼承自 ~neuron.modeling.NeuronTracedModel。請檢視超類文件以瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

前向

< >

( input_ids: Tensor attention_mask: Tensor token_type_ids: torch.Tensor | None = None **kwargs )

引數

  • input_ids (torch.Tensor of shape (batch_size, sequence_length)) — 詞彙表中輸入序列詞元的索引。索引可以透過 AutoTokenizer 獲得。有關詳細資訊,請參閱 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是輸入 ID?
  • attention_mask (torch.Tensor | None of shape (batch_size, sequence_length), 預設為 None) — 避免對填充詞元索引執行注意力操作的掩碼。掩碼值選擇範圍為 [0, 1]
  • token_type_ids (torch.Tensor | None of shape (batch_size, sequence_length), 預設為 None) — 用於指示輸入的第一部分和第二部分的詞元索引。索引選擇範圍為 [0, 1]

NeuronBertForQuestionAnswering 的前向方法,覆蓋了 __call__ 特殊方法。只接受編譯步驟中跟蹤的輸入。在推理過程中提供的任何額外輸入都將被忽略。要包含額外輸入,請使用指定的輸入重新編譯模型。

示例

>>> import torch
>>> from transformers import AutoTokenizer
>>> from optimum.neuron import NeuronBertForQuestionAnswering

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/bert-base-cased-squad2-neuronx")
>>> model = NeuronBertForQuestionAnswering.from_pretrained("optimum/bert-base-cased-squad2-neuronx")

>>> question, text = "Are there wheelchair spaces in the theatres?", "Yes, we have reserved wheelchair spaces with a good view."
>>> inputs = tokenizer(question, text, return_tensors="pt")
>>> start_positions = torch.tensor([1])
>>> end_positions = torch.tensor([12])

>>> outputs = model(**inputs, start_positions=start_positions, end_positions=end_positions)
>>> start_scores = outputs.start_logits
>>> end_scores = outputs.end_logits

NeuronBertForMultipleChoice

class optimum.neuron.NeuronBertForMultipleChoice

< >

( model: ScriptModule config: PretrainedConfig model_save_dir: str | pathlib.Path | tempfile.TemporaryDirectory | None = None model_file_name: str | None = None preprocessors: list | None = None neuron_config: NeuronDefaultConfig | None = None **kwargs )

引數

  • config (transformers.PretrainedConfig) — PretrainedConfig 是模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 optimum.neuron.modeling.NeuronTracedModel.from_pretrained 方法以載入模型權重。
  • model (torch.jit._script.ScriptModule) — torch.jit._script.ScriptModule 是包含由 neuron(x) 編譯器編譯的 NEFF(神經元可執行檔案格式)的 TorchScript 模組。

帶有多項選擇分類頭的 Neuron 模型(在池化輸出之上有一個線性層和一個 softmax),例如用於 RocStories/SWAG 任務。

此模型繼承自 ~neuron.modeling.NeuronTracedModel。請檢視超類文件以瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

前向

< >

( input_ids: Tensor attention_mask: Tensor token_type_ids: torch.Tensor | None = None **kwargs )

引數

  • input_ids (torch.Tensor,形狀為 (batch_size, num_choices, sequence_length)) — 詞彙表中輸入序列 token 的索引。索引可以透過 AutoTokenizer 獲取。有關詳細資訊,請參閱 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是輸入 ID?
  • attention_mask (torch.Tensor | None,形狀為 (batch_size, num_choices, sequence_length),預設為 None) — 掩碼,用於避免在填充 token 索引上執行注意力。掩碼值選擇範圍為 [0, 1]
  • token_type_ids (torch.Tensor | None,形狀為 (batch_size, num_choices, sequence_length),預設為 None) — 段落 token 索引,用於指示輸入的第一個和第二個部分。索引選擇範圍為 [0, 1]

NeuronBertForMultipleChoice 的 forward 方法覆蓋了 __call__ 特殊方法。它只接受在編譯步驟中追蹤到的輸入。在推理過程中提供的任何額外輸入都將被忽略。要包含額外的輸入,請使用指定的輸入重新編譯模型。

示例

>>> from transformers import AutoTokenizer
>>> from optimum.neuron import NeuronBertForMultipleChoice

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/bert-base-cased-swag-neuronx")
>>> model = NeuronBertForMultipleChoice.from_pretrained("optimum/bert-base-cased-swag-neuronx")

>>> num_choices = 4
>>> first_sentence = ["Members of the procession walk down the street holding small horn brass instruments."] * num_choices
>>> second_sentence = [
...     "A drum line passes by walking down the street playing their instruments.",
...     "A drum line has heard approaching them.",
...     "A drum line arrives and they're outside dancing and asleep.",
...     "A drum line turns the lead singer watches the performance."
... ]
>>> inputs = tokenizer(first_sentence, second_sentence, truncation=True, padding=True)

# Unflatten the inputs values expanding it to the shape [batch_size, num_choices, seq_length]
>>> for k, v in inputs.items():
...     inputs[k] = [v[i: i + num_choices] for i in range(0, len(v), num_choices)]
>>> inputs = dict(inputs.convert_to_tensors(tensor_type="pt"))
>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> logits.shape
[1, 4]

© . This site is unofficial and not affiliated with Hugging Face, Inc.