fix: gpus_per_replica appears null

This commit is contained in:
jialin
2025-10-30 10:52:48 +08:00
parent b77f796661
commit e9fa3e3aa3
6 changed files with 24 additions and 29 deletions
+2
View File
@@ -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',
+2
View File
@@ -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}行',
+2
View File
@@ -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} строк',
+2
View File
@@ -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} 行',
+4
View File
@@ -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
};
+12 -29
View File
@@ -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={
<TooltipList list={GPUsPerReplicaTips}></TooltipList>
}
popupRender={(originNode) => (
<div>
{originNode}
<InputWrapper>
<InputNumber
min={1}
step={1}
style={{ width: '100%' }}
defaultValue={
GPUsPerReplicas === null ? -1 : GPUsPerReplicas
GPUsPerReplicas === -1 ? null : GPUsPerReplicas
}
value={GPUsPerReplicas === -1 ? null : GPUsPerReplicas}
onChange={handleGpusPerReplicasChange}
@@ -263,7 +247,6 @@ const ScheduleTypeForm: React.FC = () => {
</InputWrapper>
</div>
)}
onChange={handleOnStepReplica}
/>
</Form.Item>
</>