= (props) => {
style={{ padding: '0 10px', marginBottom: 0 }}
noStyle
>
-
-
-
- {intl.formatMessage({
- id: 'resources.form.enableDistributedInferenceAcrossWorkers'
- })}
-
-
-
-
+
)}
+
+
+ name="restart_on_error"
+ valuePropName="checked"
+ style={{ padding: '0 10px', marginBottom: 0 }}
+ noStyle
+ >
+
+
+
>
);
return [
diff --git a/src/pages/llmodels/components/data-form.tsx b/src/pages/llmodels/components/data-form.tsx
index 1595251a..f0a4a656 100644
--- a/src/pages/llmodels/components/data-form.tsx
+++ b/src/pages/llmodels/components/data-form.tsx
@@ -206,6 +206,7 @@ const DataForm: React.FC = forwardRef((props, ref) => {
};
const handleOnValuesChange = async (changedValues: any, allValues: any) => {
+ console.log('changeValues--------', changedValues);
onValuesChange?.(changedValues, allValues);
};
diff --git a/src/pages/llmodels/components/deploy-modal.tsx b/src/pages/llmodels/components/deploy-modal.tsx
index 9a5c1b12..68d6ae2c 100644
--- a/src/pages/llmodels/components/deploy-modal.tsx
+++ b/src/pages/llmodels/components/deploy-modal.tsx
@@ -110,10 +110,12 @@ const AddModal: FC = (props) => {
};
const handleOnOk = async (allValues: FormData) => {
+ console.log('allValues---------', allValues);
if (submitAnyway.current) {
onOk(allValues);
return;
}
+
const result = getSourceRepoConfigValue(props.source, allValues);
const evalutionData = await handleEvaluate(result.values);
handleShowCompatibleAlert?.(evalutionData);
diff --git a/src/pages/llmodels/config/index.ts b/src/pages/llmodels/config/index.ts
index 94098ecd..11243c77 100644
--- a/src/pages/llmodels/config/index.ts
+++ b/src/pages/llmodels/config/index.ts
@@ -447,19 +447,6 @@ export const modelLabels = [
{ label: 'Embedding', value: 'embedding_only' }
];
-export const CHECK_FIELDS = new Set([
- 'backend',
- 'local_path',
- 'scheduleType',
- 'placement_strategy',
- 'worker_selector',
- 'gpu_selector',
- 'backend_parameters',
- 'backend_version',
- 'quantization',
- 'size'
-]);
-
export const excludeFields = [
'replicas',
'categories',
@@ -468,5 +455,6 @@ export const excludeFields = [
'env',
'source',
'quantization',
- 'size'
+ 'size',
+ 'restart_on_error'
];
diff --git a/src/pages/llmodels/config/types.ts b/src/pages/llmodels/config/types.ts
index 8dba2352..a1f29d2d 100644
--- a/src/pages/llmodels/config/types.ts
+++ b/src/pages/llmodels/config/types.ts
@@ -37,6 +37,7 @@ export type SourceType =
export interface FormData {
backend: string;
+ restart_on_error?: boolean;
env?: Record;
size?: number;
quantization?: number;
diff --git a/src/pages/llmodels/hooks/index.ts b/src/pages/llmodels/hooks/index.ts
index ab562861..ff465c8f 100644
--- a/src/pages/llmodels/hooks/index.ts
+++ b/src/pages/llmodels/hooks/index.ts
@@ -1,5 +1,6 @@
import { createAxiosToken } from '@/hooks/use-chunk-request';
-import { queryModelFilesList } from '@/pages/resources/apis';
+import { queryModelFilesList, queryWorkersList } from '@/pages/resources/apis';
+import { WorkerStatusMap } from '@/pages/resources/config';
import { ListItem as WorkerListItem } from '@/pages/resources/config/types';
import { useIntl } from '@umijs/max';
import _ from 'lodash';
@@ -15,25 +16,38 @@ import { EvaluateResult, GPUListItem, ListItem } from '../config/types';
export const useGenerateFormEditInitialValues = () => {
const gpuDeviceList = useRef([]);
- const generateCascaderOptions = (list: GPUListItem[]) => {
+ const generateCascaderOptions = (
+ list: GPUListItem[],
+ workerList: WorkerListItem[]
+ ) => {
const workerFields = new Set(['worker_name', 'worker_id', 'worker_ip']);
- const workersMap = new Map();
- for (const item of list) {
- if (!workersMap.has(item.worker_name)) {
- workersMap.set(item.worker_name, []);
- }
- workersMap.get(item.worker_name)!.push(item);
+ // generate a map for workerList by name to data
+ const workerDataMap = new Map();
+ for (const worker of workerList) {
+ workerDataMap.set(worker.name, worker);
}
- const workerList = Array.from(workersMap.entries()).map(
+ const workersMap = new Map();
+ for (const gpu of list) {
+ if (!workersMap.has(gpu.worker_name)) {
+ workersMap.set(gpu.worker_name, []);
+ }
+ workersMap.get(gpu.worker_name)!.push(gpu);
+ }
+
+ const gpuSelectorList = Array.from(workersMap.entries()).map(
([workerName, items]) => {
const firstItem = items[0];
-
+ const disDisabled =
+ WorkerStatusMap.ready !== workerDataMap.get(workerName)?.state;
return {
- label: workerName,
+ label: disDisabled
+ ? `${workerName} [${workerDataMap.get(workerName)?.state}]`
+ : workerName,
value: workerName,
parent: true,
+ disabled: disDisabled,
children: items
.map((item) => ({
label: item.name,
@@ -51,12 +65,15 @@ export const useGenerateFormEditInitialValues = () => {
}
);
- return workerList;
+ return gpuSelectorList;
};
const getGPUList = async () => {
- const data = await queryGPUList();
- const gpuList = generateCascaderOptions(data.items);
+ const [gpuData, workerData] = await Promise.all([
+ queryGPUList({ page: 1, perPage: 100 }),
+ queryWorkersList({ page: 1, perPage: 100 })
+ ]);
+ const gpuList = generateCascaderOptions(gpuData.items, workerData.items);
gpuDeviceList.current = gpuList;
return gpuList;
};
diff --git a/src/pages/resources/components/add-worker.tsx b/src/pages/resources/components/add-worker.tsx
index 2af5767e..d7e12d84 100644
--- a/src/pages/resources/components/add-worker.tsx
+++ b/src/pages/resources/components/add-worker.tsx
@@ -41,7 +41,7 @@ const AddWorker: React.FC = (props) => {
width={700}
styles={{
body: {
- height: 620
+ height: 650
}
}}
footer={null}
diff --git a/src/pages/resources/components/container-install.tsx b/src/pages/resources/components/container-install.tsx
index 90b26346..717e917c 100644
--- a/src/pages/resources/components/container-install.tsx
+++ b/src/pages/resources/components/container-install.tsx
@@ -81,7 +81,12 @@ const AddWorker: React.FC = (props) => {
- 1. {intl.formatMessage({ id: 'resources.worker.add.step1' })}
+ 1.{' '}
+
{
const [openDeployModal, setOpenDeployModal] = useState<{
show: boolean;
width: number | string;
- source: string;
+ source: SourceType;
gpuOptions: any[];
modelFileOptions?: any[];
initialValues: any;
@@ -178,7 +179,7 @@ const ModelFiles = () => {
}>({
show: false,
width: 600,
- source: modelSourceMap.local_path_value,
+ source: modelSourceMap.local_path_value as SourceType,
gpuOptions: [],
modelFileOptions: [],
initialValues: {},
diff --git a/src/pages/resources/components/script-install.tsx b/src/pages/resources/components/script-install.tsx
index fcd1e584..5a10947e 100644
--- a/src/pages/resources/components/script-install.tsx
+++ b/src/pages/resources/components/script-install.tsx
@@ -23,7 +23,9 @@ const AddWorker: React.FC = (props) => {
return (
-
1. {labels.step1}
+
+ 1.
+
{labels.linuxOrMac}
= (props) => {
})}
theme="dark"
>
- Windows
+ Windows