From e9fa3e3aa3bc8ee028847ea701b3cd2dada691e7 Mon Sep 17 00:00:00 2001 From: jialin Date: Thu, 30 Oct 2025 10:49:49 +0800 Subject: [PATCH] fix: gpus_per_replica appears null --- src/locales/en-US/models.ts | 2 ++ src/locales/ja-JP/models.ts | 2 ++ src/locales/ru-RU/models.ts | 2 ++ src/locales/zh-CN/models.ts | 2 ++ src/pages/llmodels/config/index.ts | 4 +++ src/pages/llmodels/forms/schedule-type.tsx | 41 +++++++--------------- 6 files changed, 24 insertions(+), 29 deletions(-) diff --git a/src/locales/en-US/models.ts b/src/locales/en-US/models.ts index 122f4972..cf75b857 100644 --- a/src/locales/en-US/models.ts +++ b/src/locales/en-US/models.ts @@ -71,6 +71,8 @@ export default { 'e.g., --ctx-size=8192 (use = to separate name and value)', 'models.form.backend_parameters.vllm.placeholder': 'e.g., --max-model-len=8192 (use = to separate name and value)', + 'models.form.backend_parameters.sglang.placeholder': + 'e.g., --max-total-tokens=8192 (use = to separate name and value)', 'models.form.backend_parameters.vllm.tips': 'More {backend} parameter details', 'models.logs.pagination.prev': 'Previous {lines} Lines', diff --git a/src/locales/ja-JP/models.ts b/src/locales/ja-JP/models.ts index 0fc1e756..fe761991 100644 --- a/src/locales/ja-JP/models.ts +++ b/src/locales/ja-JP/models.ts @@ -73,6 +73,8 @@ export default { '例: --ctx-size=8192(=で名前と値を分ける)', 'models.form.backend_parameters.vllm.placeholder': '例: --max-model-len=8192(=で名前と値を分ける)', + 'models.form.backend_parameters.sglang.placeholder': + '例: --max-total-tokens=8192(=で名前と値を分ける)', 'models.form.backend_parameters.vllm.tips': '詳細な{backend}パラメータ情報', 'models.logs.pagination.prev': '前の{lines}行', 'models.logs.pagination.next': '次の{lines}行', diff --git a/src/locales/ru-RU/models.ts b/src/locales/ru-RU/models.ts index 1186de99..8603be60 100644 --- a/src/locales/ru-RU/models.ts +++ b/src/locales/ru-RU/models.ts @@ -71,6 +71,8 @@ export default { 'например: --ctx-size=8192(параметр и значение разделены знаком =)', 'models.form.backend_parameters.vllm.placeholder': 'например: --max-model-len=8192(параметр и значение разделены знаком =)', + 'models.form.backend_parameters.sglang.placeholder': + 'например: --max-total-tokens=8192(параметр и значение разделены знаком =)', 'models.form.backend_parameters.vllm.tips': 'Подробнее о параметрах {backend}', 'models.logs.pagination.prev': 'Предыдущие {lines} строк', diff --git a/src/locales/zh-CN/models.ts b/src/locales/zh-CN/models.ts index d41c1de3..fa4c32da 100644 --- a/src/locales/zh-CN/models.ts +++ b/src/locales/zh-CN/models.ts @@ -70,6 +70,8 @@ export default { '例如,--ctx-size=8192(参数名和值用 = 号分隔)', 'models.form.backend_parameters.vllm.placeholder': '例如,--max-model-len=8192(参数名和值用 = 号分隔)', + 'models.form.backend_parameters.sglang.placeholder': + '例如,--max-total-tokens=8192(参数名和值用 = 号分隔)', 'models.form.backend_parameters.vllm.tips': '更多 {backend} 参数说明查看', 'models.logs.pagination.prev': '上一 {lines} 行', 'models.logs.pagination.next': '下一 {lines} 行', diff --git a/src/pages/llmodels/config/index.ts b/src/pages/llmodels/config/index.ts index 75ab8047..d684a741 100644 --- a/src/pages/llmodels/config/index.ts +++ b/src/pages/llmodels/config/index.ts @@ -59,6 +59,10 @@ export const backendParamsHolderTips = { holder: 'models.form.backend_parameters.vllm.placeholder', tooltip: 'models.form.backend_parameters.vllm.tips' }, + [backendOptionsMap.SGLang]: { + holder: 'models.form.backend_parameters.sglang.placeholder', + tooltip: '' + }, [backendOptionsMap.voxBox]: null }; diff --git a/src/pages/llmodels/forms/schedule-type.tsx b/src/pages/llmodels/forms/schedule-type.tsx index 1e80af01..e71e2681 100644 --- a/src/pages/llmodels/forms/schedule-type.tsx +++ b/src/pages/llmodels/forms/schedule-type.tsx @@ -51,20 +51,13 @@ const scheduleTypeTips = [ } ]; -const gpuAllocateTypeTips = [ +const GPUsPerReplicaTips = [ { title: { - text: 'models.form.gpusAllocationType.auto', + text: 'common.options.auto', locale: true }, tips: 'models.form.gpusAllocationType.auto.tips' - }, - { - title: { - text: 'models.form.gpusAllocationType.custom', - locale: true - }, - tips: 'models.form.gpusAllocationType.custom.tips' } ]; @@ -98,7 +91,11 @@ const ScheduleTypeForm: React.FC = () => { }; const handleGpusPerReplicasChange = (val: string | number | null) => { - form.setFieldValue(['gpu_selector', 'gpus_per_replica'], val); + if (val === null) { + form.setFieldValue(['gpu_selector', 'gpus_per_replica'], -1); + } else { + form.setFieldValue(['gpu_selector', 'gpus_per_replica'], val); + } onValuesChange?.({}, form.getFieldsValue()); }; @@ -128,23 +125,6 @@ const ScheduleTypeForm: React.FC = () => { onValuesChange?.({}, form.getFieldsValue()); }; - const handleOnStepReplica = async (value: number | string | null) => { - if (value === null) { - await new Promise((resolve) => { - setTimeout(resolve, 200); - }); - form.setFieldValue(['gpu_selector', 'gpus_per_replica'], 1); - return; - } - - const isPowerOfTwo = (n: number) => (n & (n - 1)) === 0 && n !== 0; // check power of two - if (!isPowerOfTwo(value as number)) { - const newValue = Math.pow(2, Math.round(Math.log2(value as number))); - form.setFieldValue(['gpu_selector', 'gpus_per_replica'], newValue); - onValuesChange?.({}, form.getFieldsValue()); - } - }; - const onSelectorChange = (field: string, allowEmpty?: boolean) => { const workerSelector = form.getFieldValue(field); // check if all keys have values @@ -246,15 +226,19 @@ const ScheduleTypeForm: React.FC = () => { { label: '4', value: 4 }, { label: '8', value: 8 } ]} + description={ + + } popupRender={(originNode) => (
{originNode} {
)} - onChange={handleOnStepReplica} />