diff --git a/src/components/card-wrapper/simple-card.tsx b/src/components/card-wrapper/simple-card.tsx
new file mode 100644
index 00000000..6062359e
--- /dev/null
+++ b/src/components/card-wrapper/simple-card.tsx
@@ -0,0 +1,65 @@
+import { createStyles } from 'antd-style';
+import React from 'react';
+import styled from 'styled-components';
+
+const SimpleCardItemWrapper = styled.div`
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ width: 100%;
+ height: 100%;
+ gap: 10px;
+`;
+
+const useStyles = createStyles(({ css, token }) => ({
+ wrapper: css`
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ height: 100%;
+ background: ${token.colorBgContainer};
+ border-radius: ${token.borderRadius}px;
+ padding: ${token.padding}px;
+ justify-content: center;
+ align-items: center;
+ gap: ${token.padding}px;
+ .title {
+ font-size: ${token.fontSize}px;
+ font-weight: var(--font-weight-500);
+ }
+ `
+}));
+export const SimpleCardItem: React.FC<{
+ title?: string;
+ content?: React.ReactNode;
+ style?: React.CSSProperties;
+}> = (props) => {
+ const { styles } = useStyles();
+
+ const { title, content, style } = props;
+
+ return (
+
+ );
+};
+
+export const SimpleCard: React.FC<{
+ dataList: { label: string; value: React.ReactNode }[];
+}> = (props) => {
+ const { dataList } = props;
+
+ return (
+
+ {dataList.map((item, index) => (
+
+ ))}
+
+ );
+};
diff --git a/src/components/echarts/config.ts b/src/components/echarts/config.ts
index 2d22776e..9e8490c7 100644
--- a/src/components/echarts/config.ts
+++ b/src/components/echarts/config.ts
@@ -98,8 +98,6 @@ export default function useChartConfig() {
};
const yAxis = {
- // max: 100,
- // min: 0,
nameTextStyle: {
padding: [0, 0, 0, -20]
},
diff --git a/src/components/echarts/mix-line-bar.tsx b/src/components/echarts/mix-line-bar.tsx
index 831eaa5f..47d70777 100644
--- a/src/components/echarts/mix-line-bar.tsx
+++ b/src/components/echarts/mix-line-bar.tsx
@@ -30,6 +30,7 @@ const MixLineBarChart: React.FC<
grid,
legend,
lineItemConfig,
+ barItemConfig,
title: titleConfig,
tooltip,
xAxis,
@@ -73,7 +74,7 @@ const MixLineBarChart: React.FC<
};
const dataOptions = useMemo((): any => {
- const data = _.map(seriesData, (item: any) => {
+ const linedata = _.map(lineSeriesData, (item: any) => {
return {
...item,
...lineItemConfig,
@@ -82,12 +83,26 @@ const MixLineBarChart: React.FC<
...lineItemConfig.itemStyle,
color: item.color
},
+ yAxisIndex: 1,
lineStyle: {
...lineItemConfig.lineStyle,
color: item.color
}
};
});
+
+ const barData = _.map(barSeriesData, (item: any) => {
+ return {
+ ...item,
+ ...barItemConfig,
+ stack: 'total',
+ yAxisIndex: 0,
+ itemStyle: {
+ color: item.color
+ }
+ };
+ });
+
return {
...options,
animation: false,
@@ -95,25 +110,35 @@ const MixLineBarChart: React.FC<
...titleConfig,
text: title
},
- yAxis: {
- ...options.yAxis,
- name: yAxisName,
- nameTextStyle: {
- fontSize: 12,
- align: 'right'
+ yAxis: [
+ {
+ ...options.yAxis,
+ min: 0,
+
+ splitNumber: 7
+ },
+ {
+ ...options.yAxis,
+ min: 0,
+ max: 70,
+ splitNumber: 7,
+ nameTextStyle: {
+ fontSize: 12,
+ align: 'right'
+ }
}
- },
+ ],
xAxis: {
...options.xAxis,
data: xAxisData
},
- series: data
+ series: [...linedata, ...barData]
};
}, [seriesData, xAxisData, yAxisName, title, smooth, legendData, options]);
return (
<>
- {!seriesData.length ? (
+ {!lineSeriesData.length && !barSeriesData.length ? (
) : (
{
return dayjs(v).format('MM-DD');
};
+const dataList = [
+ { label: '100M', value: 'Completion Tokens' },
+ { label: '50M', value: 'Prompt Tokens' },
+ { label: '120K', value: 'API Requests' }
+];
+
const RequestTokenInner: React.FC = (props) => {
const { requestData, tokenData, xAxisData } = props;
const intl = useIntl();
- console.log('usage===========', requestData, tokenData, xAxisData);
-
return (
@@ -51,17 +55,6 @@ const RequestTokenInner: React.FC = (props) => {
>
- {/* */}
);
};
diff --git a/src/pages/llmodels/components/deploy-builtin-modal.tsx b/src/pages/llmodels/components/deploy-builtin-modal.tsx
index 1adeb871..3a2ae61e 100644
--- a/src/pages/llmodels/components/deploy-builtin-modal.tsx
+++ b/src/pages/llmodels/components/deploy-builtin-modal.tsx
@@ -125,9 +125,16 @@ const AddModal: React.FC = (props) => {
form.current?.submit?.();
};
+ // use for size change and quantization change
const pickSomeFieldsValue = () => {
const formData = form.current?.getFieldsValue();
- return _.pick(formData, ['worker_selector', 'gpu_selector', 'env']);
+ return _.pick(formData, [
+ 'worker_selector',
+ 'gpu_selector',
+ 'env',
+ 'backend_version',
+ 'backend_parameters'
+ ]);
};
const generateSubmitData = (formData: FormData) => {
@@ -321,21 +328,6 @@ const AddModal: React.FC = (props) => {
});
};
- const handleAdvanceOnValuesChange = (data: {
- changedValues: any;
- allValues: any;
- source: string;
- }) => {
- handleOnValuesChange?.({
- changedValues: data.changedValues,
- allValues: {
- ..._.omit(selectSpecRef.current, ['name']),
- ...data.allValues
- },
- source: data.source
- });
- };
-
const handleBackendChange = (backend: string) => {
if (backend === backendOptionsMap.llamaBox) {
setIsGGUF(true);
diff --git a/src/pages/llmodels/components/deploy-modal.tsx b/src/pages/llmodels/components/deploy-modal.tsx
index 3fcd853d..91acaed9 100644
--- a/src/pages/llmodels/components/deploy-modal.tsx
+++ b/src/pages/llmodels/components/deploy-modal.tsx
@@ -28,7 +28,7 @@ import SearchModel from './search-model';
import Separator from './separator';
import TitleWrapper from './title-wrapper';
-const resetFields = [
+const resetFieldsByModel = [
'cpu_offloading',
'distributed_inference_across_workers',
'backend_version',
@@ -36,6 +36,11 @@ const resetFields = [
'env'
];
+const resetFieldsByFile = [
+ 'cpu_offloading',
+ 'distributed_inference_across_workers'
+];
+
const ModalFooterStyle = {
padding: '16px 24px',
display: 'flex',
@@ -136,7 +141,7 @@ const AddModal: FC = (props) => {
};
const handleSelectModelFile = (item: any, evaluate?: boolean) => {
- form.current?.form?.resetFields(resetFields);
+ form.current?.form?.resetFields(resetFieldsByFile);
const modelInfo = onSelectModel(selectedModel, props.source);
form.current?.setFieldsValue?.({
file_name: item.fakeName,
@@ -156,9 +161,9 @@ const AddModal: FC = (props) => {
const handleOnSelectModel = (item: any, evaluate?: boolean) => {
setSelectedModel(item);
+ form.current?.form?.resetFields(resetFieldsByModel);
if (!item.isGGUF) {
setIsGGUF(false);
- form.current?.form?.resetFields(resetFields);
const modelInfo = onSelectModel(item, props.source);
if (!isHolderRef.current.model) {
handleShowCompatibleAlert(item.evaluateResult);