feat: model category

This commit is contained in:
jialin
2024-12-27 19:12:51 +08:00
parent 9f40e2c71e
commit b4e30565d2
16 changed files with 68 additions and 56 deletions
@@ -20,6 +20,7 @@ import React, { useCallback, useMemo } from 'react';
import {
backendOptionsMap,
backendParamsHolderTips,
modelCategories,
placementStrategyOptions
} from '../config';
import llamaConfig from '../config/llama-config';
@@ -153,21 +154,16 @@ const AdvanceConfig: React.FC<AdvanceConfigProps> = (props) => {
const collapseItems = useMemo(() => {
const children = (
<>
{/* <Form.Item<FormData> name="labels">
<ListInput
placeholder={
backendParamsHolderTips[backend]
? intl.formatMessage({
id: backendParamsHolderTips[backend].holder
})
: ''
}
btnText="models.form.button.addlabel"
label="Labels"
dataList={form.getFieldValue('backend_parameters') || []}
options={modelLabels}
></ListInput>
</Form.Item> */}
<Form.Item<FormData> name="categories">
<SealSelect
allowNull
maxCount={1}
label={intl.formatMessage({
id: 'models.form.categories'
})}
options={modelCategories}
></SealSelect>
</Form.Item>
<Form.Item name="scheduleType">
<SealSelect
label={intl.formatMessage({ id: 'models.form.scheduletype' })}
@@ -247,7 +243,7 @@ const AdvanceConfig: React.FC<AdvanceConfigProps> = (props) => {
)}
{scheduleType === 'manual' && (
<Form.Item<FormData>
name="gpu_selector"
name={['gpu_selector', 'gpu_ids']}
rules={[
{
required: true,
@@ -265,6 +261,8 @@ const AdvanceConfig: React.FC<AdvanceConfigProps> = (props) => {
<SealSelect
label={intl.formatMessage({ id: 'models.form.gpuselector' })}
required
mode="multiple"
maxLength={1}
>
{gpuOptions.map((item) => (
<Select.Option key={item.value} value={item.value}>
+9 -16
View File
@@ -86,7 +86,7 @@ const DataForm: React.FC<DataFormProps> = forwardRef((props, ref) => {
return {
...item,
label: item.name,
value: `${item.worker_name}-${item.name}-${item.index}`
value: item.id
};
});
console.log('queryGPUList========', list);
@@ -381,23 +381,15 @@ const DataForm: React.FC<DataFormProps> = forwardRef((props, ref) => {
}, []);
const handleOk = (formdata: FormData) => {
const gpu = _.find(gpuOptions, (item: any) => {
return item.value === formdata.gpu_selector;
});
if (gpu) {
onOk({
..._.omit(formdata, ['scheduleType']),
gpu_selector: {
gpu_name: gpu.name,
gpu_index: gpu.index,
worker_name: gpu.worker_name
}
});
let data = _.cloneDeep(formdata);
if (data.categories) {
data.categories = [data.categories];
} else {
onOk({
..._.omit(formdata, ['scheduleType'])
});
data.categories = [];
}
onOk({
..._.omit(data, ['scheduleType'])
});
};
useEffect(() => {
@@ -430,6 +422,7 @@ const DataForm: React.FC<DataFormProps> = forwardRef((props, ref) => {
placement_strategy: 'spread',
cpu_offloading: true,
scheduleType: 'auto',
categories: null,
distributed_inference_across_workers: true
}}
>
+6 -5
View File
@@ -44,6 +44,7 @@ import {
import {
InstanceRealLogStatus,
getSourceRepoConfigValue,
modelCategoriesMap,
modelSourceMap
} from '../config';
import { FormData, ListItem, ModelInstanceListItem } from '../config/types';
@@ -556,7 +557,7 @@ const Models: React.FC<ModelsProps> = ({
const renderModelTags = useCallback(
(record: ListItem) => {
if (record.reranker) {
if (record.categories?.includes(modelCategoriesMap.reranker)) {
return (
<Tag
icon={<IconFont type="icon-rank1"></IconFont>}
@@ -574,7 +575,7 @@ const Models: React.FC<ModelsProps> = ({
);
}
if (record.embedding_only && !record.reranker) {
if (record.categories?.includes(modelCategoriesMap.embedding)) {
return (
<Tag
icon={<IconFont type="icon-cube"></IconFont>}
@@ -591,7 +592,7 @@ const Models: React.FC<ModelsProps> = ({
</Tag>
);
}
if (record.text_to_speech) {
if (record.categories?.includes(modelCategoriesMap.text_to_speech)) {
return (
<Tag
icon={<IconFont type="icon-sound-wave"></IconFont>}
@@ -608,7 +609,7 @@ const Models: React.FC<ModelsProps> = ({
</Tag>
);
}
if (record.speech_to_text) {
if (record.categories?.includes(modelCategoriesMap.speech_to_text)) {
return (
<Tag
icon={<AudioOutlined />}
@@ -625,7 +626,7 @@ const Models: React.FC<ModelsProps> = ({
</Tag>
);
}
if (record.image_only) {
if (record.categories?.includes(modelCategoriesMap.image)) {
return (
<Tag
icon={<PictureOutlined />}
@@ -88,6 +88,9 @@ const UpdateModal: React.FC<AddModalProps> = (props) => {
const formData = {
...result.values,
..._.omit(props.data, result.omits),
categories: props.data?.categories?.length
? props.data.categories[0]
: null,
scheduleType: props.data?.gpu_selector ? 'manual' : 'auto',
gpu_selector: props.data?.gpu_selector
? `${props.data?.gpu_selector.worker_name}-${props.data?.gpu_selector.gpu_name}-${props.data?.gpu_selector.gpu_index}`
@@ -303,6 +306,7 @@ const UpdateModal: React.FC<AddModalProps> = (props) => {
onOk({
..._.omit(formdata, ['scheduleType']),
categories: formdata.categories ? [formdata.categories] : [],
worker_selector: null,
gpu_selector: gpu
? {
@@ -316,6 +320,7 @@ const UpdateModal: React.FC<AddModalProps> = (props) => {
} else {
onOk({
..._.omit(formdata, ['scheduleType']),
categories: formdata.categories ? [formdata.categories] : [],
gpu_selector: null,
...obj
});