chore: set mindie to backend in ascend
This commit is contained in:
@@ -23,6 +23,7 @@ import {
|
|||||||
import { FormContext } from '../config/form-context';
|
import { FormContext } from '../config/form-context';
|
||||||
import { CatalogSpec, FormData, ListItem, SourceType } from '../config/types';
|
import { CatalogSpec, FormData, ListItem, SourceType } from '../config/types';
|
||||||
import {
|
import {
|
||||||
|
checkOnlyAscendNPU,
|
||||||
useCheckCompatibility,
|
useCheckCompatibility,
|
||||||
useGenerateFormEditInitialValues
|
useGenerateFormEditInitialValues
|
||||||
} from '../hooks';
|
} from '../hooks';
|
||||||
@@ -77,6 +78,7 @@ const quantiCapitMap: Record<string, string> = {
|
|||||||
|
|
||||||
const defaultQuant = ['Q4_K_M'];
|
const defaultQuant = ['Q4_K_M'];
|
||||||
const EmbeddingRerankFirstQuant = ['FP16', 'F16'];
|
const EmbeddingRerankFirstQuant = ['FP16', 'F16'];
|
||||||
|
const AscendNPUQuant = ['F16', 'FP16', 'Q8_0'];
|
||||||
|
|
||||||
const AddModal: React.FC<AddModalProps> = (props) => {
|
const AddModal: React.FC<AddModalProps> = (props) => {
|
||||||
const {
|
const {
|
||||||
@@ -137,7 +139,18 @@ const AddModal: React.FC<AddModalProps> = (props) => {
|
|||||||
return data;
|
return data;
|
||||||
};
|
};
|
||||||
|
|
||||||
const getDefaultQuant = (data: { category: string; quantOption: string }) => {
|
const getDefaultQuant = (data: {
|
||||||
|
category: string;
|
||||||
|
quantOption: string;
|
||||||
|
backend: string;
|
||||||
|
condidateQuant?: string[];
|
||||||
|
}) => {
|
||||||
|
if (
|
||||||
|
data.backend === backendOptionsMap.llamaBox &&
|
||||||
|
checkOnlyAscendNPU(gpuOptions)
|
||||||
|
) {
|
||||||
|
return AscendNPUQuant.includes(_.toUpper(data.quantOption));
|
||||||
|
}
|
||||||
if (
|
if (
|
||||||
data.category === modelCategoriesMap.embedding ||
|
data.category === modelCategoriesMap.embedding ||
|
||||||
data.category === modelCategoriesMap.reranker
|
data.category === modelCategoriesMap.reranker
|
||||||
@@ -282,7 +295,8 @@ const AddModal: React.FC<AddModalProps> = (props) => {
|
|||||||
_.find(list, (item: { label: string; value: string }) =>
|
_.find(list, (item: { label: string; value: string }) =>
|
||||||
getDefaultQuant({
|
getDefaultQuant({
|
||||||
category: _.get(current, 'categories.0', ''),
|
category: _.get(current, 'categories.0', ''),
|
||||||
quantOption: item.value
|
quantOption: item.value,
|
||||||
|
backend: form.current.getFieldValue('backend')
|
||||||
})
|
})
|
||||||
)?.value ||
|
)?.value ||
|
||||||
_.get(list, '0.value', '')
|
_.get(list, '0.value', '')
|
||||||
@@ -375,7 +389,8 @@ const AddModal: React.FC<AddModalProps> = (props) => {
|
|||||||
_.find(list, (item: CatalogSpec) => {
|
_.find(list, (item: CatalogSpec) => {
|
||||||
return getDefaultQuant({
|
return getDefaultQuant({
|
||||||
category: _.get(current, 'categories.0', ''),
|
category: _.get(current, 'categories.0', ''),
|
||||||
quantOption: item.quantization
|
quantOption: item.quantization,
|
||||||
|
backend: item.backend
|
||||||
});
|
});
|
||||||
}) || _.get(res.items, `0`, {});
|
}) || _.get(res.items, `0`, {});
|
||||||
|
|
||||||
|
|||||||
@@ -91,14 +91,12 @@ const AddModal: FC<AddModalProps> = (props) => {
|
|||||||
warningStatus,
|
warningStatus,
|
||||||
submitAnyway
|
submitAnyway
|
||||||
} = useCheckCompatibility();
|
} = useCheckCompatibility();
|
||||||
const { onSelectModel } = useSelectModel();
|
const { onSelectModel } = useSelectModel({ gpuOptions: props.gpuOptions });
|
||||||
const form = useRef<any>({});
|
const form = useRef<any>({});
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
const [selectedModel, setSelectedModel] = useState<any>({});
|
const [selectedModel, setSelectedModel] = useState<any>({});
|
||||||
const [collapsed, setCollapsed] = useState<boolean>(false);
|
const [collapsed, setCollapsed] = useState<boolean>(false);
|
||||||
const [isGGUF, setIsGGUF] = useState<boolean>(false);
|
const [isGGUF, setIsGGUF] = useState<boolean>(false);
|
||||||
const [isEvaluatModel, setIsEvaluatModel] = useState<boolean>(false);
|
|
||||||
const [isEvaluatModelFile, setIsEvaluatModelFile] = useState<boolean>(false);
|
|
||||||
const modelFileRef = useRef<any>(null);
|
const modelFileRef = useRef<any>(null);
|
||||||
|
|
||||||
const getDefaultSpec = (item: any) => {
|
const getDefaultSpec = (item: any) => {
|
||||||
@@ -244,17 +242,6 @@ const AddModal: FC<AddModalProps> = (props) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (isEvaluatModel || isEvaluatModelFile) {
|
|
||||||
setWarningStatus({
|
|
||||||
show: true,
|
|
||||||
title: '',
|
|
||||||
type: 'transition',
|
|
||||||
message: intl.formatMessage({ id: 'models.form.evaluating' })
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, [isEvaluatModel, isEvaluatModelFile]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (open) {
|
if (open) {
|
||||||
handleOnOpen();
|
handleOnOpen();
|
||||||
@@ -312,6 +299,7 @@ const AddModal: FC<AddModalProps> = (props) => {
|
|||||||
modelSource={props.source}
|
modelSource={props.source}
|
||||||
onSelectModel={handleOnSelectModel}
|
onSelectModel={handleOnSelectModel}
|
||||||
displayEvaluateStatus={displayEvaluateStatus}
|
displayEvaluateStatus={displayEvaluateStatus}
|
||||||
|
gpuOptions={props.gpuOptions}
|
||||||
></SearchModel>
|
></SearchModel>
|
||||||
</ColumnWrapper>
|
</ColumnWrapper>
|
||||||
<Separator></Separator>
|
<Separator></Separator>
|
||||||
@@ -333,6 +321,7 @@ const AddModal: FC<AddModalProps> = (props) => {
|
|||||||
onSelectFile={handleSelectModelFile}
|
onSelectFile={handleSelectModelFile}
|
||||||
collapsed={collapsed}
|
collapsed={collapsed}
|
||||||
displayEvaluateStatus={displayEvaluateStatus}
|
displayEvaluateStatus={displayEvaluateStatus}
|
||||||
|
gpuOptions={props.gpuOptions}
|
||||||
></HFModelFile>
|
></HFModelFile>
|
||||||
)}
|
)}
|
||||||
</ColumnWrapper>
|
</ColumnWrapper>
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import {
|
|||||||
queryModelScopeModelFiles
|
queryModelScopeModelFiles
|
||||||
} from '../apis';
|
} from '../apis';
|
||||||
import { backendOptionsMap, modelSourceMap } from '../config';
|
import { backendOptionsMap, modelSourceMap } from '../config';
|
||||||
|
import { checkOnlyAscendNPU } from '../hooks';
|
||||||
import '../style/hf-model-file.less';
|
import '../style/hf-model-file.less';
|
||||||
import ModelFileItem from './model-file-item';
|
import ModelFileItem from './model-file-item';
|
||||||
import TitleWrapper from './title-wrapper';
|
import TitleWrapper from './title-wrapper';
|
||||||
@@ -39,6 +40,7 @@ interface HFModelFileProps {
|
|||||||
loadingModel?: boolean;
|
loadingModel?: boolean;
|
||||||
modelSource: string;
|
modelSource: string;
|
||||||
ref: any;
|
ref: any;
|
||||||
|
gpuOptions?: any[];
|
||||||
onSelectFile?: (file: any, evaluate?: boolean) => void;
|
onSelectFile?: (file: any, evaluate?: boolean) => void;
|
||||||
displayEvaluateStatus?: (show?: boolean) => void;
|
displayEvaluateStatus?: (show?: boolean) => void;
|
||||||
}
|
}
|
||||||
@@ -50,7 +52,13 @@ const includeReg = /\.(safetensors|gguf)$/i;
|
|||||||
const filterRegGGUF = /\.(gguf)$/i;
|
const filterRegGGUF = /\.(gguf)$/i;
|
||||||
|
|
||||||
const HFModelFile: React.FC<HFModelFileProps> = forwardRef((props, ref) => {
|
const HFModelFile: React.FC<HFModelFileProps> = forwardRef((props, ref) => {
|
||||||
const { collapsed, modelSource, isDownload, displayEvaluateStatus } = props;
|
const {
|
||||||
|
collapsed,
|
||||||
|
modelSource,
|
||||||
|
isDownload,
|
||||||
|
gpuOptions,
|
||||||
|
displayEvaluateStatus
|
||||||
|
} = props;
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
const [isEvaluating, setIsEvaluating] = useState(false);
|
const [isEvaluating, setIsEvaluating] = useState(false);
|
||||||
const [dataSource, setDataSource] = useState<any>({
|
const [dataSource, setDataSource] = useState<any>({
|
||||||
@@ -229,7 +237,9 @@ const HFModelFile: React.FC<HFModelFileProps> = forwardRef((props, ref) => {
|
|||||||
try {
|
try {
|
||||||
const evaluateFileList = list.map((item: any) => {
|
const evaluateFileList = list.map((item: any) => {
|
||||||
return {
|
return {
|
||||||
backend: backendOptionsMap.llamaBox,
|
backend: checkOnlyAscendNPU(gpuOptions || [])
|
||||||
|
? backendOptionsMap.ascendMindie
|
||||||
|
: backendOptionsMap.llamaBox,
|
||||||
source: modelSource,
|
source: modelSource,
|
||||||
...(modelSource === modelSourceMap.huggingface_value
|
...(modelSource === modelSourceMap.huggingface_value
|
||||||
? {
|
? {
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import {
|
|||||||
modelSourceMap
|
modelSourceMap
|
||||||
} from '../config';
|
} from '../config';
|
||||||
import { handleRecognizeAudioModel } from '../config/audio-catalog';
|
import { handleRecognizeAudioModel } from '../config/audio-catalog';
|
||||||
|
import { checkOnlyAscendNPU } from '../hooks';
|
||||||
import SearchStyle from '../style/search-result.less';
|
import SearchStyle from '../style/search-result.less';
|
||||||
import SearchInput from './search-input';
|
import SearchInput from './search-input';
|
||||||
import SearchResult from './search-result';
|
import SearchResult from './search-result';
|
||||||
@@ -39,6 +40,7 @@ interface SearchInputProps {
|
|||||||
hasLinuxWorker?: boolean;
|
hasLinuxWorker?: boolean;
|
||||||
modelSource: string;
|
modelSource: string;
|
||||||
isDownload?: boolean;
|
isDownload?: boolean;
|
||||||
|
gpuOptions?: any[];
|
||||||
setLoadingModel?: (flag: boolean) => void;
|
setLoadingModel?: (flag: boolean) => void;
|
||||||
onSourceChange?: (source: string) => void;
|
onSourceChange?: (source: string) => void;
|
||||||
onSelectModel: (model: any, evaluate?: boolean) => void;
|
onSelectModel: (model: any, evaluate?: boolean) => void;
|
||||||
@@ -51,6 +53,7 @@ const SearchModel: React.FC<SearchInputProps> = (props) => {
|
|||||||
modelSource,
|
modelSource,
|
||||||
isDownload,
|
isDownload,
|
||||||
hasLinuxWorker,
|
hasLinuxWorker,
|
||||||
|
gpuOptions,
|
||||||
setLoadingModel,
|
setLoadingModel,
|
||||||
onSelectModel,
|
onSelectModel,
|
||||||
displayEvaluateStatus
|
displayEvaluateStatus
|
||||||
@@ -210,8 +213,13 @@ const SearchModel: React.FC<SearchInputProps> = (props) => {
|
|||||||
try {
|
try {
|
||||||
const repoList = list.map((item) => {
|
const repoList = list.map((item) => {
|
||||||
const res = handleRecognizeAudioModel(item, modelSource);
|
const res = handleRecognizeAudioModel(item, modelSource);
|
||||||
|
|
||||||
let backendObj = {};
|
let backendObj = {};
|
||||||
if (res.isAudio) {
|
if (checkOnlyAscendNPU?.(gpuOptions || [])) {
|
||||||
|
backendObj = {
|
||||||
|
backend: backendOptionsMap.ascendMindie
|
||||||
|
};
|
||||||
|
} else if (res.isAudio) {
|
||||||
backendObj = {
|
backendObj = {
|
||||||
backend: backendOptionsMap.voxBox
|
backend: backendOptionsMap.voxBox
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -228,6 +228,15 @@ export const useGenerateModelFileOptions = () => {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// handle for ascend npu only
|
||||||
|
export const checkOnlyAscendNPU = (gpuOptions: any[]) => {
|
||||||
|
return gpuOptions?.every?.((item) => {
|
||||||
|
return item.children?.every((child: any) => {
|
||||||
|
return _.toLower(child.vendor) === 'huawei';
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
export const useCheckCompatibility = () => {
|
export const useCheckCompatibility = () => {
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
const cacheFormValuesRef = useRef<any>({});
|
const cacheFormValuesRef = useRef<any>({});
|
||||||
@@ -535,13 +544,22 @@ export const useCheckCompatibility = () => {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export const useSelectModel = () => {
|
export const useSelectModel = (data: { gpuOptions: any[] }) => {
|
||||||
// just for setting the model name or repo_id, and the backend, Since the model type is fixed.
|
// just for setting the model name or repo_id, and the backend, Since the model type is fixed.
|
||||||
|
const { gpuOptions } = data;
|
||||||
|
|
||||||
const onSelectModel = (selectModel: any, source: string) => {
|
const onSelectModel = (selectModel: any, source: string) => {
|
||||||
let name = _.split(selectModel.name, '/').slice(-1)[0];
|
let name = _.split(selectModel.name, '/').slice(-1)[0];
|
||||||
const reg = /(-gguf)$/i;
|
const reg = /(-gguf)$/i;
|
||||||
name = _.toLower(name).replace(reg, '');
|
name = _.toLower(name).replace(reg, '');
|
||||||
|
|
||||||
|
if (checkOnlyAscendNPU(gpuOptions)) {
|
||||||
|
return {
|
||||||
|
repo_id: selectModel.name,
|
||||||
|
name: name,
|
||||||
|
backend: backendOptionsMap.ascendMindie
|
||||||
|
};
|
||||||
|
}
|
||||||
const modelTaskData = handleRecognizeAudioModel(selectModel, source);
|
const modelTaskData = handleRecognizeAudioModel(selectModel, source);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
Reference in New Issue
Block a user