Commit
·
a265a84
1
Parent(s):
80d1ba2
Remove type column from table
Browse files- frontend/src/pages/AddModelPage/components/ModelSubmissionForm/ModelSubmissionForm.js +0 -23
- frontend/src/pages/LeaderboardPage/components/Leaderboard/components/Filters/Filters.js +0 -34
- frontend/src/pages/LeaderboardPage/components/Leaderboard/components/Filters/SearchBar.js +0 -2
- frontend/src/pages/LeaderboardPage/components/Leaderboard/components/Table/hooks/useDataProcessing.js +0 -8
- frontend/src/pages/LeaderboardPage/components/Leaderboard/components/Table/hooks/useSorting.js +0 -16
- frontend/src/pages/LeaderboardPage/components/Leaderboard/constants/defaults.js +0 -4
- frontend/src/pages/LeaderboardPage/components/Leaderboard/constants/modelTypes.js +0 -79
- frontend/src/pages/LeaderboardPage/components/Leaderboard/context/LeaderboardContext.js +1 -43
- frontend/src/pages/LeaderboardPage/components/Leaderboard/hooks/useDataUtils.js +0 -23
- frontend/src/pages/LeaderboardPage/components/Leaderboard/hooks/useLeaderboardData.js +0 -6
- frontend/src/pages/LeaderboardPage/components/Leaderboard/utils/columnUtils.js +0 -33
frontend/src/pages/AddModelPage/components/ModelSubmissionForm/ModelSubmissionForm.js
CHANGED
@@ -5,12 +5,6 @@ import {
|
|
5 |
Typography,
|
6 |
TextField,
|
7 |
Button,
|
8 |
-
FormControl,
|
9 |
-
InputLabel,
|
10 |
-
Select,
|
11 |
-
MenuItem,
|
12 |
-
FormControlLabel,
|
13 |
-
Switch,
|
14 |
Stack,
|
15 |
Grid,
|
16 |
CircularProgress,
|
@@ -20,16 +14,8 @@ import RocketLaunchIcon from "@mui/icons-material/RocketLaunch";
|
|
20 |
import CheckCircleOutlineIcon from "@mui/icons-material/CheckCircleOutline";
|
21 |
import { alpha } from "@mui/material/styles";
|
22 |
import InfoIconWithTooltip from "../../../../components/shared/InfoIconWithTooltip";
|
23 |
-
import { MODEL_TYPES } from "../../../../pages/LeaderboardPage/components/Leaderboard/constants/modelTypes";
|
24 |
-
import { SUBMISSION_PRECISIONS } from "../../../../pages/LeaderboardPage/components/Leaderboard/constants/defaults";
|
25 |
import AuthContainer from "../../../../components/shared/AuthContainer";
|
26 |
|
27 |
-
const WEIGHT_TYPES = [
|
28 |
-
{ value: "Original", label: "Original" },
|
29 |
-
{ value: "Delta", label: "Delta" },
|
30 |
-
{ value: "Adapter", label: "Adapter" },
|
31 |
-
];
|
32 |
-
|
33 |
const HELP_TEXTS = {
|
34 |
modelName: (
|
35 |
<Box sx={{ p: 1 }}>
|
@@ -121,14 +107,6 @@ const HELP_TEXTS = {
|
|
121 |
),
|
122 |
};
|
123 |
|
124 |
-
// Convert MODEL_TYPES to format expected by Select component
|
125 |
-
const modelTypeOptions = Object.entries(MODEL_TYPES).map(
|
126 |
-
([value, { icon, label }]) => ({
|
127 |
-
value,
|
128 |
-
label: `${icon} ${label}`,
|
129 |
-
})
|
130 |
-
);
|
131 |
-
|
132 |
function ModelSubmissionForm({ user, isAuthenticated }) {
|
133 |
const [formData, setFormData] = useState({
|
134 |
modelName: "",
|
@@ -167,7 +145,6 @@ function ModelSubmissionForm({ user, isAuthenticated }) {
|
|
167 |
body: JSON.stringify({
|
168 |
model_id: formData.modelName,
|
169 |
revision: formData.revision,
|
170 |
-
model_type: formData.modelType,
|
171 |
precision: formData.precision,
|
172 |
weight_type: formData.weightsType,
|
173 |
base_model: formData.baseModel,
|
|
|
5 |
Typography,
|
6 |
TextField,
|
7 |
Button,
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
Stack,
|
9 |
Grid,
|
10 |
CircularProgress,
|
|
|
14 |
import CheckCircleOutlineIcon from "@mui/icons-material/CheckCircleOutline";
|
15 |
import { alpha } from "@mui/material/styles";
|
16 |
import InfoIconWithTooltip from "../../../../components/shared/InfoIconWithTooltip";
|
|
|
|
|
17 |
import AuthContainer from "../../../../components/shared/AuthContainer";
|
18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
const HELP_TEXTS = {
|
20 |
modelName: (
|
21 |
<Box sx={{ p: 1 }}>
|
|
|
107 |
),
|
108 |
};
|
109 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
110 |
function ModelSubmissionForm({ user, isAuthenticated }) {
|
111 |
const [formData, setFormData] = useState({
|
112 |
modelName: "",
|
|
|
145 |
body: JSON.stringify({
|
146 |
model_id: formData.modelName,
|
147 |
revision: formData.revision,
|
|
|
148 |
precision: formData.precision,
|
149 |
weight_type: formData.weightsType,
|
150 |
base_model: formData.baseModel,
|
frontend/src/pages/LeaderboardPage/components/Leaderboard/components/Filters/Filters.js
CHANGED
@@ -24,7 +24,6 @@ import {
|
|
24 |
FILTER_PRECISIONS,
|
25 |
} from "../../constants/defaults";
|
26 |
import FilterTag from "../../../../../../components/shared/FilterTag";
|
27 |
-
import { MODEL_TYPE_ORDER, MODEL_TYPES } from "../../constants/modelTypes";
|
28 |
import { useLeaderboard } from "../../context/LeaderboardContext";
|
29 |
import InfoIconWithTooltip from "../../../../../../components/shared/InfoIconWithTooltip";
|
30 |
import { COLUMN_TOOLTIPS } from "../../constants/tooltips";
|
@@ -334,7 +333,6 @@ const CustomCollapse = forwardRef((props, ref) => {
|
|
334 |
const LeaderboardFilters = ({
|
335 |
selectedPrecisions = FILTER_PRECISIONS,
|
336 |
onPrecisionsChange = () => {},
|
337 |
-
selectedTypes = MODEL_TYPE_ORDER,
|
338 |
onTypesChange = () => {},
|
339 |
paramsRange = [-1, 140],
|
340 |
onParamsRangeChange = () => {},
|
@@ -610,38 +608,6 @@ const LeaderboardFilters = ({
|
|
610 |
</Box>
|
611 |
</Grid>
|
612 |
|
613 |
-
{/* Deuxième ligne */}
|
614 |
-
<Grid item xs={12} md={6}>
|
615 |
-
<Box>
|
616 |
-
<FilterGroup
|
617 |
-
title="Model Type"
|
618 |
-
tooltip={COLUMN_TOOLTIPS.ARCHITECTURE}
|
619 |
-
>
|
620 |
-
{MODEL_TYPE_ORDER.sort(
|
621 |
-
(a, b) =>
|
622 |
-
MODEL_TYPES[a].order - MODEL_TYPES[b].order
|
623 |
-
).map((type) => (
|
624 |
-
<FilterTag
|
625 |
-
key={type}
|
626 |
-
label={`${MODEL_TYPES[type]?.icon} ${
|
627 |
-
MODEL_TYPES[type]?.label || type
|
628 |
-
}`}
|
629 |
-
checked={selectedTypes.includes(type)}
|
630 |
-
onChange={() => {
|
631 |
-
const newTypes = selectedTypes.includes(type)
|
632 |
-
? selectedTypes.filter((t) => t !== type)
|
633 |
-
: [...selectedTypes, type];
|
634 |
-
onTypesChange(newTypes);
|
635 |
-
}}
|
636 |
-
count={currentCounts.modelTypes[type]}
|
637 |
-
variant="tag"
|
638 |
-
showCheckbox={true}
|
639 |
-
/>
|
640 |
-
))}
|
641 |
-
</FilterGroup>
|
642 |
-
</Box>
|
643 |
-
</Grid>
|
644 |
-
|
645 |
<Grid item xs={12} md={6}>
|
646 |
<Box>
|
647 |
<FilterGroup
|
|
|
24 |
FILTER_PRECISIONS,
|
25 |
} from "../../constants/defaults";
|
26 |
import FilterTag from "../../../../../../components/shared/FilterTag";
|
|
|
27 |
import { useLeaderboard } from "../../context/LeaderboardContext";
|
28 |
import InfoIconWithTooltip from "../../../../../../components/shared/InfoIconWithTooltip";
|
29 |
import { COLUMN_TOOLTIPS } from "../../constants/tooltips";
|
|
|
333 |
const LeaderboardFilters = ({
|
334 |
selectedPrecisions = FILTER_PRECISIONS,
|
335 |
onPrecisionsChange = () => {},
|
|
|
336 |
onTypesChange = () => {},
|
337 |
paramsRange = [-1, 140],
|
338 |
onParamsRangeChange = () => {},
|
|
|
608 |
</Box>
|
609 |
</Grid>
|
610 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
611 |
<Grid item xs={12} md={6}>
|
612 |
<Box>
|
613 |
<FilterGroup
|
frontend/src/pages/LeaderboardPage/components/Leaderboard/components/Filters/SearchBar.js
CHANGED
@@ -11,7 +11,6 @@ import {
|
|
11 |
TABLE_DEFAULTS,
|
12 |
FILTER_PRECISIONS,
|
13 |
} from "../../constants/defaults";
|
14 |
-
import { MODEL_TYPE_ORDER } from "../../constants/modelTypes";
|
15 |
import { alpha } from "@mui/material/styles";
|
16 |
import FilteredModelCount from "./FilteredModelCount";
|
17 |
import { useLeaderboard } from "../../context/LeaderboardContext";
|
@@ -146,7 +145,6 @@ const SearchBar = ({
|
|
146 |
const hasActiveFilters =
|
147 |
Object.values(state.filters.booleanFilters).some((value) => value) ||
|
148 |
state.filters.precisions.length !== FILTER_PRECISIONS.length ||
|
149 |
-
state.filters.types.length !== MODEL_TYPE_ORDER.length ||
|
150 |
state.filters.paramsRange[0] !== -1 ||
|
151 |
state.filters.paramsRange[1] !== 140 ||
|
152 |
state.filters.isOfficialProviderActive;
|
|
|
11 |
TABLE_DEFAULTS,
|
12 |
FILTER_PRECISIONS,
|
13 |
} from "../../constants/defaults";
|
|
|
14 |
import { alpha } from "@mui/material/styles";
|
15 |
import FilteredModelCount from "./FilteredModelCount";
|
16 |
import { useLeaderboard } from "../../context/LeaderboardContext";
|
|
|
145 |
const hasActiveFilters =
|
146 |
Object.values(state.filters.booleanFilters).some((value) => value) ||
|
147 |
state.filters.precisions.length !== FILTER_PRECISIONS.length ||
|
|
|
148 |
state.filters.paramsRange[0] !== -1 ||
|
149 |
state.filters.paramsRange[1] !== 140 ||
|
150 |
state.filters.isOfficialProviderActive;
|
frontend/src/pages/LeaderboardPage/components/Leaderboard/components/Table/hooks/useDataProcessing.js
CHANGED
@@ -17,8 +17,6 @@ import {
|
|
17 |
export const useDataProcessing = (
|
18 |
data,
|
19 |
searchValue,
|
20 |
-
//selectedPrecisions,
|
21 |
-
selectedTypes,
|
22 |
paramsRange,
|
23 |
selectedBooleanFilters,
|
24 |
sorting,
|
@@ -41,8 +39,6 @@ export const useDataProcessing = (
|
|
41 |
// Memoize filters
|
42 |
const filterConfig = useMemo(
|
43 |
() => ({
|
44 |
-
//selectedPrecisions,
|
45 |
-
selectedTypes,
|
46 |
paramsRange,
|
47 |
searchValue,
|
48 |
selectedBooleanFilters,
|
@@ -51,8 +47,6 @@ export const useDataProcessing = (
|
|
51 |
isOfficialProviderActive,
|
52 |
}),
|
53 |
[
|
54 |
-
//selectedPrecisions,
|
55 |
-
selectedTypes,
|
56 |
paramsRange,
|
57 |
searchValue,
|
58 |
selectedBooleanFilters,
|
@@ -67,8 +61,6 @@ export const useDataProcessing = (
|
|
67 |
// Call useFilteredData at root level
|
68 |
const filteredData = useFilteredData(
|
69 |
processedData,
|
70 |
-
//filterConfig.selectedPrecisions,
|
71 |
-
filterConfig.selectedTypes,
|
72 |
filterConfig.paramsRange,
|
73 |
filterConfig.searchValue,
|
74 |
filterConfig.selectedBooleanFilters,
|
|
|
17 |
export const useDataProcessing = (
|
18 |
data,
|
19 |
searchValue,
|
|
|
|
|
20 |
paramsRange,
|
21 |
selectedBooleanFilters,
|
22 |
sorting,
|
|
|
39 |
// Memoize filters
|
40 |
const filterConfig = useMemo(
|
41 |
() => ({
|
|
|
|
|
42 |
paramsRange,
|
43 |
searchValue,
|
44 |
selectedBooleanFilters,
|
|
|
47 |
isOfficialProviderActive,
|
48 |
}),
|
49 |
[
|
|
|
|
|
50 |
paramsRange,
|
51 |
searchValue,
|
52 |
selectedBooleanFilters,
|
|
|
61 |
// Call useFilteredData at root level
|
62 |
const filteredData = useFilteredData(
|
63 |
processedData,
|
|
|
|
|
64 |
filterConfig.paramsRange,
|
65 |
filterConfig.searchValue,
|
66 |
filterConfig.selectedBooleanFilters,
|
frontend/src/pages/LeaderboardPage/components/Leaderboard/components/Table/hooks/useSorting.js
DELETED
@@ -1,16 +0,0 @@
|
|
1 |
-
export const typeColumnSort = (rowA, rowB) => {
|
2 |
-
const aValue = rowA.getValue("model_type");
|
3 |
-
const bValue = rowB.getValue("model_type");
|
4 |
-
|
5 |
-
// If both values are arrays, compare their first elements
|
6 |
-
if (Array.isArray(aValue) && Array.isArray(bValue)) {
|
7 |
-
return String(aValue[0] || "").localeCompare(String(bValue[0] || ""));
|
8 |
-
}
|
9 |
-
|
10 |
-
// If one is array and other isn't, array comes first
|
11 |
-
if (Array.isArray(aValue)) return -1;
|
12 |
-
if (Array.isArray(bValue)) return 1;
|
13 |
-
|
14 |
-
// If neither is array, compare as strings
|
15 |
-
return String(aValue || "").localeCompare(String(bValue || ""));
|
16 |
-
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
frontend/src/pages/LeaderboardPage/components/Leaderboard/constants/defaults.js
CHANGED
@@ -1,5 +1,3 @@
|
|
1 |
-
import { MODEL_TYPE_ORDER } from "./modelTypes";
|
2 |
-
|
3 |
// Time constants (in milliseconds)
|
4 |
const TIME = {
|
5 |
CACHE_DURATION: 5 * 60 * 1000, // 5 minutes
|
@@ -322,13 +320,11 @@ export const TABLE_DEFAULTS = {
|
|
322 |
RANKING_MODE: "static",
|
323 |
SEARCH: {
|
324 |
PRECISIONS: FILTERS.PRECISIONS,
|
325 |
-
TYPES: MODEL_TYPE_ORDER,
|
326 |
PARAMS_RANGE: FILTERS.PARAMS_RANGE,
|
327 |
},
|
328 |
DEFAULT_SELECTED: {
|
329 |
searchValue: "",
|
330 |
selectedPrecisions: FILTERS.PRECISIONS,
|
331 |
-
selectedTypes: MODEL_TYPE_ORDER,
|
332 |
paramsRange: FILTERS.PARAMS_RANGE,
|
333 |
selectedBooleanFilters: [],
|
334 |
},
|
|
|
|
|
|
|
1 |
// Time constants (in milliseconds)
|
2 |
const TIME = {
|
3 |
CACHE_DURATION: 5 * 60 * 1000, // 5 minutes
|
|
|
320 |
RANKING_MODE: "static",
|
321 |
SEARCH: {
|
322 |
PRECISIONS: FILTERS.PRECISIONS,
|
|
|
323 |
PARAMS_RANGE: FILTERS.PARAMS_RANGE,
|
324 |
},
|
325 |
DEFAULT_SELECTED: {
|
326 |
searchValue: "",
|
327 |
selectedPrecisions: FILTERS.PRECISIONS,
|
|
|
328 |
paramsRange: FILTERS.PARAMS_RANGE,
|
329 |
selectedBooleanFilters: [],
|
330 |
},
|
frontend/src/pages/LeaderboardPage/components/Leaderboard/constants/modelTypes.js
DELETED
@@ -1,79 +0,0 @@
|
|
1 |
-
export const MODEL_TYPE_ORDER = [
|
2 |
-
'pretrained',
|
3 |
-
'continuously pretrained',
|
4 |
-
'fine-tuned',
|
5 |
-
'chat',
|
6 |
-
'merge',
|
7 |
-
'multimodal'
|
8 |
-
];
|
9 |
-
|
10 |
-
export const MODEL_TYPES = {
|
11 |
-
'pretrained': {
|
12 |
-
icon: '🟢',
|
13 |
-
label: 'Pretrained',
|
14 |
-
description: 'Base models trained on raw text data using self-supervised learning objectives',
|
15 |
-
order: 0
|
16 |
-
},
|
17 |
-
'continuously pretrained': {
|
18 |
-
icon: '🟩',
|
19 |
-
label: 'Continuously Pretrained',
|
20 |
-
description: 'Base models with extended pretraining on additional data while maintaining original architecture',
|
21 |
-
order: 1
|
22 |
-
},
|
23 |
-
'fine-tuned': {
|
24 |
-
icon: '🔶',
|
25 |
-
label: 'Fine-tuned',
|
26 |
-
description: 'Models specialized through task-specific training on curated datasets',
|
27 |
-
order: 2
|
28 |
-
},
|
29 |
-
'chat': {
|
30 |
-
icon: '💬',
|
31 |
-
label: 'Chat',
|
32 |
-
description: 'Models optimized for conversation using various techniques: RLHF, DPO, IFT, SFT',
|
33 |
-
order: 3
|
34 |
-
},
|
35 |
-
'merge': {
|
36 |
-
icon: '🤝',
|
37 |
-
label: 'Merge',
|
38 |
-
description: 'Models created by combining weights from multiple models',
|
39 |
-
order: 4
|
40 |
-
},
|
41 |
-
'multimodal': {
|
42 |
-
icon: '🌸',
|
43 |
-
label: 'Multimodal',
|
44 |
-
description: 'Models capable of processing multiple types of input',
|
45 |
-
order: 5
|
46 |
-
}
|
47 |
-
};
|
48 |
-
|
49 |
-
export const getModelTypeIcon = (type) => {
|
50 |
-
const cleanType = type.toLowerCase().trim();
|
51 |
-
const matchedType = Object.entries(MODEL_TYPES).find(([key]) =>
|
52 |
-
cleanType.includes(key)
|
53 |
-
);
|
54 |
-
return matchedType ? matchedType[1].icon : '❓';
|
55 |
-
};
|
56 |
-
|
57 |
-
export const getModelTypeLabel = (type) => {
|
58 |
-
const cleanType = type.toLowerCase().trim();
|
59 |
-
const matchedType = Object.entries(MODEL_TYPES).find(([key]) =>
|
60 |
-
cleanType.includes(key)
|
61 |
-
);
|
62 |
-
return matchedType ? matchedType[1].label : type;
|
63 |
-
};
|
64 |
-
|
65 |
-
export const getModelTypeDescription = (type) => {
|
66 |
-
const cleanType = type.toLowerCase().trim();
|
67 |
-
const matchedType = Object.entries(MODEL_TYPES).find(([key]) =>
|
68 |
-
cleanType.includes(key)
|
69 |
-
);
|
70 |
-
return matchedType ? matchedType[1].description : 'Unknown model type';
|
71 |
-
};
|
72 |
-
|
73 |
-
export const getModelTypeOrder = (type) => {
|
74 |
-
const cleanType = type.toLowerCase().trim();
|
75 |
-
const matchedType = Object.entries(MODEL_TYPES).find(([key]) =>
|
76 |
-
cleanType.includes(key)
|
77 |
-
);
|
78 |
-
return matchedType ? matchedType[1].order : Infinity;
|
79 |
-
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
frontend/src/pages/LeaderboardPage/components/Leaderboard/context/LeaderboardContext.js
CHANGED
@@ -7,7 +7,6 @@ import React, {
|
|
7 |
useCallback,
|
8 |
} from "react";
|
9 |
import { useSearchParams, useLocation } from "react-router-dom";
|
10 |
-
import { MODEL_TYPE_ORDER } from "../constants/modelTypes";
|
11 |
import { FILTER_PRECISIONS, TABLE_DEFAULTS } from "../constants/defaults";
|
12 |
|
13 |
// Create context
|
@@ -17,7 +16,6 @@ const LeaderboardContext = createContext();
|
|
17 |
const DEFAULT_FILTERS = {
|
18 |
search: "",
|
19 |
precisions: FILTER_PRECISIONS,
|
20 |
-
types: MODEL_TYPE_ORDER,
|
21 |
paramsRange: [-1, 140],
|
22 |
booleanFilters: [],
|
23 |
isOfficialProviderActive: false,
|
@@ -34,10 +32,6 @@ const DEFAULT_DISPLAY = {
|
|
34 |
|
35 |
// Create initial counter structure
|
36 |
const createInitialCounts = () => {
|
37 |
-
const modelTypes = {};
|
38 |
-
MODEL_TYPE_ORDER.forEach((type) => {
|
39 |
-
modelTypes[type] = 0;
|
40 |
-
});
|
41 |
|
42 |
const precisions = {};
|
43 |
FILTER_PRECISIONS.forEach((precision) => {
|
@@ -45,7 +39,6 @@ const createInitialCounts = () => {
|
|
45 |
});
|
46 |
|
47 |
return {
|
48 |
-
modelTypes,
|
49 |
precisions,
|
50 |
officialProviders: 0,
|
51 |
mixtureOfExperts: 0,
|
@@ -102,14 +95,6 @@ const modelMatchesFilters = (model, filters) => {
|
|
102 |
return false;
|
103 |
}
|
104 |
|
105 |
-
// Filter by type
|
106 |
-
if (filters.types.length > 0) {
|
107 |
-
const modelType = model.model.type?.toLowerCase().trim();
|
108 |
-
if (!filters.types.some((type) => modelType?.includes(type))) {
|
109 |
-
return false;
|
110 |
-
}
|
111 |
-
}
|
112 |
-
|
113 |
// Filter by parameters
|
114 |
const params = Number(
|
115 |
model.metadata?.params_billions || model.features?.params_billions
|
@@ -196,16 +181,6 @@ const calculateModelCounts = (models) => {
|
|
196 |
}
|
197 |
|
198 |
countsToUpdate.forEach((counts) => {
|
199 |
-
// Model type
|
200 |
-
if (model.model?.type) {
|
201 |
-
const cleanType = model.model.type.toLowerCase().trim();
|
202 |
-
const matchedType = MODEL_TYPE_ORDER.find((key) =>
|
203 |
-
cleanType.includes(key)
|
204 |
-
);
|
205 |
-
if (matchedType) {
|
206 |
-
counts.modelTypes[matchedType]++;
|
207 |
-
}
|
208 |
-
}
|
209 |
|
210 |
// Precision
|
211 |
if (model.model?.precision) {
|
@@ -500,8 +475,6 @@ const LeaderboardProvider = ({ children }) => {
|
|
500 |
const currentOfficialProvider = searchParams.get("official") === "true";
|
501 |
const currentPrecisions =
|
502 |
searchParams.get("precision")?.split(",").filter(Boolean) || [];
|
503 |
-
const currentTypes =
|
504 |
-
searchParams.get("types")?.split(",").filter(Boolean) || [];
|
505 |
|
506 |
// Only update URL if values have changed
|
507 |
const paramsChanged =
|
@@ -533,9 +506,6 @@ const LeaderboardProvider = ({ children }) => {
|
|
533 |
const precisionsChanged =
|
534 |
state.filters.precisions.length !== currentPrecisions.length ||
|
535 |
state.filters.precisions.some((p) => !currentPrecisions.includes(p));
|
536 |
-
const typesChanged =
|
537 |
-
state.filters.types.length !== currentTypes.length ||
|
538 |
-
state.filters.types.some((t) => !currentTypes.includes(t));
|
539 |
|
540 |
if (paramsChanged) {
|
541 |
if (
|
@@ -634,17 +604,6 @@ const LeaderboardProvider = ({ children }) => {
|
|
634 |
}
|
635 |
}
|
636 |
|
637 |
-
if (typesChanged) {
|
638 |
-
if (
|
639 |
-
JSON.stringify([...state.filters.types].sort()) !==
|
640 |
-
JSON.stringify([...MODEL_TYPE_ORDER].sort())
|
641 |
-
) {
|
642 |
-
newSearchParams.set("types", state.filters.types.join(","));
|
643 |
-
} else {
|
644 |
-
newSearchParams.delete("types");
|
645 |
-
}
|
646 |
-
}
|
647 |
-
|
648 |
if (
|
649 |
paramsChanged ||
|
650 |
filtersChanged ||
|
@@ -656,8 +615,7 @@ const LeaderboardProvider = ({ children }) => {
|
|
656 |
averageModeChanged ||
|
657 |
rankingModeChanged ||
|
658 |
officialProviderChanged ||
|
659 |
-
precisionsChanged
|
660 |
-
typesChanged
|
661 |
) {
|
662 |
// Update search params and let HashRouter handle the URL
|
663 |
setSearchParams(newSearchParams);
|
|
|
7 |
useCallback,
|
8 |
} from "react";
|
9 |
import { useSearchParams, useLocation } from "react-router-dom";
|
|
|
10 |
import { FILTER_PRECISIONS, TABLE_DEFAULTS } from "../constants/defaults";
|
11 |
|
12 |
// Create context
|
|
|
16 |
const DEFAULT_FILTERS = {
|
17 |
search: "",
|
18 |
precisions: FILTER_PRECISIONS,
|
|
|
19 |
paramsRange: [-1, 140],
|
20 |
booleanFilters: [],
|
21 |
isOfficialProviderActive: false,
|
|
|
32 |
|
33 |
// Create initial counter structure
|
34 |
const createInitialCounts = () => {
|
|
|
|
|
|
|
|
|
35 |
|
36 |
const precisions = {};
|
37 |
FILTER_PRECISIONS.forEach((precision) => {
|
|
|
39 |
});
|
40 |
|
41 |
return {
|
|
|
42 |
precisions,
|
43 |
officialProviders: 0,
|
44 |
mixtureOfExperts: 0,
|
|
|
95 |
return false;
|
96 |
}
|
97 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
// Filter by parameters
|
99 |
const params = Number(
|
100 |
model.metadata?.params_billions || model.features?.params_billions
|
|
|
181 |
}
|
182 |
|
183 |
countsToUpdate.forEach((counts) => {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
|
185 |
// Precision
|
186 |
if (model.model?.precision) {
|
|
|
475 |
const currentOfficialProvider = searchParams.get("official") === "true";
|
476 |
const currentPrecisions =
|
477 |
searchParams.get("precision")?.split(",").filter(Boolean) || [];
|
|
|
|
|
478 |
|
479 |
// Only update URL if values have changed
|
480 |
const paramsChanged =
|
|
|
506 |
const precisionsChanged =
|
507 |
state.filters.precisions.length !== currentPrecisions.length ||
|
508 |
state.filters.precisions.some((p) => !currentPrecisions.includes(p));
|
|
|
|
|
|
|
509 |
|
510 |
if (paramsChanged) {
|
511 |
if (
|
|
|
604 |
}
|
605 |
}
|
606 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
607 |
if (
|
608 |
paramsChanged ||
|
609 |
filtersChanged ||
|
|
|
615 |
averageModeChanged ||
|
616 |
rankingModeChanged ||
|
617 |
officialProviderChanged ||
|
618 |
+
precisionsChanged
|
|
|
619 |
) {
|
620 |
// Update search params and let HashRouter handle the URL
|
621 |
setSearchParams(newSearchParams);
|
frontend/src/pages/LeaderboardPage/components/Leaderboard/hooks/useDataUtils.js
CHANGED
@@ -4,7 +4,6 @@ import {
|
|
4 |
parseSearchQuery,
|
5 |
getValueByPath,
|
6 |
} from "../utils/searchUtils";
|
7 |
-
import { MODEL_TYPE_ORDER } from "../constants/modelTypes";
|
8 |
|
9 |
// Calculate min/max averages
|
10 |
export const useAverageRange = (data) => {
|
@@ -95,8 +94,6 @@ export const useProcessedData = (data, averageMode, visibleColumns) => {
|
|
95 |
// Common filtering logic
|
96 |
export const useFilteredData = (
|
97 |
processedData,
|
98 |
-
//selectedPrecisions,
|
99 |
-
selectedTypes,
|
100 |
paramsRange,
|
101 |
searchValue,
|
102 |
selectedBooleanFilters,
|
@@ -124,24 +121,6 @@ export const useFilteredData = (
|
|
124 |
);
|
125 |
}
|
126 |
|
127 |
-
//// Filter by precision
|
128 |
-
//if (selectedPrecisions.length > 0) {
|
129 |
-
// filteredUnpinned = filteredUnpinned.filter((row) =>
|
130 |
-
// selectedPrecisions.includes(row.model.precision)
|
131 |
-
// );
|
132 |
-
//}
|
133 |
-
|
134 |
-
// Filter by type
|
135 |
-
if (
|
136 |
-
selectedTypes.length > 0 &&
|
137 |
-
selectedTypes.length < MODEL_TYPE_ORDER.length
|
138 |
-
) {
|
139 |
-
filteredUnpinned = filteredUnpinned.filter((row) => {
|
140 |
-
const modelType = row.model.type?.toLowerCase().trim();
|
141 |
-
return selectedTypes.some((type) => modelType?.includes(type));
|
142 |
-
});
|
143 |
-
}
|
144 |
-
|
145 |
// Filter by parameters
|
146 |
if (!(paramsRange[0] === -1 && paramsRange[1] === 140)) {
|
147 |
filteredUnpinned = filteredUnpinned.filter((row) => {
|
@@ -273,8 +252,6 @@ export const useFilteredData = (
|
|
273 |
return finalData;
|
274 |
}, [
|
275 |
processedData,
|
276 |
-
//selectedPrecisions,
|
277 |
-
selectedTypes,
|
278 |
paramsRange,
|
279 |
searchValue,
|
280 |
selectedBooleanFilters,
|
|
|
4 |
parseSearchQuery,
|
5 |
getValueByPath,
|
6 |
} from "../utils/searchUtils";
|
|
|
7 |
|
8 |
// Calculate min/max averages
|
9 |
export const useAverageRange = (data) => {
|
|
|
94 |
// Common filtering logic
|
95 |
export const useFilteredData = (
|
96 |
processedData,
|
|
|
|
|
97 |
paramsRange,
|
98 |
searchValue,
|
99 |
selectedBooleanFilters,
|
|
|
121 |
);
|
122 |
}
|
123 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
// Filter by parameters
|
125 |
if (!(paramsRange[0] === -1 && paramsRange[1] === 140)) {
|
126 |
filteredUnpinned = filteredUnpinned.filter((row) => {
|
|
|
252 |
return finalData;
|
253 |
}, [
|
254 |
processedData,
|
|
|
|
|
255 |
paramsRange,
|
256 |
searchValue,
|
257 |
selectedBooleanFilters,
|
frontend/src/pages/LeaderboardPage/components/Leaderboard/hooks/useLeaderboardData.js
CHANGED
@@ -71,16 +71,12 @@ export const useLeaderboardProcessing = () => {
|
|
71 |
const memoizedFilters = useMemo(
|
72 |
() => ({
|
73 |
search: state.filters.search,
|
74 |
-
//precisions: state.filters.precisions,
|
75 |
-
types: state.filters.types,
|
76 |
paramsRange: state.filters.paramsRange,
|
77 |
booleanFilters: state.filters.booleanFilters,
|
78 |
isOfficialProviderActive: state.filters.isOfficialProviderActive,
|
79 |
}),
|
80 |
[
|
81 |
state.filters.search,
|
82 |
-
//state.filters.precisions,
|
83 |
-
state.filters.types,
|
84 |
state.filters.paramsRange,
|
85 |
state.filters.booleanFilters,
|
86 |
state.filters.isOfficialProviderActive,
|
@@ -99,8 +95,6 @@ export const useLeaderboardProcessing = () => {
|
|
99 |
} = useDataProcessing(
|
100 |
memoizedData,
|
101 |
memoizedFilters.search,
|
102 |
-
//memoizedFilters.precisions,
|
103 |
-
memoizedFilters.types,
|
104 |
memoizedFilters.paramsRange,
|
105 |
memoizedFilters.booleanFilters,
|
106 |
sorting,
|
|
|
71 |
const memoizedFilters = useMemo(
|
72 |
() => ({
|
73 |
search: state.filters.search,
|
|
|
|
|
74 |
paramsRange: state.filters.paramsRange,
|
75 |
booleanFilters: state.filters.booleanFilters,
|
76 |
isOfficialProviderActive: state.filters.isOfficialProviderActive,
|
77 |
}),
|
78 |
[
|
79 |
state.filters.search,
|
|
|
|
|
80 |
state.filters.paramsRange,
|
81 |
state.filters.booleanFilters,
|
82 |
state.filters.isOfficialProviderActive,
|
|
|
95 |
} = useDataProcessing(
|
96 |
memoizedData,
|
97 |
memoizedFilters.search,
|
|
|
|
|
98 |
memoizedFilters.paramsRange,
|
99 |
memoizedFilters.booleanFilters,
|
100 |
sorting,
|
frontend/src/pages/LeaderboardPage/components/Leaderboard/utils/columnUtils.js
CHANGED
@@ -1,6 +1,5 @@
|
|
1 |
import React from "react";
|
2 |
import { Box, Typography, Link, Tooltip, IconButton } from "@mui/material";
|
3 |
-
import { getModelTypeIcon } from "../constants/modelTypes";
|
4 |
import TrendingUpIcon from "@mui/icons-material/TrendingUp";
|
5 |
import TrendingDownIcon from "@mui/icons-material/TrendingDown";
|
6 |
import RemoveIcon from "@mui/icons-material/Remove";
|
@@ -9,7 +8,6 @@ import PushPinOutlinedIcon from "@mui/icons-material/PushPinOutlined";
|
|
9 |
import { TABLE_DEFAULTS, HIGHLIGHT_COLORS } from "../constants/defaults";
|
10 |
import { looksLikeRegex, extractTextSearch } from "./searchUtils";
|
11 |
import { commonStyles } from "../styles/common";
|
12 |
-
import { typeColumnSort } from "../components/Table/hooks/useSorting";
|
13 |
import {
|
14 |
COLUMN_TOOLTIPS,
|
15 |
getTooltipStyle,
|
@@ -513,37 +511,6 @@ export const createColumns = (
|
|
513 |
},
|
514 |
size: TABLE_DEFAULTS.COLUMNS.COLUMN_SIZES["rank"],
|
515 |
},
|
516 |
-
{
|
517 |
-
id: "model_type",
|
518 |
-
accessorFn: (row) => row.model.type,
|
519 |
-
header: createHeaderCell("Type"),
|
520 |
-
sortingFn: typeColumnSort,
|
521 |
-
cell: ({ row }) => (
|
522 |
-
<Box
|
523 |
-
sx={{
|
524 |
-
display: "flex",
|
525 |
-
alignItems: "center",
|
526 |
-
justifyContent: "center",
|
527 |
-
width: "100%",
|
528 |
-
}}
|
529 |
-
>
|
530 |
-
<Tooltip title={row.original.model.type}>
|
531 |
-
<Typography
|
532 |
-
sx={{
|
533 |
-
fontSize: "1.2rem",
|
534 |
-
cursor: "help",
|
535 |
-
lineHeight: 1,
|
536 |
-
fontFamily:
|
537 |
-
'"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", sans-serif',
|
538 |
-
}}
|
539 |
-
>
|
540 |
-
{getModelTypeIcon(row.original.model.type)}
|
541 |
-
</Typography>
|
542 |
-
</Tooltip>
|
543 |
-
</Box>
|
544 |
-
),
|
545 |
-
size: TABLE_DEFAULTS.COLUMNS.COLUMN_SIZES["model.type_icon"],
|
546 |
-
},
|
547 |
{
|
548 |
accessorKey: "id",
|
549 |
header: createModelHeader(totalModels),
|
|
|
1 |
import React from "react";
|
2 |
import { Box, Typography, Link, Tooltip, IconButton } from "@mui/material";
|
|
|
3 |
import TrendingUpIcon from "@mui/icons-material/TrendingUp";
|
4 |
import TrendingDownIcon from "@mui/icons-material/TrendingDown";
|
5 |
import RemoveIcon from "@mui/icons-material/Remove";
|
|
|
8 |
import { TABLE_DEFAULTS, HIGHLIGHT_COLORS } from "../constants/defaults";
|
9 |
import { looksLikeRegex, extractTextSearch } from "./searchUtils";
|
10 |
import { commonStyles } from "../styles/common";
|
|
|
11 |
import {
|
12 |
COLUMN_TOOLTIPS,
|
13 |
getTooltipStyle,
|
|
|
511 |
},
|
512 |
size: TABLE_DEFAULTS.COLUMNS.COLUMN_SIZES["rank"],
|
513 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
514 |
{
|
515 |
accessorKey: "id",
|
516 |
header: createModelHeader(totalModels),
|