chore: update description for adding worker
This commit is contained in:
@@ -2,6 +2,7 @@ export default {
|
|||||||
'dashboard.title': 'Dashboard',
|
'dashboard.title': 'Dashboard',
|
||||||
'dashboard.workers': 'Workers',
|
'dashboard.workers': 'Workers',
|
||||||
'dashboard.models': 'Models',
|
'dashboard.models': 'Models',
|
||||||
|
'dashboard.clusters': 'Clusters',
|
||||||
'dashboard.totalgpus': 'GPUs',
|
'dashboard.totalgpus': 'GPUs',
|
||||||
'dashboard.allocategpus': 'Allocated GPUs',
|
'dashboard.allocategpus': 'Allocated GPUs',
|
||||||
'dashboard.instances': 'Instances',
|
'dashboard.instances': 'Instances',
|
||||||
|
|||||||
@@ -30,7 +30,8 @@ export default {
|
|||||||
'dashboard.usage.export.date': 'Date',
|
'dashboard.usage.export.date': 'Date',
|
||||||
'dashboard.usage.datePicker.last7days': 'Last 7 Days',
|
'dashboard.usage.datePicker.last7days': 'Last 7 Days',
|
||||||
'dashboard.usage.datePicker.last30days': 'Last 30 Days',
|
'dashboard.usage.datePicker.last30days': 'Last 30 Days',
|
||||||
'dashboard.usage.datePicker.last60days': 'Last 60 Days'
|
'dashboard.usage.datePicker.last60days': 'Last 60 Days',
|
||||||
|
'dashboard.clusters': 'Clusters'
|
||||||
};
|
};
|
||||||
|
|
||||||
// ========== To-Do: Translate Keys (Remove After Translation) ==========
|
// ========== To-Do: Translate Keys (Remove After Translation) ==========
|
||||||
@@ -42,5 +43,6 @@ export default {
|
|||||||
// 6. 'dashboard.usage.export.date': 'Date',
|
// 6. 'dashboard.usage.export.date': 'Date',
|
||||||
// 7. 'dashboard.usage.datePicker.last7days': 'Last 7 Days',
|
// 7. 'dashboard.usage.datePicker.last7days': 'Last 7 Days',
|
||||||
// 8.'dashboard.usage.datePicker.last30days': 'Last 30 Days',
|
// 8.'dashboard.usage.datePicker.last30days': 'Last 30 Days',
|
||||||
// 9. 'dashboard.usage.datePicker.last60days': 'Last 60 Days'
|
// 9. 'dashboard.usage.datePicker.last60days': 'Last 60 Days',
|
||||||
|
// 10. 'dashboard.clusters': 'Clusters',
|
||||||
// ========== End of To-Do List ==========
|
// ========== End of To-Do List ==========
|
||||||
|
|||||||
@@ -30,9 +30,10 @@ export default {
|
|||||||
'dashboard.usage.export.date': 'Дата',
|
'dashboard.usage.export.date': 'Дата',
|
||||||
'dashboard.usage.datePicker.last7days': 'Последние 7 Days',
|
'dashboard.usage.datePicker.last7days': 'Последние 7 Days',
|
||||||
'dashboard.usage.datePicker.last30days': 'Последние 30 Days',
|
'dashboard.usage.datePicker.last30days': 'Последние 30 Days',
|
||||||
'dashboard.usage.datePicker.last60days': 'Последние 60 Days'
|
'dashboard.usage.datePicker.last60days': 'Последние 60 Days',
|
||||||
|
'dashboard.clusters': 'Clusters'
|
||||||
};
|
};
|
||||||
|
|
||||||
// ========== To-Do: Translate Keys (Remove After Translation) ==========
|
// ========== To-Do: Translate Keys (Remove After Translation) ==========
|
||||||
|
// 1. 'dashboard.clusters': 'Clusters',
|
||||||
// ========== End of To-Do List ==========
|
// ========== End of To-Do List ==========
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ export default {
|
|||||||
'dashboard.title': '概览',
|
'dashboard.title': '概览',
|
||||||
'dashboard.workers': '节点',
|
'dashboard.workers': '节点',
|
||||||
'dashboard.models': '模型',
|
'dashboard.models': '模型',
|
||||||
|
'dashboard.clusters': '集群',
|
||||||
'dashboard.totalgpus': 'GPUs',
|
'dashboard.totalgpus': 'GPUs',
|
||||||
'dashboard.allocategpus': '已分配 GPU 数量',
|
'dashboard.allocategpus': '已分配 GPU 数量',
|
||||||
'dashboard.instances': '实例',
|
'dashboard.instances': '实例',
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ const NotesWrapper = styled.ol`
|
|||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
margin: 0 !important;
|
margin: 0 !important;
|
||||||
padding: 0 !important;
|
padding: 0 !important;
|
||||||
line-height: 1.2;
|
line-height: 1.25;
|
||||||
li {
|
li {
|
||||||
margin-left: 12px !important;
|
margin-left: 12px !important;
|
||||||
}
|
}
|
||||||
@@ -156,6 +156,7 @@ const AddWorkerStep: React.FC<AddModalProps> = ({
|
|||||||
{intl.formatMessage({ id: 'clusters.create.addCommand.tips' })}
|
{intl.formatMessage({ id: 'clusters.create.addCommand.tips' })}
|
||||||
</div>
|
</div>
|
||||||
<AlertInfoBlock
|
<AlertInfoBlock
|
||||||
|
maxHeight={200}
|
||||||
style={{ marginBottom: 8 }}
|
style={{ marginBottom: 8 }}
|
||||||
type="warning"
|
type="warning"
|
||||||
icon={<ExclamationCircleFilled />}
|
icon={<ExclamationCircleFilled />}
|
||||||
|
|||||||
@@ -58,8 +58,8 @@ const Overview: React.FC = () => {
|
|||||||
xs={{ flex: '100%' }}
|
xs={{ flex: '100%' }}
|
||||||
sm={{ flex: '50%' }}
|
sm={{ flex: '50%' }}
|
||||||
md={{ flex: '50%' }}
|
md={{ flex: '50%' }}
|
||||||
lg={{ flex: '25%' }}
|
lg={{ flex: '20%' }}
|
||||||
xl={{ flex: '25%' }}
|
xl={{ flex: '20%' }}
|
||||||
key={config.key}
|
key={config.key}
|
||||||
>
|
>
|
||||||
{renderCardItem({
|
{renderCardItem({
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
export const overviewConfigs = [
|
export const overviewConfigs = [
|
||||||
|
{
|
||||||
|
key: 'cluster_count',
|
||||||
|
label: 'dashboard.clusters',
|
||||||
|
backgroundColor: 'var(--color-white-1)'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
key: 'worker_count',
|
key: 'worker_count',
|
||||||
label: 'dashboard.workers',
|
label: 'dashboard.workers',
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ const KVCacheForm = () => {
|
|||||||
const backend = Form.useWatch('backend', form);
|
const backend = Form.useWatch('backend', form);
|
||||||
const configCacheRef = useRef<any>({});
|
const configCacheRef = useRef<any>({});
|
||||||
|
|
||||||
const handleOnChange = async (e: any) => {
|
const handleEnableOnChange = async (e: any) => {
|
||||||
if (e.target.checked) {
|
if (e.target.checked) {
|
||||||
form.setFieldsValue({
|
form.setFieldsValue({
|
||||||
extended_kv_cache: {
|
extended_kv_cache: {
|
||||||
@@ -28,6 +28,17 @@ const KVCacheForm = () => {
|
|||||||
} else {
|
} else {
|
||||||
configCacheRef.current = form.getFieldValue('extended_kv_cache');
|
configCacheRef.current = form.getFieldValue('extended_kv_cache');
|
||||||
}
|
}
|
||||||
|
await new Promise((resolve) => {
|
||||||
|
setTimeout(resolve, 100);
|
||||||
|
});
|
||||||
|
onValuesChange?.(
|
||||||
|
{
|
||||||
|
extended_kv_cache: {
|
||||||
|
enabled: e.target.checked
|
||||||
|
}
|
||||||
|
},
|
||||||
|
form.getFieldsValue()
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const builtInBackend = useMemo(() => {
|
const builtInBackend = useMemo(() => {
|
||||||
@@ -56,7 +67,7 @@ const KVCacheForm = () => {
|
|||||||
id: 'models.form.kvCache.tips2'
|
id: 'models.form.kvCache.tips2'
|
||||||
})}
|
})}
|
||||||
disabled={!builtInBackend}
|
disabled={!builtInBackend}
|
||||||
onChange={handleOnChange}
|
onChange={handleEnableOnChange}
|
||||||
label={intl.formatMessage({ id: 'models.form.extendedkvcache' })}
|
label={intl.formatMessage({ id: 'models.form.extendedkvcache' })}
|
||||||
></CheckboxField>
|
></CheckboxField>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|||||||
@@ -137,11 +137,12 @@ const registerWorker = (params: {
|
|||||||
}) => {
|
}) => {
|
||||||
const config = GPUsConfigs[params.gpu];
|
const config = GPUsConfigs[params.gpu];
|
||||||
return `WORKER_NAME="gpustack-worker" \\
|
return `WORKER_NAME="gpustack-worker" \\
|
||||||
|
WORKER_PORT="80" \\
|
||||||
WORKER_IP="" \\
|
WORKER_IP="" \\
|
||||||
docker run -d --name \${WORKER_NAME} \\
|
docker run -d --name \${WORKER_NAME} \\
|
||||||
--restart=unless-stopped \\
|
--restart=unless-stopped \\
|
||||||
--privileged \\
|
--privileged \\
|
||||||
--net=host \\
|
--publish \${WORKER_PORT}:\${WORKER_PORT} \\
|
||||||
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_DEPLOYMENT=true" \\
|
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_DEPLOYMENT=true" \\
|
||||||
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_NAME=\${WORKER_NAME}" \\
|
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_NAME=\${WORKER_NAME}" \\
|
||||||
--volume /var/run/docker.sock:/var/run/docker.sock \\
|
--volume /var/run/docker.sock:/var/run/docker.sock \\
|
||||||
@@ -150,7 +151,8 @@ docker run -d --name \${WORKER_NAME} \\
|
|||||||
${params.image} \\
|
${params.image} \\
|
||||||
--server-url ${params.server} \\
|
--server-url ${params.server} \\
|
||||||
--token ${params.token} \\
|
--token ${params.token} \\
|
||||||
--worker-ip \${WORKER_IP}`;
|
--worker-port \${WORKER_PORT} \\
|
||||||
|
--advertise-address \${WORKER_IP}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
// avaliable for Ascend
|
// avaliable for Ascend
|
||||||
@@ -163,11 +165,12 @@ const registerAscendWorker = (params: {
|
|||||||
}) => {
|
}) => {
|
||||||
const config = GPUsConfigs[params.gpu];
|
const config = GPUsConfigs[params.gpu];
|
||||||
return `WORKER_NAME="gpustack-worker" \\
|
return `WORKER_NAME="gpustack-worker" \\
|
||||||
|
WORKER_PORT="80" \\
|
||||||
WORKER_IP="" \\
|
WORKER_IP="" \\
|
||||||
docker run -d --name \${WORKER_NAME} \\
|
docker run -d --name \${WORKER_NAME} \\
|
||||||
--restart=unless-stopped \\
|
--restart=unless-stopped \\
|
||||||
--privileged \\
|
--privileged \\
|
||||||
--net=host \\
|
--publish \${WORKER_PORT}:\${WORKER_PORT} \\
|
||||||
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_DEPLOYMENT=true" \\
|
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_DEPLOYMENT=true" \\
|
||||||
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_NAME=\${WORKER_NAME}" \\
|
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_NAME=\${WORKER_NAME}" \\
|
||||||
--volume /var/run/docker.sock:/var/run/docker.sock \\
|
--volume /var/run/docker.sock:/var/run/docker.sock \\
|
||||||
@@ -177,7 +180,8 @@ docker run -d --name \${WORKER_NAME} \\
|
|||||||
${params.image} \\
|
${params.image} \\
|
||||||
--server-url ${params.server} \\
|
--server-url ${params.server} \\
|
||||||
--token ${params.token} \\
|
--token ${params.token} \\
|
||||||
--worker-ip \${WORKER_IP}`;
|
--worker-port \${WORKER_PORT} \\
|
||||||
|
--advertise-address \${WORKER_IP}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
const registerHygonWorker = (params: {
|
const registerHygonWorker = (params: {
|
||||||
@@ -189,11 +193,12 @@ const registerHygonWorker = (params: {
|
|||||||
}) => {
|
}) => {
|
||||||
const config = GPUsConfigs[params.gpu];
|
const config = GPUsConfigs[params.gpu];
|
||||||
return `WORKER_NAME="gpustack-worker" \\
|
return `WORKER_NAME="gpustack-worker" \\
|
||||||
|
WORKER_PORT="80" \\
|
||||||
WORKER_IP="" \\
|
WORKER_IP="" \\
|
||||||
docker run -d --name \${WORKER_NAME} \\
|
docker run -d --name \${WORKER_NAME} \\
|
||||||
--restart=unless-stopped \\
|
--restart=unless-stopped \\
|
||||||
--privileged \\
|
--privileged \\
|
||||||
--net=host \\
|
--publish \${WORKER_PORT}:\${WORKER_PORT} \\
|
||||||
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_DEPLOYMENT=true" \\
|
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_DEPLOYMENT=true" \\
|
||||||
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_NAME=\${WORKER_NAME}" \\
|
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_NAME=\${WORKER_NAME}" \\
|
||||||
--volume /var/run/docker.sock:/var/run/docker.sock \\
|
--volume /var/run/docker.sock:/var/run/docker.sock \\
|
||||||
@@ -205,7 +210,8 @@ docker run -d --name \${WORKER_NAME} \\
|
|||||||
${params.image} \\
|
${params.image} \\
|
||||||
--server-url ${params.server} \\
|
--server-url ${params.server} \\
|
||||||
--token ${params.token} \\
|
--token ${params.token} \\
|
||||||
--worker-ip \${WORKER_IP}`;
|
--worker-port \${WORKER_PORT} \\
|
||||||
|
--advertise-address \${WORKER_IP}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
const registerIluvatarWorker = (params: {
|
const registerIluvatarWorker = (params: {
|
||||||
@@ -217,11 +223,12 @@ const registerIluvatarWorker = (params: {
|
|||||||
}) => {
|
}) => {
|
||||||
const config = GPUsConfigs[params.gpu];
|
const config = GPUsConfigs[params.gpu];
|
||||||
return `WORKER_NAME="gpustack-worker" \\
|
return `WORKER_NAME="gpustack-worker" \\
|
||||||
|
WORKER_PORT="80" \\
|
||||||
WORKER_IP="" \\
|
WORKER_IP="" \\
|
||||||
docker run -d --name \${WORKER_NAME} \\
|
docker run -d --name \${WORKER_NAME} \\
|
||||||
--restart=unless-stopped \\
|
--restart=unless-stopped \\
|
||||||
--privileged \\
|
--privileged \\
|
||||||
--net=host \\
|
--publish \${WORKER_PORT}:\${WORKER_PORT} \\
|
||||||
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_DEPLOYMENT=true" \\
|
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_DEPLOYMENT=true" \\
|
||||||
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_NAME=\${WORKER_NAME}" \\
|
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_NAME=\${WORKER_NAME}" \\
|
||||||
--volume /var/run/docker.sock:/var/run/docker.sock \\
|
--volume /var/run/docker.sock:/var/run/docker.sock \\
|
||||||
@@ -232,7 +239,8 @@ docker run -d --name \${WORKER_NAME} \\
|
|||||||
${params.image} \\
|
${params.image} \\
|
||||||
--server-url ${params.server} \\
|
--server-url ${params.server} \\
|
||||||
--token ${params.token} \\
|
--token ${params.token} \\
|
||||||
--worker-ip \${WORKER_IP}`;
|
--worker-port \${WORKER_PORT} \\
|
||||||
|
--advertise-address \${WORKER_IP}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
const registerMetaXWorker = (params: {
|
const registerMetaXWorker = (params: {
|
||||||
@@ -244,11 +252,12 @@ const registerMetaXWorker = (params: {
|
|||||||
}) => {
|
}) => {
|
||||||
const config = GPUsConfigs[params.gpu];
|
const config = GPUsConfigs[params.gpu];
|
||||||
return `WORKER_NAME="gpustack-worker" \\
|
return `WORKER_NAME="gpustack-worker" \\
|
||||||
|
WORKER_PORT="80" \\
|
||||||
WORKER_IP="" \\
|
WORKER_IP="" \\
|
||||||
docker run -d --name \${WORKER_NAME} \\
|
docker run -d --name \${WORKER_NAME} \\
|
||||||
--restart=unless-stopped \\
|
--restart=unless-stopped \\
|
||||||
--privileged \\
|
--privileged \\
|
||||||
--net=host \\
|
--publish \${WORKER_PORT}:\${WORKER_PORT} \\
|
||||||
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_DEPLOYMENT=true" \\
|
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_DEPLOYMENT=true" \\
|
||||||
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_NAME=\${WORKER_NAME}" \\
|
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_NAME=\${WORKER_NAME}" \\
|
||||||
--volume /var/run/docker.sock:/var/run/docker.sock \\
|
--volume /var/run/docker.sock:/var/run/docker.sock \\
|
||||||
@@ -258,7 +267,8 @@ docker run -d --name \${WORKER_NAME} \\
|
|||||||
${params.image} \\
|
${params.image} \\
|
||||||
--server-url ${params.server} \\
|
--server-url ${params.server} \\
|
||||||
--token ${params.token} \\
|
--token ${params.token} \\
|
||||||
--worker-ip \${WORKER_IP}`;
|
--worker-port \${WORKER_PORT} \\
|
||||||
|
--advertise-address \${WORKER_IP}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
const registerCambriconWorker = (params: {
|
const registerCambriconWorker = (params: {
|
||||||
@@ -270,11 +280,12 @@ const registerCambriconWorker = (params: {
|
|||||||
}) => {
|
}) => {
|
||||||
const config = GPUsConfigs[params.gpu];
|
const config = GPUsConfigs[params.gpu];
|
||||||
return `WORKER_NAME="gpustack-worker" \\
|
return `WORKER_NAME="gpustack-worker" \\
|
||||||
|
WORKER_PORT="80" \\
|
||||||
WORKER_IP="" \\
|
WORKER_IP="" \\
|
||||||
docker run -d --name \${WORKER_NAME} \\
|
docker run -d --name \${WORKER_NAME} \\
|
||||||
--restart=unless-stopped \\
|
--restart=unless-stopped \\
|
||||||
--privileged \\
|
--privileged \\
|
||||||
--net=host \\
|
--publish \${WORKER_PORT}:\${WORKER_PORT} \\
|
||||||
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_DEPLOYMENT=true" \\
|
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_DEPLOYMENT=true" \\
|
||||||
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_NAME=\${WORKER_NAME}" \\
|
--env "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_NAME=\${WORKER_NAME}" \\
|
||||||
--volume /var/run/docker.sock:/var/run/docker.sock \\
|
--volume /var/run/docker.sock:/var/run/docker.sock \\
|
||||||
@@ -284,7 +295,8 @@ docker run -d --name \${WORKER_NAME} \\
|
|||||||
${params.image} \\
|
${params.image} \\
|
||||||
--server-url ${params.server} \\
|
--server-url ${params.server} \\
|
||||||
--token ${params.token} \\
|
--token ${params.token} \\
|
||||||
--worker-ip \${WORKER_IP}`;
|
--worker-port \${WORKER_PORT} \\
|
||||||
|
--advertise-address \${WORKER_IP}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const registerAddWokerCommandMap = {
|
export const registerAddWokerCommandMap = {
|
||||||
@@ -311,9 +323,28 @@ export const AddWorkerDockerNotes: Record<string, string[]> = {
|
|||||||
'clusters.addworker.nvidiaNotes-01',
|
'clusters.addworker.nvidiaNotes-01',
|
||||||
'clusters.addworker.nvidiaNotes-02'
|
'clusters.addworker.nvidiaNotes-02'
|
||||||
],
|
],
|
||||||
[GPUDriverMap.ASCEND]: [],
|
[GPUDriverMap.ASCEND]: [
|
||||||
[GPUDriverMap.HYGON]: ['clusters.addworker.hygonNotes'],
|
'clusters.addworker.nvidiaNotes-01',
|
||||||
[GPUDriverMap.ILUVATAR]: ['clusters.addworker.corexNotes'],
|
'clusters.addworker.nvidiaNotes-02'
|
||||||
[GPUDriverMap.CAMBRICON]: ['clusters.addworker.cambriconNotes'],
|
],
|
||||||
[GPUDriverMap.METAX]: ['clusters.addworker.metaxNotes']
|
[GPUDriverMap.HYGON]: [
|
||||||
|
'clusters.addworker.nvidiaNotes-01',
|
||||||
|
'clusters.addworker.nvidiaNotes-02',
|
||||||
|
'clusters.addworker.hygonNotes'
|
||||||
|
],
|
||||||
|
[GPUDriverMap.ILUVATAR]: [
|
||||||
|
'clusters.addworker.nvidiaNotes-01',
|
||||||
|
'clusters.addworker.nvidiaNotes-02',
|
||||||
|
'clusters.addworker.corexNotes'
|
||||||
|
],
|
||||||
|
[GPUDriverMap.CAMBRICON]: [
|
||||||
|
'clusters.addworker.nvidiaNotes-01',
|
||||||
|
'clusters.addworker.nvidiaNotes-02',
|
||||||
|
'clusters.addworker.cambriconNotes'
|
||||||
|
],
|
||||||
|
[GPUDriverMap.METAX]: [
|
||||||
|
'clusters.addworker.nvidiaNotes-01',
|
||||||
|
'clusters.addworker.nvidiaNotes-02',
|
||||||
|
'clusters.addworker.metaxNotes'
|
||||||
|
]
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user