{{ ui_lang.training_heading|default('Training') }}
{{ ui_lang.training_lede|default('Fit a model on the annotations you already have, then send its predictions back as prelabels for review. Each run records what it trained on and which items it held out, so the score on this page is measured on data the model never saw.') }}
{{ ui_lang.training_start_heading|default('Start a run') }}
{% if not trainers %}{{ ui_lang.training_no_trainers|default('No trainers are registered.') }}
{% else %}
running
{#- A bare div conveys nothing to a screen reader, so the only signal a
non-sighted admin gets that a long run is progressing is silence. -#}
{{ ui_lang.training_writeback_off|default('Predictions are stored but not shown to annotators. Name the schemas
under model_training.writeback.schemas to turn prelabels on — worth doing only once a run\'s held-out
score justifies it, because prelabels bias annotators toward accepting them.') }}
{% endif %}
{{ ui_lang.training_runs_heading|default('Runs') }}
{% if not runs %}{{ ui_lang.training_no_runs|default('No runs yet.') }}
{% else %}| {{ ui_lang.training_col_run|default('Run') }} | {{ ui_lang.training_col_status|default('Status') }} | {{ ui_lang.training_col_trainer|default('Trainer') }} | {{ ui_lang.training_col_schemas|default('Schemas') }} | {{ ui_lang.training_col_train|default('Train') }} | {{ ui_lang.training_col_val|default('Val') }} | {{ ui_lang.training_col_score|default('Held-out score') }} | {{ ui_lang.training_col_duration|default('Duration') }} |
|---|---|---|---|---|---|---|---|
| {{ r.run_id }} | {{ r.status }} | {{ r.trainer }} | {{ r.schema_names|join(', ') }} | {{ r.n_train }} | {{ r.n_val }} | {%- set score = r.metrics.get('accuracy') or r.metrics.get('train_accuracy') -%} {%- if score is not none %}{{ '%.3f'|format(score) }}{% else %}not scored{% endif -%} | {%- if r.duration %}{{ '%.1fs'|format(r.duration) }}{% else %}—{% endif -%} |
{{ ui_lang.training_trainers_heading|default('Trainers') }}
| {{ ui_lang.training_col_name|default('Name') }} | {{ ui_lang.training_col_handles|default('Handles') }} | {{ ui_lang.training_col_modalities|default('Modalities') }} | {{ ui_lang.training_col_licence|default('Licence') }} | {{ ui_lang.training_col_available|default('Available') }} |
|---|---|---|---|---|
| {{ t.name }} | {{ t.kinds|join(', ') }} | {{ t.modalities|join(', ') }} | {{ t.licence }}{% if t.licence_ack %} {{ ui_lang.training_ack_required|default('confirm before use') }}{% endif %} | {%- if t.available -%} {{ ui_lang.training_yes|default('yes') }} {%- else -%} {{ t.install_hint or t.unavailable_reason or ui_lang.training_no|default('no') }} {%- endif -%} |