AWS Trainium & Inferentia 文档

模型

Hugging Face's logo
加入 Hugging Face 社区

并获取增强的文档体验

以开始使用

模型

通用模型类

NeuronTracedModel

NeuronTracedModel 类可用于实例化不带特定头部的基Neuron模型。它是所有任务(除文本生成之外)的基础类。

optimum.neuron.NeuronTracedModel

< >

( model: ScriptModule config: PretrainedConfig model_save_dir: Union = None model_file_name: Optional = None preprocessors: Optional = None neuron_config: Optional = 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 )

获取包含有效静态形状的输入字典。

加载模型

< >

( path: Union to_neuron: bool = False device_id: int = 0 )

参数

  • path (Union[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 dims: List indices: List padding_side: Literal = 'right' )

参数

  • outputs (torch.Tensor列表) — 推理输出的torch张量列表。
  • dims (int列表) — 切片张量的维度列表。
  • indices (int列表) — 沿着轴切分张量的索引列表。
  • padding_side (Literal["right", "left"],默认值“right”)— 应用填充的侧面。

从输出张量中移除填充。

NeuronDecoderModel

《NeuronDecoderModel》类是文本生成模型的基类。

optimum.neuron.NeuronDecoderModel

< >

( config: 预训练配置 checkpoint_dir: 联合 compiled_dir: 联合 = None generation_config: 可选 = None )

Base class to convert and run pre-trained transformers decoder models on Neuron devices.

It implements the methods to convert a pre-trained transformers decoder model into a Neuron transformer model by

  • transferring the checkpoint weights of the original into an optimized neuron graph,
  • compiling the resulting graph using the Neuron compiler.

公共属性

  • model (torch.nn.Module) — The decoder model with a graph optimized for neuron devices.
  • config (PretrainedConfig) — The configuration of the original model.
  • generation_config (GenerationConfig) — The generation configuration used by default when calling generate().

自然语言处理

以下是为自然语言处理任务提供的Neuron模型类。

NeuronModelForFeatureExtraction

optimum.neuron.NeuronModelForFeatureExtraction

< >

( 模型: ScriptModule 配置: 预训练配置 模型保存目录: 选择项 = None 模型文件名: 可选 = None 预处理程序: 可选 = None neuron配置: 可选 = 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 Executable File Format) 的 TorchScript 模块。

适用于特征提取任务的 Neuron 模型,具有 BaseModelOutput。

此模型继承自 ~neuron.modeling.NeuronTracedModel。请查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存)。

Neuron 设备上的特征提取模型。

前进

< >

( input_ids: Tensor attention_mask: Tensor token_type_ids: Optional = None **kwargs )

参数

  • input_ids (torch.Tensor of shape (batch_size, sequence_length)) — 输入序列词汇表中的输入序列标记的索引。索引可以通过使用 AutoTokenizer 获取。有关详细信息,请参阅 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__。有关输入索引的更多信息,请参阅 什么是输入ID?
  • attention_mask (Union[torch.Tensor, None] of shape (batch_size, sequence_length), defaults to None) — 避免对填充标记索引执行注意力的掩码。所选掩码值在 [0, 1]
    • 1表示未掩码的标记,
    • 0表示掩码的标记。
    有关更多信息,请参阅 什么是注意掩码?
  • token_type_ids (Union[torch.Tensor, None] 形状 (batch_size, sequence_length),默认为 None) — 用于指示输入的第一和第二部分的分词索引。索引选取范围在 [0, 1]

NeuronModelForFeatureExtraction 的 forward 方法,覆盖了 __call__ 特殊方法。

尽管需要在函数内部定义前向传播的配方,但应该在每个 Module 实例之后调用它,而不是后者,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

特征提取示例: (以下模型使用 neuronx 编译器编译,只能在 INF2 上运行。如果您使用 INF1,请将“neuronx”替换为“neuron”。)

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

optimum.neuron.NeuronModelForSentenceTransformers

< >

( 模型: ScriptModule 配置: 预训练配置 模型保存目录: 选择项 = None 模型文件名: 可选 = None 预处理程序: 可选 = None neuron配置: 可选 = 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 Executable File Format)的 TorchScript 模块。

基于 Sentence Transformers 的 Neuron 模型。

此模型继承自 ~neuron.modeling.NeuronTracedModel。请查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存)。

Neuron 设备上的 Sentence Transformers 模型。

前进

< >

( input_ids: Tensor attention_mask: Tensor pixel_values: Optional = None token_type_ids: Optional = None **kwargs )

参数

  • input_ids (torch.Tensor of shape (batch_size, sequence_length)) — 输入序列token在词汇表中的索引。索引可以通过 AutoTokenizer 获取。详见 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什么是input IDs?
  • attention_mask (Union[torch.Tensor, None] of shape (batch_size, sequence_length), defaults to None) — 避免在填充token索引上执行注意力的掩码。掩码值选在 [0, 1] 范围内:
  • token_type_ids (Union[torch.Tensor, None] 的形状为 (batch_size, sequence_length),默认为 ) — 表示输入的第一个和第二个部分的标记索引。索引选择在 [0, 1] 中:

NeuronModelForSentenceTransformers 的 forward 方法,重写了 __call__ 特殊方法。

尽管需要在函数内部定义前向传播的配方,但应该在每个 Module 实例之后调用它,而不是后者,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

TEXT 句子转换器的示例

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

NeuronModelForMaskedLM

class optimum.neuron.NeuronModelForMaskedLM

< >

( 模型: ScriptModule 配置: 预训练配置 模型保存目录: 选择项 = None 模型文件名: 可选 = None 预处理程序: 可选 = None neuron配置: 可选 = 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 Executable File Format) 的 TorchScript 模块。

Neuron 模型,带有 MaskedLMOutput 以用于掩码语言模型任务。

此模型继承自 ~neuron.modeling.NeuronTracedModel。请查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存)。

Neuron 设备上的掩码语言模型。

前进

< >

( input_ids: Tensor attention_mask: Tensor token_type_ids: Optional = None **kwargs )

参数

  • input_ids (形状为(batch_size, sequence_length)torch.Tensor)— 在词汇表中的输入序列标记索引。可以通过AutoTokenizer获取索引。有关详细信息,请参阅AutoTokenizerPreTrainedTokenizer.encodePreTrainedTokenizer.__call__什么是输入ID?
  • attention_mask (形状为(batch_size, sequence_length)Union[torch.Tensor, None],默认为None)— 用于禁止对填充标记索引执行注意力的掩码。掩码值选择在[0, 1]
  • token_type_ids (形状为(batch_size, sequence_length)Union[torch.Tensor, None],默认为None)— 用于表示输入的两部分(A和B)的标记段索引。索引选择在[0, 1]

NeuronModelForMaskedLM的forward方法,覆盖了__call__特殊方法。

尽管需要在函数内部定义前向传播的配方,但应该在每个 Module 实例之后调用它,而不是后者,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

填充掩码示例:(以下模型使用neuronx编译器编译,只能在INF2上运行。如果使用INF1,将“neuronx”替换为“neuron”。)

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

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

optimum.neuron.NeuronModelForSequenceClassification

< >

( 模型: ScriptModule 配置: 预训练配置 模型保存目录: 选择项 = None 模型文件名: 可选 = None 预处理程序: 可选 = None neuron配置: 可选 = None *kwargs )

参数

  • config(《transformers.PretrainedConfig》)——《PretrainedConfig》是包含模型所有参数的模型配置类。使用配置文件初始化不会加载模型相关的权重,只加载配置。查看《optimum.neuron.modeling.NeuronTracedModel.from_pretrained》方法以加载模型权重。
  • 模型 (torch.jit._script.ScriptModule) — torch.jit._script.ScriptModule 是神经编译器编译的包含 NEFF (Neuron Executable File Format) 的 TorchScript 模块。

在序列分类/回归头部上(在池化输出顶层的一个线性层)添加的神经元模型,例如用于 GLUE 任务。

此模型继承自 ~neuron.modeling.NeuronTracedModel。请查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存)。

在神经元设备上的序列分类模型。

前进

< >

( input_ids: Tensor attention_mask: Tensor token_type_ids: Optional = None **kwargs )

参数

  • input_ids (torch.Tensor of shape (batch_size, sequence_length)) — 输入序列标记的索引,在词汇表中的索引。可以使用 AutoTokenizer 获取索引。有关详细信息,参见 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__。了解更多关于 输入 ID 的信息
  • attention_mask (torch.Tensor 或 None 的形状为 (batch_size, sequence_length),默认为 None) — 用于避免在填充令牌索引上执行注意力的掩码。在 [0, 1] 范围内选择的掩码值:
  • token_type_ids (torch.Tensor 或 None 的形状为 (batch_size, sequence_length),默认为 None) — 用于指示输入的第一部分和第二部分的段落令牌索引。在 [0, 1] 范围内选择的索引:

NeuronModelForSequenceClassification forward 方法,覆盖了 __call__ 特殊方法。

尽管需要在函数内部定义前向传播的配方,但应该在每个 Module 实例之后调用它,而不是后者,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

单标签分类的示例:(以下模型使用 neuronx 编译器编译,只能在 INF2 上运行。)

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

optimum.neuron.NeuronModelForQuestionAnswering

< >

( 模型: ScriptModule 配置: 预训练配置 模型保存目录: 选择项 = None 模型文件名: 可选 = None 预处理程序: 可选 = None neuron配置: 可选 = None *kwargs )

参数

  • 配置 (transformers.PretrainedConfig) — PretrainedConfig 是包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。请查看 optimum.neuron.modeling.NeuronTracedModel.from_pretrained 方法以加载模型权重。
  • 模型 (torch.jit._script.ScriptModule) — torch.jit._script.ScriptModule 是由 neuron(x) 编译器编译的嵌入 NEFF (Neuron Executable File Format) 的 TorchScript 模块。

Neuron 模型,具有用于提取式问答任务的 QuestionAnsweringModelOutput,如 SQuAD。

此模型继承自 ~neuron.modeling.NeuronTracedModel。请查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存)。

Neuron 设备上的问答模型。

前进

< >

( input_ids: Tensor attention_mask: Tensor token_type_ids: Optional = None **kwargs )

参数

  • input_ids (torch.Tensor of shape (batch_size, sequence_length)) — 词汇表中的输入序列标记的索引。索引可以通过 AutoTokenizer 获取。有关详细信息,请参阅 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什么是输入 ID?
  • attention_mask (Union[torch.Tensor, None] of shape (batch_size, sequence_length), defaults to None) — 避免在填充标记索引上执行注意力的掩码。选定的掩码值在 [0, 1] 范围内:
    • 1 表示 未屏蔽 的标记;
    • 0 表示 屏蔽 的标记。
    什么是注意力屏蔽?
  • token_type_ids (类型为 Union[torch.Tensor, None] 的形状为 (batch_size, sequence_length),默认为 None) — 用于指示输入的第一部分和第二部分段落的标记索引。索引在 [0, 1] 中选择:
    • 1 表示 句子 A 中的标记;
    • 0 表示 句子 B 中的标记。
    标记类型 ID 是什么?

