Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 46 additions & 3 deletions src/guidellm/presentation/data_models.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
import random
from collections import defaultdict
from math import ceil
from typing import TYPE_CHECKING, Optional, Union
from typing import TYPE_CHECKING, Any, Optional, Union

import httpx
from pydantic import BaseModel, computed_field

if TYPE_CHECKING:
from guidellm.benchmark.benchmark import GenerativeBenchmark

from guidellm.dataset.file import FileDatasetCreator
from guidellm.dataset.hf_datasets import HFDatasetsCreator
from guidellm.dataset.in_memory import InMemoryDatasetCreator
from guidellm.dataset.synthetic import SyntheticDatasetConfig, SyntheticDatasetCreator
from guidellm.objects.statistics import DistributionSummary


Expand Down Expand Up @@ -58,6 +63,41 @@ class Model(BaseModel):
class Dataset(BaseModel):
name: str

@classmethod
def from_data(cls, request_loader: Any):
creators = [
InMemoryDatasetCreator,
SyntheticDatasetCreator,
FileDatasetCreator,
HFDatasetsCreator,
]
dataset_name = None
data = request_loader.data
data_args = request_loader.data_args
processor = request_loader.processor
processor_args = request_loader.processor_args

for creator in creators:
if not creator.is_supported(data, None):
continue
random_seed = 42
dataset = creator.handle_create(
data, data_args, processor, processor_args, random_seed
)
dataset_name = creator.extract_dataset_name(dataset)
if dataset_name is None or dataset_name == "":
if creator == SyntheticDatasetCreator:
data_dict = SyntheticDatasetConfig.parse_str(data)
dataset_name = data_dict.source
if creator == FileDatasetCreator or isinstance(
creator, HFDatasetsCreator
):
dataset_name = data
if creator == InMemoryDatasetCreator:
dataset_name = "In-memory"
break
return cls(name=dataset_name or "")


class RunInfo(BaseModel):
model: Model
Expand All @@ -71,11 +111,14 @@ def from_benchmarks(cls, benchmarks: list["GenerativeBenchmark"]):
timestamp = max(
bm.run_stats.start_time for bm in benchmarks if bm.start_time is not None
)
response = httpx.get(f"https://huggingface.co/api/models/{model}")
model_json = response.json()

return cls(
model=Model(name=model, size=0),
model=Model(name=model, size=model_json.get("usedStorage", 0)),
task="N/A",
timestamp=timestamp,
dataset=Dataset(name="N/A"),
dataset=Dataset.from_data(benchmarks[0].request_loader),
)


Expand Down
19 changes: 17 additions & 2 deletions src/ui/lib/components/PageHeader/PageHeader.component.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@
import { Box, Typography } from '@mui/material';

import { useGetRunInfoQuery } from '../../store/slices/runInfo';
import { formateDate } from '../../utils/helpers';
import { formateDate, getFileSize } from '../../utils/helpers';
import { SpecBadge } from '../SpecBadge';
import { HeaderCell, HeaderWrapper } from './PageHeader.styles';

export const Component = () => {
const { data } = useGetRunInfoQuery();
const modelSize = getFileSize(data?.model?.size || 0);

return (
<Box py={2}>
<Typography variant="subtitle2" color="surface.onSurfaceAccent">
Expand All @@ -24,11 +26,24 @@ export const Component = () => {
variant="metric2"
withTooltip
/>
<SpecBadge
label="Model size"
value={data?.model?.size ? `${modelSize?.size} ${modelSize?.units}` : '0B'}
variant="body1"
/>
</HeaderCell>
<HeaderCell item xs={5} withDivider>
<SpecBadge
label="Dataset"
value={data?.dataset?.name || 'N/A'}
variant="caption"
withTooltip
/>
</HeaderCell>
<HeaderCell item xs={2} sx={{ paddingRight: 0 }}>
<SpecBadge
label="Time Stamp"
value={data?.timestamp ? formateDate(data?.timestamp) : 'n/a'}
value={data?.timestamp ? formateDate(data?.timestamp) : 'N/A'}
variant="caption"
/>
</HeaderCell>
Expand Down