AWS Trainium & Inferentia 文件

模型

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

模型

通用模型類

NeuronTracedModel

NeuronTracedModel 類可用於例項化一個沒有特定頭的基本 Neuron 模型。它被用作除文字生成外所有任務的基類。

class optimum.neuron.NeuronTracedModel

< >

( 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 )

在 Neuron 裝置上執行已編譯和最佳化模型的基類。

它實現了與 Hugging Face Hub 互動的通用方法,以及將原生 transformers 模型編譯為 neuron 最佳化的 TorchScript 模組並使用 optimum.exporters.neuron 工具鏈匯出。

類屬性

  • model_type (str, 可選, 預設為 "neuron_model") — 註冊 NeuronTracedModel 類時要使用的模型型別名稱。
  • auto_model_class (Type, 可選, 預設為 AutoModel) — 當前 NeuronTracedModel 類所代表的 AutoModel 類。

通用屬性

  • model (torch.jit._script.ScriptModule) — 已載入的為 neuron 裝置編譯的 ScriptModule
  • config (PretrainedConfig) — 模型的配置。
  • model_save_dir (Path) — 儲存 neuron 編譯模型的目錄。預設情況下,如果載入的模型是本地的,將使用原始模型所在的目錄。否則,將使用快取目錄。

can_generate

< >

( )

返回此模型是否可以使用 ` .generate()` 生成序列。

get_input_static_shapes

< >

( neuron_config: NeuronDefaultConfig )

獲取一個包含輸入及其有效靜態形狀的字典。

load_model

< >

( path: str | pathlib.Path to_neuron: bool = False device_id: int = 0 )

引數

  • path (str | Path) — 編譯模型的路徑。
  • to_neuron (bool, 預設為 False) — 是否手動將跟蹤模型移動到 NeuronCore。僅在 `inline_weights_to_neff=False` 時需要,否則它會自動載入到 Neuron 裝置。
  • device_id (int, 預設為 0) — 要載入跟蹤模型的 NeuronCore 的索引。

載入由 neuron(x)-cc 編譯器編譯的 TorchScript 模組。它將首先載入到 CPU,然後移動到一個或多個 NeuronCore

remove_padding

< >

( outputs: list[torch.Tensor] dims: list[int] indices: list[int] padding_side: typing.Literal['right', 'left'] = 'right' )

引數

  • outputs (list[torch.Tensor]) — torch 張量列表,即推理輸出。
  • dims (list[int]) — 我們切片張量的維度列表。
  • indices (list[int]) — 我們沿軸切片張量的索引列表。
  • padding_side (Literal["right", "left"], 預設為 “right”) — 應用填充的一側。

從輸出張量中移除填充。

自然語言處理

以下 Neuron 模型類可用於自然語言處理任務。

NeuronModelForFeatureExtraction

class optimum.neuron.NeuronModelForFeatureExtraction

< >