NeuronModelForQuestionAnswering 的前向方法,覆盖了 __call__ 特殊方法。

尽管需要在函数内部定义前向传播的配方,但应该在每个 Module 实例之后调用它,而不是后者,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

问答示例: (以下模型使用 neuronx 编译器编译,只能在 INF2 上运行。)

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

optimum.neuron.NeuronModelForTokenClassification

< >

( 模型: ScriptModule 配置: 预训练配置 模型保存目录: 选择项 = None 模型文件名: 可选 = None 预处理程序: 可选 = None neuron配置: 可选 = None *kwargs )

参数

  • configtransformers.PretrainedConfig) — PretrainedConfig 是包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只有配置。请查看 optimum.neuron.modeling.NeuronTracedModel.from_pretrained 方法来加载模型权重。
  • modeltorch.jit._script.ScriptModule) — torch.jit._script.ScriptModule 是由 neuron(x) 编译器编译的嵌入 NEFF (Neuron Executable File Format) 的 TorchScript 模块。

在顶部带标记分类头的神经元模型(隐藏状态输出的线性层),例如用于命名实体识别 (NER) 任务。

此模型继承自 ~neuron.modeling.NeuronTracedModel。请查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存)。

Neuron 设备上的标记分类模型。

前进

< >

( input_ids: Tensor attention_mask: Tensor token_type_ids: Optional = None **kwargs )

参数

  • input_ids (形状为 (batch_size, sequence_length)torch.Tensor) — 词汇库中输入序列标记的索引。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅PreTrainedTokenizer.encodePreTrainedTokenizer.__call__什么是 input IDs?
  • attention_mask (形状为 (batch_size, sequence_length)Union[torch.Tensor, None],默认为 None) — 用于避免在 padding token 索引上执行 attention 的掩码。掩码值选自 [0, 1]
  • token_type_ids (形状为 (batch_size, sequence_length)Union[torch.Tensor, None],默认为 None) — 表示输入的第一部分和第二部分的 segment token 索引。索引选自 [0, 1]

NeuronModelForTokenClassification 的 forward 方法重写了 __call__ 特殊方法。

尽管需要在函数内部定义前向传播的配方,但应该在每个 Module 实例之后调用它,而不是后者,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

标记分类示例:(以下模型使用neuronx编译器编译,只能在INF2上运行。)

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

optimum.neuron.NeuronModelForMultipleChoice

< >

( 模型: ScriptModule 配置: 预训练配置 模型保存目录: 选择项 = None 模型文件名: 可选 = None 预处理程序: 可选 = None neuron配置: 可选 = None *kwargs )

参数

  • 配置 (transformers.PretrainedConfig) — PretrainedConfig 是包含所有模型参数的模型配置类。使用配置文件初始化不加载模型相关的权重,只加载配置。检查 optimum.neuron.modeling.NeuronTracedModel.from_pretrained 方法以加载模型权重。
  • 模型 (torch.jit._script.ScriptModule) — torch.jit._script.ScriptModule 是由 neuron(x) 编译器编译的嵌入 NEFF(Neuron Executable File Format) 的 TorchScript 模块。

顶部带有多重选择题头(堆叠输出上的线性层和 softmax)的神经元模型,例如用于 RocStories/SWAG 任务。

此模型继承自 ~neuron.modeling.NeuronTracedModel。请查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存)。

在 Neuron 设备上的多重选择模型。

前进

< >

( input_ids: Tensor attention_mask: Tensor token_type_ids: Optional = None **kwargs )

参数

  • input_ids (torch.Tensor of shape (batch_size, num_choices, sequence_length)) — 输入序列标记的索引,位于词汇表中。索引可以通过 AutoTokenizer 获取。详见 PreTrainedTokenizer.encodePreTrainedTokenizer.__call__。有关输入 ID 的更多信息,请参阅 输入 ID 是什么?
  • attention_mask (类型为Union[torch.Tensor, None],形状为(batch_size, num_choices, sequence_length),默认值为None) — 用于避免对填充标记索引执行注意力操作的掩码。掩码值选择在[0, 1]之间:
  • token_type_ids (类型为Union[torch.Tensor, None],形状为(batch_size, num_choices, sequence_length),默认值为None) — 标记段索引以指示输入的第一和第二部分。索引选择在[0, 1]之间:

NeuronModelForMultipleChoice的前向方法覆盖了特殊方法__call__

尽管需要在函数内部定义前向传播的配方,但应该在每个 Module 实例之后调用它,而不是后者,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

多选题示例:(以下模型使用neuronx编译器编译,只能在INF2上运行)

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

optimum.neuron.NeuronModelForCausalLM

< >

( config: PretrainedConfig checkpoint_dir: Union compiled_dir: Union = None generation_config: Optional = None )

参数

  • model (torch.nn.Module) — torch.nn.Module 是神经元解码器图。
  • config (transformers.PretrainedConfig) — PretrainedConfig 是包含模型所有参数的模型配置类。
  • model_path (Path) — 存储模型编译工件(例如持久化文件等)的目录。如果模型之前从未在本地保存,则该目录可以是临时目录。
  • generation_config (transformers.GenerationConfig) — 持有模型生成任务的配置。请参阅GenerationConfig文档。

适用于在 Neuron 设备上进行推理的具备因果语言建模头部的 Neuron 模型。

此模型继承自 ~neuron.modeling.NeuronDecoderModel。请检查超类文档,以了解库为其所有模型实现的通用方法(例如下载或保存)。

前进

< >

( input_ids: Tensor cache_ids: Tensor start_ids: Tensor = None return_dict: bool = True )

参数

  • input_ids (torch.LongTensor) — 解码器输入序列的索引在词汇表中的形状为 (batch_size, sequence_length)
  • cache_ids (torch.LongTensor) — 当前输入需要存储缓存的键和值的索引。
  • start_ids (torch.LongTensor) — 从注意力掩码推导出的第一批要处理的字的索引。

NeuronModelForCausalLM 的 forward 方法,覆盖了 __call__ 特殊方法。

尽管需要在函数内部定义前向传播的配方,但应该在每个 Module 实例之后调用它,而不是后者,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

文本生成示例

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

>>> tokenizer = AutoTokenizer.from_pretrained("gpt2")
>>> model = NeuronModelForCausalLM.from_pretrained("gpt2", export=True)

>>> inputs = tokenizer("My favorite moment of the day is", return_tensors="pt")

>>> gen_tokens = model.generate(**inputs, do_sample=True, temperature=0.9, min_length=20, max_length=20)
>>> tokenizer.batch_decode(gen_tokens)

计算机视觉

以下为计算机视觉任务可用的Neuron模型类。

NeuronModelForImageClassification

optimum.neuron.NeuronModelForImageClassification

< >

( 模型: ScriptModule 配置: 预训练配置 模型保存目录: 选择项 = None 模型文件名: 可选 = None 预处理程序: 可选 = None neuron配置: 可选 = 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 Executable File Format) 的 TorchScript 模块。

在顶部具有图像分类头(在 [CLS] 标记的最后一个隐藏状态之上的线性层)的 Neuron 模型(例如用于 ImageNet)。

此模型继承自 ~neuron.modeling.NeuronTracedModel。请查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存)。

用于图像分类任务的 Neuron 模型。此类官方支持 beit, convnext, convnextv2, deit, levit, mobilenet_v2, mobilevit, vit 等。

前进

< >

( pixel_values: Tensor **kwargs )

参数

  • pixel_values (Union[torch.Tensor, None] 形状为 (batch_size, num_channels, height, width),默认为 ) — 对应于当前批次中图像的像素值。像素值可以通过使用 AutoImageProcessor 从编码后的图像中获得。

NeuronModelForImageClassification 的 forward 方法,覆盖了 __call__ 特殊方法。

尽管需要在函数内部定义前向传播的配方,但应该在每个 Module 实例之后调用它,而不是后者,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

图像分类示例

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

使用 transformers.pipeline 的示例

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

>>> preprocessor = AutoImageProcessor.from_pretrained("optimum/vit-base-patch16-224-neuronx")
>>> model = NeuronModelForImageClassification.from_pretrained("optimum/vit-base-patch16-224-neuronx")
>>> pipe = pipeline("image-classification", model=model, feature_extractor=preprocessor)

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> pred = pipe(url)

NeuronModelForSemanticSegmentation

optimum.neuron.NeuronModelForSemanticSegmentation

< >

( 模型: ScriptModule 配置: 预训练配置 模型保存目录: 选择项 = None 模型文件名: 可选 = None 预处理程序: 可选 = None neuron配置: 可选 = None *kwargs )

参数

  • config(《transformers.PretrainedConfig》)— PretrainedConfig是模型的配置类,包含所有模型参数。使用配置文件初始化不会加载模型相关联的权重,只加载配置。检查optimum.neuron.modeling.NeuronTracedModel.from_pretrained方法以加载模型权重。
  • 模型 (torch.jit._script.ScriptModule) — torch.jit._script.ScriptModule 是由 neuron(x) 编译器编译的嵌入 NEFF(Neuron Executable File Format) 的 TorchScript 模块。

在顶部具有语义分割头的中继神经模型,例如用于 Pascal VOC。

此模型继承自 ~neuron.modeling.NeuronTracedModel。请查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存)。

用于语义分割的神经模型,顶部是全 MLP 解码头,例如用于 ADE20k、CityScapes。此类正式支持 mobilevit、mobilenet-v2 等。

前进

< >

( pixel_values: Tensor **kwargs )

参数

  • pixel_values (Union[torch.Tensor, None]形状为(batch_size, num_channels, height, width),默认值为None) — 当前批次图像的像素值。可以从编码图像中使用AutoImageProcessor获取像素值。

NeuronModelForSemanticSegmentation 的前向方法,重写了__call__特殊方法。

尽管需要在函数内部定义前向传播的配方,但应该在每个 Module 实例之后调用它,而不是后者,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

语义分割示例

>>> import requests
>>> from PIL import Image
>>> from optimum.neuronimport 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

使用 transformers.pipeline 的示例

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

>>> preprocessor = AutoImageProcessor.from_pretrained("optimum/deeplabv3-mobilevit-small-neuronx")
>>> model = NeuronModelForSemanticSegmentation.from_pretrained("optimum/deeplabv3-mobilevit-small-neuronx")
>>> pipe = pipeline("image-segmentation", model=model, feature_extractor=preprocessor)

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> pred = pipe(url)

NeuronModelForObjectDetection

optimum.neuron.NeuronModelForObjectDetection

< >

( 模型: ScriptModule 配置: 预训练配置 模型保存目录: 选择项 = None 模型文件名: 可选 = None 预处理程序: 可选 = None neuron配置: 可选 = None *kwargs )

参数

  • config (transformers.PretrainedConfig) —— PretrainedConfig 是包含所有模型参数的模型配置类。使用配置文件初始化不加载模型相关的权重,仅包含配置。查看 optimum.neuron.modeling.NeuronTracedModel.from_pretrained 方法以加载模型权重。
  • 模型 (torch.jit._script.ScriptModule) — torch.jit._script.ScriptModule 是由 neuron(x) 编译器编译嵌入 NEFF(Neuron Executable File Format) 的 TorchScript 模块。

