easy_ml 0.2.0.pre.rc48 → 0.2.0.pre.rc50
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.
- checksums.yaml +4 -4
- data/app/frontend/components/ScheduleModal.tsx +15 -10
- data/app/jobs/easy_ml/training_job.rb +4 -2
- data/app/models/easy_ml/datasource.rb +0 -1
- data/app/models/easy_ml/retraining_job.rb +1 -0
- data/lib/easy_ml/version.rb +1 -1
- data/public/easy_ml/assets/.vite/manifest.json +1 -1
- data/public/easy_ml/assets/assets/entrypoints/{Application.tsx-KJwHDm3F.js → Application.tsx-u6L4jkNy.js} +35 -35
- data/public/easy_ml/assets/assets/entrypoints/Application.tsx-u6L4jkNy.js.map +4313 -0
- metadata +3 -3
- data/public/easy_ml/assets/assets/entrypoints/Application.tsx-KJwHDm3F.js.map +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9571100b7780c1c76d4305566045b890cde5b7a4a0b4ad8526f26d8a3c6337aa
|
4
|
+
data.tar.gz: 129ba88803cfa45fc6382599e0e8615977567c461d2de9b70318f43d45a496ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb6d4c3b678e58f813a8cc1822a75812fdeb0d2ad65b8d67ecb600bdf2822e522a3cae04c067ad91d4894e6f60dcf3e72bbe52a4206ac7892dde3ad0da8f9a89
|
7
|
+
data.tar.gz: 856438e590cec6306d64c64f7314b81c3eee907fc760fa1fd2978a0fff13fa71df5bc483aae3ee24a5ea7403043f6258f16c985e7e1e334c1e2782822786c56d
|
@@ -44,16 +44,16 @@ interface ScheduleModalProps {
|
|
44
44
|
|
45
45
|
const METRICS = {
|
46
46
|
classification: [
|
47
|
-
{ value: 'accuracy_score', label: 'Accuracy', description: 'Overall prediction accuracy' },
|
48
|
-
{ value: 'precision_score', label: 'Precision', description: 'Ratio of true positives to predicted positives' },
|
49
|
-
{ value: 'recall_score', label: 'Recall', description: 'Ratio of true positives to actual positives' },
|
50
|
-
{ value: 'f1_score', label: 'F1 Score', description: 'Harmonic mean of precision and recall' }
|
47
|
+
{ value: 'accuracy_score', label: 'Accuracy', description: 'Overall prediction accuracy', direction: 'maximize' },
|
48
|
+
{ value: 'precision_score', label: 'Precision', description: 'Ratio of true positives to predicted positives', direction: 'maximize' },
|
49
|
+
{ value: 'recall_score', label: 'Recall', description: 'Ratio of true positives to actual positives', direction: 'maximize' },
|
50
|
+
{ value: 'f1_score', label: 'F1 Score', description: 'Harmonic mean of precision and recall', direction: 'maximize' }
|
51
51
|
],
|
52
52
|
regression: [
|
53
|
-
{ value: 'mean_absolute_error', label: 'Mean Absolute Error', description: 'Average absolute differences between predicted and actual values' },
|
54
|
-
{ value: 'mean_squared_error', label: 'Mean Squared Error', description: 'Average squared differences between predicted and actual values' },
|
55
|
-
{ value: 'root_mean_squared_error', label: 'Root Mean Squared Error', description: 'Square root of mean squared error' },
|
56
|
-
{ value: 'r2_score', label: 'R² Score', description: 'Proportion of variance in the target that is predictable' }
|
53
|
+
{ value: 'mean_absolute_error', label: 'Mean Absolute Error', description: 'Average absolute differences between predicted and actual values', direction: 'minimize' },
|
54
|
+
{ value: 'mean_squared_error', label: 'Mean Squared Error', description: 'Average squared differences between predicted and actual values', direction: 'minimize' },
|
55
|
+
{ value: 'root_mean_squared_error', label: 'Root Mean Squared Error', description: 'Square root of mean squared error', direction: 'minimize' },
|
56
|
+
{ value: 'r2_score', label: 'R² Score', description: 'Proportion of variance in the target that is predictable', direction: 'maximize' }
|
57
57
|
]
|
58
58
|
};
|
59
59
|
|
@@ -609,8 +609,13 @@ export function ScheduleModal({ isOpen, onClose, onSave, initialData, tunerJobCo
|
|
609
609
|
<div className="ml-3">
|
610
610
|
<h3 className="text-sm font-medium text-blue-800">Deployment Criteria</h3>
|
611
611
|
<p className="mt-2 text-sm text-blue-700">
|
612
|
-
|
613
|
-
|
612
|
+
{(() => {
|
613
|
+
const metricsList = METRICS[initialData.task === 'classification' ? 'classification' : 'regression'];
|
614
|
+
const selectedMetric = metricsList.find(m => m.value === formData.retraining_job_attributes.metric);
|
615
|
+
const direction = selectedMetric?.direction === 'minimize' ? 'below' : 'above';
|
616
|
+
|
617
|
+
return `The model will be automatically deployed when the ${selectedMetric?.label} is ${direction} ${formData.retraining_job_attributes.threshold}.`;
|
618
|
+
})()}
|
614
619
|
</p>
|
615
620
|
</div>
|
616
621
|
</div>
|
@@ -10,13 +10,14 @@ module EasyML
|
|
10
10
|
|
11
11
|
@last_activity = Time.current
|
12
12
|
setup_signal_traps
|
13
|
-
|
13
|
+
@monitor_thread = start_monitor_thread
|
14
14
|
|
15
15
|
@model.actually_train do |iteration_info|
|
16
16
|
@last_activity = Time.current
|
17
17
|
end
|
18
18
|
ensure
|
19
|
-
|
19
|
+
@monitor_thread&.exit
|
20
|
+
@model.unlock!
|
20
21
|
end
|
21
22
|
|
22
23
|
private
|
@@ -42,6 +43,7 @@ module EasyML
|
|
42
43
|
@cleaned_up = true
|
43
44
|
@model.last_run.update(status: "failed", error_message: error_message, completed_at: Time.current)
|
44
45
|
@model.update(is_training: false)
|
46
|
+
@model.unlock!
|
45
47
|
end
|
46
48
|
|
47
49
|
def start_monitor_thread
|
@@ -46,7 +46,6 @@ module EasyML
|
|
46
46
|
validates :name, presence: true
|
47
47
|
validates :datasource_type, presence: true
|
48
48
|
validates :datasource_type, inclusion: { in: DATASOURCE_NAMES }
|
49
|
-
# validate :validate_datasource_exists
|
50
49
|
|
51
50
|
before_save :set_root_dir
|
52
51
|
after_initialize :read_adapter_from_configuration, if: :persisted?
|
data/lib/easy_ml/version.rb
CHANGED