in gemini/prompts/prompt_optimizer/vapo_lib.py [0:0]
def monitor_progress(self, job: aiplatform.CustomJob) -> bool:
"""Monitor the progress of the optimization job."""
self.job_state_display.update(HTML(f"<span>Job State: {job.state.name}</span>"))
# Initial display of the templates.
instruction_templates_file = f"{self.output_path}/instruction/templates.json"
demo_templates_file = f"{self.output_path}/demonstration/templates.json"
if not job.done():
self.instruction_df = self.update_progress(
self.instruction_progress_bar,
instruction_templates_file,
self.instruction_df,
self.instruction_display,
self.instruction_best,
self.instruction_score,
self.eval_metric,
)
self.demo_df = self.update_progress(
self.demo_progress_bar,
demo_templates_file,
self.demo_df,
self.demo_display,
self.demo_best,
self.demo_score,
self.eval_metric,
)
return True
if job.state.name != "JOB_STATE_SUCCEEDED":
errors = [f"Error: Job failed with error {job.error}."]
for err_file in [
f"{self.output_path}/instruction/error.json",
f"{self.output_path}/demonstration/error.json",
f"{self.output_path}/error.json",
]:
if gfile.exists(err_file):
with gfile.GFile(err_file, "r") as f:
error_json = json.load(f)
errors.append(f"Detailed error: {error_json['Error']}")
errors.append(
f"Please feel free to send {err_file} to the VAPO team to help"
" resolving the issue."
)
errors.append(
"All the templates found before failure can be found under"
f" {self.output_path}"
)
errors.append(
"Please consider rerunning to make sure the failure is intransient."
)
err = "\n".join(errors)
err = err.replace("\n", "<br>")
self.status_display.update(HTML(f'<span style="color: red;">{err}</span>'))
else:
self.status_display.update(
HTML(
'<span style="color: green;">Job succeeded!</span> <span>All the'
f" artifacts can be found under {self.output_path}</span>"
)
)
return False