带对象检测头部的 Neuron 模型,适用于 COCO 检测等任务。

此模型继承自 ~neuron.modeling.NeuronTracedModel。请查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存)。

用于对象检测的 Neuron 模型,带对象检测头部,适用于 COCO 检测等任务。

前进

< >

( pixel_values: Tensor **kwargs )

参数

  • pixel_values (Union[torch.Tensor, None] shape (batch_size, num_channels, height, width), 默认为 None) — 当前批次图像对应的像素值。可以通过 AutoImageProcessor 从编码图像中获得像素值。

NeuronModelForObjectDetection 的forward方法,重写了__call__特殊方法。

尽管需要在函数内部定义前向传播的配方,但应该在每个 Module 实例之后调用它,而不是后者,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

对象检测示例

>>> import requests
>>> from PIL import Image
>>> from optimum.neuronimport 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", export=True, batch_size=1)

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

使用 transformers.pipeline 的示例

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

>>> preprocessor = AutoImageProcessor.from_pretrained("hustvl/yolos-tiny")
>>> model = NeuronModelForObjectDetection.from_pretrained("hustvl/yolos-tiny")
>>> pipe = pipeline("object-detection", model=model, feature_extractor=preprocessor)

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> pred = pipe(url)

音频

以下自动类可用于以下音频任务。

NeuronModelForAudioClassification

optimum.neuron.NeuronModelForAudioClassification

< >

( 模型: ScriptModule 配置: 预训练配置 模型保存目录: 选择项 = None 模型文件名: 可选 = None 预处理程序: 可选 = None neuron配置: 可选 = None *kwargs )

参数

  • config (transformers.PretrainedConfig) — PretrainedConfig 是包含所有模型参数的模型配置类。使用配置文件初始化时不加载与模型相关的权重,仅加载配置。请参阅 optimum.neuron.modeling.NeuronTracedModel.from_pretrained 方法来加载模型权重。
  • 模型 (torch.jit._script.ScriptModule) — torch.jit._script.ScriptModule 是由 neuron(x) 编译器编译的嵌入 NEFF (Neuron Executable File Format) 的 TorchScript 模块。

带音频分类头的神经元模型。

此模型继承自 ~neuron.modeling.NeuronTracedModel。请查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存)。

音频分类神经元模型,顶部带有序列分类头(线性层覆盖池化输出),用于类似 SUPERB 关键词检测的任务。

前进

< >

( input_values: 张量 (Tensor) **kwargs )

参数

  • input_values (torch.Tensor 形状 (batch_size, sequence_length)) — 输入原始语音波形浮点值。输入值可以通过使用 AutoProcessor 加载到数组中的音频文件获取。

NeuronModelForAudioClassification 前向方法覆盖了 __call__ 特殊方法。

尽管需要在函数内部定义前向传播的配方,但应该在每个 Module 实例之后调用它,而不是后者,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

音频分类示例

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

使用 transformers.pipeline 的示例

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

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

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

>>> pred = ac(dataset[0]["audio"]["array"])

NeuronModelForAudioFrameClassification

optimum.neuron.NeuronModelForAudioFrameClassification

< >

( 模型: ScriptModule 配置: 预训练配置 模型保存目录: 选择项 = None 模型文件名: 可选 = None 预处理程序: 可选 = None neuron配置: 可选 = None *kwargs )

参数

  • config (transformers.PretrainedConfig) — PretrainedConfig 是模型配置类,包含所有模型参数。使用配置文件初始化不加载与模型关联的权重,只加载配置。请查看 optimum.neuron.modeling.NeuronTracedModel.from_pretrained 方法以加载模型权重。
  • 模型 (torch.jit._script.ScriptModule) — torch.jit._script.ScriptModule 是由 neuron(x) 编译器编译并嵌入 NEFF(Neuron Executable File Format) 的 TorchScript 模块。

带有音频帧分类头部的小波神经元模型。

此模型继承自 ~neuron.modeling.NeuronTracedModel。请查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存)。

带有帧分类头部的小波神经元模型,用于语音分离等任务。

前进

< >

( input_values: 张量 (Tensor) **kwargs )

参数

  • input_values (torch.Tensor of shape (batch_size, sequence_length)) — 输入原始语音波形浮点值。通过将音频文件加载到数组中可以使用 AutoProcessor 获取输入值。

NeuronModelForAudioFrameClassification 的 forward 方法重写了 __call__ 特殊方法。

尽管需要在函数内部定义前向传播的配方,但应该在每个 Module 实例之后调用它,而不是后者,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

音频帧分类示例

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

optimum.neuron.NeuronModelForCTC

< >

( 模型: ScriptModule 配置: 预训练配置 模型保存目录: 选择项 = None 模型文件名: 可选 = None 预处理程序: 可选 = None neuron配置: 可选 = 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 Executable File Format) 的 TorchScript 模块。

具有连接事件分类头部的神经元模型。

此模型继承自 ~neuron.modeling.NeuronTracedModel。请查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存)。

具有连接事件分类(CTC)的语模型头部的神经元模型。

前进

< >

( input_values: 张量 (Tensor) **kwargs )

参数

  • input_values (torch.Tensor的形状为(batch_size, sequence_length)) — 输入原始语音波形的浮点值。输入值可以通过使用AutoProcessor从加载到数组的音频文件中获取。

NeuronModelForCTC的forward方法重写了__call__特殊方法。

尽管需要在函数内部定义前向传播的配方,但应该在每个 Module 实例之后调用它,而不是后者,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

CTC示例

>>> from transformers import AutoProcessor, Wav2Vec2ForCTC
>>> 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)

使用 transformers.pipeline 的示例

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

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

optimum.neuron.NeuronModelForXVector

< >

( 模型: ScriptModule 配置: 预训练配置 模型保存目录: 选择项 = None 模型文件名: 可选 = None 预处理程序: 可选 = None neuron配置: 可选 = 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 Executable File Format) 的 TorchScript 模块。

针对说话人验证等任务,在顶部具有XVector特征提取头的Neuron模型。

此模型继承自 ~neuron.modeling.NeuronTracedModel。请查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存)。

针对说话人验证等任务,在顶部具有XVector特征提取头的Neuron模型。

前进

< >

( input_values: 张量 (Tensor) **kwargs )

参数

  • input_values (torch.Tensor of shape (batch_size, sequence_length)) — 输入原始语音波形浮点值。输入值可以通过将加载到数组的音频文件使用 AutoProcessor 获取。

NeuronModelForXVector 的 forward 方法,重写了 __call__ 特殊方法。

尽管需要在函数内部定义前向传播的配方,但应该在每个 Module 实例之后调用它,而不是后者,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

音频 XVector 示例

>>> 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 模型类可用于稳定扩散任务。

NeuronStableDiffusionPipeline

optimum.neuron.NeuronStableDiffusionPipeline

< >

( text_encoder: ScriptModule unet: ScriptModule vae_decoder: Union config: Dict configs: Dict neuron_configs: Dict tokenizer: CLIPTokenizer scheduler: Union data_parallel_mode: Literal vae_encoder: Union = None text_encoder_2: Union = None tokenizer_2: Optional = None feature_extractor: Optional = None controlnet: Union = None model_save_dir: Union = None model_and_config_save_paths: Optional = None )

__call__

< >

( prompt: 联合体 = 无 num_inference_steps: int = 50 guidance_scale: float = 7.5 negative_prompt: 联合体 = 无 num_images_per_prompt: int = 1 eta: float = 0.0 generator: 联合体 = 无 latents: 可选 = 无 prompt_embeds: 可选 = 无 negative_prompt_embeds: 可选 = 无 output_type: 可选 = 'pil' return_dict: bool = True callback: 可选 = 无 callback_steps: int = 1 cross_attention_kwargs: 可选 = 无 guidance_rescale: float = 0.0 ) diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput or tuple

