mirror of
https://github.com/SakanaAI/doc-to-lora.git
synced 2026-07-23 17:01:04 +02:00
update webui for new folder struct
This commit is contained in:
parent
5a185ff1dd
commit
7ce5316041
2 changed files with 90 additions and 16 deletions
42
webui/app.py
42
webui/app.py
|
|
@ -10,7 +10,7 @@ from transformers import pipeline
|
|||
|
||||
app = Flask(__name__)
|
||||
|
||||
TRAIN_OUTPUTS_DIR = "train_outputs"
|
||||
TRAIN_OUTPUTS_DIR = "train_outputs/runs"
|
||||
chat_generator = None
|
||||
chat_model_name = None
|
||||
chat_history = None
|
||||
|
|
@ -142,13 +142,41 @@ def visualize(run):
|
|||
if not os.path.isdir(logdir):
|
||||
abort(404, description=f"Run '{run}' not found.")
|
||||
|
||||
data = get_run_data(logdir)
|
||||
if data is None:
|
||||
abort(404, description=f"'all_results.json' not found in '{run}'.")
|
||||
eval_folders = [
|
||||
d
|
||||
for d in os.listdir(logdir)
|
||||
if os.path.isdir(os.path.join(logdir, d)) and d.startswith("eval-results-")
|
||||
]
|
||||
eval_folders.sort(
|
||||
key=lambda d: os.path.getctime(os.path.join(logdir, d)),
|
||||
reverse=True,
|
||||
)
|
||||
|
||||
generated_data = get_generated_text_data(logdir)
|
||||
selected_eval_folder = request.args.get("eval_folder")
|
||||
|
||||
# Load config.yaml from the run directory
|
||||
if eval_folders and selected_eval_folder:
|
||||
# New structure with eval folders and a folder is selected
|
||||
eval_path = os.path.join(logdir, selected_eval_folder)
|
||||
data = get_run_data(eval_path)
|
||||
if data is None:
|
||||
abort(
|
||||
404,
|
||||
description=f"'all_results.json' not found in '{selected_eval_folder}'.",
|
||||
)
|
||||
generated_data = get_generated_text_data(eval_path)
|
||||
elif not eval_folders:
|
||||
# Old structure: eval results in the root folder
|
||||
data = get_run_data(logdir)
|
||||
if data is None:
|
||||
abort(404, description=f"'all_results.json' not found in '{run}'.")
|
||||
generated_data = get_generated_text_data(logdir)
|
||||
selected_eval_folder = "root" # Indicate root folder for template
|
||||
else:
|
||||
# New structure, but no eval folder selected yet
|
||||
data = None
|
||||
generated_data = None
|
||||
|
||||
# Load config.yaml from the run directory (root level)
|
||||
config_path = os.path.join(logdir, "config.yaml")
|
||||
try:
|
||||
with open(config_path) as f:
|
||||
|
|
@ -160,6 +188,8 @@ def visualize(run):
|
|||
return render_template(
|
||||
"visualize.html",
|
||||
run=run,
|
||||
eval_folders=eval_folders,
|
||||
selected_eval_folder=selected_eval_folder,
|
||||
data=data,
|
||||
generated_data=generated_data,
|
||||
model_name=model_name,
|
||||
|
|
|
|||
|
|
@ -213,6 +213,23 @@
|
|||
}
|
||||
|
||||
/* Removed system-msg-container button styles */
|
||||
|
||||
#eval-folder-selection {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
#eval-folder-selection label {
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#eval-folder-selection select {
|
||||
width: 300px;
|
||||
padding: 8px;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 5px;
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
|
||||
|
|
@ -227,8 +244,23 @@
|
|||
|
||||
<div class="container">
|
||||
<div class="column">
|
||||
{% if eval_folders %} <!-- Conditionally show folder selection if eval_folders exist -->
|
||||
<div id="eval-folder-selection">
|
||||
<label for="eval_folder">Select Evaluation Folder:</label>
|
||||
<select id="eval_folder" onchange="loadEvalFolder()">
|
||||
<option value="">-- Select Folder --</option>
|
||||
{% for folder in eval_folders %}
|
||||
<option value="{{ folder }}" {% if selected_eval_folder==folder %}selected{% endif %}>{{ folder }}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if data %}
|
||||
{% for group, results in data.items() %}
|
||||
<h2>{{ group }}</h2>
|
||||
<h2>{{ group }} ({% if selected_eval_folder and selected_eval_folder != "root" %}{{ selected_eval_folder }}{%
|
||||
else %}root{% endif %})</h2>
|
||||
<table class="performance-table">
|
||||
<thead>
|
||||
<tr>
|
||||
|
|
@ -267,6 +299,7 @@
|
|||
</tbody>
|
||||
</table>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="column">
|
||||
|
|
@ -274,7 +307,8 @@
|
|||
{% for split, data in generated_data.items() %}
|
||||
{% if data %}
|
||||
<div class="generated-text-container">
|
||||
<h2>Generated Text ({{ split }})</h2>
|
||||
<h2>Generated Text ({{ split }} - {% if selected_eval_folder and selected_eval_folder != "root" %}{{
|
||||
selected_eval_folder }}{% else %}root{% endif %})</h2>
|
||||
<div id="{{ split }}-text" class="generated-text-display">
|
||||
<p id="{{ split }}-context-container" style="display: none;">
|
||||
<strong>Context:</strong> <span id="{{ split }}-context"></span>
|
||||
|
|
@ -294,8 +328,9 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<p>No generated text data found.</p>
|
||||
{% elif selected_eval_folder %}
|
||||
<p>No generated text data found in {% if selected_eval_folder and selected_eval_folder != "root" %}{{
|
||||
selected_eval_folder }}{% else %}root{% endif %}.</p>
|
||||
{% endif %}
|
||||
|
||||
<div id="load-chat-container">
|
||||
|
|
@ -358,15 +393,18 @@
|
|||
updateText(split);
|
||||
}
|
||||
|
||||
// Initialize text for each split using JavaScript
|
||||
// Initialize text for each split using JavaScript if generatedData is available
|
||||
window.addEventListener('DOMContentLoaded', (event) => {
|
||||
for (const split in generatedData) {
|
||||
if (generatedData[split].length > 0) {
|
||||
updateText(split);
|
||||
if (generatedData && Object.keys(generatedData).length > 0) {
|
||||
for (const split in generatedData) {
|
||||
if (generatedData[split].length > 0) {
|
||||
updateText(split);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
function goBack() {
|
||||
window.history.back();
|
||||
}
|
||||
|
|
@ -488,9 +526,15 @@
|
|||
chatOutput.scrollTop = chatOutput.scrollHeight;
|
||||
}
|
||||
|
||||
// Removed the separate updateSystemMsg function
|
||||
function loadEvalFolder() {
|
||||
const selectedFolder = document.getElementById('eval_folder').value;
|
||||
const runName = '{{ run }}';
|
||||
if (selectedFolder) {
|
||||
window.location.href = `/visualize/${runName}?eval_folder=${selectedFolder}`;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Updated sendMessage function handles system msg update and chat message
|
||||
// Bind the sendMessage function to the Enter key
|
||||
document.getElementById('chat-input').addEventListener('keypress', function (e) {
|
||||
if (e.key === 'Enter') {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue