diff --git a/src/renderer/components/Experiment/Eval/EvalJobsTable.tsx b/src/renderer/components/Experiment/Eval/EvalJobsTable.tsx index 13e9e0a3bf68031aa7641ee8c629ebd6a5af5540..ba8444fafeb961d13ca888e98e9a5393619d67e8 100644 --- a/src/renderer/components/Experiment/Eval/EvalJobsTable.tsx +++ b/src/renderer/components/Experiment/Eval/EvalJobsTable.tsx @@ -16,11 +16,13 @@ import { FileDigitIcon, Grid3X3Icon, Trash2Icon, + LineChartIcon, Type, } from 'lucide-react'; import { useState, useEffect } from 'react'; import useSWR from 'swr'; import * as chatAPI from '../../../lib/transformerlab-api-sdk'; +import TensorboardModal from '../Train/TensorboardModal'; import ViewOutputModalStreaming from './ViewOutputModalStreaming'; import ViewCSVModal from './ViewCSVModal'; import ViewPlotModal from './ViewPlotModal'; @@ -96,8 +98,8 @@ const EvalJobsTable = () => { const [openPlotModal, setOpenPlotModal] = useState(false); const [currentJobId, setCurrentJobId] = useState(''); const [currentScore, setCurrentScore] = useState(''); - const [fileNameForDetailedReport, setFileNameForDetailedReport] = - useState(''); + const [currentTensorboardForModal, setCurrentTensorboardForModal] = useState(-1); + const [fileNameForDetailedReport, setFileNameForDetailedReport] = useState(''); const fetchCSV = async (jobId) => { const response = await fetch( @@ -152,6 +154,10 @@ const EvalJobsTable = () => { setFileName={setFileNameForDetailedReport} fileName={fileNameForDetailedReport} /> + <TensorboardModal + currentTensorboard={currentTensorboardForModal} + setCurrentTensorboard={setCurrentTensorboardForModal} + /> <Box sx={{ display: 'flex', @@ -173,6 +179,7 @@ const EvalJobsTable = () => { </Typography> )} </Box> + <Sheet sx={{ overflowY: 'scroll' }}> <Table stickyHeader> <thead> @@ -286,6 +293,18 @@ const EvalJobsTable = () => { variant="soft" sx={{ justifyContent: 'flex-end' }} > + {job?.job_data?.tensorboard_output_dir && ( + <Button + size="sm" + variant="plain" + onClick={() => { + setCurrentTensorboardForModal(job?.id); + }} + startDecorator={<LineChartIcon />} + > + Tensorboard + </Button> + )} <Button onClick={() => { setViewOutputFromJob(job?.id); diff --git a/src/renderer/components/Experiment/Eval/EvalModal.tsx b/src/renderer/components/Experiment/Eval/EvalModal.tsx index 04dde6ec240c8a21929d98288010c0a4cb7b50ed..e005a54be5ab5b28e508a2fc4e64911b254a947a 100644 --- a/src/renderer/components/Experiment/Eval/EvalModal.tsx +++ b/src/renderer/components/Experiment/Eval/EvalModal.tsx @@ -287,7 +287,7 @@ export default function EvalModal({ } else { console.log('formJson:', formJson); const template_name = formJson.template_name; - delete formJson.template_name; + // delete formJson.template_name; const result = await chatAPI.EXPERIMENT_ADD_EVALUATION( experimentInfo?.id, template_name, diff --git a/src/renderer/components/Settings/TransformerLabSettings.tsx b/src/renderer/components/Settings/TransformerLabSettings.tsx index 0e2654a2e5b653fe649f626c1682a45597417b06..e845ec3c9ade830810a748cf767f4a426f56c2b4 100644 --- a/src/renderer/components/Settings/TransformerLabSettings.tsx +++ b/src/renderer/components/Settings/TransformerLabSettings.tsx @@ -206,6 +206,8 @@ export default function TransformerLabSettings() { <Option value="DOWNLOAD_MODEL">Download Model</Option> <Option value="LOAD_MODEL">Load Model</Option> <Option value="TRAIN">Train</Option> + <Option value="GENERATE">Generate</Option> + <Option value="EVAL">Evaluate</Option> </Select> {showJobsOfType !== 'NONE' && ( <Table sx={{ tableLayout: 'auto', overflow: 'scroll' }}>