参数

  • prompt (Optional[Union[str, List[str]]], 默认为 None) — 指导图像生成的提示或提示。如未定义,则需要传递 prompt_embeds
  • num_inference_steps(《整数`, 默认为 50)— 去噪步骤的数量。去噪步骤越多,通常会使图像质量更高,但推理速度会变慢。
  • guidance_scale(《浮点数`, 默认为 7.5)— 较高的指导尺度值会鼓励模型生成与文本 prompt 紧密相关的图像,但会以降低图像质量为代价。当 guidance_scale > 1 时,指导尺度被启用。
  • negative_prompt(《可选[Union[str, List[str]]]`,默认为 `None`)— 指导图像生成时排除的内容的提示或提示列表。如果未定义,则需要传递 `negative_prompt_embeds`。当未使用指导(`guidance_scale < 1`)时将忽略。
  • num_images_per_promptint,默认1) — 每个提示生成图像的数量。如果它与编译所使用的批次大小不同,它将覆盖神经元(动态批处理除外)的静态批次大小。
  • etafloat,默认0.0) — 对应于DDIM论文中的参数eta(η)。仅适用于diffusers.schedulers.DDIMScheduler,在其他调度器中将被忽略。
  • generatorOptional[Union[torch.Generator, List[torch.Generator]]],默认None) — 用于生成确定性结果的torch.Generator
  • output_type (Optional[str], 默认为 "pil") — 生成的图像的输出格式。可在 PIL.Imagenp.array 之间选择。
  • return_dict (bool, 默认为 True) — 是否返回 diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput 而不是普通的元组。
  • callback (Optional[Callable], 默认为 None) — 在推理过程中的每个 callback_steps 步骤时调用函数。该函数通过以下参数调用: callback(step: int, timestep: int, latents: torch.FloatTensor)
  • callback_steps (int, 默认为 1) — 调用 callback 函数的频率。如果未指定,则在每一步调用回调。
  • cross_attention_kwargs (dict, 默认为 None) — 一个关键字段(kwargs)字典,如果指定,将传递给定义为 self.processorAttentionProcessor
  • guidance_rescale (float, 默认为 0.0) — 来自论文《Common Diffusion Noise Schedules and Sample Steps are Flawed》的指导重缩放因子。指导重缩放因子应在使用零终端 SNR 时修复过度曝光问题。

返回值

diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutputtuple

如果 return_dictTrue,返回 diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput,否则返回一个 tuple,其中第一个元素是一个列表,包含生成的图像,第二元素是一个包含 bool 的列表,指示相应的生成图像是否包含“不适宜工作” (nsfw) 内容。

到生成管道的调用函数。

示例

>>> from optimum.neuron import NeuronStableDiffusionPipeline

>>> compiler_args = {"auto_cast": "matmul", "auto_cast_type": "bf16"}
>>> input_shapes = {"batch_size": 1, "height": 512, "width": 512}

>>> stable_diffusion = NeuronStableDiffusionPipeline.from_pretrained(
...     "runwayml/stable-diffusion-v1-5", export=True, **compiler_args, **input_shapes
... )
>>> stable_diffusion.save_pretrained("sd_neuron/")

>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = stable_diffusion(prompt).images[0]

NeuronStableDiffusionImg2ImgPipeline

optimum.neuron.NeuronStableDiffusionImg2ImgPipeline

< >

( text_encoder: ScriptModule unet: ScriptModule vae_decoder: Union config: Dict configs: Dict neuron_configs: Dict tokenizer: CLIPTokenizer scheduler: Union data_parallel_mode: Literal vae_encoder: Union = None text_encoder_2: Union = None tokenizer_2: Optional = None feature_extractor: Optional = None controlnet: Union = None model_save_dir: Union = None model_and_config_save_paths: Optional = None )

__call__

< >

( prompt: 联合体 = None image: 可选 = None strength: 浮点数 = 0.8 num_inference_steps: 整数 = 50 guidance_scale: 浮点数 = 7.5 negative_prompt: 联合体 = None num_images_per_prompt: 整数 = 1 eta: 浮点数 = 0.0 generator: 可选 = None prompt_embeds: 可选 = None negative_prompt_embeds: 可选 = None output_type: 字符串 = 'pil' return_dict: 布尔值 = True callback: 可选 = None callback_steps: 整数 = 1 cross_attention_kwargs: 可选 = None ) diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput元组

参数

  • prompt (Optional[Union[str, List[str]]], 默认为 None) — 引导图像生成的提示或提示列表。如果未定义,您需要传递 prompt_embeds
  • image (Optional["PipelineImageInput"], 默认为 None) — 一个表示作为起始点使用的一批图像的Image,numpy数组或tensor。对于numpy数组和pytorch tensor,期望的值范围在[0, 1]之间。如果是一个tensor或tensor列表,期望的形状应为(B, C, H, W)(C, H, W)。如果是一个numpy数组或数组列表,期望的形状应为(B, H, W, C)(H, W, C)。它还可以接受作为image的图像潜伏变量,但如果直接传递潜伏变量,则不再编码。
  • strength (float, 默认为 0.8) — 表示将参考image变换的程度。必须在0到1之间。用作起始点的imagestrength值越高,噪声越多。去噪步骤的数量取决于初始加入的噪声量。strength为1时,加入的噪声最大,去噪过程会运行到num_inference_steps中指定的完整迭代次数。1的值实际上会忽略image
  • num_inference_steps (int, 默认为 50) — 去噪步骤的数量。去噪步骤越多,通常图像质量越高,但推理速度会降低。此参数由strength控制。
  • guidance_scale (float, 默认为7.5) — 较高的指导比例值会鼓励模型生成与文本 prompt 紧密相关的图像,但会牺牲图像质量。当 guidance_scale > 1 时启用指导比例。
  • negative_prompt (Optional[Union[str, List[str], 默认为 None) — 指示不应包含在图像生成中的提示或提示项。如果没有定义,则需要传递 negative_prompt_embeds。当不使用指导(guidance_scale < 1)时忽略。
  • num_images_per_prompt (int, 默认为1) — 每个提示生成图像的数量。如果它与用于编译的批处理大小不同,它将由neuron的静态批处理大小覆盖(除了动态批处理)。
  • eta (float, 默认为 0.0) — 对应于DDIM论文中的参数eta (η)。仅适用于diffusers.schedulers.DDIMScheduler,在其他调度器中将被忽略。
  • generator (Optional[Union[torch.Generator, List[torch.Generator]]], 默认为 None) — 用于生成确定性结果的一个torch.Generator
  • prompt_embeds (Optional[torch.FloatTensor], 默认为 None) — 预生成的文本嵌入。可以用于轻松调整文本输入(提示权重)。如果不提供,将根据prompt输入参数生成文本嵌入。
  • negative_prompt_embeds (Optional[torch.FloatTensor], 默认为 None) — 预生成的负文本嵌入。可用于轻松调整文本输入(提示权重)。如果未提供,将根据 negative_prompt 输入参数生成 negative_prompt_embeds
  • output_type (Optional[str], 默认为 "pil") — 生成图像的输出格式。可选择 PIL.Imagenp.array
  • return_dict (bool, 默认为 True) — 是否返回 diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput 而不是普通元组。
  • callbackOptional[Callable],默认为None) — 一个在推理过程中每callback_steps步调用的函数。函数以以下参数调用:callback(step: int, timestep: int, latents: torch.FloatTensor)
  • callback_stepsint,默认为1) — callback函数被调用的频率。如果没有指定,回调在每一步都调用。
  • cross_attention_kwargsdict,默认为None) — 一个kwargs字典,如果指定,将被传递到在self.processor中定义的AttentionProcessor

返回值

diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutputtuple

如果 return_dictTrue,返回 diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput,否则返回一个 tuple,其中第一个元素是一个列表,包含生成的图像,第二元素是一个包含 bool 的列表,指示相应的生成图像是否包含“不适宜工作” (nsfw) 内容。

到生成管道的调用函数。

示例

>>> from optimum.neuron import NeuronStableDiffusionImg2ImgPipeline
>>> from diffusers.utils import load_image

>>> url = "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg"
>>> init_image = load_image(url).convert("RGB")

>>> compiler_args = {"auto_cast": "matmul", "auto_cast_type": "bf16"}
>>> input_shapes = {"batch_size": 1, "height": 512, "width": 512}
>>> pipeline = NeuronStableDiffusionImg2ImgPipeline.from_pretrained(
...     "nitrosocke/Ghibli-Diffusion", export=True, **compiler_args, **input_shapes,
... )
>>> pipeline.save_pretrained("sd_img2img/")

>>> prompt = "ghibli style, a fantasy landscape with snowcapped mountains, trees, lake with detailed reflection."
>>> image = pipeline(prompt=prompt, image=init_image, strength=0.75, guidance_scale=7.5).images[0]

NeuronStableDiffusionInpaintPipeline

optimum.neuron.NeuronStableDiffusionInpaintPipeline

< >

( text_encoder: ScriptModule unet: ScriptModule vae_decoder: Union config: Dict configs: Dict neuron_configs: Dict tokenizer: CLIPTokenizer scheduler: Union data_parallel_mode: Literal vae_encoder: Union = None text_encoder_2: Union = None tokenizer_2: Optional = None feature_extractor: Optional = None controlnet: Union = None model_save_dir: Union = None model_and_config_save_paths: Optional = None )

__call__

< >

( prompt: 联合体 = None image: 可选 = None mask_image: 可选 = None masked_image_latents: 可选 = None strength: 浮点数 = 1.0 num_inference_steps: 整数 = 50 guidance_scale: 浮点数 = 7.5 negative_prompt: 联合体 = None num_images_per_prompt: 可选 = 1 eta: 浮点数 = 0.0 generator: 联合体 = None latents: 可选 = None prompt_embeds: 可选 = None negative_prompt_embeds: 可选 = None output_type: 可选 = 'pil' return_dict: 布尔值 = True callback: 可选 = None callback_steps: 整数 = 1 cross_attention_kwargs: 可选 = None clip_skip: 整数 = None ) diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutputtuple

参数

  • prompt (Optional[Union[str, List[str]]], 默认为 None) — 指导图像生成的提示或提示列表。如果未定义,则需要传递 prompt_embeds
  • image (Optional["PipelineImageInput"], 默认为 None) — 表示待修复图像的图像、NumPy数组或tensor(与mask_image一起使用,以遮罩并按照prompt重新绘制)。对于NumPy数组和PyTorch tensor,预期的值范围在[0, 1]之间。如果是tensor或tensor列表,预期的形状应为(B, C, H, W)(C, H, W)。如果是NumPy数组或数组列表,预期的形状应为(B, H, W, C)(H, W, C)。它还可以接受作为image的图像潜值,但如果直接传递潜值则不再进行编码。
  • mask_image (Optional["PipelineImageInput"], 默认为 None) — Image、numpy数组或表示要遮挡的图像批次的张量 image。遮挡中白色像素被重新绘制,而黑色像素被保留。如果 mask_image 是 PIL 图像,则在使用之前将其转换为单通道(亮度)。如果是 numpy数组或 pytorch 张量,它应包含一个颜色通道(L)而不是3个,因此 pytorch 张量的预期形状为 (B, 1, H, W)(B, H, W)(1, H, W)(H, W)。对于 numpy 数组,形状为 (B, H, W, 1)(B, H, W)(H, W, 1)(H, W)
  • strength (float,默认为 1.0) — 表示对参考图像 image 进行变换的程度。必须在 0 和 1 之间。使用 image 作为起始点,添加更多噪声的越高。去噪步骤的数量取决于最初添加的噪声数量。当 strength 为 1 时,添加的噪声最大,去噪过程将对 num_inference_steps 中指定的迭代次数进行完整运行。1 的值本质上会忽略 image
  • num_inference_steps (int,默认为 50) — 去噪步骤的数量。去噪步骤越多,通常图像质量越高,但推理速度会变慢。此参数受 strength 调整。
  • guidance_scale (float, 默认为 7.5) — 更高的指导比例值会鼓励模型生成与文本 prompt 密切相关的图像,但这会牺牲图像质量。当 guidance_scale > 1 时,启用指导比例。
  • negative_prompt (Optional[Union[str, List[str], 默认为 None) — 指导不包含在图像生成中的提示或提示。如果没有定义,则需要传递 negative_prompt_embeds。当不使用指导(《guidance_scale < 1》)时将被忽略。
  • num_images_per_prompt (int, 默认为 1) — 每个提示生成的图像数量。如果它与编译时使用的批次大小不同,则将被神经元的静态批次大小覆盖(动态批处理除外)。
  • etafloat,默认为 0.0)—— 对应于DDIM 论文中的参数 eta (η)。仅适用于 diffusers.schedulers.DDIMScheduler,在其他调度器中将被忽略。
  • generatorOptional[Union[torch.Generator, List[torch.Generator]]],默认为 None)—— 用于使生成过程确定性的一种 torch.Generator
  • latentsOptional[torch.FloatTensor],默认为 None)—— 使用高斯分布抽样预生成的噪声潜伏变量,用于图像生成的输入。可用于以不同的提示对相同的生成进行微调。如果没有提供,将使用提供的随机 generator 生成潜伏变量张量。
  • prompt_embeds (Optional[torch.FloatTensor], 默认为 None) — 预生成的文本嵌入。可用于轻松调整文本输入(提示权重)。如果没有提供,则从 prompt 输入参数生成文本嵌入。
  • negative_prompt_embeds (Optional[torch.FloatTensor], 默认为 None) — 预生成的负文本嵌入。可用于轻松调整文本输入(提示权重)。如果没有提供,则从 negative_prompt 输入参数生成负文本嵌入。
  • output_type (Optional[str], 默认为 "pil") — 生成的图像的输出格式。可以选择 PIL.Imagenp.array
  • return_dict (bool,默认值为True)— 是否返回一个diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput而不是一个普通的元组。
  • callback (Optional[Callable],默认值为None)— 一个在推理过程中每callback_steps步调用一次的函数。函数用以下参数调用:callback(step: int, timestep: int, latents: torch.FloatTensor)
  • callback_steps (int,默认值为1)— callback函数被调用的频率。如果没有指定,则在每一步调用回调。
  • cross_attention_kwargsdict,默认为None) — 一個kwargs字典,如果指定,將作為參數傳遞給根據self.processor定義的AttentionProcessor
  • clip_skipint,默认为None) — 在計算提示嵌入時跳過CLIP的層數。數值1表示將使用最後一層輸出來計算提示嵌入。

返回值

diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutputtuple

如果 return_dictTrue,返回 diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput,否则返回一个 tuple,其中第一个元素是一个列表,包含生成的图像,第二元素是一个包含 bool 的列表,指示相应的生成图像是否包含“不适宜工作” (nsfw) 内容。

到生成管道的调用函数。

示例

>>> from optimum.neuron import NeuronStableDiffusionInpaintPipeline
>>> from diffusers.utils import load_image

>>> img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
>>> mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"

>>> init_image = load_image(img_url).convert("RGB")
>>> mask_image = load_image(mask_url).convert("RGB")

>>> compiler_args = {"auto_cast": "matmul", "auto_cast_type": "bf16"}
>>> input_shapes = {"batch_size": 1, "height": 1024, "width": 1024}
>>> pipeline = NeuronStableDiffusionInpaintPipeline.from_pretrained(
...     "runwayml/stable-diffusion-inpainting", export=True, **compiler_args, **input_shapes,
... )
>>> pipeline.save_pretrained("sd_inpaint/")

>>> prompt = "Face of a yellow cat, high resolution, sitting on a park bench"
>>> image = pipeline(prompt=prompt, image=init_image, mask_image=mask_image).images[0]

NeuronLatentConsistencyModelPipeline

optimum.neuron.NeuronLatentConsistencyModelPipeline

( text_encoder: ScriptModule unet: ScriptModule vae_decoder: Union config: Dict configs: Dict neuron_configs: Dict tokenizer: CLIPTokenizer scheduler: Union data_parallel_mode: Literal vae_encoder: Union = None text_encoder_2: Union = None tokenizer_2: Optional = None feature_extractor: Optional = None controlnet: Union = None model_save_dir: Union = None model_and_config_save_paths: Optional = None )

__call__

( 提示: 合并 = None num_inference_steps: int = 50 original_inference_steps: 可选 = None guidance_scale: float = 8.5 num_images_per_prompt: int = 1 generator: 合并 = None latents: 可选 = None prompt_embeds: 可选 = None output_type: str = 'pil' return_dict: bool = True cross_attention_kwargs: 可选 = None clip_skip: 可选 = None callback_on_step_end: 可选 = None callback_on_step_end_tensor_inputs: List = ['latents'] ) diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutputtuple

参数

  • 提示 (Optional[Union[str, List[str]]], 默认为None) — 指导图像生成的提示或提示列表。如果没有定义,需要传递prompt_embeds
  • num_inference_steps (int,默认为50) — 反噪步骤的数量。更多的反噪步骤通常会导致图像质量更高,但推理速度会变慢。
  • original_inference_steps (Optional[int],默认为None) — 生成线性间隔时间表的原推理步骤数量,我们将从中均匀抽取num_inference_steps个时间步作为最终时间表,遵循论文中的跳过步法(见第4.3节)。如果未设置,则默认为调度器的original_inference_steps属性。
  • guidance_scale (float,默认为8.5) — 更高的指导尺度值会鼓励模型生成与文本prompt密切相关的图像,但会降低图像质量。当guidance_scale > 1时启用指导尺度。请注意,原始的潜在一致性模型论文使用了不同的CFG公式,其中指导尺度减少了1(因此,在论文的公式中,CFG在guidance_scale > 0时启用)。
  • num_images_per_prompt (整数类型,默认为1) — 每个提示生成的图片数量。
  • generator (可选的 torch.Generator 或 List[torch.Generator] 的 Union,默认为 None) — 用于实现生成操作的确定性。
  • latents (可选的 torch FogChen,默认为 None) — 从高斯分布中预生成的噪声 Latent,用作图像生成的输入。可以用于使用不同的提示调整相同生成的效果。如果没有提供,将使用提供的随机 generator 生成 latents 张量。
  • prompt_embeds (Optional[torch.FloatTensor], 默认为 None) — 预生成的文本嵌入。可用于轻松调整文本输入(提示权重)。如果没有提供,文本嵌入将从 prompt 输入参数生成。
  • output_type (str, 默认为 "pil") — 生成的图像的输出格式。选择 PIL.Imagenp.array
  • return_dict (bool, 默认为 True) — 是否返回 ~pipelines.stable_diffusion.StableDiffusionPipelineOutput 而不是纯元组。
  • cross_attention_kwargs (Optional[Dict[str, Any]], 默认为 None) — 如果指定,则将作为kwargs字典传递到定义在self.processor中的AttentionProcessor
  • clip_skip (Optional[int], 默认为 None) — 在计算提示嵌入时跳过的CLIP层数。值为1表示将使用预最终层的输出计算提示嵌入。
  • callback_on_step_end (Optional[Callable], 默认为 None) — 在推理期间,每个去噪步骤结束时调用的函数。该函数带有以下参数: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) 内容。

到生成管道的调用函数。

示例

NeuronStableDiffusionControlNetPipeline

optimum.neuron.NeuronStableDiffusionControlNetPipeline

< >

( text_encoder: ScriptModule unet: ScriptModule vae_decoder: Union config: Dict configs: Dict neuron_configs: Dict tokenizer: CLIPTokenizer scheduler: Union data_parallel_mode: Literal vae_encoder: Union = None text_encoder_2: Union = None tokenizer_2: Optional = None feature_extractor: Optional = None controlnet: Union = None model_save_dir: Union = None model_and_config_save_paths: Optional = None )

__call__

< >

( prompt: Union = None image: Union = None num_inference_steps: int = 50 timesteps: Optional = None sigmas: Optional = None guidance_scale: float = 7.5 negative_prompt: Union = None num_images_per_prompt: Optional = 1 eta: float = 0.0 generator: Union = None latents: Optional = None prompt_embeds: Optional = None negative_prompt_embeds: Optional = None ip_adapter_image: Union = None ip_adapter_image_embeds: Optional = None output_type: str = 'pil' return_dict: bool = True cross_attention_kwargs: Optional = None controlnet_conditioning_scale: Union = 1.0 guess_mode: bool = False control_guidance_start: Union = 0.0 control_guidance_end: Union = 1.0 clip_skip: Optional = None callback_on_step_end: Union = None callback_on_step_end_tensor_inputs: List = ['latents'] **kwargs ) diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput or tuple

参数

  • prompt (Optional[Union[str, List[str]]], 默认为 None) — 引导图像生成的提示或提示词。如果没有定义,需要传递 prompt_embeds
  • image (Optional["PipelineImageInput"], 默认为 None) — 为生成过程提供指导的控制网输入条件。如果指定类型为 torch.Tensor,它将直接传递给控制网。也接受 PIL.Image.Image 格式的图像。输出图像的尺寸默认与 image 的尺寸相同。如果传递了高度和/或宽度,则根据这些值调整图像的大小。如果 init 中指定了多个控制网,则必须将图像作为列表传递,以便为单个控制网正确地批量输入。当 prompt 是列表,且为一个控制网传递了图像列表时,每个图像将与 prompt 列表中的每个提示进行配对。这也适用于多个控制网,可以将图像列表的列表传递给每个提示和每个控制网进行批量处理。
  • num_inference_stepsint,默认为50)—— 消噪步骤的数量。更多的消噪步骤通常会导致图像质量更高,但推理速度会更慢。
  • timestepsOptional[List[int]],默认为None)—— 用于与支持在set_timesteps方法中使用timesteps参数的调度程序的消噪过程的自定义时间步。如果没有定义,则当传递num_inference_steps时,将使用默认行为。必须按降序排列。
  • sigmasOptional[List[int]],默认为None)—— 用于与支持在set_timesteps方法中使用sigmas参数的调度程序的消噪过程的自定义sigma值。如果没有定义,则当传递num_inference_steps时,将使用默认行为。
  • guidance_scale (float, 默认值 7.5) — 较高的引导尺度值会使模型以降低图像质量为代价,生成与文本 prompt 相关程度更高的图像。引导尺度在 guidance_scale > 1 时开启。
  • negative_prompt (Optional[Union[str, List[str]]], 默认值 None) — 用于指导在图像生成中不包含的内容的提示或提示列表。如果未定义,则需要传递 negative_prompt_embeds。在不使用引导时(guidance_scale < 1)将被忽略。
  • num_images_per_prompt (int, 默认值 1) — 每个提示生成的图像数量。如果与其用于编译的批大小不同,将被神经元(除了动态批处理)的静态批大小覆盖。
  • eta (float, 默认为 0.0) — 与DDIM论文中的参数 eta (η) 相对应。仅适用于 ~schedulers.DDIMScheduler,在其他调度器中将被忽略。
  • generator (Optional[Union[torch.Generator, List[torch.Generator]]], 默认为 None) — 用于使生成过程确定性的 torch.Generator
  • latents (Optional[torch.Tensor], 默认为 None) — 预生成的从高斯分布中采样的噪声潜变量,用于图像生成。可用于使用不同的提示来微调相同的生成。如果没有提供,将使用提供的随机 generator 生成一个潜变量张量。
  • prompt_embeds (Optional[torch.Tensor],默认为 None) — 预生成的文本嵌入。可用于轻松修改文本输入(提示加权)。如果没有提供,文本嵌入将从 prompt 输入参数生成。
  • negative_prompt_embeds (Optional[torch.Tensor],默认为 None) — 预生成的负文本嵌入。可用于轻松修改文本输入(提示加权)。如果没有提供,将从 negative_prompt 输入参数生成。
  • ip_adapter_image_embeds (Optional[List[torch.Tensor]],默认为 None) — 预生成的 IP-Adapter 图像嵌入。应为一个长度与 IP-adapters 数量相同的列表。每个元素应为形状为 (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 (Optional[Dict[str, Any]], 默认为 None) — 一个 kwargs 字典,如果指定,则传递给 AttentionProcessor,后者在 self.processor 中定义。
  • controlnet_conditioning_scale (浮点数或浮点数列表,默认为1.0) — 在将ControlNet的输出加到原始unet的残差之前,先将这些输出乘以controlnet_conditioning_scale。如果在init中指定了多个ControlNet,您可以将其对应的缩放值设置为列表。
  • guess_mode (布尔值,默认为False) — 即使移除了所有提示,ControlNet编码器也会尝试识别输入图像的内容。建议guidance_scale的值在3.0到5.0之间。
  • control_guidance_start (浮点数或浮点数列表,默认为0.0) — ControlNet开始应用的步骤占整个步骤总数的百分比。
  • control_guidance_end (Union[float, List[float]], optional, 默认为 1.0) — 控制网停止应用的总步数的百分比。
  • clip_skip (Optional[int], 默认为 None) — 在计算提示嵌入时跳过的CLIP层的数量。值为1表示将使用预最终层的输出来计算提示嵌入。
  • callback_on_step_end (Optional[Union[Callable[[int, int, Dict], None], PipelineCallback, MultiPipelineCallbacks]], 默认为 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 (列表[字符串],默认值为["latents"]) — callback_on_step_end 函数的 tensor 输入列表。列表中指定的 tensor 将作为 callback_kwargs 参数传递。您只能包含管道类 ._callback_tensor_inputs 属性中列出的变量。

返回值

diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutputtuple

如果 return_dictTrue,返回 diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput,否则返回一个 tuple,其中第一个元素是一个列表,包含生成的图像,第二元素是一个包含 bool 的列表,指示相应的生成图像是否包含“不适宜工作” (nsfw) 内容。

到生成管道的调用函数。

NeuronStableDiffusionXLPipeline

class optimum.neuron.NeuronStableDiffusionXLPipeline

< >

( text_encoder: ScriptModule unet: ScriptModule vae_decoder: ScriptModule config: Dict tokenizer: CLIPTokenizer scheduler: Union data_parallel_mode: Literal vae_encoder: Optional = None text_encoder_2: Optional = None tokenizer_2: Optional = None feature_extractor: Optional = None controlnet: Union = None configs: Optional = None neuron_configs: Optional = None model_save_dir: Union = None model_and_config_save_paths: Optional = None add_watermarker: Optional = None )

__call__

< >

( prompt: Union = None prompt_2: Union = None num_inference_steps: int = 50 denoising_end: Optional = None guidance_scale: float = 5.0 negative_prompt: Union = None negative_prompt_2: Union = None num_images_per_prompt: int = 1 eta: float = 0.0 generator: Union = None latents: Optional = None prompt_embeds: Optional = None negative_prompt_embeds: Optional = None pooled_prompt_embeds: Optional = None negative_pooled_prompt_embeds: Optional = None output_type: Optional = 'pil' return_dict: bool = True callback: Optional = None callback_steps: int = 1 cross_attention_kwargs: Optional = None guidance_rescale: float = 0.0 original_size: Optional = None crops_coords_top_left: Tuple = (0, 0) target_size: Optional = None negative_original_size: Optional = None negative_crops_coords_top_left: Tuple = (0, 0) negative_target_size: Optional = None clip_skip: Optional = None ) diffusers.pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput or tuple

参数

  • promptOptional[Union[str, List[str]]],默认为 None)— 引导图像生成的提示语。如果没有定义,必须传递 prompt_embeds
  • prompt_2Optional[Union[str, List[str]]],默认为 None)— 需要发送给 tokenizer_2text_encoder_2 的提示语。如果没有定义,则在两个文本编码器中使用 prompt
  • num_inference_stepsint,默认为 50)— 去噪步骤的数量。更多的去噪步骤通常会导致图像质量更高,但推理速度会更慢。
  • denoising_end (Optional[float], 默认值 None) — 当指定时,确定在有意提前终止前应完成的全部降噪过程的分数(介于 0.0 和 1.0 之间)。因此,返回的样本仍然保留大量由调度器选择的离散时间步长确定的噪声。应该在将此管道作为“降噪组合”多管道设置的一部分时理想地使用 denoising_end 参数,如优化图像输出 详细说明。
  • guidance_scale (float, 默认值 5.0) — 由无分类器的扩散指导定义的指导尺度。guidance_scaleImagen 论文方程 2 中的 w。指导尺度通过设置 guidance_scale > 1启用。较高的指导尺度鼓励生成与文本 prompt 密切相关的图像,这通常以降低图像质量为代价。
  • negative_prompt (Optional[Union[str, List[str]]], 默认值 None) — 不用于引导图像生成的提示或提示。如果没有定义,则必须传递 negative_prompt_embeds。在没有使用引导的情况下忽略(即,如果 guidance_scale 小于 1,则忽略)。
  • negative_prompt_2 (Optional[Union[str, List[str]]], 默认为 None) — 不用于引导图像生成的提示或提示列表,将发送到 tokenizer_2text_encoder_2。如果没有定义,则在两个文本编码器中使用 negative_prompt
  • num_images_per_prompt (int, 默认为 1) — 每个提示生成图像的数量。如果与用于编译的批处理大小不同,它将由神经元的静态批处理大小覆盖(除动态批处理外)。
  • eta (float, 默认为 0.0) — 对应于 DDIM 论文中参数 eta (η):[链接](https://arxiv.org/abs/2010.02502)。仅适用于 schedulers.DDIMScheduler,对于其他对象将忽略。
  • generator (Optional[Union[torch.Generator, List[torch.Generator]]], 默认为 None) — 一或多个 torch 生成器 以使生成确定性。
  • latents (Optional[torch.FloatTensor], 默认为 None) — 预生成的噪声 latents,从高斯分布中抽样,用作图像生成的输入。可以用来调整相同生成物的不同提示。如果不提供,将通过提供的随机 generator 生成 latents 张量。
  • prompt_embeds (Optional[torch.FloatTensor], 默认为 None) — 预生成的文本嵌入。可以用来轻松修改文本输入,例如提示权重。如果不提供,将由 prompt 输入参数生成文本嵌入。
  • negative_prompt_embeds (Optional[torch.FloatTensor], 默认值为 None) — 预生成的负文本嵌入。可用于轻松调整文本输入,例如提示权重。如果没有提供,negative_prompt_embeds 将从 negative_prompt 输入参数生成。
  • pooled_prompt_embeds (Optional[torch.FloatTensor], 默认值为 None) — 预生成的池化文本嵌入。可用于轻松调整文本输入,例如提示权重。如果没有提供,池化文本嵌入将根据 prompt 输入参数生成。
  • negative_pooled_prompt_embeds (Optional[torch.FloatTensor], 默认值为 None) — 预生成的负池化文本嵌入。可用于轻松调整文本输入,例如提示权重。如果没有提供,池化的 negative_prompt_embeds 将根据 negative_prompt 输入参数生成。
  • output_type (Optional[str], 默认为 "pil") — 生成图像的输出格式。在PIL: PIL.Image.Imagenp.array 之间选择。
  • return_dict (bool, 默认为 True) — 是否返回 diffusers.pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput 而不是纯元组。
  • callback (Optional[Callable], 默认为 None) — 在推理过程中每 callback_steps 步调用一次的函数。该函数将使用以下参数调用:callback(step: int, timestep: int, latents: torch.FloatTensor)
  • callback_steps(《int》,《默认值为1》)—— callback 函数将被调用的频率。如果没有指定,回调将在每个步骤中调用。
  • cross_attention_kwargs(《dict》,《默认值为None》)—— 一个kwargs字典,如果指定,则传递给AttentionProcessor,如self.processor下定义的diffusers.models.attention_processor
  • guidance_rescale(《float》,《可选》,《默认值为0.0》)—— 由Common Diffusion Noise Schedules and Sample Steps are Flawed 提出的指南重缩放因子。guidance_scale 定义为方程 16 中的 φ。指南重缩放因子应解决使用零终端信噪比时的过度曝光问题。
  • original_size (Optional[Tuple[int, int]], 默认为 (1024, 1024)) — 如果 original_sizetarget_size 不相同,图像将看起来是下采样或上采样。如果不指定,则默认为 (width, height)。SDXL 的微条件部分,如第 2.2 节所述 https://huggingface.co/papers/2307.01952
  • crops_coords_top_left (Tuple[int], 默认为 (0, 0)) — crops_coords_top_left 可以用于从 crops_coords_top_left 位置向下切割的图像。通常通过将 crops_coords_top_left 设置为 (0, 0) 来实现中心对齐的图像。SDXL 的微条件部分,如第 2.2 节所述 https://huggingface.co/papers/2307.01952
  • target_size (Tuple[int], 默认 (1024, 1024)) — 对于大多数情况,应将 target_size 设置为生成图像所需的宽度和高度。如果不指定,默认为 (width, height)。SDXL 的微条件部分,如第 2.2 节所述 https://huggingface.co/papers/2307.01952
  • negative_original_sizeTuple[int],默认为(1024, 1024)) — 通过特定图像分辨率对生成过程进行负向条件处理。是SDXL中2.2节所述微观条件的一部分https://huggingface.co/papers/2307.01952。更多信息,请参阅此问题线程:https://github.com/huggingface/diffusers/issues/4208
  • negative_crops_coords_top_leftTuple[int],默认为(0, 0)) — 基于特定裁剪坐标对生成过程进行负向条件处理。是SDXL中2.2节所述微观条件的一部分https://huggingface.co/papers/2307.01952。更多信息,请参阅此问题线程:https://github.com/huggingface/diffusers/issues/4208
  • negative_target_sizeTuple[int],默认为(1024, 1024)) — 基于目标图像分辨率对生成过程进行负向条件处理。在大多数情况下应与target_size相同。是SDXL中2.2节所述微观条件的一部分https://huggingface.co/papers/2307.01952。更多信息,请参阅此问题线程:https://github.com/huggingface/diffusers/issues/4208
  • clip_skip (Optional[int], 默认为 None) — 在计算提示嵌入时跳过的CLIP层数。1表示使用预最终层的输出进行提示嵌入的计算。

返回值

diffusers.pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutputtuple

diffusers.pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput 如果 return_dict 为 True,否则为 tuple。返回元组时,第一个元素是一个包含生成的图像的列表。

当调用管道进行生成时调用的函数。

示例

>>> from optimum.neuron import NeuronStableDiffusionXLPipeline

>>> compiler_args = {"auto_cast": "matmul", "auto_cast_type": "bf16"}
>>> input_shapes = {"batch_size": 1, "height": 1024, "width": 1024}

>>> stable_diffusion_xl = NeuronStableDiffusionXLPipeline.from_pretrained(
...     "stabilityai/stable-diffusion-xl-base-1.0", export=True, **compiler_args, **input_shapes)
... )
>>> stable_diffusion_xl.save_pretrained("sd_neuron_xl/")

>>> prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
>>> image = stable_diffusion_xl(prompt).images[0]

NeuronStableDiffusionXLImg2ImgPipeline

optimum.neuron.NeuronStableDiffusionXLImg2ImgPipeline

< >

( text_encoder: ScriptModule unet: ScriptModule vae_decoder: ScriptModule config: Dict tokenizer: CLIPTokenizer scheduler: Union data_parallel_mode: Literal vae_encoder: Optional = None text_encoder_2: Optional = None tokenizer_2: Optional = None feature_extractor: Optional = None controlnet: Union = None configs: Optional = None neuron_configs: Optional = None model_save_dir: Union = None model_and_config_save_paths: Optional = None add_watermarker: Optional = None )

__call__

< >

( prompt: Union = None prompt_2: Union = None image: Optional = None strength: float = 0.3 num_inference_steps: int = 50 denoising_start: Optional = None denoising_end: Optional = None guidance_scale: float = 5.0 negative_prompt: Union = None negative_prompt_2: Union = None num_images_per_prompt: Optional = 1 eta: float = 0.0 generator: Union = None latents: Optional = None prompt_embeds: Optional = None negative_prompt_embeds: Optional = None pooled_prompt_embeds: Optional = None negative_pooled_prompt_embeds: Optional = None output_type: Optional = 'pil' return_dict: bool = True callback: Optional = None callback_steps: int = 1 cross_attention_kwargs: Optional = None guidance_rescale: float = 0.0 original_size: Tuple = None crops_coords_top_left: Tuple = (0, 0) target_size: Tuple = None negative_original_size: Optional = None negative_crops_coords_top_left: Tuple = (0, 0) negative_target_size: Optional = None aesthetic_score: float = 6.0 negative_aesthetic_score: float = 2.5 clip_skip: Optional = None ) diffusers.pipelines.stable_diffusion.StableDiffusionXLPipelineOutput or tuple

参数

  • prompt (Optional[Union[str, List[str]]], 默认为 None) — 指导图像生成的提示或提示列表。如果没有定义,则需要传递 prompt_embeds
  • prompt_2 (Optional[Union[str, List[str]]], 默认为 None) — 发送到 tokenizer_2text_encoder_2 的提示或提示列表。如果没有定义,则在两个文本编码器中使用 prompt
  • image (可选["PipelineImageInput"],默认为None) — 使用流水线修改的图像。
  • strength (浮点数,默认为0.3) — 概念上指示对参考image进行变换的程度。必须在0和1之间。较大的strength值会让噪声更多。去噪步骤的数量取决于最初添加的噪声量。当strength为1时,添加的噪声最大,去噪过程将运行至num_inference_steps指定的迭代次数。因此,1相当于实际上忽略了image。注意,如果将denoising_start声明为整数,则忽略strength的值。
  • num_inference_steps (整数,默认为50) — 去噪步骤的数量。更多的去噪步骤通常会导致图像质量更高,但推理速度会变慢。
  • guidance_scalefloat,默认为 7.5) — 指导缩放因子,如无分类扩散指导中定义。 guideline_scale 被定义为Images论文中方程2的 w。启用指导缩放因子(即设置 guidance_scale > 1)。更高的指导缩放因子鼓励生成与文本 prompt 密切相关的图像,通常以较低的图像质量为代价。
  • negative_promptOptional[Union[str, List[str]]],默认为 None) — 不用于指导图像生成的提示或提示。如果没有定义,必须使用 negative_prompt_embeds。当不使用指导时(即,如果 guidance_scale 小于 1,则忽略)。
  • negative_prompt_2Optional[Union[str, List[str]]],默认为 None) — 不用于指导图像生成的提示或提示,将会发送到 tokenizer_2text_encoder_2。如果没有定义,两个文本编码器都会使用 negative_prompt
  • num_images_per_promptint,默认为1) — 每个提示生成的图像数量。如果它与编译时使用的批处理大小不同,它将由neuron的静态批处理大小覆盖(除动态批处理外)。
  • etafloat,默认为0.0) — 与DDIM论文中的eta参数相对应:[https://arxiv.org/abs/2010.02502](https://arxiv.org/abs/2010.02502)。仅适用于schedulers.DDIMScheduler,对于其他情况将被忽略。
  • generatorOptional[Union[torch.Generator, List[torch.Generator]]],默认为None) — 一组或一组torch生成器,用于使生成具有确定性。
  • latents (Optional[torch.FloatTensor], 默认为 None) — 预生成的噪声latents,从高斯分布中采样,用于图像生成。可用于用不同的提示调整相同的生成。如果没有提供,将使用提供的随机 generator 生成latents张量。
  • prompt_embeds (Optional[torch.FloatTensor], 默认为 None) — 预生成的文本嵌入。可用于轻松调整文本输入,例如调整提示权重。如果没有提供,将从 prompt 输入参数生成文本嵌入。
  • negative_prompt_embeds (Optional[torch.FloatTensor], 默认为 None) — 预生成的负文本嵌入。可用于轻松调整文本输入,例如调整提示权重。如果没有提供,将使用 negative_prompt 输入参数生成负 promover Einschübe。
  • pooled_prompt_embeds (Optional[torch.FloatTensor], 默认为 None) - 预生成的文本嵌入。可以用来轻松调整文本输入,例如提示词权重。如果没有提供,将根据 prompt 输入参数生成文本嵌入。
  • negative_pooled_prompt_embeds (Optional[torch.FloatTensor], 默认为 None) - 预生成的负文本嵌入。可以用来轻松调整文本输入,例如提示词权重。如果没有提供,将根据 negative_prompt 输入参数生成负文本嵌入。
  • output_type (Optional[str], 默认为 "pil") - 生成的图像的输出格式。选择之间的 PIL: PIL.Image.Imagenp.array
  • 返回数据字典(返回类型为布尔值,默认为True) — 是否返回一个该类型对象 diffusers.pipelines.stable_diffusion.StableDiffusionXLPipelineOutput 而不是一个普通的元组。
  • 回调函数(可调用类型 Optional[Callable],默认为None) — 在推理中的每步之后将调用的函数。函数将以以下参数调用:callback(step: int, timestep: int, latents: torch.FloatTensor)
  • 回调步骤频率(整型,默认为1) — 回调函数将被调用的频率。如果不指定,回调将在每步后被调用。
  • cross_attention_kwargs (Optional[Dict[str, Any]], 默认为 None) — 如果指定,则将kwargs字典传递给在diffusers.models.attention_processor中定义的AttentionProcessor
  • guidance_rescale (float, 默认为 0.0) — 由Common Diffusion Noise Schedules and Sample Steps are Flawed提出的指导缩放因子,定义在Common Diffusion Noise Schedules and Sample Steps are Flawed的公式的16中。当使用零终端SNR时,指导缩放因子应解决过曝光问题。
  • original_size (Optional[Tuple[int, int]], 默认为 (1024, 1024)) — 如果original_sizetarget_size不同,则图像看起来会被下采样或上采样。《code》original_size` 默认为 (width, height),如果没有指定。SDXL的微观条件的一部分,如https://huggingface.co/papers/2307.01952的第2.2节中所述。
  • crops_coords_top_left (Tuple[int], 默认为 (0, 0)) — 可以通过 crops_coords_top_left 生成从 crops_coords_top_left 位置向下裁剪的图像。通常通过设置 crops_coords_top_left 为 (0, 0) 来获得居中的图像。这是 SDXL 的微条件化的一部分,如第 2.2 节所述 https://huggingface.co/papers/2307.01952
  • target_size (Tuple[int], 默认为 (1024, 1024)) — 对于大多数情况,应将 target_size 设置为所生成图像的期望高度和宽度。如果没有指定,则默认为 (width, height)。这是 SDXL 的微条件化的一部分,如第 2.2 节所述 https://huggingface.co/papers/2307.01952
  • negative_original_size (Tuple[int], 默认为 (1024, 1024)) — 基于特定图像分辨率来对生成过程进行负条件化。这是 SDXL 的微条件化的一部分,如第 2.2 节所述 https://huggingface.co/papers/2307.01952。更多信息,请参阅此问题线程:https://github.com/huggingface/diffusers/issues/4208
  • negative_crops_coords_top_left (Tuple[int], 默认为 (0, 0)) — 根据特定裁剪坐标对生成过程进行负向条件。是 SDXL 的微条件的一部分,如第 2.2 节所述 https://huggingface.co/papers/2307.01952。有关更多信息,请参阅此问题线程:https://github.com/huggingface/diffusers/issues/4208
  • negative_target_size (Tuple[int], 默认为 (1024, 1024)) — 根据目标图像分辨率对生成过程进行负向条件。在大多数情况下应与 target_size 相同。是 SDXL 的微条件的一部分,如第 2.2 节所述 https://huggingface.co/papers/2307.01952。有关更多信息,请参阅此问题线程:https://github.com/huggingface/diffusers/issues/4208
  • aesthetic_score (float, 默认为 6.0) — 通过影响正文本条件来模拟生成的图像的美学评分。是 SDXL 的微条件的一部分,如第 2.2 节所述 https://huggingface.co/papers/2307.01952
  • negative_aesthetic_scorefloat,默认值为2.5) — SDXL微观条件的组成部分,如2.2节所述。可以通过影响负文本条件来模拟生成图像的美学评分。
  • clip_skipOptional[int],默认为None) — 在计算提示嵌入时,从CLIP中跳过的层数。值为1表示将使用预最终层的输出来计算提示嵌入。

