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={
+