xinference 1.7.1__py3-none-any.whl → 1.8.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of xinference might be problematic. Click here for more details.

Files changed (136) hide show
  1. xinference/_version.py +3 -3
  2. xinference/client/restful/async_restful_client.py +8 -13
  3. xinference/client/restful/restful_client.py +6 -2
  4. xinference/core/chat_interface.py +6 -4
  5. xinference/core/media_interface.py +5 -0
  6. xinference/core/model.py +1 -5
  7. xinference/core/supervisor.py +117 -68
  8. xinference/core/worker.py +49 -37
  9. xinference/deploy/test/test_cmdline.py +2 -6
  10. xinference/model/audio/__init__.py +26 -23
  11. xinference/model/audio/chattts.py +3 -2
  12. xinference/model/audio/core.py +49 -98
  13. xinference/model/audio/cosyvoice.py +3 -2
  14. xinference/model/audio/custom.py +28 -73
  15. xinference/model/audio/f5tts.py +3 -2
  16. xinference/model/audio/f5tts_mlx.py +3 -2
  17. xinference/model/audio/fish_speech.py +3 -2
  18. xinference/model/audio/funasr.py +17 -4
  19. xinference/model/audio/kokoro.py +3 -2
  20. xinference/model/audio/megatts.py +3 -2
  21. xinference/model/audio/melotts.py +3 -2
  22. xinference/model/audio/model_spec.json +572 -171
  23. xinference/model/audio/utils.py +0 -6
  24. xinference/model/audio/whisper.py +3 -2
  25. xinference/model/audio/whisper_mlx.py +3 -2
  26. xinference/model/cache_manager.py +141 -0
  27. xinference/model/core.py +6 -49
  28. xinference/model/custom.py +174 -0
  29. xinference/model/embedding/__init__.py +67 -56
  30. xinference/model/embedding/cache_manager.py +35 -0
  31. xinference/model/embedding/core.py +104 -84
  32. xinference/model/embedding/custom.py +55 -78
  33. xinference/model/embedding/embed_family.py +80 -31
  34. xinference/model/embedding/flag/core.py +21 -5
  35. xinference/model/embedding/llama_cpp/__init__.py +0 -0
  36. xinference/model/embedding/llama_cpp/core.py +234 -0
  37. xinference/model/embedding/model_spec.json +968 -103
  38. xinference/model/embedding/sentence_transformers/core.py +30 -20
  39. xinference/model/embedding/vllm/core.py +11 -5
  40. xinference/model/flexible/__init__.py +8 -2
  41. xinference/model/flexible/core.py +26 -119
  42. xinference/model/flexible/custom.py +69 -0
  43. xinference/model/flexible/launchers/image_process_launcher.py +1 -0
  44. xinference/model/flexible/launchers/modelscope_launcher.py +5 -1
  45. xinference/model/flexible/launchers/transformers_launcher.py +15 -3
  46. xinference/model/flexible/launchers/yolo_launcher.py +5 -1
  47. xinference/model/image/__init__.py +20 -20
  48. xinference/model/image/cache_manager.py +62 -0
  49. xinference/model/image/core.py +70 -182
  50. xinference/model/image/custom.py +28 -72
  51. xinference/model/image/model_spec.json +402 -119
  52. xinference/model/image/ocr/got_ocr2.py +3 -2
  53. xinference/model/image/stable_diffusion/core.py +22 -7
  54. xinference/model/image/stable_diffusion/mlx.py +6 -6
  55. xinference/model/image/utils.py +2 -2
  56. xinference/model/llm/__init__.py +71 -94
  57. xinference/model/llm/cache_manager.py +292 -0
  58. xinference/model/llm/core.py +37 -111
  59. xinference/model/llm/custom.py +88 -0
  60. xinference/model/llm/llama_cpp/core.py +5 -7
  61. xinference/model/llm/llm_family.json +16260 -8151
  62. xinference/model/llm/llm_family.py +138 -839
  63. xinference/model/llm/lmdeploy/core.py +5 -7
  64. xinference/model/llm/memory.py +3 -4
  65. xinference/model/llm/mlx/core.py +6 -8
  66. xinference/model/llm/reasoning_parser.py +3 -1
  67. xinference/model/llm/sglang/core.py +32 -14
  68. xinference/model/llm/transformers/chatglm.py +3 -7
  69. xinference/model/llm/transformers/core.py +49 -27
  70. xinference/model/llm/transformers/deepseek_v2.py +2 -2
  71. xinference/model/llm/transformers/gemma3.py +2 -2
  72. xinference/model/llm/transformers/multimodal/cogagent.py +2 -2
  73. xinference/model/llm/transformers/multimodal/deepseek_vl2.py +2 -2
  74. xinference/model/llm/transformers/multimodal/gemma3.py +2 -2
  75. xinference/model/llm/transformers/multimodal/glm4_1v.py +167 -0
  76. xinference/model/llm/transformers/multimodal/glm4v.py +2 -2
  77. xinference/model/llm/transformers/multimodal/intern_vl.py +2 -2
  78. xinference/model/llm/transformers/multimodal/minicpmv26.py +3 -3
  79. xinference/model/llm/transformers/multimodal/ovis2.py +2 -2
  80. xinference/model/llm/transformers/multimodal/qwen-omni.py +2 -2
  81. xinference/model/llm/transformers/multimodal/qwen2_audio.py +2 -2
  82. xinference/model/llm/transformers/multimodal/qwen2_vl.py +2 -2
  83. xinference/model/llm/transformers/opt.py +3 -7
  84. xinference/model/llm/utils.py +34 -49
  85. xinference/model/llm/vllm/core.py +77 -27
  86. xinference/model/llm/vllm/xavier/engine.py +5 -3
  87. xinference/model/llm/vllm/xavier/scheduler.py +10 -6
  88. xinference/model/llm/vllm/xavier/transfer.py +1 -1
  89. xinference/model/rerank/__init__.py +26 -25
  90. xinference/model/rerank/core.py +47 -87
  91. xinference/model/rerank/custom.py +25 -71
  92. xinference/model/rerank/model_spec.json +158 -33
  93. xinference/model/rerank/utils.py +2 -2
  94. xinference/model/utils.py +115 -54
  95. xinference/model/video/__init__.py +13 -17
  96. xinference/model/video/core.py +44 -102
  97. xinference/model/video/diffusers.py +4 -3
  98. xinference/model/video/model_spec.json +90 -21
  99. xinference/types.py +5 -3
  100. xinference/web/ui/build/asset-manifest.json +3 -3
  101. xinference/web/ui/build/index.html +1 -1
  102. xinference/web/ui/build/static/js/main.7d24df53.js +3 -0
  103. xinference/web/ui/build/static/js/main.7d24df53.js.map +1 -0
  104. xinference/web/ui/node_modules/.cache/babel-loader/2704ff66a5f73ca78b341eb3edec60154369df9d87fbc8c6dd60121abc5e1b0a.json +1 -0
  105. xinference/web/ui/node_modules/.cache/babel-loader/607dfef23d33e6b594518c0c6434567639f24f356b877c80c60575184ec50ed0.json +1 -0
  106. xinference/web/ui/node_modules/.cache/babel-loader/9be3d56173aacc3efd0b497bcb13c4f6365de30069176ee9403b40e717542326.json +1 -0
  107. xinference/web/ui/node_modules/.cache/babel-loader/9f9dd6c32c78a222d07da5987ae902effe16bcf20aac00774acdccc4de3c9ff2.json +1 -0
  108. xinference/web/ui/node_modules/.cache/babel-loader/b2ab5ee972c60d15eb9abf5845705f8ab7e1d125d324d9a9b1bcae5d6fd7ffb2.json +1 -0
  109. xinference/web/ui/src/locales/en.json +0 -1
  110. xinference/web/ui/src/locales/ja.json +0 -1
  111. xinference/web/ui/src/locales/ko.json +0 -1
  112. xinference/web/ui/src/locales/zh.json +0 -1
  113. {xinference-1.7.1.dist-info → xinference-1.8.0.dist-info}/METADATA +9 -11
  114. {xinference-1.7.1.dist-info → xinference-1.8.0.dist-info}/RECORD +119 -119
  115. xinference/model/audio/model_spec_modelscope.json +0 -231
  116. xinference/model/embedding/model_spec_modelscope.json +0 -293
  117. xinference/model/embedding/utils.py +0 -18
  118. xinference/model/image/model_spec_modelscope.json +0 -375
  119. xinference/model/llm/llama_cpp/memory.py +0 -457
  120. xinference/model/llm/llm_family_csghub.json +0 -56
  121. xinference/model/llm/llm_family_modelscope.json +0 -8700
  122. xinference/model/llm/llm_family_openmind_hub.json +0 -1019
  123. xinference/model/rerank/model_spec_modelscope.json +0 -85
  124. xinference/model/video/model_spec_modelscope.json +0 -184
  125. xinference/web/ui/build/static/js/main.9b12b7f9.js +0 -3
  126. xinference/web/ui/build/static/js/main.9b12b7f9.js.map +0 -1
  127. xinference/web/ui/node_modules/.cache/babel-loader/1460361af6975e63576708039f1cb732faf9c672d97c494d4055fc6331460be0.json +0 -1
  128. xinference/web/ui/node_modules/.cache/babel-loader/4efd8dda58fda83ed9546bf2f587df67f8d98e639117bee2d9326a9a1d9bebb2.json +0 -1
  129. xinference/web/ui/node_modules/.cache/babel-loader/55b9fb40b57fa926e8f05f31c2f96467e76e5ad62f033dca97c03f9e8c4eb4fe.json +0 -1
  130. xinference/web/ui/node_modules/.cache/babel-loader/5b2dafe5aa9e1105e0244a2b6751807342fa86aa0144b4e84d947a1686102715.json +0 -1
  131. xinference/web/ui/node_modules/.cache/babel-loader/611fa2c6c53b66039991d06dfb0473b5ab37fc63b4564e0f6e1718523768a045.json +0 -1
  132. /xinference/web/ui/build/static/js/{main.9b12b7f9.js.LICENSE.txt → main.7d24df53.js.LICENSE.txt} +0 -0
  133. {xinference-1.7.1.dist-info → xinference-1.8.0.dist-info}/WHEEL +0 -0
  134. {xinference-1.7.1.dist-info → xinference-1.8.0.dist-info}/entry_points.txt +0 -0
  135. {xinference-1.7.1.dist-info → xinference-1.8.0.dist-info}/licenses/LICENSE +0 -0
  136. {xinference-1.7.1.dist-info → xinference-1.8.0.dist-info}/top_level.txt +0 -0