返回值

diffusers.pipelines.stable_diffusion.StableDiffusionXLPipelineOutputtuple

diffusers.pipelines.stable_diffusion.StableDiffusionXLPipelineOutput 如果return_dict为True,否则为一个元组。当返回一个元组时,第一个元素是一个包含生成图像的列表。

当调用管道进行生成时调用的函数。

示例

>>> from optimum.neuron import NeuronStableDiffusionXLImg2ImgPipeline
>>> from diffusers.utils import load_image

>>> url = "https://huggingface.co/datasets/optimum/documentation-images/resolve/main/intel/openvino/sd_xl/castle_friedrich.png"
>>> init_image = load_image(url).convert("RGB")

>>> compiler_args = {"auto_cast": "matmul", "auto_cast_type": "bf16"}
>>> input_shapes = {"batch_size": 1, "height": 512, "width": 512}
>>> pipeline = NeuronStableDiffusionXLImg2ImgPipeline.from_pretrained(
...     "stabilityai/stable-diffusion-xl-base-1.0", export=True, **compiler_args, **input_shapes,
... )
>>> pipeline.save_pretrained("sdxl_img2img/")

>>> prompt = "a dog running, lake, moat"
>>> image = pipeline(prompt=prompt, image=init_image).images[0]

NeuronStableDiffusionXLInpaintPipeline

