in optimum/exporters/neuron/model_wrappers.py [0:0]
def forward(self, *inputs):
if len(inputs) != len(self.input_names):
raise ValueError(
f"The model needs {len(self.input_names)} inputs: {self.input_names}."
f" But only {len(inputs)} inputs are passed."
)
ordered_inputs = dict(zip(self.input_names, inputs))
added_cond_kwargs = {
"text_embeds": ordered_inputs.pop("text_embeds", None),
"time_ids": ordered_inputs.pop("time_ids", None),
"image_embeds": ordered_inputs.pop("image_embeds", None)
or ordered_inputs.pop("image_enc_hidden_states", None),
}
sample = ordered_inputs.pop("sample", None)
timestep = ordered_inputs.pop("timestep").float().expand((sample.shape[0],))
encoder_hidden_states = ordered_inputs.pop("encoder_hidden_states", None)
# Re-build down_block_additional_residual
down_block_additional_residuals = ()
down_block_additional_residuals_names = [
name for name in ordered_inputs.keys() if "down_block_additional_residuals" in name
]
for name in down_block_additional_residuals_names:
value = ordered_inputs.pop(name)
down_block_additional_residuals += (value,)
mid_block_additional_residual = ordered_inputs.pop("mid_block_additional_residual", None)
out_tuple = self.model(
sample=sample,
timestep=timestep,
encoder_hidden_states=encoder_hidden_states,
down_block_additional_residuals=(
down_block_additional_residuals if down_block_additional_residuals else None
),
mid_block_additional_residual=mid_block_additional_residual,
added_cond_kwargs=added_cond_kwargs,
return_dict=False,
)
return out_tuple