@@ -1 +0,0 @@
1
- {"ast":null,"code":"export var llmAllDataKey=['model_uid','model_name','model_type','model_engine','model_format','model_size_in_billions','quantization','n_worker','n_gpu','n_gpu_layers','replica','request_limits','worker_ip','gpu_idx','download_hub','model_path','reasoning_content','gguf_quantization','gguf_model_path','cpu_offload','peft_model_config','quantization_config','enable_thinking','multimodal_projectors'];export var additionalParameterTipList={'transformers':['torch_dtype','device'],'llama.cpp':['n_ctx','use_mmap','use_mlock'],'vllm':['block_size','gpu_memory_utilization','max_num_seqs','max_model_len','guided_decoding_backend','scheduling_policy','tensor_parallel_size','pipeline_parallel_size','enable_prefix_caching','enable_chunked_prefill','enforce_eager','cpu_offload_gb','disable_custom_all_reduce','limit_mm_per_prompt','model_quantization','mm_processor_kwargs','min_pixels','max_pixels'],'sglang':['mem_fraction_static','attention_reduce_in_fp32','tp_size','dp_size','chunked_prefill_size','cpu_offload_gb','enable_dp_attention','enable_ep_moe'],'mlx':['cache_limit_gb','max_kv_size']};export var quantizationParametersTipList=['load_in_8bit','load_in_4bit','llm_int8_threshold','llm_int8_skip_modules','llm_int8_enable_fp32_cpu_offload','llm_int8_has_fp16_weight','bnb_4bit_compute_dtype','bnb_4bit_quant_type','bnb_4bit_use_double_quant','bnb_4bit_quant_storage'];export var featureModels=[{type:'llm',feature_models:['qwen3','deepseek-v3-0324','deepseek-r1-0528','deepseek-r1-0528-qwen3','deepseek-r1-distill-llama','qwen2.5-instruct','qwen2.5-vl-instruct','glm4-0414','QwQ-32B','gemma-3-it']},{type:'embedding',feature_models:['Qwen3-Embedding-0.6B','Qwen3-Embedding-4B','Qwen3-Embedding-8B','bge-large-zh-v1.5','bge-large-en-v1.5','bge-m3','gte-Qwen2','jina-embeddings-v3']},{type:'rerank',feature_models:[]},{type:'image',feature_models:['FLUX.1-dev','FLUX.1-schnell','sd3.5-large','HunyuanDiT-v1.2','cogview4','sd3.5-medium']},{type:'audio',feature_models:['CosyVoice2-0.5B','FishSpeech-1.5','F5-TTS','ChatTTS','SenseVoiceSmall','whisper-large-v3']},{type:'video',feature_models:[]}];","map":{"version":3,"names":["llmAllDataKey","additionalParameterTipList","quantizationParametersTipList","featureModels","type","feature_models"],"sources":["/home/runner/work/inference/inference/xinference/web/ui/src/scenes/launch_model/data/data.js"],"sourcesContent":["export const llmAllDataKey = [\n 'model_uid',\n 'model_name',\n 'model_type',\n 'model_engine',\n 'model_format',\n 'model_size_in_billions',\n 'quantization',\n 'n_worker',\n 'n_gpu',\n 'n_gpu_layers',\n 'replica',\n 'request_limits',\n 'worker_ip',\n 'gpu_idx',\n 'download_hub',\n 'model_path',\n 'reasoning_content',\n 'gguf_quantization',\n 'gguf_model_path',\n 'cpu_offload',\n 'peft_model_config',\n 'quantization_config',\n 'enable_thinking',\n 'multimodal_projectors',\n]\n\nexport const additionalParameterTipList = {\n 'transformers': ['torch_dtype', 'device'],\n 'llama.cpp': ['n_ctx', 'use_mmap', 'use_mlock'],\n 'vllm': [\n 'block_size',\n 'gpu_memory_utilization',\n 'max_num_seqs',\n 'max_model_len',\n 'guided_decoding_backend',\n 'scheduling_policy',\n 'tensor_parallel_size',\n 'pipeline_parallel_size',\n 'enable_prefix_caching',\n 'enable_chunked_prefill',\n 'enforce_eager',\n 'cpu_offload_gb',\n 'disable_custom_all_reduce',\n 'limit_mm_per_prompt',\n 'model_quantization',\n 'mm_processor_kwargs',\n 'min_pixels',\n 'max_pixels',\n ],\n 'sglang': [\n 'mem_fraction_static',\n 'attention_reduce_in_fp32',\n 'tp_size',\n 'dp_size',\n 'chunked_prefill_size',\n 'cpu_offload_gb',\n 'enable_dp_attention',\n 'enable_ep_moe',\n ],\n 'mlx': ['cache_limit_gb', 'max_kv_size'],\n}\n\nexport const quantizationParametersTipList = [\n 'load_in_8bit',\n 'load_in_4bit',\n 'llm_int8_threshold',\n 'llm_int8_skip_modules',\n 'llm_int8_enable_fp32_cpu_offload',\n 'llm_int8_has_fp16_weight',\n 'bnb_4bit_compute_dtype',\n 'bnb_4bit_quant_type',\n 'bnb_4bit_use_double_quant',\n 'bnb_4bit_quant_storage',\n]\n\nexport const featureModels = [\n {\n type: 'llm',\n feature_models: [\n 'qwen3',\n 'deepseek-v3-0324',\n 'deepseek-r1-0528',\n 'deepseek-r1-0528-qwen3',\n 'deepseek-r1-distill-llama',\n 'qwen2.5-instruct',\n 'qwen2.5-vl-instruct',\n 'glm4-0414',\n 'QwQ-32B',\n 'gemma-3-it',\n ],\n },\n {\n type: 'embedding',\n feature_models: [\n 'Qwen3-Embedding-0.6B',\n 'Qwen3-Embedding-4B',\n 'Qwen3-Embedding-8B',\n 'bge-large-zh-v1.5',\n 'bge-large-en-v1.5',\n 'bge-m3',\n 'gte-Qwen2',\n 'jina-embeddings-v3',\n ],\n },\n {\n type: 'rerank',\n feature_models: [],\n },\n {\n type: 'image',\n feature_models: [\n 'FLUX.1-dev',\n 'FLUX.1-schnell',\n 'sd3.5-large',\n 'HunyuanDiT-v1.2',\n 'cogview4',\n 'sd3.5-medium',\n ],\n },\n {\n type: 'audio',\n feature_models: [\n 'CosyVoice2-0.5B',\n 'FishSpeech-1.5',\n 'F5-TTS',\n 'ChatTTS',\n 'SenseVoiceSmall',\n 'whisper-large-v3',\n ],\n },\n {\n type: 'video',\n feature_models: [],\n },\n]\n"],"mappings":"AAAA,MAAO,IAAM,CAAAA,aAAa,CAAG,CAC3B,WAAW,CACX,YAAY,CACZ,YAAY,CACZ,cAAc,CACd,cAAc,CACd,wBAAwB,CACxB,cAAc,CACd,UAAU,CACV,OAAO,CACP,cAAc,CACd,SAAS,CACT,gBAAgB,CAChB,WAAW,CACX,SAAS,CACT,cAAc,CACd,YAAY,CACZ,mBAAmB,CACnB,mBAAmB,CACnB,iBAAiB,CACjB,aAAa,CACb,mBAAmB,CACnB,qBAAqB,CACrB,iBAAiB,CACjB,uBAAuB,CACxB,CAED,MAAO,IAAM,CAAAC,0BAA0B,CAAG,CACxC,cAAc,CAAE,CAAC,aAAa,CAAE,QAAQ,CAAC,CACzC,WAAW,CAAE,CAAC,OAAO,CAAE,UAAU,CAAE,WAAW,CAAC,CAC/C,MAAM,CAAE,CACN,YAAY,CACZ,wBAAwB,CACxB,cAAc,CACd,eAAe,CACf,yBAAyB,CACzB,mBAAmB,CACnB,sBAAsB,CACtB,wBAAwB,CACxB,uBAAuB,CACvB,wBAAwB,CACxB,eAAe,CACf,gBAAgB,CAChB,2BAA2B,CAC3B,qBAAqB,CACrB,oBAAoB,CACpB,qBAAqB,CACrB,YAAY,CACZ,YAAY,CACb,CACD,QAAQ,CAAE,CACR,qBAAqB,CACrB,0BAA0B,CAC1B,SAAS,CACT,SAAS,CACT,sBAAsB,CACtB,gBAAgB,CAChB,qBAAqB,CACrB,eAAe,CAChB,CACD,KAAK,CAAE,CAAC,gBAAgB,CAAE,aAAa,CACzC,CAAC,CAED,MAAO,IAAM,CAAAC,6BAA6B,CAAG,CAC3C,cAAc,CACd,cAAc,CACd,oBAAoB,CACpB,uBAAuB,CACvB,kCAAkC,CAClC,0BAA0B,CAC1B,wBAAwB,CACxB,qBAAqB,CACrB,2BAA2B,CAC3B,wBAAwB,CACzB,CAED,MAAO,IAAM,CAAAC,aAAa,CAAG,CAC3B,CACEC,IAAI,CAAE,KAAK,CACXC,cAAc,CAAE,CACd,OAAO,CACP,kBAAkB,CAClB,kBAAkB,CAClB,wBAAwB,CACxB,2BAA2B,CAC3B,kBAAkB,CAClB,qBAAqB,CACrB,WAAW,CACX,SAAS,CACT,YAAY,CAEhB,CAAC,CACD,CACED,IAAI,CAAE,WAAW,CACjBC,cAAc,CAAE,CACd,sBAAsB,CACtB,oBAAoB,CACpB,oBAAoB,CACpB,mBAAmB,CACnB,mBAAmB,CACnB,QAAQ,CACR,WAAW,CACX,oBAAoB,CAExB,CAAC,CACD,CACED,IAAI,CAAE,QAAQ,CACdC,cAAc,CAAE,EAClB,CAAC,CACD,CACED,IAAI,CAAE,OAAO,CACbC,cAAc,CAAE,CACd,YAAY,CACZ,gBAAgB,CAChB,aAAa,CACb,iBAAiB,CACjB,UAAU,CACV,cAAc,CAElB,CAAC,CACD,CACED,IAAI,CAAE,OAAO,CACbC,cAAc,CAAE,CACd,iBAAiB,CACjB,gBAAgB,CAChB,QAAQ,CACR,SAAS,CACT,iBAAiB,CACjB,kBAAkB,CAEtB,CAAC,CACD,CACED,IAAI,CAAE,OAAO,CACbC,cAAc,CAAE,EAClB,CAAC,CACF","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
@@ -1 +0,0 @@
1
- {"ast":null,"code":"import _slicedToArray from\"/home/runner/work/inference/inference/xinference/web/ui/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";import{TabContext,TabList,TabPanel}from'@mui/lab';import{Box,Tab}from'@mui/material';import React,{useEffect}from'react';import{useCookies}from'react-cookie';import{useTranslation}from'react-i18next';import{useNavigate}from'react-router-dom';import ErrorMessageSnackBar from'../../components/errorMessageSnackBar';import Title from'../../components/Title';import{isValidBearerToken}from'../../components/utils';import RegisterModelComponent from'./registerModel';import{jsx as _jsx}from\"react/jsx-runtime\";import{jsxs as _jsxs}from\"react/jsx-runtime\";var RegisterModel=function RegisterModel(){var _React$useState=React.useState(sessionStorage.getItem('registerModelType')?sessionStorage.getItem('registerModelType'):'/register_model/llm'),_React$useState2=_slicedToArray(_React$useState,2),tabValue=_React$useState2[0],setTabValue=_React$useState2[1];var _useCookies=useCookies(['token']),_useCookies2=_slicedToArray(_useCookies,1),cookie=_useCookies2[0];var navigate=useNavigate();var _useTranslation=useTranslation(),t=_useTranslation.t;useEffect(function(){if(sessionStorage.getItem('auth')==='true'&&!isValidBearerToken(sessionStorage.getItem('token'))&&!isValidBearerToken(cookie.token)){navigate('/login',{replace:true});}},[cookie.token]);var handleTabChange=function handleTabChange(_,newValue){setTabValue(newValue);navigate(newValue);sessionStorage.setItem('registerModelType',newValue);};return/*#__PURE__*/_jsxs(Box,{m:\"20px\",style:{overflow:'hidden'},children:[/*#__PURE__*/_jsx(Title,{title:t('menu.registerModel')}),/*#__PURE__*/_jsx(ErrorMessageSnackBar,{}),/*#__PURE__*/_jsxs(TabContext,{value:tabValue,children:[/*#__PURE__*/_jsx(Box,{sx:{borderBottom:1,borderColor:'divider'},children:/*#__PURE__*/_jsxs(TabList,{value:tabValue,onChange:handleTabChange,\"aria-label\":\"tabs\",children:[/*#__PURE__*/_jsx(Tab,{label:t('model.languageModels'),value:\"/register_model/llm\"}),/*#__PURE__*/_jsx(Tab,{label:t('model.embeddingModels'),value:\"/register_model/embedding\"}),/*#__PURE__*/_jsx(Tab,{label:t('model.rerankModels'),value:\"/register_model/rerank\"}),/*#__PURE__*/_jsx(Tab,{label:t('model.imageModels'),value:\"/register_model/image\"}),/*#__PURE__*/_jsx(Tab,{label:t('model.audioModels'),value:\"/register_model/audio\"}),/*#__PURE__*/_jsx(Tab,{label:t('model.flexibleModels'),value:\"/register_model/flexible\"})]})}),/*#__PURE__*/_jsx(TabPanel,{value:\"/register_model/llm\",sx:{padding:0},children:/*#__PURE__*/_jsx(RegisterModelComponent,{modelType:\"LLM\",customData:{version:1,model_name:'custom-llm',model_description:'This is a custom model description.',context_length:2048,model_lang:['en'],model_ability:['generate'],model_specs:[{model_uri:'/path/to/llama-1',model_size_in_billions:7,model_format:'pytorch',quantizations:['none']}],model_family:'your_custom_model',virtualenv:{packages:[]}}})}),/*#__PURE__*/_jsx(TabPanel,{value:\"/register_model/embedding\",sx:{padding:0},children:/*#__PURE__*/_jsx(RegisterModelComponent,{modelType:\"embedding\",customData:{model_name:'custom-embedding',dimensions:768,max_tokens:512,model_uri:'/path/to/embedding-model',language:['en'],virtualenv:{packages:[]}}})}),/*#__PURE__*/_jsx(TabPanel,{value:\"/register_model/rerank\",sx:{padding:0},children:/*#__PURE__*/_jsx(RegisterModelComponent,{modelType:\"rerank\",customData:{model_name:'custom-rerank',model_uri:'/path/to/rerank-model',language:['en'],max_tokens:512,virtualenv:{packages:[]}}})}),/*#__PURE__*/_jsx(TabPanel,{value:\"/register_model/image\",sx:{padding:0},children:/*#__PURE__*/_jsx(RegisterModelComponent,{modelType:\"image\",customData:{model_name:'custom-image',model_uri:'/path/to/image-model',model_family:'stable_diffusion',controlnet:[],virtualenv:{packages:[]}}})}),/*#__PURE__*/_jsx(TabPanel,{value:\"/register_model/audio\",sx:{padding:0},children:/*#__PURE__*/_jsx(RegisterModelComponent,{modelType:\"audio\",customData:{model_name:'custom-audio',model_uri:'/path/to/audio-model',multilingual:false,model_family:'whisper',model_ability:['text2audio'],virtualenv:{packages:[]}}})}),/*#__PURE__*/_jsx(TabPanel,{value:\"/register_model/flexible\",sx:{padding:0},children:/*#__PURE__*/_jsx(RegisterModelComponent,{modelType:\"flexible\",customData:{model_name:'flexible-model',model_description:'This is a model description.',model_uri:'/path/to/model',launcher:'xinference.model.flexible.launchers.transformers',launcher_args:'{}',virtualenv:{packages:[]}}})})]})]});};export default RegisterModel;","map":{"version":3,"names":["TabContext","TabList","TabPanel","Box","Tab","React","useEffect","useCookies","useTranslation","useNavigate","ErrorMessageSnackBar","Title","isValidBearerToken","RegisterModelComponent","jsx","_jsx","jsxs","_jsxs","RegisterModel","_React$useState","useState","sessionStorage","getItem","_React$useState2","_slicedToArray","tabValue","setTabValue","_useCookies","_useCookies2","cookie","navigate","_useTranslation","t","token","replace","handleTabChange","_","newValue","setItem","m","style","overflow","children","title","value","sx","borderBottom","borderColor","onChange","label","padding","modelType","customData","version","model_name","model_description","context_length","model_lang","model_ability","model_specs","model_uri","model_size_in_billions","model_format","quantizations","model_family","virtualenv","packages","dimensions","max_tokens","language","controlnet","multilingual","launcher","launcher_args"],"sources":["/home/runner/work/inference/inference/xinference/web/ui/src/scenes/register_model/index.js"],"sourcesContent":["import { TabContext, TabList, TabPanel } from '@mui/lab'\nimport { Box, Tab } from '@mui/material'\nimport React, { useEffect } from 'react'\nimport { useCookies } from 'react-cookie'\nimport { useTranslation } from 'react-i18next'\nimport { useNavigate } from 'react-router-dom'\n\nimport ErrorMessageSnackBar from '../../components/errorMessageSnackBar'\nimport Title from '../../components/Title'\nimport { isValidBearerToken } from '../../components/utils'\nimport RegisterModelComponent from './registerModel'\n\nconst RegisterModel = () => {\n const [tabValue, setTabValue] = React.useState(\n sessionStorage.getItem('registerModelType')\n ? sessionStorage.getItem('registerModelType')\n : '/register_model/llm'\n )\n const [cookie] = useCookies(['token'])\n const navigate = useNavigate()\n const { t } = useTranslation()\n\n useEffect(() => {\n if (\n sessionStorage.getItem('auth') === 'true' &&\n !isValidBearerToken(sessionStorage.getItem('token')) &&\n !isValidBearerToken(cookie.token)\n ) {\n navigate('/login', { replace: true })\n }\n }, [cookie.token])\n\n const handleTabChange = (_, newValue) => {\n setTabValue(newValue)\n navigate(newValue)\n sessionStorage.setItem('registerModelType', newValue)\n }\n\n return (\n <Box m=\"20px\" style={{ overflow: 'hidden' }}>\n <Title title={t('menu.registerModel')} />\n <ErrorMessageSnackBar />\n <TabContext value={tabValue}>\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\n <TabList\n value={tabValue}\n onChange={handleTabChange}\n aria-label=\"tabs\"\n >\n <Tab\n label={t('model.languageModels')}\n value=\"/register_model/llm\"\n />\n <Tab\n label={t('model.embeddingModels')}\n value=\"/register_model/embedding\"\n />\n <Tab\n label={t('model.rerankModels')}\n value=\"/register_model/rerank\"\n />\n <Tab label={t('model.imageModels')} value=\"/register_model/image\" />\n <Tab label={t('model.audioModels')} value=\"/register_model/audio\" />\n <Tab\n label={t('model.flexibleModels')}\n value=\"/register_model/flexible\"\n />\n </TabList>\n </Box>\n <TabPanel value=\"/register_model/llm\" sx={{ padding: 0 }}>\n <RegisterModelComponent\n modelType=\"LLM\"\n customData={{\n version: 1,\n model_name: 'custom-llm',\n model_description: 'This is a custom model description.',\n context_length: 2048,\n model_lang: ['en'],\n model_ability: ['generate'],\n model_specs: [\n {\n model_uri: '/path/to/llama-1',\n model_size_in_billions: 7,\n model_format: 'pytorch',\n quantizations: ['none'],\n },\n ],\n model_family: 'your_custom_model',\n virtualenv: {\n packages: [],\n },\n }}\n />\n </TabPanel>\n <TabPanel value=\"/register_model/embedding\" sx={{ padding: 0 }}>\n <RegisterModelComponent\n modelType=\"embedding\"\n customData={{\n model_name: 'custom-embedding',\n dimensions: 768,\n max_tokens: 512,\n model_uri: '/path/to/embedding-model',\n language: ['en'],\n virtualenv: {\n packages: [],\n },\n }}\n />\n </TabPanel>\n <TabPanel value=\"/register_model/rerank\" sx={{ padding: 0 }}>\n <RegisterModelComponent\n modelType=\"rerank\"\n customData={{\n model_name: 'custom-rerank',\n model_uri: '/path/to/rerank-model',\n language: ['en'],\n max_tokens: 512,\n virtualenv: {\n packages: [],\n },\n }}\n />\n </TabPanel>\n <TabPanel value=\"/register_model/image\" sx={{ padding: 0 }}>\n <RegisterModelComponent\n modelType=\"image\"\n customData={{\n model_name: 'custom-image',\n model_uri: '/path/to/image-model',\n model_family: 'stable_diffusion',\n controlnet: [],\n virtualenv: {\n packages: [],\n },\n }}\n />\n </TabPanel>\n <TabPanel value=\"/register_model/audio\" sx={{ padding: 0 }}>\n <RegisterModelComponent\n modelType=\"audio\"\n customData={{\n model_name: 'custom-audio',\n model_uri: '/path/to/audio-model',\n multilingual: false,\n model_family: 'whisper',\n model_ability: ['text2audio'],\n virtualenv: {\n packages: [],\n },\n }}\n />\n </TabPanel>\n <TabPanel value=\"/register_model/flexible\" sx={{ padding: 0 }}>\n <RegisterModelComponent\n modelType=\"flexible\"\n customData={{\n model_name: 'flexible-model',\n model_description: 'This is a model description.',\n model_uri: '/path/to/model',\n launcher: 'xinference.model.flexible.launchers.transformers',\n launcher_args: '{}',\n virtualenv: {\n packages: [],\n },\n }}\n />\n </TabPanel>\n </TabContext>\n </Box>\n )\n}\n\nexport default RegisterModel\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
@@ -1 +0,0 @@
1
- {"ast":null,"code":"import _defineProperty from\"/home/runner/work/inference/inference/xinference/web/ui/node_modules/@babel/runtime/helpers/esm/defineProperty.js\";import _toConsumableArray from\"/home/runner/work/inference/inference/xinference/web/ui/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\";import _objectSpread from\"/home/runner/work/inference/inference/xinference/web/ui/node_modules/@babel/runtime/helpers/esm/objectSpread2.js\";import _slicedToArray from\"/home/runner/work/inference/inference/xinference/web/ui/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\";import AddIcon from'@mui/icons-material/Add';import DeleteIcon from'@mui/icons-material/Delete';import{Alert,Box,Button,FormControlLabel,Radio,RadioGroup,TextField,Tooltip}from'@mui/material';import React,{useEffect,useState}from'react';import{useTranslation}from'react-i18next';import{jsx as _jsx}from\"react/jsx-runtime\";import{jsxs as _jsxs}from\"react/jsx-runtime\";import{Fragment as _Fragment}from\"react/jsx-runtime\";var modelFormatArr=[{value:'pytorch',label:'PyTorch'},{value:'ggufv2',label:'GGUF'},{value:'gptq',label:'GPTQ'},{value:'awq',label:'AWQ'},{value:'fp8',label:'FP8'},{value:'mlx',label:'MLX'}];var AddModelSpecs=function AddModelSpecs(_ref){var isJump=_ref.isJump,formData=_ref.formData,specsDataArr=_ref.specsDataArr,onGetArr=_ref.onGetArr,scrollRef=_ref.scrollRef;var _useState=useState(0),_useState2=_slicedToArray(_useState,2),count=_useState2[0],setCount=_useState2[1];var _useState3=useState([]),_useState4=_slicedToArray(_useState3,2),specsArr=_useState4[0],setSpecsArr=_useState4[1];var _useState5=useState([]),_useState6=_slicedToArray(_useState5,2),pathArr=_useState6[0],setPathArr=_useState6[1];var _useState7=useState([]),_useState8=_slicedToArray(_useState7,2),modelSizeAlertId=_useState8[0],setModelSizeAlertId=_useState8[1];var _useState9=useState([]),_useState10=_slicedToArray(_useState9,2),quantizationAlertId=_useState10[0],setQuantizationAlertId=_useState10[1];var _useState11=useState(false),_useState12=_slicedToArray(_useState11,2),isError=_useState12[0],setIsError=_useState12[1];var _useState13=useState(false),_useState14=_slicedToArray(_useState13,2),isAdd=_useState14[0],setIsAdd=_useState14[1];var _useTranslation=useTranslation(),t=_useTranslation.t;useEffect(function(){if(isJump){var dataArr=specsDataArr.map(function(item,index){var model_uri=item.model_uri,model_size_in_billions=item.model_size_in_billions,model_format=item.model_format,quantizations=item.quantizations,model_file_name_template=item.model_file_name_template;var size=model_size_in_billions;if(typeof size!=='number')size=size.split('_').join('.');return{id:index,model_uri:model_uri,model_size_in_billions:size,model_format:model_format,quantizations:quantizations,model_file_name_template:model_file_name_template};});setCount(dataArr.length);setSpecsArr(dataArr);var subPathArr=[];specsDataArr.forEach(function(item){if(item.model_format!=='ggufv2'){subPathArr.push(item.model_uri);}else{subPathArr.push(item.model_uri+'/'+item.model_file_name_template);}});setPathArr(subPathArr);}else{setSpecsArr([_objectSpread({id:count},formData)]);setCount(count+1);setPathArr([formData.model_uri]);}},[]);useEffect(function(){var arr=specsArr.map(function(item){var uri=item.model_uri,size=item.model_size_in_billions,modelFormat=item.model_format,quantizations=item.quantizations,model_file_name_template=item.model_file_name_template;var handleSize=parseInt(size)===parseFloat(size)?Number(size):size.split('.').join('_');var handleQuantization=quantizations;if(modelFormat==='pytorch'){handleQuantization=['none'];}else if(handleQuantization[0]===''&&modelFormat==='ggufv2'){handleQuantization=['default'];}return{model_uri:uri,model_size_in_billions:handleSize,model_format:modelFormat,quantizations:handleQuantization,model_file_name_template:model_file_name_template};});setIsError(true);if(modelSizeAlertId.length===0&&quantizationAlertId.length===0){setIsError(false);}onGetArr(arr,isError);isAdd&&handleScrollBottom();setIsAdd(false);},[specsArr,isError]);var handleAddSpecs=function handleAddSpecs(){setCount(count+1);var item={id:count,model_uri:'/path/to/llama-1',model_size_in_billions:7,model_format:'pytorch',quantizations:[]};setSpecsArr([].concat(_toConsumableArray(specsArr),[item]));setIsAdd(true);setPathArr([].concat(_toConsumableArray(pathArr),['/path/to/llama-1']));};var handleUpdateSpecsArr=function handleUpdateSpecsArr(index,type,newValue){if(type==='model_format'){var subPathArr=_toConsumableArray(pathArr);if(specsArr[index].model_format!=='ggufv2'){pathArr[index]=specsArr[index].model_uri;}else{pathArr[index]=specsArr[index].model_uri+'/'+specsArr[index].model_file_name_template;}setPathArr(subPathArr);}setSpecsArr(specsArr.map(function(item,subIndex){if(subIndex===index){if(type==='quantizations'){return _objectSpread(_objectSpread({},item),{},_defineProperty({},type,[newValue]));}else if(type==='model_format'){if(newValue==='ggufv2'){var _getPathComponents=getPathComponents(pathArr[index]),baseDir=_getPathComponents.baseDir,filename=_getPathComponents.filename;var obj=_objectSpread(_objectSpread({},item),{},{model_format:newValue,quantizations:[''],model_uri:baseDir,model_file_name_template:filename});return obj;}else{var _ref2;var id=item.id,model_size_in_billions=item.model_size_in_billions,model_format=item.model_format;return _ref2={id:id,model_uri:pathArr[index],model_size_in_billions:model_size_in_billions,model_format:model_format},_defineProperty(_ref2,type,newValue),_defineProperty(_ref2,\"quantizations\",['']),_ref2;}}else if(type==='model_uri'){var _subPathArr=_toConsumableArray(pathArr);_subPathArr[index]=newValue;setPathArr(_subPathArr);if(item.model_format==='ggufv2'){var _getPathComponents2=getPathComponents(newValue),_baseDir=_getPathComponents2.baseDir,_filename=_getPathComponents2.filename;var _obj=_objectSpread(_objectSpread({},item),{},{model_uri:_baseDir,model_file_name_template:_filename});return _obj;}else{return _objectSpread(_objectSpread({},item),{},_defineProperty({},type,newValue));}}else{return _objectSpread(_objectSpread({},item),{},_defineProperty({},type,newValue));}}return item;}));};var handleDeleteSpecs=function handleDeleteSpecs(index){setSpecsArr(specsArr.filter(function(_,subIndex){return index!==subIndex;}));};var getPathComponents=function getPathComponents(path){var normalizedPath=path.replace(/\\\\/g,'/');var baseDir=normalizedPath.substring(0,normalizedPath.lastIndexOf('/'));var filename=normalizedPath.substring(normalizedPath.lastIndexOf('/')+1);return{baseDir:baseDir,filename:filename};};var handleModelSize=function handleModelSize(index,value,id){setModelSizeAlertId(modelSizeAlertId.filter(function(item){return item!==id;}));handleUpdateSpecsArr(index,'model_size_in_billions',value);if(value!==''&&(!Number(value)||Number(value)<=0)){var modelSizeAlertIdArr=Array.from(new Set([].concat(_toConsumableArray(modelSizeAlertId),[id])));setModelSizeAlertId(modelSizeAlertIdArr);}};var handleQuantization=function handleQuantization(model_format,index,value,id){setQuantizationAlertId(quantizationAlertId.filter(function(item){return item!==id;}));handleUpdateSpecsArr(index,'quantizations',value);if((model_format==='gptq'||model_format==='awq'||model_format==='fp8'||model_format==='mlx')&&value===''){var quantizationAlertIdArr=Array.from(new Set([].concat(_toConsumableArray(quantizationAlertId),[id])));setQuantizationAlertId(quantizationAlertIdArr);}};var handleScrollBottom=function handleScrollBottom(){scrollRef.current.scrollTo({top:scrollRef.current.scrollHeight,behavior:'smooth'});};return/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:'flex',alignItems:'center',marginBottom:10},children:[/*#__PURE__*/_jsx(\"label\",{style:{width:'100px'},children:t('registerModel.modelSpecs')}),/*#__PURE__*/_jsx(Button,{variant:\"contained\",size:\"small\",endIcon:/*#__PURE__*/_jsx(AddIcon,{}),className:\"addBtn\",onClick:handleAddSpecs,children:t('registerModel.more')})]}),/*#__PURE__*/_jsx(\"div\",{className:\"specs_container\",children:specsArr.map(function(item,index){return/*#__PURE__*/_jsxs(\"div\",{className:\"item\",children:[/*#__PURE__*/_jsx(\"label\",{style:{paddingLeft:5},children:t('registerModel.modelFormat')}),/*#__PURE__*/_jsx(RadioGroup,{value:item.model_format,onChange:function onChange(e){handleUpdateSpecsArr(index,'model_format',e.target.value);if(e.target.value==='gptq'||e.target.value==='awq'||e.target.value==='fp8'||e.target.value==='mlx'){var quantizationAlertIdArr=Array.from(new Set([].concat(_toConsumableArray(quantizationAlertId),[item.id])));setQuantizationAlertId(quantizationAlertIdArr);}else{setQuantizationAlertId([]);}},children:/*#__PURE__*/_jsx(Box,{sx:styles.checkboxWrapper,children:modelFormatArr.map(function(item){return/*#__PURE__*/_jsx(Box,{sx:{marginLeft:'10px'},children:/*#__PURE__*/_jsx(FormControlLabel,{value:item.value,control:/*#__PURE__*/_jsx(Radio,{}),label:item.label})},item.value);})})}),/*#__PURE__*/_jsx(Box,{padding:\"15px\"}),/*#__PURE__*/_jsx(TextField,{error:item.model_uri!==''?false:true,style:{minWidth:'60%'},label:t('registerModel.modelPath'),size:\"small\",value:item.model_format!=='ggufv2'?item.model_uri:item.model_uri+'/'+item.model_file_name_template,onChange:function onChange(e){handleUpdateSpecsArr(index,'model_uri',e.target.value);},helperText:t('registerModel.provideModelDirectoryOrFilePath')}),/*#__PURE__*/_jsx(Box,{padding:\"15px\"}),/*#__PURE__*/_jsx(TextField,{error:Number(item.model_size_in_billions)>0?false:true,label:t('registerModel.modelSizeBillions'),size:\"small\",value:item.model_size_in_billions,onChange:function onChange(e){handleModelSize(index,e.target.value,item.id);}}),modelSizeAlertId.includes(item.id)&&/*#__PURE__*/_jsx(Alert,{severity:\"error\",children:t('registerModel.enterNumberGreaterThanZero')}),/*#__PURE__*/_jsx(Box,{padding:\"15px\"}),item.model_format!=='pytorch'&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(TextField,{style:{minWidth:'60%'},label:item.model_format==='gptq'||item.model_format==='awq'||item.model_format==='fp8'||item.model_format==='mlx'?t('registerModel.quantization'):t('registerModel.quantizationOptional'),size:\"small\",value:item.quantizations[0],onChange:function onChange(e){handleQuantization(item.model_format,index,e.target.value,item.id);},helperText:item.model_format==='gptq'||item.model_format==='awq'||item.model_format==='fp8'||item.model_format==='mlx'?t('registerModel.carefulQuantizationForModelRegistration'):''}),item.model_format!=='ggufv2'&&quantizationAlertId.includes(item.id)&&item.quantizations[0]==''&&/*#__PURE__*/_jsx(Alert,{severity:\"error\",children:t('registerModel.quantizationCannotBeEmpty')})]}),specsArr.length>1&&/*#__PURE__*/_jsx(Tooltip,{title:t('registerModel.delete'),placement:\"top\",children:/*#__PURE__*/_jsx(\"div\",{className:\"deleteBtn\",onClick:function onClick(){return handleDeleteSpecs(index);},children:/*#__PURE__*/_jsx(DeleteIcon,{className:\"deleteIcon\"})})})]},item.id);})})]});};export default AddModelSpecs;var styles={baseFormControl:{width:'100%',margin:'normal',size:'small'},checkboxWrapper:{display:'flex',flexWrap:'wrap',alignItems:'center',width:'100%'}};","map":{"version":3,"names":["AddIcon","DeleteIcon","Alert","Box","Button","FormControlLabel","Radio","RadioGroup","TextField","Tooltip","React","useEffect","useState","useTranslation","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","modelFormatArr","value","label","AddModelSpecs","_ref","isJump","formData","specsDataArr","onGetArr","scrollRef","_useState","_useState2","_slicedToArray","count","setCount","_useState3","_useState4","specsArr","setSpecsArr","_useState5","_useState6","pathArr","setPathArr","_useState7","_useState8","modelSizeAlertId","setModelSizeAlertId","_useState9","_useState10","quantizationAlertId","setQuantizationAlertId","_useState11","_useState12","isError","setIsError","_useState13","_useState14","isAdd","setIsAdd","_useTranslation","t","dataArr","map","item","index","model_uri","model_size_in_billions","model_format","quantizations","model_file_name_template","size","split","join","id","length","subPathArr","forEach","push","_objectSpread","arr","uri","modelFormat","handleSize","parseInt","parseFloat","Number","handleQuantization","handleScrollBottom","handleAddSpecs","concat","_toConsumableArray","handleUpdateSpecsArr","type","newValue","subIndex","_defineProperty","_getPathComponents","getPathComponents","baseDir","filename","obj","_ref2","_getPathComponents2","handleDeleteSpecs","filter","_","path","normalizedPath","replace","substring","lastIndexOf","handleModelSize","modelSizeAlertIdArr","Array","from","Set","quantizationAlertIdArr","current","scrollTo","top","scrollHeight","behavior","children","style","display","alignItems","marginBottom","width","variant","endIcon","className","onClick","paddingLeft","onChange","e","target","sx","styles","checkboxWrapper","marginLeft","control","padding","error","minWidth","helperText","includes","severity","title","placement","baseFormControl","margin","flexWrap"],"sources":["/home/runner/work/inference/inference/xinference/web/ui/src/scenes/register_model/components/addModelSpecs.js"],"sourcesContent":["import AddIcon from '@mui/icons-material/Add'\nimport DeleteIcon from '@mui/icons-material/Delete'\nimport {\n Alert,\n Box,\n Button,\n FormControlLabel,\n Radio,\n RadioGroup,\n TextField,\n Tooltip,\n} from '@mui/material'\nimport React, { useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nconst modelFormatArr = [\n { value: 'pytorch', label: 'PyTorch' },\n { value: 'ggufv2', label: 'GGUF' },\n { value: 'gptq', label: 'GPTQ' },\n { value: 'awq', label: 'AWQ' },\n { value: 'fp8', label: 'FP8' },\n { value: 'mlx', label: 'MLX' },\n]\n\nconst AddModelSpecs = ({\n isJump,\n formData,\n specsDataArr,\n onGetArr,\n scrollRef,\n}) => {\n const [count, setCount] = useState(0)\n const [specsArr, setSpecsArr] = useState([])\n const [pathArr, setPathArr] = useState([])\n const [modelSizeAlertId, setModelSizeAlertId] = useState([])\n const [quantizationAlertId, setQuantizationAlertId] = useState([])\n const [isError, setIsError] = useState(false)\n const [isAdd, setIsAdd] = useState(false)\n const { t } = useTranslation()\n\n useEffect(() => {\n if (isJump) {\n const dataArr = specsDataArr.map((item, index) => {\n const {\n model_uri,\n model_size_in_billions,\n model_format,\n quantizations,\n model_file_name_template,\n } = item\n let size = model_size_in_billions\n if (typeof size !== 'number') size = size.split('_').join('.')\n\n return {\n id: index,\n model_uri,\n model_size_in_billions: size,\n model_format,\n quantizations,\n model_file_name_template,\n }\n })\n setCount(dataArr.length)\n setSpecsArr(dataArr)\n\n const subPathArr = []\n specsDataArr.forEach((item) => {\n if (item.model_format !== 'ggufv2') {\n subPathArr.push(item.model_uri)\n } else {\n subPathArr.push(item.model_uri + '/' + item.model_file_name_template)\n }\n })\n setPathArr(subPathArr)\n } else {\n setSpecsArr([\n {\n id: count,\n ...formData,\n },\n ])\n setCount(count + 1)\n setPathArr([formData.model_uri])\n }\n }, [])\n\n useEffect(() => {\n const arr = specsArr.map((item) => {\n const {\n model_uri: uri,\n model_size_in_billions: size,\n model_format: modelFormat,\n quantizations,\n model_file_name_template,\n } = item\n const handleSize =\n parseInt(size) === parseFloat(size)\n ? Number(size)\n : size.split('.').join('_')\n\n let handleQuantization = quantizations\n if (modelFormat === 'pytorch') {\n handleQuantization = ['none']\n } else if (handleQuantization[0] === '' && modelFormat === 'ggufv2') {\n handleQuantization = ['default']\n }\n\n return {\n model_uri: uri,\n model_size_in_billions: handleSize,\n model_format: modelFormat,\n quantizations: handleQuantization,\n model_file_name_template,\n }\n })\n setIsError(true)\n if (modelSizeAlertId.length === 0 && quantizationAlertId.length === 0) {\n setIsError(false)\n }\n onGetArr(arr, isError)\n isAdd && handleScrollBottom()\n setIsAdd(false)\n }, [specsArr, isError])\n\n const handleAddSpecs = () => {\n setCount(count + 1)\n const item = {\n id: count,\n model_uri: '/path/to/llama-1',\n model_size_in_billions: 7,\n model_format: 'pytorch',\n quantizations: [],\n }\n setSpecsArr([...specsArr, item])\n setIsAdd(true)\n setPathArr([...pathArr, '/path/to/llama-1'])\n }\n\n const handleUpdateSpecsArr = (index, type, newValue) => {\n if (type === 'model_format') {\n const subPathArr = [...pathArr]\n if (specsArr[index].model_format !== 'ggufv2') {\n pathArr[index] = specsArr[index].model_uri\n } else {\n pathArr[index] =\n specsArr[index].model_uri +\n '/' +\n specsArr[index].model_file_name_template\n }\n setPathArr(subPathArr)\n }\n\n setSpecsArr(\n specsArr.map((item, subIndex) => {\n if (subIndex === index) {\n if (type === 'quantizations') {\n return { ...item, [type]: [newValue] }\n } else if (type === 'model_format') {\n if (newValue === 'ggufv2') {\n const { baseDir, filename } = getPathComponents(pathArr[index])\n const obj = {\n ...item,\n model_format: newValue,\n quantizations: [''],\n model_uri: baseDir,\n model_file_name_template: filename,\n }\n return obj\n } else {\n const { id, model_size_in_billions, model_format } = item\n return {\n id,\n model_uri: pathArr[index],\n model_size_in_billions,\n model_format,\n [type]: newValue,\n quantizations: [''],\n }\n }\n } else if (type === 'model_uri') {\n const subPathArr = [...pathArr]\n subPathArr[index] = newValue\n setPathArr(subPathArr)\n if (item.model_format === 'ggufv2') {\n const { baseDir, filename } = getPathComponents(newValue)\n const obj = {\n ...item,\n model_uri: baseDir,\n model_file_name_template: filename,\n }\n return obj\n } else {\n return { ...item, [type]: newValue }\n }\n } else {\n return { ...item, [type]: newValue }\n }\n }\n return item\n })\n )\n }\n\n const handleDeleteSpecs = (index) => {\n setSpecsArr(specsArr.filter((_, subIndex) => index !== subIndex))\n }\n\n const getPathComponents = (path) => {\n const normalizedPath = path.replace(/\\\\/g, '/')\n const baseDir = normalizedPath.substring(0, normalizedPath.lastIndexOf('/'))\n const filename = normalizedPath.substring(\n normalizedPath.lastIndexOf('/') + 1\n )\n return { baseDir, filename }\n }\n\n const handleModelSize = (index, value, id) => {\n setModelSizeAlertId(modelSizeAlertId.filter((item) => item !== id))\n handleUpdateSpecsArr(index, 'model_size_in_billions', value)\n if (value !== '' && (!Number(value) || Number(value) <= 0)) {\n const modelSizeAlertIdArr = Array.from(new Set([...modelSizeAlertId, id]))\n setModelSizeAlertId(modelSizeAlertIdArr)\n }\n }\n\n const handleQuantization = (model_format, index, value, id) => {\n setQuantizationAlertId(quantizationAlertId.filter((item) => item !== id))\n handleUpdateSpecsArr(index, 'quantizations', value)\n if (\n (model_format === 'gptq' ||\n model_format === 'awq' ||\n model_format === 'fp8' ||\n model_format === 'mlx') &&\n value === ''\n ) {\n const quantizationAlertIdArr = Array.from(\n new Set([...quantizationAlertId, id])\n )\n setQuantizationAlertId(quantizationAlertIdArr)\n }\n }\n\n const handleScrollBottom = () => {\n scrollRef.current.scrollTo({\n top: scrollRef.current.scrollHeight,\n behavior: 'smooth',\n })\n }\n\n return (\n <>\n <div style={{ display: 'flex', alignItems: 'center', marginBottom: 10 }}>\n <label style={{ width: '100px' }}>\n {t('registerModel.modelSpecs')}\n </label>\n <Button\n variant=\"contained\"\n size=\"small\"\n endIcon={<AddIcon />}\n className=\"addBtn\"\n onClick={handleAddSpecs}\n >\n {t('registerModel.more')}\n </Button>\n </div>\n <div className=\"specs_container\">\n {specsArr.map((item, index) => (\n <div className=\"item\" key={item.id}>\n <label\n style={{\n paddingLeft: 5,\n }}\n >\n {t('registerModel.modelFormat')}\n </label>\n <RadioGroup\n value={item.model_format}\n onChange={(e) => {\n handleUpdateSpecsArr(index, 'model_format', e.target.value)\n if (\n e.target.value === 'gptq' ||\n e.target.value === 'awq' ||\n e.target.value === 'fp8' ||\n e.target.value === 'mlx'\n ) {\n const quantizationAlertIdArr = Array.from(\n new Set([...quantizationAlertId, item.id])\n )\n setQuantizationAlertId(quantizationAlertIdArr)\n } else {\n setQuantizationAlertId([])\n }\n }}\n >\n <Box sx={styles.checkboxWrapper}>\n {modelFormatArr.map((item) => (\n <Box key={item.value} sx={{ marginLeft: '10px' }}>\n <FormControlLabel\n value={item.value}\n control={<Radio />}\n label={item.label}\n />\n </Box>\n ))}\n </Box>\n </RadioGroup>\n <Box padding=\"15px\"></Box>\n\n <TextField\n error={item.model_uri !== '' ? false : true}\n style={{ minWidth: '60%' }}\n label={t('registerModel.modelPath')}\n size=\"small\"\n value={\n item.model_format !== 'ggufv2'\n ? item.model_uri\n : item.model_uri + '/' + item.model_file_name_template\n }\n onChange={(e) => {\n handleUpdateSpecsArr(index, 'model_uri', e.target.value)\n }}\n helperText={t('registerModel.provideModelDirectoryOrFilePath')}\n />\n <Box padding=\"15px\"></Box>\n\n <TextField\n error={Number(item.model_size_in_billions) > 0 ? false : true}\n label={t('registerModel.modelSizeBillions')}\n size=\"small\"\n value={item.model_size_in_billions}\n onChange={(e) => {\n handleModelSize(index, e.target.value, item.id)\n }}\n />\n {modelSizeAlertId.includes(item.id) && (\n <Alert severity=\"error\">\n {t('registerModel.enterNumberGreaterThanZero')}\n </Alert>\n )}\n <Box padding=\"15px\"></Box>\n\n {item.model_format !== 'pytorch' && (\n <>\n <TextField\n style={{ minWidth: '60%' }}\n label={\n item.model_format === 'gptq' ||\n item.model_format === 'awq' ||\n item.model_format === 'fp8' ||\n item.model_format === 'mlx'\n ? t('registerModel.quantization')\n : t('registerModel.quantizationOptional')\n }\n size=\"small\"\n value={item.quantizations[0]}\n onChange={(e) => {\n handleQuantization(\n item.model_format,\n index,\n e.target.value,\n item.id\n )\n }}\n helperText={\n item.model_format === 'gptq' ||\n item.model_format === 'awq' ||\n item.model_format === 'fp8' ||\n item.model_format === 'mlx'\n ? t(\n 'registerModel.carefulQuantizationForModelRegistration'\n )\n : ''\n }\n />\n {item.model_format !== 'ggufv2' &&\n quantizationAlertId.includes(item.id) &&\n item.quantizations[0] == '' && (\n <Alert severity=\"error\">\n {t('registerModel.quantizationCannotBeEmpty')}\n </Alert>\n )}\n </>\n )}\n\n {specsArr.length > 1 && (\n <Tooltip title={t('registerModel.delete')} placement=\"top\">\n <div\n className=\"deleteBtn\"\n onClick={() => handleDeleteSpecs(index)}\n >\n <DeleteIcon className=\"deleteIcon\" />\n </div>\n </Tooltip>\n )}\n </div>\n ))}\n </div>\n </>\n )\n}\n\nexport default AddModelSpecs\n\nconst styles = {\n baseFormControl: {\n width: '100%',\n margin: 'normal',\n size: 'small',\n },\n checkboxWrapper: {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n width: '100%',\n },\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}