optimum.neuron.NeuronStableDiffusionXLInpaintPipeline

< >

( text_encoder: ScriptModule unet: ScriptModule vae_decoder: ScriptModule config: Dict tokenizer: CLIPTokenizer scheduler: Union data_parallel_mode: Literal vae_encoder: Optional = None text_encoder_2: Optional = None tokenizer_2: Optional = None feature_extractor: Optional = None controlnet: Union = None configs: Optional = None neuron_configs: Optional = None model_save_dir: Union = None model_and_config_save_paths: Optional = None add_watermarker: Optional = None )

__call__

< >

( prompt: Union = None prompt_2: Union = None image: Optional = None mask_image: Optional = None masked_image_latents: Optional = None padding_mask_crop: Optional = None strength: float = 0.9999 num_inference_steps: int = 50 timesteps: Optional = None denoising_start: Optional = None denoising_end: Optional = None guidance_scale: float = 7.5 negative_prompt: Union = None negative_prompt_2: Union = None num_images_per_prompt: Optional = 1 eta: float = 0.0 generator: Union = None latents: Optional = None prompt_embeds: Optional = None negative_prompt_embeds: Optional = None pooled_prompt_embeds: Optional = None negative_pooled_prompt_embeds: Optional = None ip_adapter_image: Union = None output_type: Optional = 'pil' return_dict: bool = True cross_attention_kwargs: Optional = None guidance_rescale: float = 0.0 original_size: Tuple = None crops_coords_top_left: Tuple = (0, 0) target_size: Tuple = None negative_original_size: Optional = None negative_crops_coords_top_left: Tuple = (0, 0) negative_target_size: Optional = None aesthetic_score: float = 6.0 negative_aesthetic_score: float = 2.5 clip_skip: Optional = None callback_on_step_end: Optional = None callback_on_step_end_tensor_inputs: List = ['latents'] **kwargs ) diffusers.pipelines.stable_diffusion.StableDiffusionXLPipelineOutput or tuple

