Skip to content

Commit

Permalink
state/knob issues, rename presets to be presets, improve run-button g… (
Browse files Browse the repository at this point in the history
  • Loading branch information
mwdchang authored Aug 19, 2024
1 parent 5a1c90a commit ac2cae5
Showing 1 changed file with 54 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
</h5>
<div class="input-row">
<div class="label-and-input">
<tera-input-number inputId="integeronly" v-model="numSamples" @update:model-value="updateState" />
<tera-input-number inputId="integeronly" v-model="knobs.numSamples" @update:model-value="updateState" />
</div>
</div>
<h5>
Expand All @@ -95,7 +95,7 @@
<label for="5">Method</label>
<Dropdown
id="5"
v-model="method"
v-model="knobs.method"
:options="[CiemssMethodOptions.dopri5, CiemssMethodOptions.euler]"
@update:model-value="updateState"
/>
Expand All @@ -112,15 +112,19 @@
<div class="input-row">
<div class="label-and-input">
<label for="num-iterations">Number of solver iterations</label>
<tera-input-number inputId="integeronly" v-model="numIterations" @update:model-value="updateState" />
<tera-input-number
inputId="integeronly"
v-model="knobs.numIterations"
@update:model-value="updateState"
/>
</div>
<div class="label-and-input">
<label for="num-samples">End time for forecast</label>
<tera-input-number inputId="integeronly" v-model="knobs.endTime" />
</div>
<div class="label-and-input">
<label for="learning-rate">Learning rate</label>
<tera-input-number inputId="numberonly" v-model="learningRate" @update:model-value="updateState" />
<tera-input-number inputId="numberonly" v-model="knobs.learningRate" @update:model-value="updateState" />
</div>
<div class="label-and-input">
<label>Inference algorithm</label>
Expand Down Expand Up @@ -242,7 +246,6 @@ import { CalibrateMap, setupDatasetInput, setupModelInput } from '@/services/cal
import TeraDrilldown from '@/components/drilldown/tera-drilldown.vue';
import TeraDrilldownSection from '@/components/drilldown/tera-drilldown-section.vue';
import TeraDrilldownPreview from '@/components/drilldown/tera-drilldown-preview.vue';
import TeraPyciemssCancelButton from '@/components/pyciemss/tera-pyciemss-cancel-button.vue';
import TeraProgressSpinner from '@/components/widgets/tera-progress-spinner.vue';
import TeraNotebookError from '@/components/drilldown/tera-notebook-error.vue';
import TeraOperatorOutputSummary from '@/components/operator/tera-operator-output-summary.vue';
Expand Down Expand Up @@ -275,6 +278,7 @@ import TeraChartControl from '@/components/workflow/tera-chart-control.vue';
import { CiemssPresetTypes, DrilldownTabs } from '@/types/common';
import TeraInputText from '@/components/widgets/tera-input-text.vue';
import { displayNumber } from '@/utils/number';
import TeraPyciemssCancelButton from '@/components/pyciemss/tera-pyciemss-cancel-button.vue';
import type { CalibrationOperationStateCiemss } from './calibrate-operation';
import { renameFnGenerator, mergeResults } from './calibrate-utils';
Expand All @@ -284,36 +288,49 @@ const props = defineProps<{
const emit = defineEmits(['close', 'select-output', 'update-state']);
const toast = useToastService();
interface BasicKnobs {
numIterations: number;
numSamples: number;
endTime: number;
stepSize: number;
learningRate: number;
method: string;
}
const knobs = ref<BasicKnobs>({
numIterations: props.node.state.numIterations ?? 1000,
numSamples: props.node.state.numSamples ?? 100,
endTime: props.node.state.endTime ?? 100,
stepSize: props.node.state.stepSize ?? 1,
learningRate: props.node.state.learningRate ?? 0.1,
method: props.node.state.method ?? CiemssMethodOptions.dopri5
});
const presetType = computed(() => {
if (numSamples.value === speedValues.numSamples && method.value === speedValues.method) {
if (knobs.value.numSamples === speedPreset.numSamples && knobs.value.method === speedPreset.method) {
return CiemssPresetTypes.Fast;
}
if (numSamples.value === qualityValues.numSamples && method.value === qualityValues.method) {
if (knobs.value.numSamples === qualityPreset.numSamples && knobs.value.method === qualityPreset.method) {
return CiemssPresetTypes.Normal;
}
return '';
});
const speedValues = Object.freeze({
const speedPreset = Object.freeze({
numSamples: 1,
method: CiemssMethodOptions.euler,
numIterations: 10,
learningRate: 0.1
});
const qualityValues = Object.freeze({
const qualityPreset = Object.freeze({
numSamples: 100,
method: CiemssMethodOptions.dopri5,
numIterations: 1000,
learningRate: 0.03
});
const numSamples = ref<number>(props.node.state.numSamples);
const method = ref<string>(props.node.state.method);
const numIterations = ref<number>(props.node.state.numIterations);
const learningRate = ref<number>(props.node.state.learningRate);
const calibrationSettingsToolTip: string = 'TODO';
const numberOfSamplesTooltip: string = 'TODO';
const inferenceOptionsTooltip: string = 'TODO';
Expand Down Expand Up @@ -358,49 +375,39 @@ const mappingDropdownPlaceholder = computed(() => {
const updateState = () => {
const state = _.cloneDeep(props.node.state);
state.numSamples = numSamples.value;
state.method = method.value;
state.numIterations = numIterations.value;
state.learningRate = learningRate.value;
state.numSamples = knobs.value.numSamples;
state.method = knobs.value.method;
state.numIterations = knobs.value.numIterations;
state.learningRate = knobs.value.learningRate;
emit('update-state', state);
};
interface BasicKnobs {
numIterations: number;
numSamples: number;
endTime: number;
stepSize: number;
learningRate: number;
method: string;
}
const knobs = ref<BasicKnobs>({
numIterations: props.node.state.numIterations ?? 1000,
numSamples: props.node.state.numSamples ?? 100,
endTime: props.node.state.endTime ?? 100,
stepSize: props.node.state.stepSize ?? 1,
learningRate: props.node.state.learningRate ?? 0.1,
method: props.node.state.method ?? CiemssMethodOptions.dopri5
});
const setPresetValues = (data: CiemssPresetTypes) => {
if (data === CiemssPresetTypes.Normal) {
numSamples.value = qualityValues.numSamples;
method.value = qualityValues.method;
numIterations.value = qualityValues.numIterations;
learningRate.value = qualityValues.learningRate;
knobs.value.numSamples = qualityPreset.numSamples;
knobs.value.method = qualityPreset.method;
knobs.value.numIterations = qualityPreset.numIterations;
knobs.value.learningRate = qualityPreset.learningRate;
}
if (data === CiemssPresetTypes.Fast) {
numSamples.value = speedValues.numSamples;
method.value = speedValues.method;
numIterations.value = speedValues.numIterations;
learningRate.value = speedValues.learningRate;
knobs.value.numSamples = speedPreset.numSamples;
knobs.value.method = speedPreset.method;
knobs.value.numIterations = speedPreset.numIterations;
knobs.value.learningRate = speedPreset.learningRate;
}
};
const disableRunButton = computed(
() => !currentDatasetFileName.value || !csvAsset.value || !modelConfigId.value || !datasetId.value
);
const disableRunButton = computed(() => {
const timestampMapping = mapping.value.find((d) => d.modelVariable === 'timestamp');
return (
!currentDatasetFileName.value ||
!csvAsset.value ||
!modelConfigId.value ||
!datasetId.value ||
!timestampMapping ||
timestampMapping.datasetVariable === ''
);
});
const selectedOutputId = ref<string>();
const lossChartContainer = ref(null);
Expand Down

0 comments on commit ac2cae5

Please sign in to comment.