supervisely 6.73.390__py3-none-any.whl → 6.73.392__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- supervisely/app/widgets/experiment_selector/experiment_selector.py +21 -3
- supervisely/app/widgets/experiment_selector/template.html +49 -70
- supervisely/app/widgets/report_thumbnail/report_thumbnail.py +19 -4
- supervisely/decorators/profile.py +20 -0
- supervisely/nn/benchmark/utils/detection/utlis.py +7 -0
- supervisely/nn/experiments.py +4 -0
- supervisely/nn/inference/gui/serving_gui_template.py +71 -11
- supervisely/nn/inference/inference.py +108 -6
- supervisely/nn/training/gui/classes_selector.py +246 -27
- supervisely/nn/training/gui/gui.py +318 -234
- supervisely/nn/training/gui/hyperparameters_selector.py +2 -2
- supervisely/nn/training/gui/model_selector.py +42 -1
- supervisely/nn/training/gui/tags_selector.py +1 -1
- supervisely/nn/training/gui/train_val_splits_selector.py +8 -7
- supervisely/nn/training/gui/training_artifacts.py +10 -1
- supervisely/nn/training/gui/training_process.py +17 -1
- supervisely/nn/training/train_app.py +227 -72
- supervisely/template/__init__.py +2 -0
- supervisely/template/base_generator.py +90 -0
- supervisely/template/experiment/__init__.py +0 -0
- supervisely/template/experiment/experiment.html.jinja +537 -0
- supervisely/template/experiment/experiment_generator.py +996 -0
- supervisely/template/experiment/header.html.jinja +154 -0
- supervisely/template/experiment/sidebar.html.jinja +240 -0
- supervisely/template/experiment/sly-style.css +397 -0
- supervisely/template/experiment/template.html.jinja +18 -0
- supervisely/template/extensions.py +172 -0
- supervisely/template/template_renderer.py +253 -0
- {supervisely-6.73.390.dist-info → supervisely-6.73.392.dist-info}/METADATA +3 -1
- {supervisely-6.73.390.dist-info → supervisely-6.73.392.dist-info}/RECORD +34 -23
- {supervisely-6.73.390.dist-info → supervisely-6.73.392.dist-info}/LICENSE +0 -0
- {supervisely-6.73.390.dist-info → supervisely-6.73.392.dist-info}/WHEEL +0 -0
- {supervisely-6.73.390.dist-info → supervisely-6.73.392.dist-info}/entry_points.txt +0 -0
- {supervisely-6.73.390.dist-info → supervisely-6.73.392.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
<div class="experiment-info-header">
|
|
2
|
+
<div class="experiment-info-subheader">
|
|
3
|
+
<h1>{{ experiment.name }}</h1>
|
|
4
|
+
|
|
5
|
+
<div class="experiment-info-buttons">
|
|
6
|
+
|
|
7
|
+
<!-- Download -->
|
|
8
|
+
<sly-iw-download-button
|
|
9
|
+
style="padding: 7px 8px;"
|
|
10
|
+
:disabled="false"
|
|
11
|
+
teamFilesPath="{{ experiment.paths.artifacts_dir.path + '/' }}"
|
|
12
|
+
:command="command">
|
|
13
|
+
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABn0lEQVR4nO2YT04CMRSHPzdzDEAT4lZIvICDHsiFia7Y4BEQTsF50CiCW42iCzeTjKkpyXNScDodp4P0S17Sgfb1/fr6ZzoQCAQC/5VDYAE8Am22kCsg1XbJFtIXAlR56+gHAZ4JGfBNyIBvQgbKogWMgScgEXu7tE9gYJGBa90mNVii+xoBTdfgz4D3NR1l7SOngD1dN4/PJdBzGfm8wdtmYLAhA6lBRKOIgLFw8gCcAFEFizgCYmAm2t8UiP97Hq4cqOCr3oVi0X5eoP2PBWsz8mUJiDIL2xo5D32dA6lLDDsj4AC4A+6Bbg4BXV1Xzet2HQSci3ovQoRJQFfXWf1+UQcBrUxQqtwxCOgY6u3XQYBpZFV5Ip4nhv/ldPMuQHEEPOc4WV+B4z+KwbnxbyJsgve2ja4TYRu813MgK6JI8N4PMrVIb4FpzgVbOwFlkO60gMTxbdSVyPVtdOF4H3ClJ/pXn+itGQkHM+2wikxEwGnmRjYs4qip76OpZ3sreidGj/rSc/AxjjR0CucbvguVaYnua+gy8oFAIEAlfAG3TJLaWbXlEAAAAABJRU5ErkJggg==" alt="download--v1">
|
|
14
|
+
</sly-iw-download-button>
|
|
15
|
+
|
|
16
|
+
<!-- Finetune -->
|
|
17
|
+
<sly-iw-launch-button
|
|
18
|
+
style=""
|
|
19
|
+
:disabled="false"
|
|
20
|
+
:autoRun="false"
|
|
21
|
+
:openInNewWindow="true"
|
|
22
|
+
:selectContext="true"
|
|
23
|
+
:state="{ 'trainTaskId': {{ experiment.task_id }}, 'trainMode': 'continue' }"
|
|
24
|
+
:moduleId="{{ resources.apps.train.module_id }}"
|
|
25
|
+
:command="command">
|
|
26
|
+
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACeElEQVR4nO2Yy2oVQRCGv+AhUXyBqDFqHiEighIXgpHcFH0EF3GnWfgICaJuzEbNwn127oIuYrbeLyAuIiQcycWdRkFNEEZKaqBoZsY5mdMzc6B/aA4zPaf6q+6q6p6BoKCgoJzqAUaAOeA1sAH8Ab4C74GHwGWgm5qpAVxV4ChH2wTGqYn6gTc5wSPTZEUq1wngiwO2CswAp4ADGi7i5JLz3N2q4fsd+J/AVEJ8dwGzDvy8hl1lajhhs6mrQSfAowlrZ74IfEPD6QMwQUml0labqYLw885Kei+xo07CJg14ZxfwkbZLvh2YM4NNJ/RPFICPdLPzqldmsNMJ/Yum/1FOeFti3/l2wMa/1HlX303/wRzwkitHzPU33w5sm8EkoV1tpTjQSIHvUjvxvZ0yV+DQf0JoAegDDms4JcGjjsb313078NwMNpTQP57jHDRr4FE7cd9L3w7YEnkr5ZnpDPjbDrzopum/59uBa2awtxnPjQFPgR/aFnUPcbUXaBqb5z2y/6vxNomftMHmDWNvzedOLG9av81gyylJ3IqO61kqtnmFkmb+UxvgTzrHcSkOeygJXkrjbtWjYfPL2NwoaLMt8LIijzWxpTqd0XvdWueHtNrYhI3hB+sAv5yj/kdOe9GGUCycsL3AxxbB14BJXzF/ocDMy/+u62b1TMNjW48HMtv3geEyS2UWvDvzAnqRCjUS4CvSWAsx36f9NmxK+ZKQpgE9aHUkvPuCvtJp8KLPBuosHQaPUzL3kQ9e9onaqJmxArWHFz0wgOLMOWC//q7UHV50zPmOk9RqCx9rOMOJrZT32NrpqB60mjrjTb2WL2ZBQUFBFNJfCnaIn00BSHcAAAAASUVORK5CYII=" alt="support">
|
|
27
|
+
<span>Finetune</span>
|
|
28
|
+
</sly-iw-launch-button>
|
|
29
|
+
|
|
30
|
+
<!-- Train New -->
|
|
31
|
+
<sly-iw-launch-button
|
|
32
|
+
style=""
|
|
33
|
+
:disabled="false"
|
|
34
|
+
:autoRun="false"
|
|
35
|
+
:openInNewWindow="true"
|
|
36
|
+
:selectContext="true"
|
|
37
|
+
:state="{ 'trainTaskId': {{ experiment.task_id }}, 'trainMode': 'new' }"
|
|
38
|
+
:moduleId="{{ resources.apps.train.module_id }}"
|
|
39
|
+
:command="command">
|
|
40
|
+
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAACXBIWXMAAAsTAAALEwEAmpwYAAAFcklEQVR4nO2da4hVVRTHf42Zjjg1RUwmSWX0GqlMe9sDUokKv0RUFvVBoje9vkT6oaDI3mVR9KAPFUUY5IfACS2bqKAHOVMRKFpN1JSNWc1ILytPbPgPXS5z7z1733vOvufe9YMNcuc81l7rnL3/55y1tmAYhmEYhmEYhmEYhmEYzccewBnASuAtYBgYUxvWbyu1jdvWaBDTgOuBzUCSsm3WPm5fI5C9gZuA7z0cX962A3cC+1kU0nOAnPZrHY4vbzuBVcAsC0RlDpOT/mig48vbLuAFoNcC8T/Hyyn/ZOj48rYbeB04tV0D4VTKuUB/gPMGgVt1FXeq9eq3wYDj9cuWtlBOHcAS4KMAR72nfWs56nRd3bs9j/8ZcAWwJy3IFHXOR0omwL9y5skB55yroe1vz3N+LfU1rZWk5LCnE/6S845qgA2zNbn/7mnDSJEl7LiU/MWz02Ny1kEZ2NQjm35uZQkbKiV/lHP2zcHGLt2V3wXelb2tJCW/kjOcksmbvTQvbQqcl5pCwo4rjsSzDTaR4uiQuvowQ2VWOClZtAvq0zwuqHql5CkUh7mBQ2omErarTil5NMVldkwJGyold2YoJWPRk6cvnDp4VFewz8m2AbcD3eRDJ/AUMKr2bIMe3KrRrT5uCxgNHtMwXpOHPQ++FbgGmEq+PF1hvlmTw3wzVX3e6ukrd2HX5KeUB9sIXAxMIg6/1bDvHeD8jBXXJPlgY0qfuafwlghAh15bpLHzc+ByYHITBMB9Xq3JQwUZgh73tPMb4GZgesQh6N60k/AjBZiEp8jOPz3t3AHcJWWT1yTsbLzP9y6cCTzgcauPt1Gd7EDyYSZwv87rY6fT9k9I69fCPeHeE3COUdnmbAzGRX15YNSfAQ4nH/YBbgtIY3FPu68A82oc/zi9cog2GjjdfS3wpWcHnTR8FTiB/IamKwNembi2DlhU463Ax7HnQzfzXwIMBHTwTWAx+SmlC4APAuz8BLiogsI7eIJXE9EU4TnAhgZ3MAvOAtYGfKh3V/SyCY63Sn/fIB9E5yTgNQ03Ph3cAlyV9hG9ARwLvKgELR87XcpLKUeoz03HkQFZCAnwgyZQN5FmjTvHk572uTfBhSGpo43qYWVGBnbN0LF9pWSiO7stApBkkJZyaOA7/fJWGCp14Dp9hPfV6KuB+QF2zNe+vvNSywZg/IlyaWAO53pgYYrzL9S2vscflG0tHYBGJOcOSJXMKUnOnaPfBhqQnNsWAWjm9PSk3QLQbAUabRuAZilRavsAxC7SswBUKFP1yeHcVEeZqgWgAk6lLADulswcKklJGdKrZPe30+r8EG8BiIwFIDIWgMhYACJjAYiMBSAyFoDIWAAiYwGIjAUgMhaAyFgAImMBiIwFIDIWgMgUPgCVvunmVTlDuwfg2wodOJNikBQ9AJUWu3BFGs3O8ioBWEFBuLFKJ1yFTbOyOMW35mrVM01DT43cnpdyWFIghDdSBMBtUwgeTJGZ1q9czLyKM2oxknJptULQpeqXNCkkIwrYgpxKllzt2IkTFNK1VAAcx3gse5CUFFG/DFwWWEhdLe3xUuB5OTGZoCy1r5WGoNKaLN+y1qSsNGidlk9YpmK7eSqu3l9V/ZO12uIhyvl0C3TcoH36qlwE5YLg7BT2uG0KR7fWyvEtjEsybu9OYOuKKts7iVpo3KpRd1R5UEsitEUVCjz6lFe6Xf9OUxhSGDrU8dWBFZWNbEMaytqWWUqiXduAIjqftkv/6c8tGVVkFpJO4DytYPJFA4vrEj0Yvq/l2C7MqR658EzXC7yrtWzOGjlxi5b+Gispad0hteVqxN4GntOEulSLhGSxWpZhGIZhGIZhGIZhGIZh4MN/hN4K9eVoLMsAAAAASUVORK5CYII=" alt="graduation-cap">
|
|
41
|
+
<span>Train New</span>
|
|
42
|
+
</sly-iw-launch-button>
|
|
43
|
+
|
|
44
|
+
<!-- Deploy -->
|
|
45
|
+
<sly-iw-launch-button
|
|
46
|
+
style=""
|
|
47
|
+
:disabled="false"
|
|
48
|
+
:autoRun="false"
|
|
49
|
+
:state="{ 'trainTaskId': {{ experiment.task_id }}, }"
|
|
50
|
+
:moduleId="{{ resources.apps.serve.module_id }}"
|
|
51
|
+
:openInNewWindow="true"
|
|
52
|
+
:command="command">
|
|
53
|
+
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACjUlEQVR4nO2Yu2sVQRSHv7tRSRqjNleIGDEgqIWFjYgPxEKv4l+goGgRRMFSEOKjt9DCIBIhImirNqLxUdrEXHyUNnpNSFqJKGhUDszAcdjH3bvZYRb2B1Ps7Myc78yemTk7UKtWrVoFdQC4DswAs8A3YA6YAsaATQSq/cAb4G9GWQKuEJguAL+7gNdOBPElImDCgfsO3AQOAk1gANgInAI+qXZjIcDfdeCfA+tT+pxVbWVNBAUvzysy+u1Q7b8SEPyEqc9SU/VZpGLwomHVb4EA4Y+a0OgArZgxWqrvdIgz31Hvv8SMc1u9vxFi2HRSHBgycW/f7wkNXtQyTgj8YVXfBzxVY7wNEb7bcf4Au4tAjQJt4GeOo7+XBZs0CZfpUTLYg5zQ+pDKu2CjhC/Y6NWB0WWEz3IgSjip84bff5pRg40DqwsaTVqwURnwoh9qwDUF4ZMUlQUvmleD7q0avOiek4ccqxK8aMT8n2ojH6sCb7XL/Gjn2W2CgbdaC7yoKrzVe2V0smrww8roZ6B/GeCXfMFj0lhr+DHF4W3xpq1OCiDXHkXhvTnQAPYBv3KugaSY9+pAE3iZMHtpeX7agvXmwCrgXQ9ZZ9Zu482B08qQhM8t4BzwyoGYVGtiwEk/4pz05sAzZeiqqheY1w6ILOwnTr4v5UPMF/LiQJ+5cLWG5BzQOp8RWrpIAmg1qOolVS9N253ZdTXuhJcGbjtpx4LZxSQduePrkupEwsElV97XHGg55LYAO4ENpt26lATQljNlOnDJmalHJoVwIaYyslg3FbflfpEf9W50pIvYbptzIk2bza40Z2J+2sx8qfAYAw9joBfNbdlJYCWBqwEcAi4Cx4FtZneqVasWYekfCJHJg6JpgYcAAAAASUVORK5CYII=" alt="rocket" />
|
|
54
|
+
<span>Deploy</span>
|
|
55
|
+
</sly-iw-launch-button>
|
|
56
|
+
|
|
57
|
+
<!-- Apply Model -->
|
|
58
|
+
<sly-iw-launch-button class="primary"
|
|
59
|
+
style=""
|
|
60
|
+
:selectContext="true"
|
|
61
|
+
:disabled="false"
|
|
62
|
+
:autoRun="false"
|
|
63
|
+
:moduleId="{{ resources.apps.apply_nn_to_images.module_id }}"
|
|
64
|
+
:openInNewWindow="true"
|
|
65
|
+
:command="command">
|
|
66
|
+
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA50lEQVR4nO3YOw6CQBSF4bHQwIJ9VEYL3JisQtgFBQ3JbyaimcoMxuEOer6aCedyCAnXORH5PUAJnIEWGLAzjBlOPtOU8DX5qYEiZgD/5HN1jBnAV/a0BdbOCLAGdkGeW8yh8J3fzJL0DZ8hyDPEHHhxmWBKJg2QAGrAGGrAGGrAGGrAGGrAGGrAGGrAGGrAGP/WwLD0n/o2OLC3HIJH+MPUtYpf4y16sVVmulq8Rq0WxyEKPy3QZLDcbcYsceE/Ed7xm9fORgNYUwNzAi5An+CL0wNV6vAroCOdLukA4xDVYhsQEZedOy9lmdD5aZkaAAAAAElFTkSuQmCC" alt="monitor--v1">
|
|
67
|
+
<span>Apply Model</span>
|
|
68
|
+
</sly-iw-launch-button>
|
|
69
|
+
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
<div class="experiment-info-subheader-body">
|
|
73
|
+
<div class="experiment-info-subheader-block">
|
|
74
|
+
<div class="experiment-info-subheader-mini-title">
|
|
75
|
+
<h2>Training Info</h2>
|
|
76
|
+
<a href="{{ experiment.training.session.url }}" target="_blank">Session <i class="zmdi zmdi-arrow-right-top" /></a>
|
|
77
|
+
<!-- Launch Logs Button -->
|
|
78
|
+
<sly-iw-launch-button
|
|
79
|
+
style=""
|
|
80
|
+
:disabled="false"
|
|
81
|
+
:autoRun="true"
|
|
82
|
+
:state="{ 'slyFolder': '{{ experiment.training.logs.path }}' }"
|
|
83
|
+
:moduleId="{{ resources.apps.log_viewer.module_id }}"
|
|
84
|
+
:proxyKeepUrl="true"
|
|
85
|
+
:openInNewWindow="true"
|
|
86
|
+
:command="command">
|
|
87
|
+
<span>Logs</span> <i class="zmdi zmdi-arrow-right-top" />
|
|
88
|
+
</sly-iw-launch-button>
|
|
89
|
+
</div>
|
|
90
|
+
<ul>
|
|
91
|
+
<li><strong>Date:</strong> {{ experiment.date }}</li>
|
|
92
|
+
<li><strong>Framework:</strong> {{ experiment.model.framework }}</li>
|
|
93
|
+
<li><strong>Model:</strong> {{ experiment.model.name }}</li>
|
|
94
|
+
{% if experiment.model.base_checkpoint.url and not experiment.model.base_checkpoint.path %}
|
|
95
|
+
<!-- Pretrained Checkpoint -> download link-->
|
|
96
|
+
<li><strong>Base checkpoint:</strong> <a href="{{ experiment.model.base_checkpoint.url }}" target="_blank" download="{{ experiment.model.base_checkpoint.name }}">{{ experiment.model.base_checkpoint.name }}</a></li>
|
|
97
|
+
{% elif experiment.model.base_checkpoint.path %}
|
|
98
|
+
<!-- Custom Checkpoint -> TeamFiles Link -->
|
|
99
|
+
<li><strong>Base checkpoint:</strong> <a href="{{ experiment.model.base_checkpoint.path }}" target="_blank">{{ experiment.model.base_checkpoint.name }}</a></li>
|
|
100
|
+
{% else %}
|
|
101
|
+
<li><strong>Base checkpoint:</strong> {{ experiment.model.base_checkpoint.name }}</li>
|
|
102
|
+
{% endif %}
|
|
103
|
+
<li><strong>Task:</strong> {{ experiment.model.task_type }}</li>
|
|
104
|
+
<li><strong>Device:</strong> {{ experiment.training.device }}</li>
|
|
105
|
+
<li><strong>Training duration:</strong> {{ experiment.training.duration }}</li>
|
|
106
|
+
</ul>
|
|
107
|
+
</div>
|
|
108
|
+
<div class="experiment-info-subheader-block">
|
|
109
|
+
<div class="experiment-info-subheader-mini-title">
|
|
110
|
+
<h2>Training Data</h2>
|
|
111
|
+
<a href="{{ experiment.project.url }}" target="_blank">Project <i class="zmdi zmdi-arrow-right-top" /></a>
|
|
112
|
+
<a href="{{ experiment.paths.artifacts_dir.url }}" target="_blank">Artifacts <i class="zmdi zmdi-arrow-right-top" /></a>
|
|
113
|
+
</div>
|
|
114
|
+
<ul>
|
|
115
|
+
<li><strong>Project:</strong> {{ experiment.project.name }}</li>
|
|
116
|
+
<li><strong>Classes:</strong> ({{ experiment.project.classes.count }}) {% for class_name in experiment.project.classes.names.short_list %}<span class="class-tag">{{ class_name }}</span> {% endfor %}</li>
|
|
117
|
+
<li><strong>Training:</strong> {{ experiment.project.splits.train }} {{ experiment.project.type }}</li>
|
|
118
|
+
<li><strong>Validation:</strong> {{ experiment.project.splits.val }} {{ experiment.project.type }}</li>
|
|
119
|
+
</ul>
|
|
120
|
+
</div>
|
|
121
|
+
{% if experiment.training.evaluation.id %}
|
|
122
|
+
<div class="experiment-info-subheader-block">
|
|
123
|
+
<div class="experiment-info-subheader-mini-title">
|
|
124
|
+
<h2>Evaluation</h2>
|
|
125
|
+
{% if experiment.training.evaluation.id %}
|
|
126
|
+
<a href="{{ experiment.training.evaluation.url }}" target="_blank">Full Report <i class="zmdi zmdi-arrow-right-top" /></a>
|
|
127
|
+
{% endif %}
|
|
128
|
+
</div>
|
|
129
|
+
{% for metric in experiment.training.evaluation.display_metrics %}
|
|
130
|
+
<div class="experiment-metric">
|
|
131
|
+
<span class="experiment-label">{{ metric.name }}</span>
|
|
132
|
+
<span class="experiment-value">{{ metric.value }}</span>
|
|
133
|
+
<div class="experiment-progress-bar">
|
|
134
|
+
<div class="experiment-progress" style="width: {{ metric.percent_value }}%"></div>
|
|
135
|
+
</div>
|
|
136
|
+
</div>
|
|
137
|
+
{% endfor %}
|
|
138
|
+
</div>
|
|
139
|
+
{% endif %}
|
|
140
|
+
</div>
|
|
141
|
+
<div class="experiment-info-subheader-footer-menu">
|
|
142
|
+
{% if experiment.training.evaluation.id %}
|
|
143
|
+
<a :href="`${window.location.pathname}#predictions`" class="active">Predictions</a>
|
|
144
|
+
<a :href="`${window.location.pathname}#evaluation-2`">Evaluation</a>
|
|
145
|
+
{% endif %}
|
|
146
|
+
{% if not experiment.training.evaluation.id %}
|
|
147
|
+
<a :href="`${window.location.pathname}#evaluation-2`" class="active">Evaluation</a>
|
|
148
|
+
{% endif %}
|
|
149
|
+
<a :href="`${window.location.pathname}#artifacts`">Artifacts</a>
|
|
150
|
+
<a :href="`${window.location.pathname}#classes`">Classes</a>
|
|
151
|
+
<a :href="`${window.location.pathname}#hyperparameters`">Hyperparameters</a>
|
|
152
|
+
<a :href="`${window.location.pathname}#api-integration-amp-deployment`">API Integration & Deployment</a>
|
|
153
|
+
</div>
|
|
154
|
+
</div>
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
<div>
|
|
2
|
+
|
|
3
|
+
<sly-style>
|
|
4
|
+
/* Sidebar styles */
|
|
5
|
+
.experiment-sidebar {
|
|
6
|
+
position: sticky;
|
|
7
|
+
top: 30px;
|
|
8
|
+
width: 300px;
|
|
9
|
+
height: 100vh;
|
|
10
|
+
background: #fff;
|
|
11
|
+
padding: 0 20px 20px;
|
|
12
|
+
border-left: 1px solid #ccc;
|
|
13
|
+
border-right: 1px solid #ccc;
|
|
14
|
+
flex-shrink: 0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.experiment-main-wrapper {
|
|
18
|
+
display: flex;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.experiment-sidebar-nav a {
|
|
22
|
+
display: flex;
|
|
23
|
+
align-items: center;
|
|
24
|
+
margin-bottom: 8px;
|
|
25
|
+
color: #007bff;
|
|
26
|
+
text-decoration: none;
|
|
27
|
+
font-size: 14px;
|
|
28
|
+
}
|
|
29
|
+
.experiment-sidebar-nav a .icon {
|
|
30
|
+
margin-right: 6px;
|
|
31
|
+
}
|
|
32
|
+
.experiment-sidebar-nav a:hover {
|
|
33
|
+
text-decoration: underline;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.experiment-sidebar-section {
|
|
37
|
+
margin: 20px 0;
|
|
38
|
+
}
|
|
39
|
+
.experiment-sidebar-section h3 {
|
|
40
|
+
margin-bottom: 8px;
|
|
41
|
+
font-size: 14px;
|
|
42
|
+
color: #878787;
|
|
43
|
+
padding-bottom: 4px;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.experiment-checkpoints-list {
|
|
47
|
+
list-style: none;
|
|
48
|
+
padding: 0;
|
|
49
|
+
margin-left: 10px;
|
|
50
|
+
}
|
|
51
|
+
.experiment-checkpoints-list li {
|
|
52
|
+
margin-bottom: 6px;
|
|
53
|
+
font-size: 13px;
|
|
54
|
+
}
|
|
55
|
+
.experiment-checkpoints-list li a {
|
|
56
|
+
color: #007bff;
|
|
57
|
+
text-decoration: none;
|
|
58
|
+
}
|
|
59
|
+
.experiment-checkpoints-list li a:hover {
|
|
60
|
+
text-decoration: underline;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.experiment-metric {
|
|
64
|
+
margin-bottom: 12px;
|
|
65
|
+
font-size: 13px;
|
|
66
|
+
margin-left: 10px;
|
|
67
|
+
}
|
|
68
|
+
.experiment-metric .experiment-label {
|
|
69
|
+
display: inline-block;
|
|
70
|
+
width: 40px;
|
|
71
|
+
}
|
|
72
|
+
.experiment-metric .experiment-value {
|
|
73
|
+
float: right;
|
|
74
|
+
}
|
|
75
|
+
.experiment-progress-bar {
|
|
76
|
+
background: #eee;
|
|
77
|
+
height: 6px;
|
|
78
|
+
border-radius: 3px;
|
|
79
|
+
overflow: hidden;
|
|
80
|
+
margin-top: 4px;
|
|
81
|
+
}
|
|
82
|
+
.experiment-progress {
|
|
83
|
+
height: 100%;
|
|
84
|
+
background: #28a745;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.experiment-divider {
|
|
88
|
+
border: none;
|
|
89
|
+
height: 1px;
|
|
90
|
+
background-color: #ddd;
|
|
91
|
+
margin: 20px 0;
|
|
92
|
+
width: 50%;
|
|
93
|
+
margin-left: auto;
|
|
94
|
+
margin-right: auto;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
html {
|
|
98
|
+
scroll-behavior: smooth;
|
|
99
|
+
}
|
|
100
|
+
</sly-style>
|
|
101
|
+
|
|
102
|
+
<div>
|
|
103
|
+
<div class="experiment-sidebar-section">
|
|
104
|
+
<h3>🚀 Actions</h3>
|
|
105
|
+
|
|
106
|
+
<div>
|
|
107
|
+
|
|
108
|
+
<sly-iw-launch-button
|
|
109
|
+
style="min-height: 30px; height: 30px; margin-bottom: 5px;"
|
|
110
|
+
title="Deploy"
|
|
111
|
+
description="Deploy to Supervisely"
|
|
112
|
+
icon="https://img.icons8.com/?size=100&id=59881&format=png&color=000000"
|
|
113
|
+
:disabled="false"
|
|
114
|
+
:autoRun="false"
|
|
115
|
+
:state="{ 'trainTaskId': {{ experiment.task_id }}, }"
|
|
116
|
+
:moduleId="{{ resources.apps.serve.module_id }}"
|
|
117
|
+
:openInNewWindow="true"
|
|
118
|
+
:command="command">
|
|
119
|
+
</sly-iw-launch-button>
|
|
120
|
+
|
|
121
|
+
<sly-iw-launch-button
|
|
122
|
+
style="min-height: 30px; height: 30px; margin-bottom: 5px;"
|
|
123
|
+
title="Predict"
|
|
124
|
+
description="Apply Model to Supervisely project"
|
|
125
|
+
icon="https://img.icons8.com/?size=100&id=79621&format=png&color=000000"
|
|
126
|
+
:selectContext="true"
|
|
127
|
+
:disabled="false"
|
|
128
|
+
:autoRun="false"
|
|
129
|
+
:moduleId="{{ resources.apps.apply_nn_to_images.module_id }}"
|
|
130
|
+
:openInNewWindow="true"
|
|
131
|
+
:command="command">
|
|
132
|
+
</sly-iw-launch-button>
|
|
133
|
+
|
|
134
|
+
<sly-iw-download-button
|
|
135
|
+
style="min-height: 30px; height: 30px; margin-bottom: 5px;"
|
|
136
|
+
title="Download"
|
|
137
|
+
description="Zip archive with artifacts"
|
|
138
|
+
icon="https://img.icons8.com/?size=100&id=59783&format=png&color=000000"
|
|
139
|
+
:disabled="false"
|
|
140
|
+
teamFilesPath="{{ experiment.paths.artifacts_dir.path + '/' }}"
|
|
141
|
+
:command="command">
|
|
142
|
+
</sly-iw-download-button>
|
|
143
|
+
|
|
144
|
+
<sly-iw-launch-button
|
|
145
|
+
style="min-height: 30px; height: 30px; margin-bottom: 5px;"
|
|
146
|
+
title="Fine-tune"
|
|
147
|
+
description="Continue training"
|
|
148
|
+
icon="https://img.icons8.com/?size=100&id=61035&format=png&color=000000"
|
|
149
|
+
:disabled="false"
|
|
150
|
+
:autoRun="false"
|
|
151
|
+
:openInNewWindow="true"
|
|
152
|
+
:selectContext="true"
|
|
153
|
+
:state="{ 'trainTaskId': {{ experiment.task_id }}, 'trainMode': 'new' }"
|
|
154
|
+
:moduleId="{{ resources.apps.train.module_id }}"
|
|
155
|
+
:command="command">
|
|
156
|
+
</sly-iw-launch-button>
|
|
157
|
+
|
|
158
|
+
<sly-iw-launch-button
|
|
159
|
+
style="min-height: 30px; height: 30px; margin-bottom: 5px;"
|
|
160
|
+
title="Train New"
|
|
161
|
+
description="Start new training with the same configurations"
|
|
162
|
+
icon="https://img.icons8.com/?size=100&id=74239&format=png&color=000000"
|
|
163
|
+
:disabled="false"
|
|
164
|
+
:autoRun="false"
|
|
165
|
+
:openInNewWindow="true"
|
|
166
|
+
:selectContext="true"
|
|
167
|
+
:state="{ 'trainTaskId': {{ experiment.task_id }}, 'trainMode': 'continue' }"
|
|
168
|
+
:moduleId="{{ resources.apps.train.module_id }}"
|
|
169
|
+
:command="command">
|
|
170
|
+
</sly-iw-launch-button>
|
|
171
|
+
|
|
172
|
+
<sly-iw-launch-button
|
|
173
|
+
style="min-height: 30px; height: 30px; margin-bottom: 5px;"
|
|
174
|
+
title="Logs"
|
|
175
|
+
description="Open training logs"
|
|
176
|
+
icon="https://img.icons8.com/?size=100&id=59881&format=png&color=000000"
|
|
177
|
+
:disabled="false"
|
|
178
|
+
:autoRun="true"
|
|
179
|
+
:state="{ 'slyFolder': {{ experiment.training.logs.path }} }"
|
|
180
|
+
:moduleId="{{ resources.apps.log_viewer.module_id }}"
|
|
181
|
+
:openInNewWindow="true"
|
|
182
|
+
:command="command">
|
|
183
|
+
</sly-iw-launch-button>
|
|
184
|
+
|
|
185
|
+
</div>
|
|
186
|
+
</div>
|
|
187
|
+
<hr class="experiment-divider">
|
|
188
|
+
<div class="experiment-sidebar-section">
|
|
189
|
+
<h3>🔗 Links</h3>
|
|
190
|
+
<nav class="experiment-sidebar-nav">
|
|
191
|
+
<a href="{{ experiment.training.session.url }}" target="_blank"><span class="icon">🎓</span> Open Train App
|
|
192
|
+
<i class="zmdi zmdi-arrow-right-top" style="margin-left: 5px"></i></a>
|
|
193
|
+
<a href="{{ experiment.training.logs.url }}" target="_blank"><span class="icon">📈</span> Training Logs <i
|
|
194
|
+
class="zmdi zmdi-arrow-right-top" style="margin-left: 5px"></i></a>
|
|
195
|
+
<a href="{{ experiment.paths.artifacts_dir.url }}" target="_blank"><span class="icon">📂</span> Team Files Artifacts
|
|
196
|
+
<i class="zmdi zmdi-arrow-right-top" style="margin-left: 5px"></i></a>
|
|
197
|
+
{% if experiment.training.evaluation.id %}
|
|
198
|
+
<a href="{{ experiment.training.evaluation.url }}" target="_blank"><span class="icon">📊</span> Evaluation
|
|
199
|
+
Report <i class="zmdi zmdi-arrow-right-top" style="margin-left: 5px"></i></a>
|
|
200
|
+
{% endif %}
|
|
201
|
+
</nav>
|
|
202
|
+
</div>
|
|
203
|
+
|
|
204
|
+
<div class="experiment-sidebar-section">
|
|
205
|
+
<h3>🏆 Checkpoints</h3>
|
|
206
|
+
<ul class="experiment-checkpoints-list">
|
|
207
|
+
<li><strong>🔥 PyTorch:</strong> <a href="{{ experiment.training.checkpoints.pytorch.url }}"
|
|
208
|
+
download="{{ experiment.training.checkpoints.pytorch.name}}">{{ experiment.training.checkpoints.pytorch.name }}</a> ({{
|
|
209
|
+
experiment.training.checkpoints.pytorch.size }})</li>
|
|
210
|
+
{% if experiment.training.checkpoints.onnx.name %}
|
|
211
|
+
<li><strong>📦 ONNX:</strong> <a href="{{ experiment.training.checkpoints.onnx.url }}"
|
|
212
|
+
download="{{ experiment.training.checkpoints.onnx.name}}">{{ experiment.training.checkpoints.onnx.name }}</a> ({{
|
|
213
|
+
experiment.training.checkpoints.onnx.size }})</li>
|
|
214
|
+
{% endif %}
|
|
215
|
+
{% if experiment.training.checkpoints.tensorrt.name %}
|
|
216
|
+
<li><strong>⚡ TensorRT:</strong> <a href="{{ experiment.training.checkpoints.tensorrt.url }}"
|
|
217
|
+
download="{{ experiment.training.checkpoints.tensorrt.name}}">{{ experiment.training.checkpoints.tensorrt.name }}</a> ({{
|
|
218
|
+
experiment.training.checkpoints.tensorrt.size }})</li>
|
|
219
|
+
{% endif %}
|
|
220
|
+
</ul>
|
|
221
|
+
</div>
|
|
222
|
+
|
|
223
|
+
{% if experiment.training.evaluation.id %}
|
|
224
|
+
<div class="experiment-sidebar-section">
|
|
225
|
+
<h3>📊 Evaluation</h3>
|
|
226
|
+
|
|
227
|
+
{% for metric in experiment.training.evaluation.display_metrics %}
|
|
228
|
+
<div class="experiment-metric">
|
|
229
|
+
<span class="experiment-label">{{ metric.name }}</span>
|
|
230
|
+
<span class="experiment-value">{{ metric.value }}</span>
|
|
231
|
+
<div class="experiment-progress-bar">
|
|
232
|
+
<div class="experiment-progress" style="width: {{ metric.percent_value }}%"></div>
|
|
233
|
+
</div>
|
|
234
|
+
</div>
|
|
235
|
+
{% endfor %}
|
|
236
|
+
</div>
|
|
237
|
+
<hr class="experiment-divider">
|
|
238
|
+
{% endif %}
|
|
239
|
+
</div>
|
|
240
|
+
</div>
|