参数

  • prompt (Optional[Union[str, List[str]]], 默认为 None) — 引导图像生成的提示或提示列表。如未定义,必须传递 prompt_embeds
  • prompt_2 (Optional[Union[str, List[str]]], 默认为 None) — 要发送到 tokenizer_2text_encoder_2 的提示词或提示词列表。如果没有定义,则同时在两个文本编码器中使用 prompt
  • image (Optional["PipelineImageInput"], 默认为 None) — 图像或表示图像批次的张量,将被修复。即图像的某些部分将使用 mask_image 进行遮罩,并根据 prompt 重新着色。
  • mask_image (Optional["PipelineImageInput"], 默认为 None) — 遮罩 image 使用的图像或表示图像批次的张量。遮罩中的白色像素将被重新着色,而黑色像素将被保留。如果 mask_image 是 PIL 图像,则在使用之前将其转换为单通道(亮度)。如果是张量,则应包含一个颜色通道(L)而不是 3 个,因此期望的形状为 (B, H, W, 1)
  • padding_mask_crop (可选int类型,默认None) — 在裁剪时应用到图像和遮罩边的边距大小。如果为None,则不对图像和mask_image进行裁剪。如果padding_mask_crop不为None,则会先找到一个与图像相同长宽比的矩形区域,包含所有被遮罩区域,然后根据padding_mask_crop将该区域扩展。之后,将基于扩展区域裁剪图像和mask_image,然后根据修补大小调整大小。这在遮罩区很小而图像很大且含有对修补不相关信息(如背景)时很有用。
  • strength (浮点数,默认0.9999) — 概念上表示对参照图像中遮罩部分进行转换的程度。必须在0和1之间。image将用作起点,增加更多噪声。strength值越大,添加的噪声越多。去噪步骤的数量取决于最初添加的噪声量。当strength值为1时,添加的噪声最大,去噪过程将运行到指定在num_inference_steps中的完整迭代次数。因此,值为1时实际上忽略了参照image的遮罩部分。注意,如果将denoising_start声明为整数,则将忽略strength的值。
  • num_inference_steps (整数,默认值为50) — 去噪步骤的数量。更多的去噪步骤通常会导致更高的图像质量,但会降低推理速度。
  • timesteps (整数列表的可选参数,默认为None) — 使用支持在 set_timesteps 方法中包含 timesteps 参数的调度器进行去噪过程的自定义时间步。如果没有定义,将使用当 num_inference_steps 传递时的默认行为。必须按降序排列。
  • denoising_start (浮点数的可选参数,默认为None) — 当指定时,表示在开始之前跳过的总去噪过程的分数(介于0.0和1.0之间)。因此,去噪过程的初始部分被跳过,并且假设传递的 image 是部分去噪的图像。请注意,当指定此参数时,将忽略强度。该 denoising_start 参数在将此管道集成到“混合去噪器”多管道设置时特别有用,如优化图像输出中详细说明。
  • denoising_end (Optional[float], 默认为 None) — 当指定时,确定在人工提前终止前完成的总去噪过程的分步(介于 0.0 和 1.0 之间)。因此,返回的样本将仍然保留大量噪声(大约需要最终 20% 的时间步长),应该由一个设置为 denoising_start 为 0.8 的后续管道去噪,以仅去噪调度器的最后 20%。当此管道作为“去噪器混合”多管道设置的一部分时,应尽可能使用 denoising_end 参数,如 精炼图像输出 中所述。
  • guidance_scale (float, 默认为 7.5) — 如 无分类器扩散指导 中定义的指导尺度。在 Imagen 论文 公式 2 中的 guidance_scale 被定义为 w。启用指导尺度时,需要设置 guidance_scale > 1。较高的指导尺度会鼓励生成与文本 prompt 密切相关的图像,但通常以牺牲图像质量为代价。
  • negative_prompt (Optional[Union[str, List[str]]], 默认为 None) — 不用于指导图像生成的提示或提示列表。如果未定义,必须传递 negative_prompt_embeds。不使用指导时忽略(即,如果 guidance_scale 小于 1 时忽略)。
  • negative_prompt_2 (Optional[Union[str, List[str]]], 默认为 None) — 不用于引导图像生成的提示,发送到 tokenizer_2text_encoder_2。如果未定义,则使用两个文本编码器中的 negative_prompt
  • prompt_embeds (Optional[torch.FloatTensor], 默认为 None) — 预生成的文本嵌入。可用于轻松调整文本输入,例如提示权重。如果未提供,将从 prompt 输入参数生成文本嵌入。
  • negative_prompt_embeds (Optional[torch.FloatTensor], 默认为 None) — 预生成的负文本嵌入。可用于轻松调整文本输入,例如提示权重。如果未提供,将从 negative_prompt 输入参数生成负文本嵌入。
  • pooling_prompt_embeds (Optional[torch.FloatTensor],默认为None)—预生成的池化文本嵌入。可以用于轻松调整文本输入,例如提示权重。如果没有提供,将从prompt输入参数生成池化文本嵌入。
  • negative_pooling_prompt_embeds (Optional[torch.FloatTensor],默认为None)—预生成的负池化文本嵌入。可以用于轻松修改文本输入,例如提示权重。如果没有提供,将从negative_prompt输入参数生成负池化嵌入。
  • num_images_per_prompt (int,默认为1)—每个提示生成的图像数量。
  • eta (float, 默认为 0.0) — 对应 DDIM 论文中的参数 eta (η),见 https://arxiv.org/abs/2010.02502。仅适用于 schedulers.DDIMScheduler,其他情况将被忽略。
  • generator (Optional[Union[torch.Generator, List[torch.Generator]]], 默认为 None) — 一个或多个 torch 生成器,用于使生成过程确定。
  • latents (Optional[torch.FloatTensor], 默认为 None) — 预生成的带有噪声的 latents,从高斯分布中采样,用于作为图像生成的输入。可以用于用不同的提示调整相同的生成。如果没有提供,将使用提供的随机 generator 生成分量表示的 latents。
  • output_type (Optional[str], 默认为 "pil") —— 生成图像的输出格式。在PILPIL.Image.Imagenp.array 中选择。
  • return_dict (bool, 默认为 True) —— 是否返回一个 ~pipelines.stable_diffusion.StableDiffusionPipelineOutput 而不是一个普通的元组。
  • cross_attention_kwargs (Optional[Dict[str, Any]], 默认为 None) —— 一个kwargs字典,如果指定,将传递给diffusers.models.attention_processor中定义的'valueAttentionProcessor'。
  • original_size (元组[int],默认为 (1024, 1024)) — 如果 original_sizetarget_size 不相同,则图像看起来会被下采样或上采样。如果不指定,则默认为 (高度, 宽度)。这是 SDXL 的微观条件的一部分,如第 2.2 节所述https://huggingface.co/papers/2307.01952
  • crops_coords_top_left (元组[int],默认为 (0, 0)) — 可以使用 crops_coords_top_left 生成从位置 crops_coords_top_left 向下裁剪的图像。通过将 crops_coords_top_left 设置为 (0, 0) 通常可以获得良好居中的图像。这是 SDXL 的微观条件的一部分,如第 2.2 节所述https://huggingface.co/papers/2307.01952
  • target_size (元组[int],默认为 (1024, 1024)) — 对于大多数情况,应将 target_size 设置为期望的图像高度和宽度。如果不指定,则默认为 (高度, 宽度)。这是 SDXL 的微观条件的一部分,如第 2.2 节所述https://huggingface.co/papers/2307.01952
  • negative_original_size (元组[int],默认为 (1024, 1024)) — 基于特定图像分辨率对生成过程进行负条件化。SDXL 微条件的一部分,参见第 2.2 节 https://huggingface.co/papers/2307.01952。获取更多信息,请参阅此问题线程:https://github.com/huggingface/diffusers/issues/4208
  • negative_crops_coords_top_left (元组[int],默认为 (0, 0)) — 基于特定的裁剪坐标对生成过程进行负条件化。SDXL 微条件的一部分,参见第 2.2 节 https://huggingface.co/papers/2307.01952。获取更多信息,请参阅此问题线程:https://github.com/huggingface/diffusers/issues/4208
  • negative_target_size (元组[int],默认为 (1024, 1024)) — 基于目标图像分辨率对生成过程进行负条件化。在大多数情况下应与 target_size 相同。SDXL 微条件的一部分,参见第 2.2 节 https://huggingface.co/papers/2307.01952。获取更多信息,请参阅此问题线程:https://github.com/huggingface/diffusers/issues/4208
  • 审美得分 (float,默认值为6.0) — 用于通过影响积极文本条件来模拟生成图像的审美得分。SDXL微条件的一部分,如第2.2节所述https://huggingface.co/papers/2307.01952
  • 负面审美得分 (float,默认值为2.5) — SDXL微条件的一部分,如第2.2节所述https://huggingface.co/papers/2307.01952 。可用于通过影响负面文本条件来模拟生成图像的审美得分。
  • clip_skip (Optional[int],默认值为None) — 跳过CLIP计算提示嵌入时的层数。值为1表示将使用前最终层的输出计算提示嵌入。
  • callback_on_step_end (Optional[Callable[[int, int, Dict], None]], 默认 None) — 一个在推理期间的去噪步骤结束调用的函数。该函数使用以下参数调用: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.StableDiffusionXLPipelineOutputtuple

如果 return_dict 是 True,则为 diffusers.pipelines.stable_diffusion.StableDiffusionXLPipelineOutput,否则为 tuple。返回一个元组时,第一个元素是一个包含生成的图像的列表。

当调用管道进行生成时调用的函数。

示例

>>> from optimum.neuron import NeuronStableDiffusionXLInpaintPipeline
>>> from diffusers.utils import load_image

>>> img_url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/sdxl-text2img.png" (
>>> mask_url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/sdxl-inpaint-mask.png"

>>> init_image = load_image(img_url).convert("RGB")
>>> mask_image = load_image(mask_url).convert("RGB")

>>> compiler_args = {"auto_cast": "matmul", "auto_cast_type": "bf16"}
>>> input_shapes = {"batch_size": 1, "height": 1024, "width": 1024}
>>> pipeline = NeuronStableDiffusionXLInpaintPipeline.from_pretrained(
...     "stabilityai/stable-diffusion-xl-base-1.0", export=True, **compiler_args, **input_shapes,
... )
>>> pipeline.save_pretrained("sdxl_inpaint/")

>>> prompt = "A deep sea diver floating"
>>> image = pipeline(prompt=prompt, image=init_image, mask_image=mask_image, strength=0.85, guidance_scale=12.5).images[0]