模型
通用模型类
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编译模型的存储目录。默认情况下,如果加载的模型是本地的,则使用原始模型所在的目录。否则,将使用缓存目录。
返回该模型是否可以使用.generate()
生成序列。
获取包含有效静态形状的输入字典。
加载模型
< source >( path: Union to_neuron: bool = False device_id: int = 0 )
加载由neuron(x)-cc编译器编译的TorchScript模块。它首先加载到CPU上,然后将其移动到一或多个NeuronCore上。
remove_padding
< source >( outputs: List dims: List indices: List padding_side: Literal = '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 设备上的特征提取模型。
前进
< source >( input_ids: Tensor attention_mask: Tensor token_type_ids: Optional = None **kwargs )
参数
- input_ids (
torch.Tensor
of shape(batch_size, sequence_length)
) — 输入序列词汇表中的输入序列标记的索引。索引可以通过使用AutoTokenizer
获取。有关详细信息,请参阅PreTrainedTokenizer.encode
和PreTrainedTokenizer.__call__
。有关输入索引的更多信息,请参阅 什么是输入ID? - attention_mask (
Union[torch.Tensor, None]
of shape(batch_size, sequence_length)
, defaults toNone
) — 避免对填充标记索引执行注意力的掩码。所选掩码值在[0, 1]
:- 1表示未掩码的标记,
- 0表示掩码的标记。
- token_type_ids (
Union[torch.Tensor, None]
形状(batch_size, sequence_length)
,默认为None
) — 用于指示输入的第一和第二部分的分词索引。索引选取范围在[0, 1]
:- 1 为 句子 A 的词;
- 0 为 句子 B 的词。 什么是分词类型 ID?
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 模型。
前进
< source >( 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.encode
和PreTrainedTokenizer.__call__
。 什么是input IDs? - attention_mask (
Union[torch.Tensor, None]
of shape(batch_size, sequence_length)
, defaults toNone
) — 避免在填充token索引上执行注意力的掩码。掩码值选在[0, 1]
范围内:- 1 表示未掩码的token,
- 0 表示被掩码的token。 什么是注意力掩码?
- token_type_ids (
Union[torch.Tensor, None]
的形状为(batch_size, sequence_length)
,默认为) — 表示输入的第一个和第二个部分的标记索引。索引选择在
[0, 1]
中:- 1 对于 句子 A 中的标记,
- 0 对于 句子 B 中的标记。 什么是标记类型 ID?
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 设备上的掩码语言模型。
前进
< source >( input_ids: Tensor attention_mask: Tensor token_type_ids: Optional = None **kwargs )
参数
- input_ids (形状为
(batch_size, sequence_length)
的torch.Tensor
)— 在词汇表中的输入序列标记索引。可以通过AutoTokenizer
获取索引。有关详细信息,请参阅AutoTokenizer
、PreTrainedTokenizer.encode
和PreTrainedTokenizer.__call__
。什么是输入ID? - attention_mask (形状为
(batch_size, sequence_length)
的Union[torch.Tensor, None]
,默认为None
)— 用于禁止对填充标记索引执行注意力的掩码。掩码值选择在[0, 1]
:- 对于未被掩码的标记为
1
, - 掩码标记为
0
。什么是注意力掩码?
- 对于未被掩码的标记为
- token_type_ids (形状为
(batch_size, sequence_length)
的Union[torch.Tensor, None]
,默认为None
)— 用于表示输入的两部分(A和B)的标记段索引。索引选择在[0, 1]
:- 对于句子A中的标记为
1
, - 对于句子B中的标记为
0
。什么是标记类型ID?
- 对于句子A中的标记为
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
< source >( 模型: 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
。请查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存)。
在神经元设备上的序列分类模型。
前进
< source >( input_ids: Tensor attention_mask: Tensor token_type_ids: Optional = None **kwargs )
参数
- input_ids (
torch.Tensor
of shape(batch_size, sequence_length)
) — 输入序列标记的索引,在词汇表中的索引。可以使用AutoTokenizer
获取索引。有关详细信息,参见PreTrainedTokenizer.encode
和PreTrainedTokenizer.__call__
。了解更多关于 输入 ID 的信息。 - attention_mask (
torch.Tensor 或 None
的形状为(batch_size, sequence_length)
,默认为None
) — 用于避免在填充令牌索引上执行注意力的掩码。在[0, 1]
范围内选择的掩码值:- 1 表示 未掩码的 令牌
- 0 表示 掩码的 令牌 注意掩码是什么?
torch.Tensor 或 None
的形状为 (batch_size, sequence_length)
,默认为 None
) — 用于指示输入的第一部分和第二部分的段落令牌索引。在 [0, 1]
范围内选择的索引:- 1 表示 句子 A
- 0 表示 句子 B 令牌类型 ID 是什么?
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 设备上的问答模型。
前进
< source >( input_ids: Tensor attention_mask: Tensor token_type_ids: Optional = None **kwargs )
参数
- input_ids (
torch.Tensor
of shape(batch_size, sequence_length)
) — 词汇表中的输入序列标记的索引。索引可以通过AutoTokenizer
获取。有关详细信息,请参阅PreTrainedTokenizer.encode
和PreTrainedTokenizer.__call__
。 什么是输入 ID? - attention_mask (
Union[torch.Tensor, None]
of shape(batch_size, sequence_length)
, defaults toNone
) — 避免在填充标记索引上执行注意力的掩码。选定的掩码值在[0, 1]
范围内:- 1 表示 未屏蔽 的标记;
- 0 表示 屏蔽 的标记。
- token_type_ids (类型为
Union[torch.Tensor, None]
的形状为(batch_size, sequence_length)
,默认为None
) — 用于指示输入的第一部分和第二部分段落的标记索引。索引在[0, 1]
中选择:- 1 表示 句子 A 中的标记;
- 0 表示 句子 B 中的标记。
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
< source >( 模型: 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 模块。
在顶部带标记分类头的神经元模型(隐藏状态输出的线性层),例如用于命名实体识别 (NER) 任务。
此模型继承自 ~neuron.modeling.NeuronTracedModel
。请查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存)。
Neuron 设备上的标记分类模型。
前进
< source >( input_ids: Tensor attention_mask: Tensor token_type_ids: Optional = None **kwargs )
参数
- input_ids (形状为
(batch_size, sequence_length)
的torch.Tensor
) — 词汇库中输入序列标记的索引。可以使用AutoTokenizer
获取索引。有关详细信息,请参阅PreTrainedTokenizer.encode
和PreTrainedTokenizer.__call__
。什么是 input IDs? - attention_mask (形状为
(batch_size, sequence_length)
的Union[torch.Tensor, None]
,默认为None
) — 用于避免在 padding token 索引上执行 attention 的掩码。掩码值选自[0, 1]
:- 1 表示 未掩码 的标记,
- 0 表示 掩码 的标记。 什么是 attention masks?
- token_type_ids (形状为
(batch_size, sequence_length)
的Union[torch.Tensor, None]
,默认为None
) — 表示输入的第一部分和第二部分的 segment token 索引。索引选自[0, 1]
:- 1 表示 句子 A,
- 0 表示 句子 B。 什么是 token type IDs?
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
< source >( 模型: 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.encode
和PreTrainedTokenizer.__call__
。有关输入 ID 的更多信息,请参阅 输入 ID 是什么? - attention_mask (类型为
Union[torch.Tensor, None]
,形状为(batch_size, num_choices, sequence_length)
,默认值为None
) — 用于避免对填充标记索引执行注意力操作的掩码。掩码值选择在[0, 1]
之间:- 1代表未掩码的标记;
- 0代表已掩码的标记。 什么是注意力掩码?
- token_type_ids (类型为
Union[torch.Tensor, None]
,形状为(batch_size, num_choices, sequence_length)
,默认值为None
) — 标记段索引以指示输入的第一和第二部分。索引选择在[0, 1]
之间:- 1代表句子A的标记;
- 0代表句子B的标记。 什么是标记类型ID?
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
< source >( 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
。请检查超类文档,以了解库为其所有模型实现的通用方法(例如下载或保存)。
前进
< source >( input_ids: Tensor cache_ids: Tensor start_ids: Tensor = None return_dict: bool = True )
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
< source >( 模型: 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 等。
前进
< source >( 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
< source >( 模型: 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 )
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 检测等任务。
前进
< source >( 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
< source >( 模型: 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 关键词检测的任务。
前进
< source >( 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
。请查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存)。
带有帧分类头部的小波神经元模型,用于语音分离等任务。
前进
< source >( 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
< source >( 模型: 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模型。
前进
< source >( 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__
< source >( 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_prompt (
int
,默认1) — 每个提示生成图像的数量。如果它与编译所使用的批次大小不同,它将覆盖神经元(动态批处理除外)的静态批次大小。 - eta (
float
,默认0.0) — 对应于DDIM论文中的参数eta(η)。仅适用于diffusers.schedulers.DDIMScheduler
,在其他调度器中将被忽略。 - generator (
Optional[Union[torch.Generator, List[torch.Generator]]]
,默认None
) — 用于生成确定性结果的torch.Generator
。 - output_type (
Optional[str]
, 默认为"pil"
) — 生成的图像的输出格式。可在PIL.Image
或np.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.processor
的AttentionProcessor
。 - guidance_rescale (
float
, 默认为 0.0) — 来自论文《Common Diffusion Noise Schedules and Sample Steps are Flawed》的指导重缩放因子。指导重缩放因子应在使用零终端 SNR 时修复过度曝光问题。
返回值
diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput
或 tuple
如果 return_dict
为 True
,返回 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之间。用作起始点的image
,strength
值越高,噪声越多。去噪步骤的数量取决于初始加入的噪声量。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.Image
或np.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.processor
中定义的AttentionProcessor
。
返回值
diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput
或 tuple
如果 return_dict
为 True
,返回 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.StableDiffusionPipelineOutput
或 tuple
参数
- 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) — 每个提示生成的图像数量。如果它与编译时使用的批次大小不同,则将被神经元的静态批次大小覆盖(动态批处理除外)。 - eta (
float
,默认为 0.0)—— 对应于DDIM 论文中的参数 eta (η)。仅适用于diffusers.schedulers.DDIMScheduler
,在其他调度器中将被忽略。 - generator (
Optional[Union[torch.Generator, List[torch.Generator]]]
,默认为None
)—— 用于使生成过程确定性的一种torch.Generator
。 - latents (
Optional[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.Image
或np.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.processor
定義的AttentionProcessor
。 - clip_skip (
int
,默认为None
) — 在計算提示嵌入時跳過CLIP的層數。數值1表示將使用最後一層輸出來計算提示嵌入。
返回值
diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput
或 tuple
如果 return_dict
为 True
,返回 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.StableDiffusionPipelineOutput
或tuple
参数
- 提示 (
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.Image
或np.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.StableDiffusionPipelineOutput
或 tuple
如果 return_dict
为 True
,返回 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__
< source >( 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_steps (
int
,默认为50)—— 消噪步骤的数量。更多的消噪步骤通常会导致图像质量更高,但推理速度会更慢。 - timesteps (
Optional[List[int]]
,默认为None
)—— 用于与支持在set_timesteps
方法中使用timesteps
参数的调度程序的消噪过程的自定义时间步。如果没有定义,则当传递num_inference_steps
时,将使用默认行为。必须按降序排列。 - sigmas (
Optional[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.Image
或np.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
) — 在推理期间,在每个去噪步骤结束时调用的函数或PipelineCallback
或MultiPipelineCallbacks
的子类。它带有以下参数: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.StableDiffusionPipelineOutput
或 tuple
如果 return_dict
为 True
,返回 diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput
,否则返回一个 tuple
,其中第一个元素是一个列表,包含生成的图像,第二元素是一个包含 bool
的列表,指示相应的生成图像是否包含“不适宜工作” (nsfw) 内容。
到生成管道的调用函数。
NeuronStableDiffusionXLPipeline
class optimum.neuron.NeuronStableDiffusionXLPipeline
< source >( 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
参数
- prompt (
Optional[Union[str, List[str]]]
,默认为None
)— 引导图像生成的提示语。如果没有定义,必须传递prompt_embeds
。 - prompt_2 (
Optional[Union[str, List[str]]]
,默认为None
)— 需要发送给tokenizer_2
和text_encoder_2
的提示语。如果没有定义,则在两个文本编码器中使用prompt
。 - num_inference_steps (
int
,默认为 50)— 去噪步骤的数量。更多的去噪步骤通常会导致图像质量更高,但推理速度会更慢。 - denoising_end (
Optional[float]
, 默认值 None) — 当指定时,确定在有意提前终止前应完成的全部降噪过程的分数(介于 0.0 和 1.0 之间)。因此,返回的样本仍然保留大量由调度器选择的离散时间步长确定的噪声。应该在将此管道作为“降噪组合”多管道设置的一部分时理想地使用 denoising_end 参数,如优化图像输出 详细说明。 - guidance_scale (
float
, 默认值 5.0) — 由无分类器的扩散指导定义的指导尺度。guidance_scale
是Imagen 论文方程 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_2
和text_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.Image
或np.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_size
与target_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_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。 - clip_skip (
Optional[int]
, 默认为None
) — 在计算提示嵌入时跳过的CLIP层数。1表示使用预最终层的输出进行提示嵌入的计算。
返回值
diffusers.pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput
或 tuple
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__
< source >( 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_2
和text_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_scale (
float
,默认为 7.5) — 指导缩放因子,如无分类扩散指导中定义。 guideline_scale 被定义为Images论文中方程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_2
和text_encoder_2
。如果没有定义,两个文本编码器都会使用negative_prompt
。 - num_images_per_prompt (
int
,默认为1) — 每个提示生成的图像数量。如果它与编译时使用的批处理大小不同,它将由neuron的静态批处理大小覆盖(除动态批处理外)。 - eta (
float
,默认为0.0) — 与DDIM论文中的eta参数相对应:[https://arxiv.org/abs/2010.02502](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
输入参数生成负 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.Image
或np.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_size
与target_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_score (
float
,默认值为2.5) — SDXL微观条件的组成部分,如2.2节所述。可以通过影响负文本条件来模拟生成图像的美学评分。 - clip_skip (
Optional[int]
,默认为None
) — 在计算提示嵌入时,从CLIP中跳过的层数。值为1表示将使用预最终层的输出来计算提示嵌入。
返回值
diffusers.pipelines.stable_diffusion.StableDiffusionXLPipelineOutput
或 tuple
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_2
和text_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_2
和text_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"
) —— 生成图像的输出格式。在PIL:PIL.Image.Image
或np.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_size
与target_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.StableDiffusionXLPipelineOutput
或 tuple
如果 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]