in community-efforts/image_preferences/01_synthetic_data_generation_images.py [0:0]
def process(self, *args: StepInput) -> "StepOutput":
inputs = args[0] if args else []
formatted_inputs = self._format_inputs(inputs)
outputs = self.llm.generate_outputs(
inputs=formatted_inputs,
num_generations=self.num_generations,
**self.llm.get_generation_kwargs(),
)
task_outputs = []
for input, input_outputs in zip(inputs, outputs):
formatted_outputs = self._format_outputs(input_outputs, input)
for formatted_output in formatted_outputs:
if "image" in formatted_output and formatted_output["image"]:
# use prompt as filename
prompt_hash = hashlib.md5(input["prompt"].encode()).hexdigest()
self.save_artifact(
name="images",
write_function=lambda path: formatted_output["image"].save(
path / f"{prompt_hash}.jpeg"
),
metadata={"type": "image", "library": "diffusers"},
)
formatted_output["image"] = {
"path": f"artifacts/{self.name}/images/{prompt_hash}.jpeg"
}
task_output = {
**input,
**formatted_output,
"model_name": self.llm.model_name,
}
task_outputs.append(task_output)
yield task_outputs