diff --git a/src/locales/en-US/backends.ts b/src/locales/en-US/backends.ts index 05350b69..c0c87b46 100644 --- a/src/locales/en-US/backends.ts +++ b/src/locales/en-US/backends.ts @@ -23,6 +23,13 @@ export default { 'backend.form.defaultExecuteCommand': 'Default Execution Command', 'backend.form.defaultExecuteCommand.tips': `'{{'model_path'}}', '{{'port'}}', '{{'worker_ip'}}' and '{{'model_name'}}' are placeholders that will be substituted with the actual values during deployment.`, 'backend.form.defaultBackendParameters': 'Default Backend Parameters', + 'backend.form.parameterFormat': 'Parameter Format', + 'backend.form.parameterFormat.default': 'Backend Default', + 'backend.form.parameterFormat.space': 'Space (--key value)', + 'backend.form.parameterFormat.equal': 'Equal (--key=value)', + 'backend.form.commonParameters': 'Common Parameters', + 'backend.form.commonParameters.tips': + 'Shown as suggestions in the backend parameters input during deployment.', 'backend.form.versionConfig': 'Versions Config', 'backend.form.addParameter': 'Add Parameter', 'backend.form.noVersion': 'No versions added', diff --git a/src/locales/ja-JP/backends.ts b/src/locales/ja-JP/backends.ts index 05350b69..087ee84e 100644 --- a/src/locales/ja-JP/backends.ts +++ b/src/locales/ja-JP/backends.ts @@ -23,6 +23,13 @@ export default { 'backend.form.defaultExecuteCommand': 'Default Execution Command', 'backend.form.defaultExecuteCommand.tips': `'{{'model_path'}}', '{{'port'}}', '{{'worker_ip'}}' and '{{'model_name'}}' are placeholders that will be substituted with the actual values during deployment.`, 'backend.form.defaultBackendParameters': 'Default Backend Parameters', + 'backend.form.parameterFormat': 'パラメータ形式', + 'backend.form.parameterFormat.default': 'バックエンドのデフォルト', + 'backend.form.parameterFormat.space': 'スペース区切り (--key value)', + 'backend.form.parameterFormat.equal': 'イコール連結 (--key=value)', + 'backend.form.commonParameters': 'よく使うパラメータ', + 'backend.form.commonParameters.tips': + 'モデルのデプロイ時にバックエンドパラメータ入力欄の候補として表示されます。', 'backend.form.versionConfig': 'Versions Config', 'backend.form.addParameter': 'Add Parameter', 'backend.form.noVersion': 'No versions added', diff --git a/src/locales/ru-RU/backends.ts b/src/locales/ru-RU/backends.ts index 39b526d7..b29d2ec4 100644 --- a/src/locales/ru-RU/backends.ts +++ b/src/locales/ru-RU/backends.ts @@ -23,6 +23,13 @@ export default { 'backend.form.defaultExecuteCommand': 'Команда выполнения по умолчанию', 'backend.form.defaultExecuteCommand.tips': `'{{'model_path'}}', '{{'port'}}', '{{'worker_ip'}}' и '{{'model_name'}}' заполняются реальными значениями во время запуска`, 'backend.form.defaultBackendParameters': 'Параметры бэкенда по умолчанию', + 'backend.form.parameterFormat': 'Формат параметров', + 'backend.form.parameterFormat.default': 'По умолчанию бэкенда', + 'backend.form.parameterFormat.space': 'Пробел (--key value)', + 'backend.form.parameterFormat.equal': 'Знак равенства (--key=value)', + 'backend.form.commonParameters': 'Часто используемые параметры', + 'backend.form.commonParameters.tips': + 'Отображаются как подсказки в поле параметров бэкенда при развёртывании.', 'backend.form.versionConfig': 'Конфигурация версий', 'backend.form.addParameter': 'Добавить параметр', 'backend.form.noVersion': 'Версии не добавлены', diff --git a/src/locales/tr-TR/backends.ts b/src/locales/tr-TR/backends.ts index 63512210..53234fb7 100644 --- a/src/locales/tr-TR/backends.ts +++ b/src/locales/tr-TR/backends.ts @@ -23,6 +23,13 @@ export default { 'backend.form.defaultExecuteCommand': 'Varsayılan Çalıştırma Komutu', 'backend.form.defaultExecuteCommand.tips': `'{{'model_path'}}', '{{'port'}}', '{{'worker_ip'}}' ve '{{'model_name'}}' dağıtım sırasında gerçek değerlerle değiştirilecek yer tutuculardır.`, 'backend.form.defaultBackendParameters': 'Varsayılan Altyapı Parametreleri', + 'backend.form.parameterFormat': 'Parametre Biçimi', + 'backend.form.parameterFormat.default': 'Varsayılan', + 'backend.form.parameterFormat.space': 'Boşluk (--key value)', + 'backend.form.parameterFormat.equal': 'Eşittir (--key=value)', + 'backend.form.commonParameters': 'Yaygın Parametreler', + 'backend.form.commonParameters.tips': + 'Dağıtım sırasında altyapı parametreleri girişinde öneri olarak gösterilir.', 'backend.form.versionConfig': 'Sürüm Yapılandırması', 'backend.form.addParameter': 'Parametre Ekle', 'backend.form.noVersion': 'Sürüm eklenmedi', diff --git a/src/locales/zh-CN/backends.ts b/src/locales/zh-CN/backends.ts index 20bb021d..f9316f3f 100644 --- a/src/locales/zh-CN/backends.ts +++ b/src/locales/zh-CN/backends.ts @@ -23,6 +23,12 @@ export default { 'backend.form.defaultExecuteCommand': '默认执行命令', 'backend.form.defaultExecuteCommand.tips': `'{{'model_path'}}'、'{{'port'}}'、'{{'worker_ip'}}' 和 '{{'model_name'}}' 都是占位符,在部署过程中会被替换为实际的值。`, 'backend.form.defaultBackendParameters': '默认后端参数', + 'backend.form.parameterFormat': '参数输出格式', + 'backend.form.parameterFormat.default': '后端默认', + 'backend.form.parameterFormat.space': '空格分隔 (--key value)', + 'backend.form.parameterFormat.equal': '等号连接 (--key=value)', + 'backend.form.commonParameters': '常用参数', + 'backend.form.commonParameters.tips': '部署模型时作为后端参数候选项展示。', 'backend.form.versionConfig': '版本配置', 'backend.form.addParameter': '添加参数', 'backend.form.noVersion': '未添加版本', diff --git a/src/pages/backends/components/add-modal.tsx b/src/pages/backends/components/add-modal.tsx index bc5881a5..62b29bed 100644 --- a/src/pages/backends/components/add-modal.tsx +++ b/src/pages/backends/components/add-modal.tsx @@ -119,6 +119,10 @@ const AddModal: React.FC = (props) => { onSubmit({ ...values, + parameter_format: + values.parameter_format === 'auto' || !values.parameter_format + ? null + : values.parameter_format, default_version: defaultVersion?.version_no || '', // @ts-ignore version_configs: versionConfigs @@ -155,6 +159,7 @@ const AddModal: React.FC = (props) => { return { ...values, backend_name: values.backend_name.replace(/-custom$/, ''), + parameter_format: values.parameter_format ?? 'auto', version_configs: versionConfigs, built_in_version_configs: builtInVersions }; diff --git a/src/pages/backends/config/index.ts b/src/pages/backends/config/index.ts index daa0ef57..eb079834 100644 --- a/src/pages/backends/config/index.ts +++ b/src/pages/backends/config/index.ts @@ -198,6 +198,8 @@ export const customBackendFields = [ 'default_run_command', 'version_configs', 'default_backend_param', + 'parameter_format', + 'common_parameters', 'default_env' ]; @@ -208,6 +210,8 @@ export const builtInBackendFields = [ 'description', 'version_configs', 'default_backend_param', + 'parameter_format', + 'common_parameters', 'default_env' ]; @@ -293,6 +297,10 @@ default_version: v0.11.0 health_check_path: /v1/models default_backend_param: - --host +parameter_format: space +common_parameters: + - --max-model-len + - --gpu-memory-utilization default_run_command: "{{model_path}} --port {{port}} --host {{worker_ip}} --served-model-name {{model_name}}" default_env: version_configs: diff --git a/src/pages/backends/config/schema/create.json b/src/pages/backends/config/schema/create.json index 69ae6645..fe194be2 100644 --- a/src/pages/backends/config/schema/create.json +++ b/src/pages/backends/config/schema/create.json @@ -26,6 +26,18 @@ }, "description": "default backend parameter" }, + "parameter_format": { + "type": ["string", "null"], + "enum": ["space", "equal", null], + "description": "parameter output format: 'space' -> --key value, 'equal' -> --key=value" + }, + "common_parameters": { + "type": "array", + "items": { + "type": "string" + }, + "description": "commonly used parameters shown as hints in deployment UI" + }, "default_run_command": { "type": ["string", "null"], "description": "default start command" diff --git a/src/pages/backends/config/schema/update-builtin.json b/src/pages/backends/config/schema/update-builtin.json index 2feb3981..0e09348d 100644 --- a/src/pages/backends/config/schema/update-builtin.json +++ b/src/pages/backends/config/schema/update-builtin.json @@ -12,6 +12,18 @@ }, "description": "default backend parameter" }, + "parameter_format": { + "type": ["string", "null"], + "enum": ["space", "equal", null], + "description": "parameter output format: 'space' -> --key value, 'equal' -> --key=value" + }, + "common_parameters": { + "type": "array", + "items": { + "type": "string" + }, + "description": "commonly used parameters shown as hints in deployment UI" + }, "default_run_command": { "type": ["string", "null"], "description": "default start command" diff --git a/src/pages/backends/config/schema/update-custom.json b/src/pages/backends/config/schema/update-custom.json index 93e427f9..e9052b61 100644 --- a/src/pages/backends/config/schema/update-custom.json +++ b/src/pages/backends/config/schema/update-custom.json @@ -16,6 +16,18 @@ }, "description": "default backend parameter" }, + "parameter_format": { + "type": ["string", "null"], + "enum": ["space", "equal", null], + "description": "parameter output format: 'space' -> --key value, 'equal' -> --key=value" + }, + "common_parameters": { + "type": "array", + "items": { + "type": "string" + }, + "description": "commonly used parameters shown as hints in deployment UI" + }, "default_run_command": { "type": ["string", "null"], "description": "default start command" diff --git a/src/pages/backends/config/types.ts b/src/pages/backends/config/types.ts index 9c276fcd..c6e708b7 100644 --- a/src/pages/backends/config/types.ts +++ b/src/pages/backends/config/types.ts @@ -28,6 +28,8 @@ export interface FormData { enabled?: boolean; backend_source?: string; default_env?: Record; + parameter_format?: 'space' | 'equal' | 'auto' | null; + common_parameters?: string[]; } export interface ListItem extends FormData { diff --git a/src/pages/backends/forms/basic.tsx b/src/pages/backends/forms/basic.tsx index 24bcbb92..13e41e39 100644 --- a/src/pages/backends/forms/basic.tsx +++ b/src/pages/backends/forms/basic.tsx @@ -5,6 +5,7 @@ import { Input as CInput, LabelSelector, ListInput, + Select as SealSelect, Textarea as SealTextArea, useAppUtils } from '@gpustack/core-ui'; @@ -148,6 +149,46 @@ const BasicForm = () => { })} > + + name="parameter_format" + initialValue="auto" + rules={[{ required: false }]} + > + + + + name="common_parameters" + rules={[{ required: false }]} + > + + name="default_env"> ; enabled: boolean; + common_parameters?: string[]; + parameter_format?: 'space' | 'equal' | null; versions: { label: string; value: string; @@ -387,6 +391,8 @@ export interface BackendItem { is_built_in: boolean; backend_source: string; enabled: boolean; + common_parameters?: string[]; + parameter_format?: 'space' | 'equal' | null; versions: { version: string; env?: Record; diff --git a/src/pages/llmodels/forms/backend-parameters-list.tsx b/src/pages/llmodels/forms/backend-parameters-list.tsx index e95e4716..f49dcd2a 100644 --- a/src/pages/llmodels/forms/backend-parameters-list.tsx +++ b/src/pages/llmodels/forms/backend-parameters-list.tsx @@ -12,7 +12,7 @@ import BackendParameters, { const BackendParametersList: React.FC = () => { const intl = useIntl(); - const { onValuesChange } = useFormContext(); + const { onValuesChange, flatBackendOptions } = useFormContext(); const form = Form.useFormInstance(); const backend = Form.useWatch('backend', form); @@ -21,8 +21,18 @@ const BackendParametersList: React.FC = () => { }, [backend]); const paramsConfig = useMemo(() => { - return _.get(BackendParameters, backend, []); - }, [backend]); + const builtIn = _.get(BackendParameters, backend, []) as Array<{ + label: string; + value: string; + opts?: { label: any; value: any }[]; + }>; + const selected = flatBackendOptions?.find((o) => o.value === backend); + const extra = (selected?.common_parameters || []).map((v) => ({ + label: v, + value: v + })); + return _.uniqBy([...extra, ...builtIn], 'value'); + }, [backend, flatBackendOptions]); const handleBackendParametersOnBlur = () => { onValuesChange?.({}, form.getFieldsValue()); diff --git a/src/pages/llmodels/hooks/use-query-backends.ts b/src/pages/llmodels/hooks/use-query-backends.ts index e51f7f81..ee4f7aeb 100644 --- a/src/pages/llmodels/hooks/use-query-backends.ts +++ b/src/pages/llmodels/hooks/use-query-backends.ts @@ -63,7 +63,9 @@ export default function useQueryBackends() { 'backend_source', 'is_built_in', 'default_backend_param', - 'default_env' + 'default_env', + 'common_parameters', + 'parameter_format' ]), backend_source: item.backend_source || BackendSourceValueMap.CUSTOM, value: item.backend_name,