import { AutoTooltip } from '@gpustack/core-ui';
import { useIntl } from '@umijs/max';
import { Descriptions, Flex, Tag } from 'antd';
import React, { useMemo } from 'react';
import { useDetailContext } from '../../config/detail-context';
const Instance: React.FC = () => {
const intl = useIntl();
const { detailData } = useDetailContext();
const [, instanceData] =
Object.entries(detailData?.snapshot?.instances || {})[0] || [];
const items = useMemo(() => {
const { snapshot } = detailData;
const [instanceName, instanceData] =
Object.entries(snapshot?.instances || {})[0] || [];
return [
{
key: '1',
label: intl.formatMessage({ id: 'benchmark.detail.modelName' }),
children: (
{detailData?.model_name || '-'}
)
},
{
key: '2',
label: intl.formatMessage({ id: 'benchmark.detail.instanceName' }),
children: (
{detailData?.model_instance_name || '-'}
)
},
{
key: '5',
label: intl.formatMessage({ id: 'models.form.backend' }),
children: `${instanceData?.backend || '-'} ${
instanceData?.backend_version
? `(${instanceData?.backend_version})`
: ''
}`
},
{
key: '6',
label: intl.formatMessage({ id: 'benchmark.detail.modelFile' }),
children: (
{instanceData?.resolved_path || '-'}
)
}
];
}, [detailData]);
const paramsItems = useMemo(() => {
const { snapshot } = detailData;
const [instanceName, instanceData] =
Object.entries(snapshot?.instances || {})[0] || [];
const renderParams = (params: string[]) =>
params.length > 0 ? (
{params.map((param: string, index: number) => (
{param}
))}
) : (
'-'
);
return [
{
key: '1',
label: intl.formatMessage({
id: 'models.form.backend_parameters'
}),
children: renderParams(instanceData?.backend_parameters || [])
},
// {
// key: '1-1',
// label: intl.formatMessage({
// id: 'models.instance.params.autoInjected'
// }),
// children: renderParams(instanceData?.injected_backend_parameters || [])
// },
{
key: '3',
label: intl.formatMessage({ id: 'benchmark.detail.kvCache' }),
children: (
{instanceData?.extended_kv_cache?.enabled ? (
<>
{instanceData?.extended_kv_cache?.ram_ratio && (
{intl.formatMessage({ id: 'models.form.ramRatio' })}:
{instanceData?.extended_kv_cache?.ram_ratio}
)}
{instanceData?.extended_kv_cache?.ram_size && (
{intl.formatMessage({ id: 'models.form.ramSize' })}:
{instanceData?.extended_kv_cache?.ram_size}
)}
{instanceData?.extended_kv_cache?.chunk_size && (
{intl.formatMessage({ id: 'models.form.chunkSize' })}:
{instanceData?.extended_kv_cache?.chunk_size}
)}
>
) : (
'-'
)}
)
},
{
key: '4',
label: intl.formatMessage({
id: 'benchmark.detail.speculativeDecoding'
}),
children: (
{instanceData?.speculative_config?.enabled ? (
<>
{intl.formatMessage({ id: 'models.form.algorithm' })}:
{instanceData?.speculative_config?.algorithm}
{intl.formatMessage({ id: 'models.form.draftModel' })}:
{instanceData?.speculative_config?.draft_model}
{intl.formatMessage({ id: 'models.form.numDraftTokens' })}:
{instanceData?.speculative_config?.num_draft_tokens}
>
) : (
'-'
)}
)
},
{
key: '2',
label: intl.formatMessage({ id: 'models.form.env' }),
children: (
{instanceData?.env
? Object.entries(instanceData?.env || {}).map(
([key, value], index: number) => (
{`${key}=${value}`}
)
)
: '-'}
)
}
];
}, [detailData]);
return (
);
};
export default Instance;