( 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 模型,帶有 BaseModelOutput。

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

在 Neuron 裝置上進行特徵提取的模型。

forward

< >

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

引數

  • input_ids (torch.Tensor,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列 token 的索引。索引可以使用 AutoTokenizer 獲得。詳情請參閱 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是 input ID?
  • attention_mask (torch.Tensor | None,形狀為 (batch_size, sequence_length),預設為 None) — 用於避免對填充 token 索引執行注意力機制的掩碼。掩碼值在 `[0, 1]` 中選擇:
  • token_type_ids (torch.Tensor | None,形狀為 (batch_size, sequence_length),預設為 None) — 分段 token 索引,用於指示輸入的第一部分和第二部分。索引在 `[0, 1]` 中選擇:

NeuronModelForFeatureExtraction 的 forward 方法覆蓋了 `__call__` 特殊方法。僅接受編譯步驟中跟蹤的輸入。推理期間提供的任何額外輸入都將被忽略。要包含額外輸入,請重新編譯模型並指定這些輸入。

示例

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

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/all-MiniLM-L6-v2-neuronx")
>>> model = NeuronModelForFeatureExtraction.from_pretrained("optimum/all-MiniLM-L6-v2-neuronx")

>>> 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]

NeuronModelForSentenceTransformers

class optimum.neuron.NeuronModelForSentenceTransformers

< >

( 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 模組。

用於 Sentence Transformers 的 Neuron 模型。

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

在 Neuron 裝置上執行的 Sentence Transformers 模型。

forward

< >

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

引數

  • input_ids (torch.Tensor,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列 token 的索引。索引可以使用 AutoTokenizer 獲得。詳情請參閱 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是 input ID?
  • attention_mask (torch.Tensor | None,形狀為 (batch_size, sequence_length),預設為 None) — 用於避免對填充 token 索引執行注意力機制的掩碼。掩碼值在 `[0, 1]` 中選擇:
  • token_type_ids (torch.Tensor | None,形狀為 (batch_size, sequence_length),預設為 None) — 分段 token 索引,用於指示輸入的第一部分和第二部分。索引在 `[0, 1]` 中選擇:

NeuronModelForSentenceTransformers 的 forward 方法覆蓋了 `__call__` 特殊方法。僅接受編譯步驟中跟蹤的輸入。推理期間提供的任何額外輸入都將被忽略。要包含額外輸入,請重新編譯模型並指定這些輸入。

文字示例

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

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/bge-base-en-v1.5-neuronx")
>>> model = NeuronModelForSentenceTransformers.from_pretrained("optimum/bge-base-en-v1.5-neuronx")

>>> inputs = tokenizer("In the smouldering promise of the fall of Troy, a mythical world of gods and mortals rises from the ashes.", return_tensors="pt")

>>> outputs = model(**inputs)
>>> token_embeddings = outputs.token_embeddings
>>> sentence_embedding = = outputs.sentence_embedding

影像示例

>>> from PIL import Image
>>> from transformers import AutoProcessor
>>> from sentence_transformers import util
>>> from optimum.neuron import NeuronModelForSentenceTransformers

>>> processor = AutoProcessor.from_pretrained("optimum/clip_vit_emb_neuronx")
>>> model = NeuronModelForSentenceTransformers.from_pretrained("optimum/clip_vit_emb_neuronx")
>>> util.http_get("https://github.com/UKPLab/sentence-transformers/raw/master/examples/sentence_transformer/applications/image-search/two_dogs_in_snow.jpg", "two_dogs_in_snow.jpg")
>>> inputs = processor(
>>>     text=["Two dogs in the snow", 'A cat on a table', 'A picture of London at night'], images=Image.open("two_dogs_in_snow.jpg"), return_tensors="pt", padding=True
>>> )

>>> outputs = model(**inputs)
>>> cos_scores = util.cos_sim(outputs.image_embeds, outputs.text_embeds)  # Compute cosine similarities

NeuronModelForMaskedLM

class optimum.neuron.NeuronModelForMaskedLM

< >

( 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 模型,帶有 MaskedLMOutput。

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

在 Neuron 裝置上執行的掩碼語言模型。

forward

< >

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

引數

  • input_ids (torch.Tensor,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列 token 的索引。索引可以使用 AutoTokenizer 獲得。詳情請參閱 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是 input ID?
  • attention_mask (torch.Tensor | None,形狀為 (batch_size, sequence_length),預設為 None) — 用於避免對填充 token 索引執行注意力機制的掩碼。掩碼值在 `[0, 1]` 中選擇:
  • token_type_ids (torch.Tensor | None,形狀為 (batch_size, sequence_length),預設為 None) — 分段 token 索引,用於指示輸入的第一部分和第二部分。索引在 `[0, 1]` 中選擇:

NeuronModelForMaskedLM 的 forward 方法覆蓋了 `__call__` 特殊方法。僅接受編譯步驟中跟蹤的輸入。推理期間提供的任何額外輸入都將被忽略。要包含額外輸入,請重新編譯模型並指定這些輸入。

示例

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

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/legal-bert-base-uncased-neuronx")
>>> model = NeuronModelForMaskedLM.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]

NeuronModelForSequenceClassification

class optimum.neuron.NeuronModelForSequenceClassification

< >

( 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。請檢視超類文件以瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。

在 Neuron 裝置上執行的序列分類模型。

forward

< >

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

引數

  • input_ids (torch.Tensor,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列 token 的索引。索引可以使用 AutoTokenizer 獲得。詳情請參閱 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是 input ID?
  • attention_mask (torch.Tensor | None,形狀為 (batch_size, sequence_length),預設為 None) — 用於避免對填充標記(padding token)的索引執行注意力機制的掩碼。掩碼值的取值範圍為 [0, 1]
  • token_type_ids (torch.Tensor | None,形狀為 (batch_size, sequence_length),預設為 None) — 分段標記索引,用於指示輸入的第一部分和第二部分。索引的取值範圍為 [0, 1]

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

示例

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

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/distilbert-base-uncased-finetuned-sst-2-english-neuronx")
>>> model = NeuronModelForSequenceClassification.from_pretrained("optimum/distilbert-base-uncased-finetuned-sst-2-english-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]

NeuronModelForQuestionAnswering

class optimum.neuron.NeuronModelForQuestionAnswering

< >

( 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 是一個 TorchScript 模組,它內嵌了由 neuron(x) 編譯器編譯的 NEFF(Neuron 可執行檔案格式)。

Neuron 模型帶有一個 QuestionAnsweringModelOutput,用於處理如 SQuAD 等抽取式問答任務。

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

在 Neuron 裝置上執行的問答模型。

forward

< >

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

引數

  • input_ids (torch.Tensor,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列標記的索引。可以使用 AutoTokenizer 獲取索引。詳情請參閱 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是輸入 ID?
  • attention_mask (torch.Tensor | None,形狀為 (batch_size, sequence_length),預設為 None) — 用於避免對填充標記(padding token)的索引執行注意力機制的掩碼。掩碼值的取值範圍為 [0, 1]
  • token_type_ids (torch.Tensor | None,形狀為 (batch_size, sequence_length),預設為 None) — 分段標記索引,用於指示輸入的第一部分和第二部分。索引的取值範圍為 [0, 1]

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

示例

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

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/roberta-base-squad2-neuronx")
>>> model = NeuronModelForQuestionAnswering.from_pretrained("optimum/roberta-base-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

NeuronModelForTokenClassification

class optimum.neuron.NeuronModelForTokenClassification

< >

( 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 是一個 TorchScript 模組,它內嵌了由 neuron(x) 編譯器編譯的 NEFF(Neuron 可執行檔案格式)。

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

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

在 Neuron 裝置上執行的標記分類模型。

forward

< >

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

引數

  • input_ids (torch.Tensor,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列標記的索引。可以使用 AutoTokenizer 獲取索引。詳情請參閱 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是輸入 ID?
  • attention_mask (torch.Tensor | None,形狀為 (batch_size, sequence_length),預設為 None) — 用於避免對填充標記(padding token)的索引執行注意力機制的掩碼。掩碼值的取值範圍為 [0, 1]
  • token_type_ids (torch.Tensor | None,形狀為 (batch_size, sequence_length),預設為 None) — 分段標記索引,用於指示輸入的第一部分和第二部分。索引的取值範圍為 [0, 1]

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

示例

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

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/bert-base-NER-neuronx")
>>> model = NeuronModelForTokenClassification.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]

NeuronModelForMultipleChoice

class optimum.neuron.NeuronModelForMultipleChoice

< >

( 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 是一個 TorchScript 模組,它內嵌了由 neuron(x) 編譯器編譯的 NEFF(Neuron 可執行檔案格式)。

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

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

在 Neuron 裝置上執行的多項選擇模型。

forward

< >

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

引數

  • input_ids (torch.Tensor,形狀為 (batch_size, num_choices, sequence_length)) — 詞彙表中輸入序列標記的索引。可以使用 AutoTokenizer 獲取索引。詳情請參閱 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什麼是輸入 ID?
  • attention_mask (torch.Tensor | None,形狀為 (batch_size, num_choices, sequence_length),預設為 None) — 用於避免對填充標記(padding token)的索引執行注意力機制的掩碼。掩碼值的取值範圍為 [0, 1]
  • token_type_ids (torch.Tensor | None,形狀為 (batch_size, num_choices, sequence_length),預設為 None) — 分段標記索引,用於指示輸入的第一部分和第二部分。索引的取值範圍為 [0, 1]

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

示例

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

>>> tokenizer = AutoTokenizer.from_pretrained("optimum/bert-base-uncased_SWAG-neuronx")
>>> model = NeuronModelForMultipleChoice.from_pretrained("optimum/bert-base-uncased_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]

NeuronModelForCausalLM

class optimum.neuron.NeuronModelForCausalLM

< >

( model: PreTrainedModel config: PretrainedConfig )

帶有因果語言模型頭的 Neuron 模型,用於在 Neuron 裝置上進行推理。

該模型繼承自 ~neuron.NeuronModel。請查閱超類的文件,瞭解該庫為所有模型實現的通用方法(如下載或儲存)。

forward

< >

( *args **kwargs )

模型的前向傳播,需要被重寫。

NeuronModelForSeq2SeqLM

class optimum.neuron.NeuronModelForSeq2SeqLM

< >

( encoder: ScriptModule decoder: ScriptModule config: PretrainedConfig model_save_dir: str | pathlib.Path | tempfile.TemporaryDirectory | None = None encoder_file_name: str | None = 'model.neuron' decoder_file_name: str | None = 'model.neuron' preprocessors: list | None = None neuron_configs: dict[str, 'NeuronDefaultConfig'] | None = None configs: dict[str, 'PretrainedConfig'] | None = None generation_config: transformers.generation.configuration_utils.GenerationConfig | None = None **kwargs )

引數

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

Neuron 序列到序列模型,帶有語言模型頭,用於文字到文字生成任務。

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

forward

< >

( attention_mask: torch.FloatTensor | None = None decoder_input_ids: torch.LongTensor | None = None decoder_attention_mask: torch.BoolTensor | None = None encoder_outputs: tuple[tuple[torch.Tensor]] | None = None beam_scores: torch.FloatTensor | None = None return_dict: bool = False output_attentions: bool = False output_hidden_states: bool = False )

引數

NeuronModelForSeq2SeqLM 的 forward 方法重寫了 __call__ 特殊方法。

儘管前向傳播的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會靜默地忽略它們。

(以下模型使用 neuronx 編譯器編譯,只能在 INF2 上執行。)

文字到文字生成的示例

from transformers import AutoTokenizer
from optimum.neuron import NeuronModelForSeq2SeqLM
# export
neuron_model = NeuronModelForSeq2SeqLM.from_pretrained(google-t5/t5-small, export=True, dynamic_batch_size=False, batch_size=1, sequence_length=64, num_beams=4)
neuron_model.save_pretrained("t5_small_neuronx")
del neuron_model

# inference
neuron_model = NeuronModelForSeq2SeqLM.from_pretrained("t5_small_neuronx")
tokenizer = AutoTokenizer.from_pretrained("t5_small_neuronx")
inputs = tokenizer("translate English to German: Lets eat good food.", return_tensors="pt")

output = neuron_model.generate(
    **inputs,
    num_return_sequences=1,
)
results = [tokenizer.decode(t, skip_special_tokens=True) for t in output]

(對於大型模型,為了適應 Neuron 核心,我們需要應用張量並行。以下是在 inf2.24xlarge 上執行的示例。)

使用張量並行的文字到文字生成示例

from transformers import AutoTokenizer
from optimum.neuron import NeuronModelForSeq2SeqLM
# export
if __name__ == "__main__":  # compulsory for parallel tracing since the API will spawn multiple processes.
    neuron_model = NeuronModelForSeq2SeqLM.from_pretrained(
        google/flan-t5-xl, export=True, tensor_parallel_size=8, dynamic_batch_size=False, batch_size=1, sequence_length=128, num_beams=4,
    )
    neuron_model.save_pretrained("flan_t5_xl_neuronx_tp8")
    del neuron_model
# inference
neuron_model = NeuronModelForSeq2SeqLM.from_pretrained("flan_t5_xl_neuronx_tp8")
tokenizer = AutoTokenizer.from_pretrained("flan_t5_xl_neuronx_tp8")
inputs = tokenizer("translate English to German: Lets eat good food.", return_tensors="pt")

output = neuron_model.generate(
    **inputs,
    num_return_sequences=1,
)
results = [tokenizer.decode(t, skip_special_tokens=True) for t in output]

計算機視覺

以下 Neuron 模型類可用於計算機視覺任務。

NeuronModelForImageClassification

class optimum.neuron.NeuronModelForImageClassification

< >

( 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 是一個 TorchScript 模組,它內嵌了由 neuron(x) 編譯器編譯的 NEFF(Neuron 可執行檔案格式)。

Neuron 模型在頂部帶有一個影像分類頭(在 [CLS] 標記的最終隱藏狀態之上是一個線性層),例如用於 ImageNet。

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

用於影像分類任務的 Neuron 模型。該類正式支援 beit、convnext、convnextv2、deit、levit、mobilenet_v2、mobilevit、vit 等。

forward

< >

( pixel_values: Tensor **kwargs )

引數

  • pixel_values (torch.Tensor | None,形狀為 (batch_size, num_channels, height, width),預設為 None) — 與當前批次中影像相對應的畫素值。可以使用 AutoImageProcessor 從編碼影像中獲取畫素值。

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

示例

>>> import requests
>>> from PIL import Image
>>> from optimum.neuron import NeuronModelForImageClassification
>>> from transformers import AutoImageProcessor

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> preprocessor = AutoImageProcessor.from_pretrained("optimum/vit-base-patch16-224-neuronx")
>>> model = NeuronModelForImageClassification.from_pretrained("optimum/vit-base-patch16-224-neuronx")

>>> inputs = preprocessor(images=image, return_tensors="pt")

>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> predicted_label = logits.argmax(-1).item()

NeuronModelForSemanticSegmentation

class optimum.neuron.NeuronModelForSemanticSegmentation

< >

( 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 是一個 TorchScript 模組,它內嵌了由 neuron(x) 編譯器編譯的 NEFF(Neuron 可執行檔案格式)。

Neuron 模型在頂部帶有一個語義分割頭,例如用於 Pascal VOC。

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

用於語義分割的 Neuron 模型,頂部帶有一個全 MLP 解碼頭,例如用於 ADE20k、CityScapes。該類正式支援 mobilevit、mobilenet-v2 等。

forward

< >

( pixel_values: Tensor **kwargs )

引數

  • pixel_values (torch.Tensor | None,形狀為 (batch_size, num_channels, height, width),預設為 None) — 對應於當前批次中影像的畫素值。畫素值可以透過使用 AutoImageProcessor 從編碼後的影像中獲取。

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

示例

>>> import requests
>>> from PIL import Image
>>> from optimum.neuron import NeuronModelForSemanticSegmentation
>>> from transformers import AutoImageProcessor

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> preprocessor = AutoImageProcessor.from_pretrained("optimum/deeplabv3-mobilevit-small-neuronx")
>>> model = NeuronModelForSemanticSegmentation.from_pretrained("optimum/deeplabv3-mobilevit-small-neuronx")

>>> inputs = preprocessor(images=image, return_tensors="pt")

>>> outputs = model(**inputs)
>>> logits = outputs.logits

NeuronModelForObjectDetection

class optimum.neuron.NeuronModelForObjectDetection

< >

( 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 是一個 TorchScript 模組,其中嵌入了由 neuron(x) 編譯器編譯的 NEFF(Neuron 可執行檔案格式)。

帶有目標檢測頭的 Neuron 模型,用於諸如 COCO 檢測等任務。

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

用於目標檢測的 Neuron 模型,其頂部帶有目標檢測頭,適用於諸如 COCO 檢測等任務。

forward

< >

( pixel_values: Tensor **kwargs )

引數

  • pixel_values (torch.Tensor | None,形狀為 (batch_size, num_channels, height, width),預設為 None) — 對應於當前批次中影像的畫素值。畫素值可以透過使用 AutoImageProcessor 從編碼後的影像中獲取。

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

示例

>>> import requests
>>> from PIL import Image
>>> from optimum.neuron import NeuronModelForObjectDetection
>>> from transformers import AutoImageProcessor

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> preprocessor = AutoImageProcessor.from_pretrained("hustvl/yolos-tiny")
>>> model = NeuronModelForObjectDetection.from_pretrained("hustvl/yolos-tiny")

>>> inputs = preprocessor(images=image, return_tensors="pt")

>>> outputs = model(**inputs)
>>> target_sizes = torch.tensor([image.size[::-1]])
>>> results = image_processor.post_process_object_detection(outputs, threshold=0.9, target_sizes=target_sizes)[0]

音訊

以下 auto 類可用於下列音訊任務。

NeuronModelForAudioClassification

class optimum.neuron.NeuronModelForAudioClassification

< >

( 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 是一個 TorchScript 模組,其中嵌入了由 neuron(x) 編譯器編譯的 NEFF(Neuron 可執行檔案格式)。

帶有音訊分類頭的 Neuron 模型。

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

用於音訊分類的 Neuron 模型,其頂部帶有一個序列分類頭(在池化輸出上加一個線性層),適用於像 SUPERB 關鍵詞識別這樣的任務。

forward

< >

( input_values: Tensor **kwargs )

引數

  • input_values (torch.Tensor,形狀為 (batch_size, sequence_length)) — 輸入原始語音波形的浮點值。輸入值可以透過使用 AutoProcessor 將音訊檔案載入到陣列中來獲取。

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

示例

>>> from transformers import AutoProcessor
>>> from optimum.neuron import NeuronModelForAudioClassification
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> feature_extractor = AutoProcessor.from_pretrained("Jingya/wav2vec2-large-960h-lv60-self-neuronx-audio-classification")
>>> model = NeuronModelForAudioClassification.from_pretrained("Jingya/wav2vec2-large-960h-lv60-self-neuronx-audio-classification")

>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")

>>> logits = model(**inputs).logits
>>> predicted_class_ids = torch.argmax(logits, dim=-1).item()
>>> predicted_label = model.config.id2label[predicted_class_ids]

NeuronModelForAudioFrameClassification

class optimum.neuron.NeuronModelForAudioFrameClassification

< >

( 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 是一個 TorchScript 模組,其中嵌入了由 neuron(x) 編譯器編譯的 NEFF(Neuron 可執行檔案格式)。

帶有音訊幀分類頭的 Neuron 模型。

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

帶有幀分類頭的 Neuron 模型,適用於像說話人日誌(Speaker Diarization)這樣的任務。

forward

< >

( input_values: Tensor **kwargs )

引數

  • input_values (torch.Tensor,形狀為 (batch_size, sequence_length)) — 輸入原始語音波形的浮點值。輸入值可以透過使用 AutoProcessor 將音訊檔案載入到陣列中來獲取。

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

示例

>>> from transformers import AutoProcessor
>>> from optimum.neuron import NeuronModelForAudioFrameClassification
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> feature_extractor = AutoProcessor.from_pretrained("Jingya/wav2vec2-base-superb-sd-neuronx")
>>> model =  NeuronModelForAudioFrameClassification.from_pretrained("Jingya/wav2vec2-base-superb-sd-neuronx")

>>> inputs = feature_extractor(dataset[0]["audio"]["array"], return_tensors="pt", sampling_rate=sampling_rate)
>>> logits = model(**inputs).logits

>>> probabilities = torch.sigmoid(logits[0])
>>> labels = (probabilities > 0.5).long()
>>> labels[0].tolist()

NeuronModelForCTC

class optimum.neuron.NeuronModelForCTC

< >

( 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 是一個 TorchScript 模組,其中嵌入了由 neuron(x) 編譯器編譯的 NEFF(Neuron 可執行檔案格式)。

帶有連線主義時間分類(connectionist temporal classification)頭的 Neuron 模型。

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

帶有用於連線主義時間分類(CTC)的語言建模頭的 Neuron 模型。

forward

< >

( input_values: Tensor **kwargs )

引數

  • input_values (torch.Tensor,形狀為 (batch_size, sequence_length)) — 輸入原始語音波形的浮點值。輸入值可以透過使用 AutoProcessor 將音訊檔案載入到陣列中來獲取。

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

示例

>>> from transformers import AutoProcessor
>>> from optimum.neuron import NeuronModelForCTC
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> processor = AutoProcessor.from_pretrained("Jingya/wav2vec2-large-960h-lv60-self-neuronx-ctc")
>>> model = NeuronModelForCTC.from_pretrained("Jingya/wav2vec2-large-960h-lv60-self-neuronx-ctc")

>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> logits = model(**inputs).logits
>>> predicted_ids = torch.argmax(logits, dim=-1)

>>> transcription = processor.batch_decode(predicted_ids)

使用 optimum.neuron.pipeline 的示例

>>> from transformers import AutoProcessor
>>> from optimum.neuron import NeuronModelForCTC, pipeline

>>> processor = AutoProcessor.from_pretrained("Jingya/wav2vec2-large-960h-lv60-self-neuronx-ctc")
>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")

>>> model = NeuronModelForCTC.from_pretrained("Jingya/wav2vec2-large-960h-lv60-self-neuronx-ctc")
>>> asr = pipeline("automatic-speech-recognition", model=model, feature_extractor=processor.feature_extractor, tokenizer=processor.tokenizer)

NeuronModelForXVector

class optimum.neuron.NeuronModelForXVector

< >

( 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 是一個 TorchScript 模組,其中嵌入了由 neuron(x) 編譯器編譯的 NEFF(Neuron 可執行檔案格式)。

帶有 XVector 特徵提取頭的 Neuron 模型,用於像說話人驗證這樣的任務。

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

帶有 XVector 特徵提取頭的 Neuron 模型,用於像說話人驗證這樣的任務。

forward

< >

( input_values: Tensor **kwargs )

引數

  • input_values (torch.Tensor,形狀為 (batch_size, sequence_length)) — 輸入原始語音波形的浮點值。輸入值可以透過使用 AutoProcessor 將音訊檔案載入到陣列中來獲取。

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

示例

>>> from transformers import AutoProcessor
>>> from optimum.neuron import NeuronModelForXVector
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> feature_extractor = AutoProcessor.from_pretrained("Jingya/wav2vec2-base-superb-sv-neuronx")
>>> model = NeuronModelForXVector.from_pretrained("Jingya/wav2vec2-base-superb-sv-neuronx")

>>> inputs = feature_extractor(
...     [d["array"] for d in dataset[:2]["audio"]], sampling_rate=sampling_rate, return_tensors="pt", padding=True
... )
>>> embeddings = model(**inputs).embeddings

>>> embeddings = torch.nn.functional.normalize(embeddings, dim=-1)

>>> cosine_sim = torch.nn.CosineSimilarity(dim=-1)
>>> similarity = cosine_sim(embeddings[0], embeddings[1])
>>> threshold = 0.7
>>> if similarity < threshold:
...     print("Speakers are not the same!")
>>> round(similarity.item(), 2)

Stable Diffusion

以下 Neuron 模型類可用於 Stable Diffusion 任務。

NeuronStableDiffusionPipeline

class optimum.neuron.NeuronStableDiffusionPipeline

< >

( config: dict[str, typing.Any] configs: dict[str, 'PretrainedConfig'] neuron_configs: dict[str, 'NeuronDefaultConfig'] data_parallel_mode: typing.Literal['none', 'unet', 'transformer', 'all'] scheduler: diffusers.schedulers.scheduling_utils.SchedulerMixin | None vae_decoder: torch.jit._script.ScriptModule | NeuronModelVaeDecoder text_encoder: torch.jit._script.ScriptModule | NeuronModelTextEncoder | None = None text_encoder_2: torch.jit._script.ScriptModule | NeuronModelTextEncoder | None = None unet: torch.jit._script.ScriptModule | NeuronModelUnet | None = None transformer: torch.jit._script.ScriptModule | NeuronModelTransformer | None = None vae_encoder: torch.jit._script.ScriptModule | NeuronModelVaeEncoder | None = None image_encoder: torch.jit._script.ScriptModule | None = None safety_checker: torch.jit._script.ScriptModule | None = None tokenizer: transformers.models.clip.tokenization_clip.CLIPTokenizer | transformers.models.t5.tokenization_t5.T5Tokenizer | None = None tokenizer_2: transformers.models.clip.tokenization_clip.CLIPTokenizer | None = None feature_extractor: transformers.models.clip.feature_extraction_clip.CLIPFeatureExtractor | None = None controlnet: torch.jit._script.ScriptModule | list[torch.jit._script.ScriptModule]| NeuronControlNetModel | NeuronMultiControlNetModel | None = None requires_aesthetics_score: bool = False force_zeros_for_empty_prompt: bool = True add_watermarker: bool | None = None model_save_dir: str | pathlib.Path | tempfile.TemporaryDirectory | None = None model_and_config_save_paths: dict[str, tuple[str, pathlib.Path]] | None = None )

__call__

< >

( *args **kwargs )

NeuronStableDiffusionImg2ImgPipeline

class optimum.neuron.NeuronStableDiffusionImg2ImgPipeline

< >

( config: dict[str, typing.Any] configs: dict[str, 'PretrainedConfig'] neuron_configs: dict[str, 'NeuronDefaultConfig'] data_parallel_mode: typing.Literal['none', 'unet', 'transformer', 'all'] scheduler: diffusers.schedulers.scheduling_utils.SchedulerMixin | None vae_decoder: torch.jit._script.ScriptModule | NeuronModelVaeDecoder text_encoder: torch.jit._script.ScriptModule | NeuronModelTextEncoder | None = None text_encoder_2: torch.jit._script.ScriptModule | NeuronModelTextEncoder | None = None unet: torch.jit._script.ScriptModule | NeuronModelUnet | None = None transformer: torch.jit._script.ScriptModule | NeuronModelTransformer | None = None vae_encoder: torch.jit._script.ScriptModule | NeuronModelVaeEncoder | None = None image_encoder: torch.jit._script.ScriptModule | None = None safety_checker: torch.jit._script.ScriptModule | None = None tokenizer: transformers.models.clip.tokenization_clip.CLIPTokenizer | transformers.models.t5.tokenization_t5.T5Tokenizer | None = None tokenizer_2: transformers.models.clip.tokenization_clip.CLIPTokenizer | None = None feature_extractor: transformers.models.clip.feature_extraction_clip.CLIPFeatureExtractor | None = None controlnet: torch.jit._script.ScriptModule | list[torch.jit._script.ScriptModule]| NeuronControlNetModel | NeuronMultiControlNetModel | None = None requires_aesthetics_score: bool = False force_zeros_for_empty_prompt: bool = True add_watermarker: bool | None = None model_save_dir: str | pathlib.Path | tempfile.TemporaryDirectory | None = None model_and_config_save_paths: dict[str, tuple[str, pathlib.Path]] | None = None )

__call__

< >

( *args **kwargs )

NeuronStableDiffusionInpaintPipeline

class optimum.neuron.NeuronStableDiffusionInpaintPipeline

< >

( config: dict[str, typing.Any] configs: dict[str, 'PretrainedConfig'] neuron_configs: dict[str, 'NeuronDefaultConfig'] data_parallel_mode: typing.Literal['none', 'unet', 'transformer', 'all'] scheduler: diffusers.schedulers.scheduling_utils.SchedulerMixin | None vae_decoder: torch.jit._script.ScriptModule | NeuronModelVaeDecoder text_encoder: torch.jit._script.ScriptModule | NeuronModelTextEncoder | None = None text_encoder_2: torch.jit._script.ScriptModule | NeuronModelTextEncoder | None = None unet: torch.jit._script.ScriptModule | NeuronModelUnet | None = None transformer: torch.jit._script.ScriptModule | NeuronModelTransformer | None = None vae_encoder: torch.jit._script.ScriptModule | NeuronModelVaeEncoder | None = None image_encoder: torch.jit._script.ScriptModule | None = None safety_checker: torch.jit._script.ScriptModule | None = None tokenizer: transformers.models.clip.tokenization_clip.CLIPTokenizer | transformers.models.t5.tokenization_t5.T5Tokenizer | None = None tokenizer_2: transformers.models.clip.tokenization_clip.CLIPTokenizer | None = None feature_extractor: transformers.models.clip.feature_extraction_clip.CLIPFeatureExtractor | None = None controlnet: torch.jit._script.ScriptModule | list[torch.jit._script.ScriptModule]| NeuronControlNetModel | NeuronMultiControlNetModel | None = None requires_aesthetics_score: bool = False force_zeros_for_empty_prompt: bool = True add_watermarker: bool | None = None model_save_dir: str | pathlib.Path | tempfile.TemporaryDirectory | None = None model_and_config_save_paths: dict[str, tuple[str, pathlib.Path]] | None = None )

__call__

< >

( *args **kwargs )

NeuronLatentConsistencyModelPipeline

class optimum.neuron.NeuronLatentConsistencyModelPipeline

< >

( config: dict[str, typing.Any] configs: dict[str, 'PretrainedConfig'] neuron_configs: dict[str, 'NeuronDefaultConfig'] data_parallel_mode: typing.Literal['none', 'unet', 'transformer', 'all'] scheduler: diffusers.schedulers.scheduling_utils.SchedulerMixin | None vae_decoder: torch.jit._script.ScriptModule | NeuronModelVaeDecoder text_encoder: torch.jit._script.ScriptModule | NeuronModelTextEncoder | None = None text_encoder_2: torch.jit._script.ScriptModule | NeuronModelTextEncoder | None = None unet: torch.jit._script.ScriptModule | NeuronModelUnet | None = None transformer: torch.jit._script.ScriptModule | NeuronModelTransformer | None = None vae_encoder: torch.jit._script.ScriptModule | NeuronModelVaeEncoder | None = None image_encoder: torch.jit._script.ScriptModule | None = None safety_checker: torch.jit._script.ScriptModule | None = None tokenizer: transformers.models.clip.tokenization_clip.CLIPTokenizer | transformers.models.t5.tokenization_t5.T5Tokenizer | None = None tokenizer_2: transformers.models.clip.tokenization_clip.CLIPTokenizer | None = None feature_extractor: transformers.models.clip.feature_extraction_clip.CLIPFeatureExtractor | None = None controlnet: torch.jit._script.ScriptModule | list[torch.jit._script.ScriptModule]| NeuronControlNetModel | NeuronMultiControlNetModel | None = None requires_aesthetics_score: bool = False force_zeros_for_empty_prompt: bool = True add_watermarker: bool | None = None model_save_dir: str | pathlib.Path | tempfile.TemporaryDirectory | None = None model_and_config_save_paths: dict[str, tuple[str, pathlib.Path]] | None = None )

__call__

< >

( *args **kwargs )

NeuronStableDiffusionControlNetPipeline

class optimum.neuron.NeuronStableDiffusionControlNetPipeline

< >

( config: dict[str, typing.Any] configs: dict[str, 'PretrainedConfig'] neuron_configs: dict[str, 'NeuronDefaultConfig'] data_parallel_mode: typing.Literal['none', 'unet', 'transformer', 'all'] scheduler: diffusers.schedulers.scheduling_utils.SchedulerMixin | None vae_decoder: torch.jit._script.ScriptModule | NeuronModelVaeDecoder text_encoder: torch.jit._script.ScriptModule | NeuronModelTextEncoder | None = None text_encoder_2: torch.jit._script.ScriptModule | NeuronModelTextEncoder | None = None unet: torch.jit._script.ScriptModule | NeuronModelUnet | None = None transformer: torch.jit._script.ScriptModule | NeuronModelTransformer | None = None vae_encoder: torch.jit._script.ScriptModule | NeuronModelVaeEncoder | None = None image_encoder: torch.jit._script.ScriptModule | None = None safety_checker: torch.jit._script.ScriptModule | None = None tokenizer: transformers.models.clip.tokenization_clip.CLIPTokenizer | transformers.models.t5.tokenization_t5.T5Tokenizer | None = None tokenizer_2: transformers.models.clip.tokenization_clip.CLIPTokenizer | None = None feature_extractor: transformers.models.clip.feature_extraction_clip.CLIPFeatureExtractor | None = None controlnet: torch.jit._script.ScriptModule | list[torch.jit._script.ScriptModule]| NeuronControlNetModel | NeuronMultiControlNetModel | None = None requires_aesthetics_score: bool = False force_zeros_for_empty_prompt: bool = True add_watermarker: bool | None = None model_save_dir: str | pathlib.Path | tempfile.TemporaryDirectory | None = None model_and_config_save_paths: dict[str, tuple[str, pathlib.Path]] | None = None )

__call__

< >

( prompt: str | list[str] | None = None image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, typing.List[PIL.Image.Image], typing.List[numpy.ndarray], typing.List[torch.Tensor]] = None num_inference_steps: int = 50 timesteps: list[int] | None = None sigmas: list[float] | None = None guidance_scale: float = 7.5 negative_prompt: str | list[str] | None = None num_images_per_prompt: int | None = 1 eta: float = 0.0 generator: torch._C.Generator | list[torch._C.Generator] | None = None latents: torch.Tensor | None = None prompt_embeds: torch.Tensor | None = None negative_prompt_embeds: torch.Tensor | None = None ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, typing.List[PIL.Image.Image], typing.List[numpy.ndarray], typing.List[torch.Tensor], NoneType] = None ip_adapter_image_embeds: list[torch.Tensor] | None = None output_type: str = 'pil' return_dict: bool = True cross_attention_kwargs: dict[str, typing.Any] | None = None controlnet_conditioning_scale: float | list[float] = 1.0 guess_mode: bool = False control_guidance_start: float | list[float] = 0.0 control_guidance_end: float | list[float] = 1.0 clip_skip: int | None = None callback_on_step_end: typing.Union[typing.Callable[[int, int, dict], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None callback_on_step_end_tensor_inputs: list[str] = ['latents'] **kwargs ) diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutputtuple

引數

  • prompt (str | list[str] | None,預設為 None) — 用於指導影像生成的提示或提示列表。如果未定義,則需要傳遞 prompt_embeds
  • image ("PipelineImageInput" | None,預設為 None) — ControlNet 的輸入條件,用於為 unet 的生成提供指導。如果型別指定為 torch.Tensor,它將按原樣傳遞給 ControlNet。PIL.Image.Image 也可以作為影像被接受。輸出影像的尺寸預設為 `image` 的尺寸。如果傳遞了高度和/或寬度,`image` 會相應地調整大小。如果在 `init` 中指定了多個 ControlNet,則影像必須作為列表傳遞,以便列表中的每個元素都可以正確地批處理以輸入到單個 ControlNet 中。當 `prompt` 是一個列表時,如果為單個 ControlNet 傳遞了一個影像列表,每個影像將與 `prompt` 列表中的每個提示配對。這也適用於多個 ControlNet,其中可以傳遞影像列表的列表,以便為每個提示和每個 ControlNet 進行批處理。
  • num_inference_steps (int,預設為 50) — 去噪步數。更多的去噪步數通常會帶來更高質量的影像,但代價是推理速度變慢。
  • timesteps (list[int] | None,預設為 None) — 用於去噪過程的自定義時間步,適用於在其 set_timesteps 方法中支援 timesteps 引數的排程器。如果未定義,將使用傳遞 num_inference_steps 時的預設行為。必須按降序排列。
  • sigmas (list[int] | None,預設為 None) — 用於去噪過程的自定義 sigma 值,適用於在其 set_timesteps 方法中支援 sigmas 引數的排程器。如果未定義,將使用傳遞 num_inference_steps 時的預設行為。
  • guidance_scale (float,預設為 7.5) — 更高的引導比例值會鼓勵模型生成與文字 prompt 緊密相關的影像,但代價是影像質量較低。當 guidance_scale > 1 時啟用引導比例。
  • negative_prompt (str | list[str] | None,預設為 None) — 用於指導影像生成時不應包含的內容的提示或提示列表。如果未定義,則需要傳遞 negative_prompt_embeds。在不使用引導時(guidance_scale < 1)會被忽略。
  • num_images_per_prompt (int,預設為 1) — 每個提示生成的影像數量。如果它與用於編譯的批處理大小不同,它將被神經元的靜態批處理大小覆蓋(動態批處理除外)。
  • eta (float,預設為 0.0) — 對應於 DDIM 論文中的引數 eta (η)。僅適用於 diffusers.schedulers.DDIMScheduler,在其他排程器中被忽略。
  • generator (torch.Generator | list[torch.Generator] | None,預設為 None) — 一個 torch.Generator,用於使生成過程具有確定性。
  • latents (torch.Tensor | None,預設為 None) — 從高斯分佈中取樣的預生成噪聲潛在變數,用作影像生成的輸入。可用於使用不同的提示微調相同的生成過程。如果未提供,則透過使用提供的隨機 generator 進行取樣來生成潛在張量。
  • prompt_embeds (torch.Tensor | None,預設為 None) — 預生成的文字嵌入。可用於輕鬆微調文字輸入(提示加權)。如果未提供,則從 prompt 輸入引數生成文字嵌入。
  • negative_prompt_embeds (torch.Tensor | None,預設為 None) — 預生成的負向文字嵌入。可用於輕鬆微調文字輸入(提示加權)。如果未提供,則從 negative_prompt 輸入引數生成 negative_prompt_embeds
  • ip_adapter_image — (PipelineImageInput | None,預設為 None):用於 IP Adapters 的可選影像輸入。
  • ip_adapter_image_embeds (list[torch.Tensor] | None,預設為 None) — 用於 IP-Adapter 的預生成影像嵌入。它應該是一個列表,其長度與 IP-adapter 的數量相同。每個元素都應該是一個形狀為 (batch_size, num_images, emb_dim) 的張量。如果 do_classifier_free_guidance 設定為 True,它應該包含負向影像嵌入。如果未提供,則從 ip_adapter_image 輸入引數計算嵌入。
  • output_type (str,預設為 "pil") — 生成影像的輸出格式。在 PIL.Imagenp.array 之間選擇。
  • return_dict (bool,預設為 True) — 是否返回 diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput 而不是一個普通的元組。
  • cross_attention_kwargs (dict[str, Any] | None,預設為 None) — 一個 kwargs 字典,如果指定,將傳遞給 self.processor 中定義的 AttentionProcessor
  • controlnet_conditioning_scale (float | list[float],預設為 1.0) — ControlNet 的輸出在新增到原始 unet 的殘差之前會乘以 controlnet_conditioning_scale。如果在 init 中指定了多個 ControlNet,你可以將相應的比例設定為一個列表。
  • guess_mode (bool,預設為 False) — 即使你移除了所有提示,ControlNet 編碼器也會嘗試識別輸入影像的內容。建議使用 3.0 到 5.0 之間的 guidance_scale 值。
  • control_guidance_start (float | list[float],預設為 0.0) — ControlNet 開始應用的總步數的百分比。
  • control_guidance_end (float | list[float]可選,預設為 1.0) — ControlNet 停止應用的總步數的百分比。
  • clip_skip (int | None,預設為 None) — 在計算提示嵌入時從 CLIP 中跳過的層數。值為 1 表示將使用倒數第二層的輸出用於計算提示嵌入。
  • callback_on_step_end (Callable[[int, int, dict], None] | PipelineCallback | MultiPipelineCallbacks | None,預設為 None) — 在推理過程中每個去噪步驟結束時呼叫的函式或 PipelineCallbackMultiPipelineCallbacks 的子類。使用以下引數:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: dict)callback_kwargs 將包含 callback_on_step_end_tensor_inputs 指定的所有張量列表。
  • callback_on_step_end_tensor_inputs (list[str],預設為 ["latents"]) — callback_on_step_end 函式的張量輸入列表。列表中指定的張量將作為 callback_kwargs 引數傳遞。你只能包含管道類的 ._callback_tensor_inputs 屬性中列出的變數。

返回

diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutputtuple

如果 return_dictTrue,則返回 diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput,否則返回一個 tuple,其中第一個元素是包含生成影像的列表,第二個元素是一個 bool 列表,指示相應生成的影像是否包含“不適宜工作場所”(nsfw)內容。

用於生成的管道的呼叫函式。

NeuronPixArtAlphaPipeline

class optimum.neuron.NeuronPixArtAlphaPipeline

< >

( **kwargs )

__call__

< >

( *args **kwargs )

NeuronStableDiffusionXLPipeline

class optimum.neuron.NeuronStableDiffusionXLPipeline

< >

( config: dict[str, typing.Any] configs: dict[str, 'PretrainedConfig'] neuron_configs: dict[str, 'NeuronDefaultConfig'] data_parallel_mode: typing.Literal['none', 'unet', 'transformer', 'all'] scheduler: diffusers.schedulers.scheduling_utils.SchedulerMixin | None vae_decoder: torch.jit._script.ScriptModule | NeuronModelVaeDecoder text_encoder: torch.jit._script.ScriptModule | NeuronModelTextEncoder | None = None text_encoder_2: torch.jit._script.ScriptModule | NeuronModelTextEncoder | None = None unet: torch.jit._script.ScriptModule | NeuronModelUnet | None = None transformer: torch.jit._script.ScriptModule | NeuronModelTransformer | None = None vae_encoder: torch.jit._script.ScriptModule | NeuronModelVaeEncoder | None = None image_encoder: torch.jit._script.ScriptModule | None = None safety_checker: torch.jit._script.ScriptModule | None = None tokenizer: transformers.models.clip.tokenization_clip.CLIPTokenizer | transformers.models.t5.tokenization_t5.T5Tokenizer | None = None tokenizer_2: transformers.models.clip.tokenization_clip.CLIPTokenizer | None = None feature_extractor: transformers.models.clip.feature_extraction_clip.CLIPFeatureExtractor | None = None controlnet: torch.jit._script.ScriptModule | list[torch.jit._script.ScriptModule]| NeuronControlNetModel | NeuronMultiControlNetModel | None = None requires_aesthetics_score: bool = False force_zeros_for_empty_prompt: bool = True add_watermarker: bool | None = None model_save_dir: str | pathlib.Path | tempfile.TemporaryDirectory | None = None model_and_config_save_paths: dict[str, tuple[str, pathlib.Path]] | None = None )

__call__

< >

( *args **kwargs )

NeuronStableDiffusionXLImg2ImgPipeline

class optimum.neuron.NeuronStableDiffusionXLImg2ImgPipeline

< >

( config: dict[str, typing.Any] configs: dict[str, 'PretrainedConfig'] neuron_configs: dict[str, 'NeuronDefaultConfig'] data_parallel_mode: typing.Literal['none', 'unet', 'transformer', 'all'] scheduler: diffusers.schedulers.scheduling_utils.SchedulerMixin | None vae_decoder: torch.jit._script.ScriptModule | NeuronModelVaeDecoder text_encoder: torch.jit._script.ScriptModule | NeuronModelTextEncoder | None = None text_encoder_2: torch.jit._script.ScriptModule | NeuronModelTextEncoder | None = None unet: torch.jit._script.ScriptModule | NeuronModelUnet | None = None transformer: torch.jit._script.ScriptModule | NeuronModelTransformer | None = None vae_encoder: torch.jit._script.ScriptModule | NeuronModelVaeEncoder | None = None image_encoder: torch.jit._script.ScriptModule | None = None safety_checker: torch.jit._script.ScriptModule | None = None tokenizer: transformers.models.clip.tokenization_clip.CLIPTokenizer | transformers.models.t5.tokenization_t5.T5Tokenizer | None = None tokenizer_2: transformers.models.clip.tokenization_clip.CLIPTokenizer | None = None feature_extractor: transformers.models.clip.feature_extraction_clip.CLIPFeatureExtractor | None = None controlnet: torch.jit._script.ScriptModule | list[torch.jit._script.ScriptModule]| NeuronControlNetModel | NeuronMultiControlNetModel | None = None requires_aesthetics_score: bool = False force_zeros_for_empty_prompt: bool = True add_watermarker: bool | None = None model_save_dir: str | pathlib.Path | tempfile.TemporaryDirectory | None = None model_and_config_save_paths: dict[str, tuple[str, pathlib.Path]] | None = None )

__call__

< >

( *args **kwargs )

NeuronStableDiffusionXLInpaintPipeline

class optimum.neuron.NeuronStableDiffusionXLInpaintPipeline

< >

( config: dict[str, typing.Any] configs: dict[str, 'PretrainedConfig'] neuron_configs: dict[str, 'NeuronDefaultConfig'] data_parallel_mode: typing.Literal['none', 'unet', 'transformer', 'all'] scheduler: diffusers.schedulers.scheduling_utils.SchedulerMixin | None vae_decoder: torch.jit._script.ScriptModule | NeuronModelVaeDecoder text_encoder: torch.jit._script.ScriptModule | NeuronModelTextEncoder | None = None text_encoder_2: torch.jit._script.ScriptModule | NeuronModelTextEncoder | None = None unet: torch.jit._script.ScriptModule | NeuronModelUnet | None = None transformer: torch.jit._script.ScriptModule | NeuronModelTransformer | None = None vae_encoder: torch.jit._script.ScriptModule | NeuronModelVaeEncoder | None = None image_encoder: torch.jit._script.ScriptModule | None = None safety_checker: torch.jit._script.ScriptModule | None = None tokenizer: transformers.models.clip.tokenization_clip.CLIPTokenizer | transformers.models.t5.tokenization_t5.T5Tokenizer | None = None tokenizer_2: transformers.models.clip.tokenization_clip.CLIPTokenizer | None = None feature_extractor: transformers.models.clip.feature_extraction_clip.CLIPFeatureExtractor | None = None controlnet: torch.jit._script.ScriptModule | list[torch.jit._script.ScriptModule]| NeuronControlNetModel | NeuronMultiControlNetModel | None = None requires_aesthetics_score: bool = False force_zeros_for_empty_prompt: bool = True add_watermarker: bool | None = None model_save_dir: str | pathlib.Path | tempfile.TemporaryDirectory | None = None model_and_config_save_paths: dict[str, tuple[str, pathlib.Path]] | None = None )

__call__

< >

( *args **kwargs )

NeuronStableDiffusionXLControlNetPipeline

class optimum.neuron.NeuronStableDiffusionXLControlNetPipeline

< >

( config: dict[str, typing.Any] configs: dict[str, 'PretrainedConfig'] neuron_configs: dict[str, 'NeuronDefaultConfig'] data_parallel_mode: typing.Literal['none', 'unet', 'transformer', 'all'] scheduler: diffusers.schedulers.scheduling_utils.SchedulerMixin | None vae_decoder: torch.jit._script.ScriptModule | NeuronModelVaeDecoder text_encoder: torch.jit._script.ScriptModule | NeuronModelTextEncoder | None = None text_encoder_2: torch.jit._script.ScriptModule | NeuronModelTextEncoder | None = None unet: torch.jit._script.ScriptModule | NeuronModelUnet | None = None transformer: torch.jit._script.ScriptModule | NeuronModelTransformer | None = None vae_encoder: torch.jit._script.ScriptModule | NeuronModelVaeEncoder | None = None image_encoder: torch.jit._script.ScriptModule | None = None safety_checker: torch.jit._script.ScriptModule | None = None tokenizer: transformers.models.clip.tokenization_clip.CLIPTokenizer | transformers.models.t5.tokenization_t5.T5Tokenizer | None = None tokenizer_2: transformers.models.clip.tokenization_clip.CLIPTokenizer | None = None feature_extractor: transformers.models.clip.feature_extraction_clip.CLIPFeatureExtractor | None = None controlnet: torch.jit._script.ScriptModule | list[torch.jit._script.ScriptModule]| NeuronControlNetModel | NeuronMultiControlNetModel | None = None requires_aesthetics_score: bool = False force_zeros_for_empty_prompt: bool = True add_watermarker: bool | None = None model_save_dir: str | pathlib.Path | tempfile.TemporaryDirectory | None = None model_and_config_save_paths: dict[str, tuple[str, pathlib.Path]] | None = None )

__call__

< >

( prompt: str | list[str] | None = None prompt_2: str | list[str] | None = None image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, typing.List[PIL.Image.Image], typing.List[numpy.ndarray], typing.List[torch.Tensor], NoneType] = None num_inference_steps: int = 50 timesteps: list[int] | None = None sigmas: list[float] | None = None denoising_end: float | None = None guidance_scale: float = 5.0 negative_prompt: str | list[str] | None = None negative_prompt_2: str | list[str] | None = None num_images_per_prompt: int | None = 1 eta: float = 0.0 generator: torch._C.Generator | list[torch._C.Generator] | None = None latents: torch.Tensor | None = None prompt_embeds: torch.Tensor | None = None negative_prompt_embeds: torch.Tensor | None = None pooled_prompt_embeds: torch.Tensor | None = None negative_pooled_prompt_embeds: torch.Tensor | None = None ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, typing.List[PIL.Image.Image], typing.List[numpy.ndarray], typing.List[torch.Tensor], NoneType] = None ip_adapter_image_embeds: list[torch.Tensor] | None = None output_type: str | None = 'pil' return_dict: bool = True cross_attention_kwargs: dict[str, typing.Any] | None = None controlnet_conditioning_scale: float | list[float] = 1.0 guess_mode: bool = False control_guidance_start: float | list[float] = 0.0 control_guidance_end: float | list[float] = 1.0 original_size: tuple[int, int] | None = None crops_coords_top_left: tuple[int, int] = (0, 0) target_size: tuple[int, int] | None = None negative_original_size: tuple[int, int] | None = None negative_crops_coords_top_left: tuple[int, int] = (0, 0) negative_target_size: tuple[int, int] | None = None clip_skip: int | None = None callback_on_step_end: typing.Union[typing.Callable[[int, int, dict], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None callback_on_step_end_tensor_inputs: list[str] = ['latents'] **kwargs ) diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutputtuple

引數

  • prompt (str | list[str],預設為 None) — 用於指導影像生成的提示或提示列表。如果未定義,則需要傳遞 prompt_embeds
  • prompt_2 (str | list[str],預設為 None) — 傳送到 tokenizer_2text_encoder_2 的提示或提示列表。如果未定義,則在兩個文字編碼器中都使用 prompt
  • image (PipelineImageInput | None,預設為 None) — ControlNet 輸入條件,為 unet 的生成提供指導。如果型別指定為 torch.Tensor,則按原樣傳遞給 ControlNet。PIL.Image.Image 也可以作為影像被接受。輸出影像的尺寸預設為 image 的尺寸。如果傳遞了高度和/或寬度,image 將相應地調整大小。如果在 init 中指定了多個 ControlNet,則必須將影像作為列表傳遞,以便列表的每個元素都可以正確地批處理以輸入單個 ControlNet。
  • num_inference_steps (int,預設為 50) — 去噪步數。更多的去噪步數通常會帶來更高質量的影像,但代價是推理速度變慢。
  • timesteps (list[int] | None,預設為 None) — 用於去噪過程的自定義時間步,適用於在其 set_timesteps 方法中支援 timesteps 引數的排程器。如果未定義,將使用傳遞 num_inference_steps 時的預設行為。必須按降序排列。
  • sigmas (list[float] | None,預設為 None) — 用於去噪過程的自定義 sigma 值,適用於在其 set_timesteps 方法中支援 sigmas 引數的排程器。如果未定義,將使用傳遞 num_inference_steps 時的預設行為。
  • denoising_end (float | None, 預設為 None) — 指定時,確定在有意提前終止之前要完成的總去噪過程的分數(介於 0.0 和 1.0 之間)。因此,返回的樣本仍將保留由排程程式選擇的離散時間步長確定的大量噪聲。當該 pipeline 構成“去噪器混合(Mixture of Denoisers)”多 pipeline 設定的一部分時,應理想地使用 denoising_end 引數,詳見最佳化影像輸出
  • guidance_scale (float, 預設為 5.0) — 更高的引導比例值會鼓勵模型生成與文字 prompt 緊密相關的影像,但代價是影像質量較低。當 guidance_scale > 1 時啟用引導比例。
  • negative_prompt (str | list[str] | None, 預設為 None) — 用於指導在影像生成中不包含哪些內容的提示或提示列表。如果未定義,則需要傳遞 negative_prompt_embeds。在不使用引導時(guidance_scale < 1)將被忽略。
  • negative_prompt_2 (str | list[str] | None, 預設為 None) — 用於指導在影像生成中不包含哪些內容的提示或提示列表。此引數將傳送給 tokenizer_2text_encoder_2。如果未定義,則兩個文字編碼器都將使用 negative_prompt
  • num_images_per_prompt (int, 預設為 1) — 每個提示生成的影像數量。
  • eta (float, 預設為 0.0) — 對應於 DDIM 論文中的引數 eta (η)。僅適用於 diffusers.schedulers.DDIMScheduler,在其他排程器中將被忽略。
  • generator (torch.Generator | list[torch.Generator] | None, 預設為 None) — 一個 torch.Generator,用於使生成過程具有確定性。
  • latents (torch.Tensor | None, 預設為 None) — 預先生成的從高斯分佈中取樣的噪聲潛在變數,用作影像生成的輸入。可用於使用不同的提示調整相同的生成過程。如果未提供,則透過使用提供的隨機 generator 進行取樣來生成一個潛在變數張量。
  • prompt_embeds (torch.Tensor | None, 預設為 None) — 預先生成的文字嵌入。可用於輕鬆調整文字輸入(提示加權)。如果未提供,則從 prompt 輸入引數生成文字嵌入。
  • negative_prompt_embeds (torch.Tensor | None, 預設為 None) — 預先生成的負面文字嵌入。可用於輕鬆調整文字輸入(提示加權)。如果未提供,則從 negative_prompt 輸入引數生成 negative_prompt_embeds
  • pooled_prompt_embeds (torch.Tensor | None, 預設為 None) — 預先生成的池化文字嵌入。可用於輕鬆調整文字輸入(提示加權)。如果未提供,則從 prompt 輸入引數生成池化文字嵌入。
  • negative_pooled_prompt_embeds (torch.Tensor | None, 預設為 None) — 預先生成的負面池化文字嵌入。可用於輕鬆調整文字輸入(提示加權)。如果未提供,則從 negative_prompt 輸入引數生成池化的 negative_prompt_embeds
  • ip_adapter_image (PipelineImageInput | None, 預設為 None) — 與 IP Adapters 配合使用的可選影像輸入。
  • ip_adapter_image_embeds (list[torch.Tensor] | None, 預設為 None) — 用於 IP-Adapter 的預生成影像嵌入。它應該是一個列表,其長度與 IP-adapter 的數量相同。每個元素應該是一個形狀為 (batch_size, num_images, emb_dim) 的張量。如果 do_classifier_free_guidance 設定為 True,它應該包含負面影像嵌入。如果未提供,則從 ip_adapter_image 輸入引數計算嵌入。
  • output_type (str | None, 預設為 "pil") — 生成影像的輸出格式。在 PIL.Imagenp.array 之間選擇。
  • return_dict (bool, 預設為 True) — 是否返回 ~pipelines.stable_diffusion.StableDiffusionPipelineOutput 而不是一個普通的元組。
  • cross_attention_kwargs (dict[str, Any] | None, 預設為 None) — 一個 kwargs 字典,如果指定,則傳遞給 self.processor 中定義的 AttentionProcessor
  • controlnet_conditioning_scale (float | list[float], 預設為 1.0) — ControlNet 的輸出在新增到原始 unet 中的殘差之前,會乘以 controlnet_conditioning_scale。如果在 init 中指定了多個 ControlNet,你可以將相應的比例設定為一個列表。
  • guess_mode (bool, 預設為 False) — 即使你移除了所有提示,ControlNet 編碼器也會嘗試識別輸入影像的內容。建議使用 3.0 到 5.0 之間的 guidance_scale 值。
  • control_guidance_start (float | list[float], 預設為 0.0) — ControlNet 開始應用的總步數的百分比。
  • control_guidance_end (float | list[float], 預設為 1.0) — ControlNet 停止應用的總步數的百分比。
  • original_size (tuple[int, int] | None, 預設為 (1024, 1024)) — 如果 original_sizetarget_size 不同,影像將顯示為下采樣或上取樣。如果未指定,original_size 預設為 (height, width)。這是 SDXL 微調的一部分,如 https://huggingface.co/papers/2307.01952 的 2.2 節所述。
  • crops_coords_top_left (tuple[int, int], 預設為 (0, 0)) — crops_coords_top_left 可用於生成一個看起來像是從 crops_coords_top_left 位置向下“裁剪”的影像。通常透過將 crops_coords_top_left 設定為 (0, 0) 來獲得良好、居中的影像。這是 SDXL 微調的一部分,如 https://huggingface.co/papers/2307.01952 的 2.2 節所述。
  • target_size (tuple[int, int] | None, 預設為 None) — 在大多數情況下,target_size 應設定為生成影像所需的高度和寬度。如果未指定,它將預設為 (height, width)。這是 SDXL 微調的一部分,如 https://huggingface.co/papers/2307.01952 的 2.2 節所述。
  • negative_original_size (tuple[int, int] | None, 預設為 None) — 根據特定影像解析度對生成過程進行負面條件化。這是 SDXL 微調的一部分,如 https://huggingface.co/papers/2307.01952 的 2.2 節所述。有關更多資訊,請參閱此 issue 討論串:https://github.com/huggingface/diffusers/issues/4208
  • negative_crops_coords_top_left (tuple[int, int], 預設為 (0, 0)) — 根據特定的裁剪座標對生成過程進行負面條件化。這是 SDXL 微調的一部分,如 https://huggingface.co/papers/2307.01952 的 2.2 節所述。有關更多資訊,請參閱此 issue 討論串:https://github.com/huggingface/diffusers/issues/4208
  • negative_target_size (tuple[int, int] | None, 預設為 None) — 根據目標影像解析度對生成過程進行負面條件化。在大多數情況下,它應該與 target_size 相同。這是 SDXL 微調的一部分,如 https://huggingface.co/papers/2307.01952 的 2.2 節所述。有關更多資訊,請參閱此 issue 討論串:https://github.com/huggingface/diffusers/issues/4208
  • clip_skip (int | None, 預設為 None) — 在計算提示嵌入時,從 CLIP 中跳過的層數。值為 1 表示將使用倒數第二層的輸出計算提示嵌入。
  • callback_on_step_end (Callable[[int, int, dict], None] | PipelineCallback | MultiPipelineCallbacks | None, 預設為 None) — 在推理期間每個去噪步驟結束時呼叫的函式或 PipelineCallbackMultiPipelineCallbacks 的子類,具有以下引數:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: dict)callback_kwargs 將包含 callback_on_step_end_tensor_inputs 指定的所有張量的列表。
  • callback_on_step_end_tensor_inputs (list[str], 預設為 ["latents"]) — callback_on_step_end 函式的張量輸入列表。列表中指定的張量將作為 callback_kwargs 引數傳遞。你只能包含 pipeline 類 ._callback_tensor_inputs 屬性中列出的變數。

返回

diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutputtuple

如果 return_dictTrue,則返回 diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput,否則返回一個包含輸出影像的 tuple

用於生成的管道的呼叫函式。

示例

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