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: '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: '2', label: intl.formatMessage({ id: 'models.form.env' }), children: ( {instanceData?.env ? Object.entries(instanceData?.env || {}).map( ([key, value], index: number) => ( {`${key}=${value}`} ) ) : '-'} ) }, { 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} ) : ( '-' )} ) } ]; }, [detailData]); return (
); }; export default Instance;