{
+ const intl = useIntl();
+ const form = Form.useFormInstance();
+ const kvCacheEnabled = Form.useWatch(['extended_kv_cache', 'enabled'], form);
+
+ return (
+ <>
+
+
+ name={['extended_kv_cache', 'enabled']}
+ valuePropName="checked"
+ style={{ padding: '0 10px', marginBottom: 0 }}
+ noStyle
+ >
+
+
+
+ {kvCacheEnabled && (
+ <>
+
+ name={['extended_kv_cache', 'max_local_cpu_size']}
+ >
+
+
+ name={['extended_kv_cache', 'chunk_size']}>
+
+
+ name={['extended_kv_cache', 'remote_url']}>
+
+
+ >
+ )}
+ >
+ );
+};
+
+export default KVCacheForm;
diff --git a/src/pages/llmodels/forms/performance.tsx b/src/pages/llmodels/forms/performance.tsx
index 950b128a..511f6938 100644
--- a/src/pages/llmodels/forms/performance.tsx
+++ b/src/pages/llmodels/forms/performance.tsx
@@ -1,143 +1,15 @@
-import SealCascader from '@/components/seal-form/seal-cascader';
-import SealInput from '@/components/seal-form/seal-input';
-import SealSelect from '@/components/seal-form/seal-select';
-import TooltipList from '@/components/tooltip-list';
-import useAppUtils from '@/hooks/use-app-utils';
import { useIntl } from '@umijs/max';
import { Form } from 'antd';
import React from 'react';
-import GPUCard from '../components/gpu-card';
-import { scheduleList, ScheduleValueMap } from '../config';
-import { backendOptionsMap } from '../config/backend-parameters';
-import { useCatalogFormContext, useFormContext } from '../config/form-context';
-import { FormData } from '../config/types';
-
-const scheduleTypeTips = [
- {
- title: {
- text: 'models.form.scheduletype.auto',
- locale: true
- },
- tips: 'models.form.scheduletype.auto.tips'
- },
- {
- title: {
- text: 'models.form.scheduletype.manual',
- locale: true
- },
- tips: 'models.form.scheduletype.manual.tips'
- }
-];
+import KVCacheForm from './kv-cache';
const Performance: React.FC = () => {
const intl = useIntl();
- const { onValuesChange, gpuOptions } = useFormContext();
- const { onQuantizationChange } = useCatalogFormContext();
- const { getRuleMessage } = useAppUtils();
const form = Form.useFormInstance();
- const scheduleType = Form.useWatch('scheduleType', form);
-
- const handleScheduleTypeChange = (value: string) => {
- if (value === ScheduleValueMap.Auto) {
- onValuesChange?.({}, form.getFieldsValue());
- }
- };
-
- const handleOnQuantizationChange = (val: any) => {
- onQuantizationChange?.(val);
- };
-
- const handleBeforeGpuSelectorChange = (gpuIds: any[]) => {};
-
- const handleGpuSelectorChange = (value: any[]) => {
- handleBeforeGpuSelectorChange(value);
- onValuesChange?.({}, form.getFieldsValue());
- };
return (
<>
-
- name="replicas"
- rules={[
- {
- required: true,
- message: getRuleMessage('input', 'models.form.replicas')
- }
- ]}
- >
-
-
-
- }
- options={scheduleList}
- >
-
- {scheduleType === ScheduleValueMap.SpecificGPUType && (
- <>
-
-
-
-
-
-
- >
- )}
- {scheduleType === ScheduleValueMap.Manual &&
- !form.getFieldValue('fix_gpu_type') && (
- <>
-
- triggerNode.parentNode}
- onChange={handleGpuSelectorChange}
- >
-
- >
- )}
+
{/*
name="optimize_long_prompt"
diff --git a/src/pages/llmodels/forms/schedule-type.tsx b/src/pages/llmodels/forms/schedule-type.tsx
new file mode 100644
index 00000000..9d36238b
--- /dev/null
+++ b/src/pages/llmodels/forms/schedule-type.tsx
@@ -0,0 +1,124 @@
+import SealCascader from '@/components/seal-form/seal-cascader';
+import SealSelect from '@/components/seal-form/seal-select';
+import TooltipList from '@/components/tooltip-list';
+import useAppUtils from '@/hooks/use-app-utils';
+import { useIntl } from '@umijs/max';
+import { Form } from 'antd';
+import React from 'react';
+import GPUCard from '../components/gpu-card';
+import { scheduleList, ScheduleValueMap } from '../config';
+import { backendOptionsMap } from '../config/backend-parameters';
+import { useCatalogFormContext, useFormContext } from '../config/form-context';
+
+const scheduleTypeTips = [
+ {
+ title: {
+ text: 'models.form.scheduletype.auto',
+ locale: true
+ },
+ tips: 'models.form.scheduletype.auto.tips'
+ },
+ {
+ title: {
+ text: 'models.form.scheduletype.manual',
+ locale: true
+ },
+ tips: 'models.form.scheduletype.manual.tips'
+ }
+];
+
+const ScheduleTypeForm: React.FC = () => {
+ const intl = useIntl();
+ const { onValuesChange, gpuOptions } = useFormContext();
+ const { onQuantizationChange } = useCatalogFormContext();
+ const { getRuleMessage } = useAppUtils();
+ const form = Form.useFormInstance();
+ const scheduleType = Form.useWatch('scheduleType', form);
+
+ const handleScheduleTypeChange = (value: string) => {
+ if (value === ScheduleValueMap.Auto) {
+ onValuesChange?.({}, form.getFieldsValue());
+ }
+ };
+
+ const handleOnQuantizationChange = (val: any) => {
+ onQuantizationChange?.(val);
+ };
+
+ const handleBeforeGpuSelectorChange = (gpuIds: any[]) => {};
+
+ const handleGpuSelectorChange = (value: any[]) => {
+ handleBeforeGpuSelectorChange(value);
+ onValuesChange?.({}, form.getFieldsValue());
+ };
+
+ return (
+ <>
+
+ }
+ options={scheduleList}
+ >
+
+ {scheduleType === ScheduleValueMap.SpecificGPUType && (
+ <>
+
+
+
+
+
+
+ >
+ )}
+ {scheduleType === ScheduleValueMap.Manual &&
+ !form.getFieldValue('fix_gpu_type') && (
+ <>
+
+ triggerNode.parentNode}
+ notFoundContent={intl.formatMessage({
+ id: 'models.form.gpus.notfound'
+ })}
+ onChange={handleGpuSelectorChange}
+ >
+
+ >
+ )}
+ >
+ );
+};
+
+export default ScheduleTypeForm;