diff --git a/.lintstagedrc b/.lintstagedrc
index e0257748..5400ebd1 100644
--- a/.lintstagedrc
+++ b/.lintstagedrc
@@ -1,4 +1,5 @@
{
+ "concurrent": 2,
"*.{md,json}": ["prettier --cache --write"],
"*.{js,jsx}": ["max lint --fix --eslint-only", "prettier --cache --write"],
"*.{css,less}": [
@@ -8,6 +9,5 @@
"*.ts?(x)": [
"max lint --fix --eslint-only",
"prettier --cache --parser=typescript --write"
- ],
- "src/locales/**/*.ts": ["npx tsx src/locales/check.ts"]
+ ]
}
diff --git a/src/locales/en-US/resources.ts b/src/locales/en-US/resources.ts
index a880b75d..43c59c19 100644
--- a/src/locales/en-US/resources.ts
+++ b/src/locales/en-US/resources.ts
@@ -64,7 +64,7 @@ export default {
'resources.modelfiles.selecttarget': 'Select Target',
'resources.modelfiles.form.localdir': 'Local Directory',
'resources.modelfiles.form.localdir.tips':
- 'The default storage directory is /var/lib/gpustack/cache or the directory specified with --cache-dir.',
+ 'The default storage directory is /var/lib/gpustack/cache, or the directory specified by --cache-dir (preferred) or --data-dir.',
'resources.modelfiles.retry.download': 'Retry Download',
'resources.modelfiles.storagePath.holder':
'Waiting for the download to complete...',
diff --git a/src/locales/ja-JP/resources.ts b/src/locales/ja-JP/resources.ts
index 0f167323..5ac7492b 100644
--- a/src/locales/ja-JP/resources.ts
+++ b/src/locales/ja-JP/resources.ts
@@ -65,7 +65,7 @@ export default {
'resources.modelfiles.selecttarget': 'Select Target',
'resources.modelfiles.form.localdir': 'Local Directory',
'resources.modelfiles.form.localdir.tips':
- 'The default storage directory is /var/lib/gpustack/cache or the directory specified with --cache-dir.',
+ 'The default storage directory is /var/lib/gpustack/cache, or the directory specified by --cache-dir (preferred) or --data-dir.',
'resources.modelfiles.retry.download': 'Retry Download',
'resources.modelfiles.storagePath.holder':
'Waiting for download to complete...',
diff --git a/src/locales/ru-RU/resources.ts b/src/locales/ru-RU/resources.ts
index f0c5a437..bf940488 100644
--- a/src/locales/ru-RU/resources.ts
+++ b/src/locales/ru-RU/resources.ts
@@ -64,7 +64,7 @@ export default {
'resources.modelfiles.selecttarget': 'Выбрать назначение',
'resources.modelfiles.form.localdir': 'Локальный каталог',
'resources.modelfiles.form.localdir.tips':
- 'Каталог по умолчанию --cache-dir.',
+ 'The default storage directory is /var/lib/gpustack/cache, or the directory specified by --cache-dir (preferred) or --data-dir.',
'resources.modelfiles.retry.download': 'Повторить загрузку',
'resources.modelfiles.storagePath.holder': 'Ожидание завершения загрузки...',
'resources.filter.worker': 'Фильтровать по узлу',
@@ -77,5 +77,6 @@ export default {
// ========== To-Do: Translate Keys (Remove After Translation) ==========
// 1. 'resources.worker.cann.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 ==========
diff --git a/src/locales/zh-CN/resources.ts b/src/locales/zh-CN/resources.ts
index 742269e7..0b49c85a 100644
--- a/src/locales/zh-CN/resources.ts
+++ b/src/locales/zh-CN/resources.ts
@@ -63,7 +63,7 @@ export default {
'resources.modelfiles.selecttarget': '选择目标位置',
'resources.modelfiles.form.localdir': '本地目录',
'resources.modelfiles.form.localdir.tips':
- '默认存储目录为 /var/lib/gpustack/cache,或使用 --cache-dir 指定的目录',
+ '默认存储目录为 /var/lib/gpustack/cache,或使用 --cache-dir(优先)、--data-dir 指定的目录。',
'resources.modelfiles.retry.download': '重新下载',
'resources.modelfiles.storagePath.holder': '等待下载完成...',
'resources.filter.worker': '按 Worker 筛选',
diff --git a/src/pages/llmodels/components/data-form.tsx b/src/pages/llmodels/components/data-form.tsx
index 1615dcf9..7207fd57 100644
--- a/src/pages/llmodels/components/data-form.tsx
+++ b/src/pages/llmodels/components/data-form.tsx
@@ -82,7 +82,9 @@ const DataForm: React.FC = forwardRef((props, ref) => {
const handleBackendChange = async (val: string) => {
const updates = {
- backend_version: ''
+ backend_version: '',
+ backend_parameters: [],
+ env: {}
};
if (val === backendOptionsMap.llamaBox) {
Object.assign(updates, {
diff --git a/src/pages/llmodels/components/update-modal.tsx b/src/pages/llmodels/components/update-modal.tsx
index 449e853d..4914504e 100644
--- a/src/pages/llmodels/components/update-modal.tsx
+++ b/src/pages/llmodels/components/update-modal.tsx
@@ -126,7 +126,9 @@ const UpdateModal: React.FC = (props) => {
const handleBackendChange = (backend: string) => {
const updates = {
- backend_version: ''
+ backend_version: '',
+ backend_parameters: [],
+ env: {}
};
if (backend === backendOptionsMap.llamaBox) {
Object.assign(updates, {
diff --git a/src/pages/llmodels/hooks/index.ts b/src/pages/llmodels/hooks/index.ts
index 2bc12fe6..d4075731 100644
--- a/src/pages/llmodels/hooks/index.ts
+++ b/src/pages/llmodels/hooks/index.ts
@@ -353,14 +353,12 @@ export const useCheckCompatibility = () => {
const isOllamaModel = localPath?.includes('ollama');
const isGGUFFile = localPath.endsWith('.gguf');
+ const isOllamaModelFile = isBlobFile || isOllamaModel;
+
let warningMessage = '';
- if (isBlobFile && isOllamaModel && backend === backendOptionsMap.llamaBox) {
+ if (isOllamaModelFile && backend === backendOptionsMap.llamaBox) {
warningMessage = '';
- } else if (
- isBlobFile &&
- isOllamaModel &&
- backend !== backendOptionsMap.llamaBox
- ) {
+ } else if (isOllamaModelFile && backend !== backendOptionsMap.llamaBox) {
warningMessage = intl.formatMessage({
id: 'models.form.ollama.warning'
});
@@ -488,9 +486,7 @@ export const useCheckCompatibility = () => {
source: source
});
- if (res.show) {
- setWarningStatus?.(res);
- }
+ setWarningStatus?.(res);
return res;
};
diff --git a/src/pages/resources/components/container-install.tsx b/src/pages/resources/components/container-install.tsx
index d0fc8e0e..fdc2e2af 100644
--- a/src/pages/resources/components/container-install.tsx
+++ b/src/pages/resources/components/container-install.tsx
@@ -137,13 +137,19 @@ const AddWorker: React.FC = (props) => {
>
) : (
-
+
)}
3. {intl.formatMessage({ id: 'resources.worker.add.step3' })}
diff --git a/src/pages/resources/components/styles/installation.less b/src/pages/resources/components/styles/installation.less
index 7447278b..eb6ae8a3 100644
--- a/src/pages/resources/components/styles/installation.less
+++ b/src/pages/resources/components/styles/installation.less
@@ -17,7 +17,7 @@
}
.code-pre {
- white-space: pre-line !important;
+ white-space: normal !important;
}
.ant-radio-button-wrapper {
diff --git a/src/pages/resources/config/index.ts b/src/pages/resources/config/index.ts
index 286334ad..da5fe8d5 100644
--- a/src/pages/resources/config/index.ts
+++ b/src/pages/resources/config/index.ts
@@ -41,13 +41,13 @@ export const addWorkerGuide: Record = {
token: string;
workerip: string;
}) {
- return `docker run -d --name gpustack \
- --restart=unless-stopped \
- --gpus all \
- --network=host \
- --ipc=host \
- -v gpustack-data:/var/lib/gpustack \
- gpustack/gpustack:${params.tag} \
+ return `docker run -d --name gpustack \\
+ --restart=unless-stopped \\
+ --gpus all \\
+ --network=host \\
+ --ipc=host \\
+ -v gpustack-data:/var/lib/gpustack \\
+ gpustack/gpustack:${params.tag} \\
--server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`;
}
},
@@ -60,22 +60,22 @@ export const addWorkerGuide: Record = {
token: string;
workerip: string;
}) {
- return `docker run -d --name gpustack \
- --restart=unless-stopped \
- --device /dev/davinci0 \
- --device /dev/davinci1 \
- --device /dev/davinci_manager \
- --device /dev/devmm_svm \
- --device /dev/hisi_hdc \
- -v /usr/local/dcmi:/usr/local/dcmi \
- -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/version.info:/usr/local/Ascend/driver/version.info \
- -v /etc/ascend_install.info:/etc/ascend_install.info \
- --network=host \
- --ipc=host \
- -v gpustack-data:/var/lib/gpustack \
- gpustack/gpustack:${params.tag} \
+ return `docker run -d --name gpustack \\
+ --restart=unless-stopped \\
+ --device /dev/davinci0 \\
+ --device /dev/davinci1 \\
+ --device /dev/davinci_manager \\
+ --device /dev/devmm_svm \\
+ --device /dev/hisi_hdc \\
+ -v /usr/local/dcmi:/usr/local/dcmi \\
+ -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/version.info:/usr/local/Ascend/driver/version.info \\
+ -v /etc/ascend_install.info:/etc/ascend_install.info \\
+ --network=host \\
+ --ipc=host \\
+ -v gpustack-data:/var/lib/gpustack \\
+ gpustack/gpustack:${params.tag} \\
--server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`;
}
},
@@ -88,22 +88,22 @@ export const addWorkerGuide: Record = {
token: string;
workerip: string;
}) {
- return `docker run -d --name gpustack \
- --restart=unless-stopped \
- --device /dev/davinci0 \
- --device /dev/davinci1 \
- --device /dev/davinci_manager \
- --device /dev/devmm_svm \
- --device /dev/hisi_hdc \
- -v /usr/local/dcmi:/usr/local/dcmi \
- -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/version.info:/usr/local/Ascend/driver/version.info \
- -v /etc/ascend_install.info:/etc/ascend_install.info \
- --network=host \
- --ipc=host \
- -v gpustack-data:/var/lib/gpustack \
- gpustack/gpustack:${params.tag}-310p \
+ return `docker run -d --name gpustack \\
+ --restart=unless-stopped \\
+ --device /dev/davinci0 \\
+ --device /dev/davinci1 \\
+ --device /dev/davinci_manager \\
+ --device /dev/devmm_svm \\
+ --device /dev/hisi_hdc \\
+ -v /usr/local/dcmi:/usr/local/dcmi \\
+ -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/version.info:/usr/local/Ascend/driver/version.info \\
+ -v /etc/ascend_install.info:/etc/ascend_install.info \\
+ --network=host \\
+ --ipc=host \\
+ -v gpustack-data:/var/lib/gpustack \\
+ gpustack/gpustack:${params.tag}-310p \\
--server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`;
}
},
@@ -116,12 +116,12 @@ export const addWorkerGuide: Record = {
token: string;
workerip: string;
}) {
- return `docker run -d --name gpustack \
- --restart=unless-stopped \
- --network=host \
- --ipc=host \
- -v gpustack-data:/var/lib/gpustack \
- gpustack/gpustack:${params.tag} \
+ return `docker run -d --name gpustack \\
+ --restart=unless-stopped \\
+ --network=host \\
+ --ipc=host \\
+ -v gpustack-data:/var/lib/gpustack \\
+ gpustack/gpustack:${params.tag} \\
--server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`;
}
},
@@ -134,11 +134,11 @@ export const addWorkerGuide: Record = {
token: string;
workerip: string;
}) {
- return `docker run -d --name gpustack \
- --restart=unless-stopped \
- --network=host \
- -v gpustack-data:/var/lib/gpustack \
- gpustack/gpustack:${params.tag} \
+ return `docker run -d --name gpustack \\
+ --restart=unless-stopped \\
+ --network=host \\
+ -v gpustack-data:/var/lib/gpustack \\
+ gpustack/gpustack:${params.tag} \\
--server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`;
}
},
@@ -149,17 +149,17 @@ export const addWorkerGuide: Record = {
token: string;
workerip: string;
}) {
- return `docker run -d --name gpustack \
- --restart=unless-stopped \
- --device=/dev/kfd \
- --device=/dev/dri \
- --network=host \
- --ipc=host \
- --group-add video \
- --cap-add=SYS_PTRACE \
- --security-opt seccomp=unconfined \
- -v gpustack-data:/var/lib/gpustack \
- gpustack/gpustack:${params.tag} \
+ return `docker run -d --name gpustack \\
+ --restart=unless-stopped \\
+ --device=/dev/kfd \\
+ --device=/dev/dri \\
+ --network=host \\
+ --ipc=host \\
+ --group-add video \\
+ --cap-add=SYS_PTRACE \\
+ --security-opt seccomp=unconfined \\
+ -v gpustack-data:/var/lib/gpustack \\
+ gpustack/gpustack:${params.tag} \\
--server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`;
}
},
@@ -170,19 +170,19 @@ export const addWorkerGuide: Record = {
token: string;
workerip: string;
}) {
- return `docker run -d --name gpustack \
- --restart=unless-stopped \
- --device=/dev/kfd \
- --device=/dev/mkfd \
- --device=/dev/dri \
- -v /opt/hyhal:/opt/hyhal:ro \
- --network=host \
- --ipc=host \
- --group-add video \
- --cap-add=SYS_PTRACE \
- --security-opt seccomp=unconfined \
- -v gpustack-data:/var/lib/gpustack \
- gpustack/gpustack:${params.tag} \
+ return `docker run -d --name gpustack \\
+ --restart=unless-stopped \\
+ --device=/dev/kfd \\
+ --device=/dev/mkfd \\
+ --device=/dev/dri \\
+ -v /opt/hyhal:/opt/hyhal:ro \\
+ --network=host \\
+ --ipc=host \\
+ --group-add video \\
+ --cap-add=SYS_PTRACE \\
+ --security-opt seccomp=unconfined \\
+ -v gpustack-data:/var/lib/gpustack \\
+ gpustack/gpustack:${params.tag} \\
--server-url ${params.server} --token ${params.token} --worker-ip ${params.workerip}`;
}
},