chore: clear backend parameters、backend_version、env on change backend

This commit is contained in:
jialin
2025-04-11 18:49:06 +08:00
parent 7542ac9d87
commit 092aeceb9d
11 changed files with 102 additions and 95 deletions
+2 -2
View File
@@ -1,4 +1,5 @@
{ {
"concurrent": 2,
"*.{md,json}": ["prettier --cache --write"], "*.{md,json}": ["prettier --cache --write"],
"*.{js,jsx}": ["max lint --fix --eslint-only", "prettier --cache --write"], "*.{js,jsx}": ["max lint --fix --eslint-only", "prettier --cache --write"],
"*.{css,less}": [ "*.{css,less}": [
@@ -8,6 +9,5 @@
"*.ts?(x)": [ "*.ts?(x)": [
"max lint --fix --eslint-only", "max lint --fix --eslint-only",
"prettier --cache --parser=typescript --write" "prettier --cache --parser=typescript --write"
], ]
"src/locales/**/*.ts": ["npx tsx src/locales/check.ts"]
} }
+1 -1
View File
@@ -64,7 +64,7 @@ export default {
'resources.modelfiles.selecttarget': 'Select Target', 'resources.modelfiles.selecttarget': 'Select Target',
'resources.modelfiles.form.localdir': 'Local Directory', 'resources.modelfiles.form.localdir': 'Local Directory',
'resources.modelfiles.form.localdir.tips': 'resources.modelfiles.form.localdir.tips':
'The default storage directory is <span class="desc-block">/var/lib/gpustack/cache</span> or the directory specified with <span class="desc-block">--cache-dir</span>.', 'The default storage directory is <span class="desc-block">/var/lib/gpustack/cache</span>, or the directory specified by <span class="desc-block">--cache-dir</span> (preferred) or <span class="desc-block">--data-dir</span>.',
'resources.modelfiles.retry.download': 'Retry Download', 'resources.modelfiles.retry.download': 'Retry Download',
'resources.modelfiles.storagePath.holder': 'resources.modelfiles.storagePath.holder':
'Waiting for the download to complete...', 'Waiting for the download to complete...',
+1 -1
View File
@@ -65,7 +65,7 @@ export default {
'resources.modelfiles.selecttarget': 'Select Target', 'resources.modelfiles.selecttarget': 'Select Target',
'resources.modelfiles.form.localdir': 'Local Directory', 'resources.modelfiles.form.localdir': 'Local Directory',
'resources.modelfiles.form.localdir.tips': 'resources.modelfiles.form.localdir.tips':
'The default storage directory is <span class="desc-block">/var/lib/gpustack/cache</span> or the directory specified with <span class="desc-block">--cache-dir</span>.', 'The default storage directory is <span class="desc-block">/var/lib/gpustack/cache</span>, or the directory specified by <span class="desc-block">--cache-dir</span> (preferred) or <span class="desc-block">--data-dir</span>.',
'resources.modelfiles.retry.download': 'Retry Download', 'resources.modelfiles.retry.download': 'Retry Download',
'resources.modelfiles.storagePath.holder': 'resources.modelfiles.storagePath.holder':
'Waiting for download to complete...', 'Waiting for download to complete...',
+3 -2
View File
@@ -64,7 +64,7 @@ export default {
'resources.modelfiles.selecttarget': 'Выбрать назначение', 'resources.modelfiles.selecttarget': 'Выбрать назначение',
'resources.modelfiles.form.localdir': 'Локальный каталог', 'resources.modelfiles.form.localdir': 'Локальный каталог',
'resources.modelfiles.form.localdir.tips': 'resources.modelfiles.form.localdir.tips':
'Каталог по умолчанию <span class="desc-block>/var/lib/gpustack/cache</span> или каталог, указанный через <span class="desc-block">--cache-dir</span>.', 'The default storage directory is <span class="desc-block">/var/lib/gpustack/cache</span>, or the directory specified by <span class="desc-block">--cache-dir</span> (preferred) or <span class="desc-block">--data-dir</span>.',
'resources.modelfiles.retry.download': 'Повторить загрузку', 'resources.modelfiles.retry.download': 'Повторить загрузку',
'resources.modelfiles.storagePath.holder': 'Ожидание завершения загрузки...', 'resources.modelfiles.storagePath.holder': 'Ожидание завершения загрузки...',
'resources.filter.worker': 'Фильтровать по узлу', 'resources.filter.worker': 'Фильтровать по узлу',
@@ -77,5 +77,6 @@ export default {
// ========== To-Do: Translate Keys (Remove After Translation) ========== // ========== To-Do: Translate Keys (Remove After Translation) ==========
// 1. 'resources.worker.cann.tips', // 1. 'resources.worker.cann.tips',
// 2. 'resources.worker.add.step2.tips', // 2. 'resources.worker.add.step2.tips',
// 3. 'resources.worker.driver.install' // 3. 'resources.worker.driver.install',
// 4. 'resources.modelfiles.form.localdir.tips',
// ========== End of To-Do List ========== // ========== End of To-Do List ==========
+1 -1
View File
@@ -63,7 +63,7 @@ export default {
'resources.modelfiles.selecttarget': '选择目标位置', 'resources.modelfiles.selecttarget': '选择目标位置',
'resources.modelfiles.form.localdir': '本地目录', 'resources.modelfiles.form.localdir': '本地目录',
'resources.modelfiles.form.localdir.tips': 'resources.modelfiles.form.localdir.tips':
'默认存储目录为 <span class="desc-block">/var/lib/gpustack/cache</span>,或使用 <span class="desc-block">--cache-dir</span> 指定的目录', '默认存储目录为 <span class="desc-block">/var/lib/gpustack/cache</span>,或使用 <span class="desc-block">--cache-dir</span>(优先)、<span class="desc-block">--data-dir</span> 指定的目录',
'resources.modelfiles.retry.download': '重新下载', 'resources.modelfiles.retry.download': '重新下载',
'resources.modelfiles.storagePath.holder': '等待下载完成...', 'resources.modelfiles.storagePath.holder': '等待下载完成...',
'resources.filter.worker': '按 Worker 筛选', 'resources.filter.worker': '按 Worker 筛选',
+3 -1
View File
@@ -82,7 +82,9 @@ const DataForm: React.FC<DataFormProps> = forwardRef((props, ref) => {
const handleBackendChange = async (val: string) => { const handleBackendChange = async (val: string) => {
const updates = { const updates = {
backend_version: '' backend_version: '',
backend_parameters: [],
env: {}
}; };
if (val === backendOptionsMap.llamaBox) { if (val === backendOptionsMap.llamaBox) {
Object.assign(updates, { Object.assign(updates, {
@@ -126,7 +126,9 @@ const UpdateModal: React.FC<AddModalProps> = (props) => {
const handleBackendChange = (backend: string) => { const handleBackendChange = (backend: string) => {
const updates = { const updates = {
backend_version: '' backend_version: '',
backend_parameters: [],
env: {}
}; };
if (backend === backendOptionsMap.llamaBox) { if (backend === backendOptionsMap.llamaBox) {
Object.assign(updates, { Object.assign(updates, {
+5 -9
View File
@@ -353,14 +353,12 @@ export const useCheckCompatibility = () => {
const isOllamaModel = localPath?.includes('ollama'); const isOllamaModel = localPath?.includes('ollama');
const isGGUFFile = localPath.endsWith('.gguf'); const isGGUFFile = localPath.endsWith('.gguf');
const isOllamaModelFile = isBlobFile || isOllamaModel;
let warningMessage = ''; let warningMessage = '';
if (isBlobFile && isOllamaModel && backend === backendOptionsMap.llamaBox) { if (isOllamaModelFile && backend === backendOptionsMap.llamaBox) {
warningMessage = ''; warningMessage = '';
} else if ( } else if (isOllamaModelFile && backend !== backendOptionsMap.llamaBox) {
isBlobFile &&
isOllamaModel &&
backend !== backendOptionsMap.llamaBox
) {
warningMessage = intl.formatMessage({ warningMessage = intl.formatMessage({
id: 'models.form.ollama.warning' id: 'models.form.ollama.warning'
}); });
@@ -488,9 +486,7 @@ export const useCheckCompatibility = () => {
source: source source: source
}); });
if (res.show) { setWarningStatus?.(res);
setWarningStatus?.(res);
}
return res; return res;
}; };
@@ -137,13 +137,19 @@ const AddWorker: React.FC<ViewModalProps> = (props) => {
> >
<HighlightCode <HighlightCode
theme="dark" theme="dark"
code={code} code={code.replace(/\\/g, '')}
copyValue={code}
lang="bash" lang="bash"
copyable={false} copyable={false}
></HighlightCode> ></HighlightCode>
</EditorWrap> </EditorWrap>
) : ( ) : (
<HighlightCode theme="dark" code={code} lang="bash"></HighlightCode> <HighlightCode
theme="dark"
code={code.replace(/\\/g, '')}
copyValue={code}
lang="bash"
></HighlightCode>
)} )}
<h3 className="m-b-0 m-t-10 font-size-14 font-600"> <h3 className="m-b-0 m-t-10 font-size-14 font-600">
3. {intl.formatMessage({ id: 'resources.worker.add.step3' })} 3. {intl.formatMessage({ id: 'resources.worker.add.step3' })}
@@ -17,7 +17,7 @@
} }
.code-pre { .code-pre {
white-space: pre-line !important; white-space: normal !important;
} }
.ant-radio-button-wrapper { .ant-radio-button-wrapper {
+74 -74
View File
@@ -41,13 +41,13 @@ export const addWorkerGuide: Record<string, any> = {
token: string; token: string;
workerip: string; workerip: string;
}) { }) {
return `docker run -d --name gpustack \ return `docker run -d --name gpustack \\
--restart=unless-stopped \ --restart=unless-stopped \\
--gpus all \ --gpus all \\
--network=host \ --network=host \\
--ipc=host \ --ipc=host \\
-v gpustack-data:/var/lib/gpustack \ -v gpustack-data:/var/lib/gpustack \\
gpustack/gpustack:${params.tag} \ gpustack/gpustack:${params.tag} \\
--server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`; --server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`;
} }
}, },
@@ -60,22 +60,22 @@ export const addWorkerGuide: Record<string, any> = {
token: string; token: string;
workerip: string; workerip: string;
}) { }) {
return `docker run -d --name gpustack \ return `docker run -d --name gpustack \\
--restart=unless-stopped \ --restart=unless-stopped \\
--device /dev/davinci0 \ --device /dev/davinci0 \\
--device /dev/davinci1 \ --device /dev/davinci1 \\
--device /dev/davinci_manager \ --device /dev/davinci_manager \\
--device /dev/devmm_svm \ --device /dev/devmm_svm \\
--device /dev/hisi_hdc \ --device /dev/hisi_hdc \\
-v /usr/local/dcmi:/usr/local/dcmi \ -v /usr/local/dcmi:/usr/local/dcmi \\
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \\
-v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \ -v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \\
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \ -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \\
-v /etc/ascend_install.info:/etc/ascend_install.info \ -v /etc/ascend_install.info:/etc/ascend_install.info \\
--network=host \ --network=host \\
--ipc=host \ --ipc=host \\
-v gpustack-data:/var/lib/gpustack \ -v gpustack-data:/var/lib/gpustack \\
gpustack/gpustack:${params.tag} \ gpustack/gpustack:${params.tag} \\
--server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`; --server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`;
} }
}, },
@@ -88,22 +88,22 @@ export const addWorkerGuide: Record<string, any> = {
token: string; token: string;
workerip: string; workerip: string;
}) { }) {
return `docker run -d --name gpustack \ return `docker run -d --name gpustack \\
--restart=unless-stopped \ --restart=unless-stopped \\
--device /dev/davinci0 \ --device /dev/davinci0 \\
--device /dev/davinci1 \ --device /dev/davinci1 \\
--device /dev/davinci_manager \ --device /dev/davinci_manager \\
--device /dev/devmm_svm \ --device /dev/devmm_svm \\
--device /dev/hisi_hdc \ --device /dev/hisi_hdc \\
-v /usr/local/dcmi:/usr/local/dcmi \ -v /usr/local/dcmi:/usr/local/dcmi \\
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \\
-v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \ -v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \\
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \ -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \\
-v /etc/ascend_install.info:/etc/ascend_install.info \ -v /etc/ascend_install.info:/etc/ascend_install.info \\
--network=host \ --network=host \\
--ipc=host \ --ipc=host \\
-v gpustack-data:/var/lib/gpustack \ -v gpustack-data:/var/lib/gpustack \\
gpustack/gpustack:${params.tag}-310p \ gpustack/gpustack:${params.tag}-310p \\
--server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`; --server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`;
} }
}, },
@@ -116,12 +116,12 @@ export const addWorkerGuide: Record<string, any> = {
token: string; token: string;
workerip: string; workerip: string;
}) { }) {
return `docker run -d --name gpustack \ return `docker run -d --name gpustack \\
--restart=unless-stopped \ --restart=unless-stopped \\
--network=host \ --network=host \\
--ipc=host \ --ipc=host \\
-v gpustack-data:/var/lib/gpustack \ -v gpustack-data:/var/lib/gpustack \\
gpustack/gpustack:${params.tag} \ gpustack/gpustack:${params.tag} \\
--server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`; --server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`;
} }
}, },
@@ -134,11 +134,11 @@ export const addWorkerGuide: Record<string, any> = {
token: string; token: string;
workerip: string; workerip: string;
}) { }) {
return `docker run -d --name gpustack \ return `docker run -d --name gpustack \\
--restart=unless-stopped \ --restart=unless-stopped \\
--network=host \ --network=host \\
-v gpustack-data:/var/lib/gpustack \ -v gpustack-data:/var/lib/gpustack \\
gpustack/gpustack:${params.tag} \ gpustack/gpustack:${params.tag} \\
--server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`; --server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`;
} }
}, },
@@ -149,17 +149,17 @@ export const addWorkerGuide: Record<string, any> = {
token: string; token: string;
workerip: string; workerip: string;
}) { }) {
return `docker run -d --name gpustack \ return `docker run -d --name gpustack \\
--restart=unless-stopped \ --restart=unless-stopped \\
--device=/dev/kfd \ --device=/dev/kfd \\
--device=/dev/dri \ --device=/dev/dri \\
--network=host \ --network=host \\
--ipc=host \ --ipc=host \\
--group-add video \ --group-add video \\
--cap-add=SYS_PTRACE \ --cap-add=SYS_PTRACE \\
--security-opt seccomp=unconfined \ --security-opt seccomp=unconfined \\
-v gpustack-data:/var/lib/gpustack \ -v gpustack-data:/var/lib/gpustack \\
gpustack/gpustack:${params.tag} \ gpustack/gpustack:${params.tag} \\
--server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`; --server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`;
} }
}, },
@@ -170,19 +170,19 @@ export const addWorkerGuide: Record<string, any> = {
token: string; token: string;
workerip: string; workerip: string;
}) { }) {
return `docker run -d --name gpustack \ return `docker run -d --name gpustack \\
--restart=unless-stopped \ --restart=unless-stopped \\
--device=/dev/kfd \ --device=/dev/kfd \\
--device=/dev/mkfd \ --device=/dev/mkfd \\
--device=/dev/dri \ --device=/dev/dri \\
-v /opt/hyhal:/opt/hyhal:ro \ -v /opt/hyhal:/opt/hyhal:ro \\
--network=host \ --network=host \\
--ipc=host \ --ipc=host \\
--group-add video \ --group-add video \\
--cap-add=SYS_PTRACE \ --cap-add=SYS_PTRACE \\
--security-opt seccomp=unconfined \ --security-opt seccomp=unconfined \\
-v gpustack-data:/var/lib/gpustack \ -v gpustack-data:/var/lib/gpustack \\
gpustack/gpustack:${params.tag} \ gpustack/gpustack:${params.tag} \\
--server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`; --server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`;
} }
}, },