xinference 0.14.4.post1__py3-none-any.whl → 0.15.1__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 (194) hide show
  1. xinference/_compat.py +51 -0
  2. xinference/_version.py +3 -3
  3. xinference/api/restful_api.py +209 -40
  4. xinference/client/restful/restful_client.py +7 -26
  5. xinference/conftest.py +1 -1
  6. xinference/constants.py +5 -0
  7. xinference/core/cache_tracker.py +1 -1
  8. xinference/core/chat_interface.py +8 -14
  9. xinference/core/event.py +1 -1
  10. xinference/core/image_interface.py +28 -0
  11. xinference/core/model.py +110 -31
  12. xinference/core/scheduler.py +37 -37
  13. xinference/core/status_guard.py +1 -1
  14. xinference/core/supervisor.py +17 -10
  15. xinference/core/utils.py +80 -22
  16. xinference/core/worker.py +17 -16
  17. xinference/deploy/cmdline.py +8 -16
  18. xinference/deploy/local.py +1 -1
  19. xinference/deploy/supervisor.py +1 -1
  20. xinference/deploy/utils.py +1 -1
  21. xinference/deploy/worker.py +1 -1
  22. xinference/model/audio/cosyvoice.py +86 -41
  23. xinference/model/audio/fish_speech.py +9 -9
  24. xinference/model/audio/model_spec.json +9 -9
  25. xinference/model/audio/whisper.py +4 -1
  26. xinference/model/embedding/core.py +52 -31
  27. xinference/model/image/core.py +2 -1
  28. xinference/model/image/model_spec.json +16 -4
  29. xinference/model/image/model_spec_modelscope.json +16 -4
  30. xinference/model/image/sdapi.py +136 -0
  31. xinference/model/image/stable_diffusion/core.py +164 -19
  32. xinference/model/llm/__init__.py +29 -11
  33. xinference/model/llm/llama_cpp/core.py +16 -33
  34. xinference/model/llm/llm_family.json +1011 -1296
  35. xinference/model/llm/llm_family.py +34 -53
  36. xinference/model/llm/llm_family_csghub.json +18 -35
  37. xinference/model/llm/llm_family_modelscope.json +981 -1122
  38. xinference/model/llm/lmdeploy/core.py +56 -88
  39. xinference/model/llm/mlx/core.py +46 -69
  40. xinference/model/llm/sglang/core.py +36 -18
  41. xinference/model/llm/transformers/chatglm.py +168 -306
  42. xinference/model/llm/transformers/cogvlm2.py +36 -63
  43. xinference/model/llm/transformers/cogvlm2_video.py +33 -223
  44. xinference/model/llm/transformers/core.py +55 -50
  45. xinference/model/llm/transformers/deepseek_v2.py +340 -0
  46. xinference/model/llm/transformers/deepseek_vl.py +53 -96
  47. xinference/model/llm/transformers/glm4v.py +55 -111
  48. xinference/model/llm/transformers/intern_vl.py +39 -70
  49. xinference/model/llm/transformers/internlm2.py +32 -54
  50. xinference/model/llm/transformers/minicpmv25.py +22 -55
  51. xinference/model/llm/transformers/minicpmv26.py +158 -68
  52. xinference/model/llm/transformers/omnilmm.py +5 -28
  53. xinference/model/llm/transformers/qwen2_audio.py +168 -0
  54. xinference/model/llm/transformers/qwen2_vl.py +234 -0
  55. xinference/model/llm/transformers/qwen_vl.py +34 -86
  56. xinference/model/llm/transformers/utils.py +32 -38
  57. xinference/model/llm/transformers/yi_vl.py +32 -72
  58. xinference/model/llm/utils.py +280 -554
  59. xinference/model/llm/vllm/core.py +161 -100
  60. xinference/model/rerank/core.py +41 -8
  61. xinference/model/rerank/model_spec.json +7 -0
  62. xinference/model/rerank/model_spec_modelscope.json +7 -1
  63. xinference/model/utils.py +1 -31
  64. xinference/thirdparty/cosyvoice/bin/export_jit.py +64 -0
  65. xinference/thirdparty/cosyvoice/bin/export_trt.py +8 -0
  66. xinference/thirdparty/cosyvoice/bin/inference.py +5 -2
  67. xinference/thirdparty/cosyvoice/cli/cosyvoice.py +38 -22
  68. xinference/thirdparty/cosyvoice/cli/model.py +139 -26
  69. xinference/thirdparty/cosyvoice/flow/flow.py +15 -9
  70. xinference/thirdparty/cosyvoice/flow/length_regulator.py +20 -1
  71. xinference/thirdparty/cosyvoice/hifigan/generator.py +8 -4
  72. xinference/thirdparty/cosyvoice/llm/llm.py +14 -13
  73. xinference/thirdparty/cosyvoice/transformer/attention.py +7 -3
  74. xinference/thirdparty/cosyvoice/transformer/decoder.py +1 -1
  75. xinference/thirdparty/cosyvoice/transformer/embedding.py +4 -3
  76. xinference/thirdparty/cosyvoice/transformer/encoder.py +4 -2
  77. xinference/thirdparty/cosyvoice/utils/common.py +36 -0
  78. xinference/thirdparty/cosyvoice/utils/file_utils.py +16 -0
  79. xinference/thirdparty/deepseek_vl/serve/assets/Kelpy-Codos.js +100 -0
  80. xinference/thirdparty/deepseek_vl/serve/assets/avatar.png +0 -0
  81. xinference/thirdparty/deepseek_vl/serve/assets/custom.css +355 -0
  82. xinference/thirdparty/deepseek_vl/serve/assets/custom.js +22 -0
  83. xinference/thirdparty/deepseek_vl/serve/assets/favicon.ico +0 -0
  84. xinference/thirdparty/deepseek_vl/serve/examples/app.png +0 -0
  85. xinference/thirdparty/deepseek_vl/serve/examples/chart.png +0 -0
  86. xinference/thirdparty/deepseek_vl/serve/examples/mirror.png +0 -0
  87. xinference/thirdparty/deepseek_vl/serve/examples/pipeline.png +0 -0
  88. xinference/thirdparty/deepseek_vl/serve/examples/puzzle.png +0 -0
  89. xinference/thirdparty/deepseek_vl/serve/examples/rap.jpeg +0 -0
  90. xinference/thirdparty/fish_speech/fish_speech/configs/base.yaml +87 -0
  91. xinference/thirdparty/fish_speech/fish_speech/configs/firefly_gan_vq.yaml +33 -0
  92. xinference/thirdparty/fish_speech/fish_speech/configs/lora/r_8_alpha_16.yaml +4 -0
  93. xinference/thirdparty/fish_speech/fish_speech/configs/text2semantic_finetune.yaml +83 -0
  94. xinference/thirdparty/fish_speech/fish_speech/datasets/protos/text-data.proto +24 -0
  95. xinference/thirdparty/fish_speech/fish_speech/i18n/README.md +27 -0
  96. xinference/thirdparty/fish_speech/fish_speech/i18n/locale/en_US.json +1 -1
  97. xinference/thirdparty/fish_speech/fish_speech/i18n/locale/es_ES.json +1 -1
  98. xinference/thirdparty/fish_speech/fish_speech/i18n/locale/ja_JP.json +1 -1
  99. xinference/thirdparty/fish_speech/fish_speech/i18n/locale/pt_BR.json +1 -1
  100. xinference/thirdparty/fish_speech/fish_speech/i18n/locale/zh_CN.json +1 -1
  101. xinference/thirdparty/fish_speech/fish_speech/models/text2semantic/llama.py +2 -2
  102. xinference/thirdparty/fish_speech/fish_speech/models/vqgan/__init__.py +0 -3
  103. xinference/thirdparty/fish_speech/fish_speech/models/vqgan/modules/firefly.py +169 -198
  104. xinference/thirdparty/fish_speech/fish_speech/models/vqgan/modules/fsq.py +4 -27
  105. xinference/thirdparty/fish_speech/fish_speech/text/chn_text_norm/.gitignore +114 -0
  106. xinference/thirdparty/fish_speech/fish_speech/text/chn_text_norm/README.md +36 -0
  107. xinference/thirdparty/fish_speech/fish_speech/text/clean.py +9 -47
  108. xinference/thirdparty/fish_speech/fish_speech/text/spliter.py +2 -2
  109. xinference/thirdparty/fish_speech/fish_speech/train.py +2 -0
  110. xinference/thirdparty/fish_speech/fish_speech/webui/css/style.css +161 -0
  111. xinference/thirdparty/fish_speech/fish_speech/webui/html/footer.html +11 -0
  112. xinference/thirdparty/fish_speech/fish_speech/webui/js/animate.js +69 -0
  113. xinference/thirdparty/fish_speech/fish_speech/webui/manage.py +12 -10
  114. xinference/thirdparty/fish_speech/tools/api.py +79 -134
  115. xinference/thirdparty/fish_speech/tools/commons.py +35 -0
  116. xinference/thirdparty/fish_speech/tools/download_models.py +3 -3
  117. xinference/thirdparty/fish_speech/tools/file.py +17 -0
  118. xinference/thirdparty/fish_speech/tools/llama/build_dataset.py +1 -1
  119. xinference/thirdparty/fish_speech/tools/llama/generate.py +29 -24
  120. xinference/thirdparty/fish_speech/tools/llama/merge_lora.py +1 -1
  121. xinference/thirdparty/fish_speech/tools/llama/quantize.py +2 -2
  122. xinference/thirdparty/fish_speech/tools/msgpack_api.py +34 -0
  123. xinference/thirdparty/fish_speech/tools/post_api.py +85 -44
  124. xinference/thirdparty/fish_speech/tools/sensevoice/README.md +59 -0
  125. xinference/thirdparty/fish_speech/tools/sensevoice/fun_asr.py +1 -1
  126. xinference/thirdparty/fish_speech/tools/smart_pad.py +16 -3
  127. xinference/thirdparty/fish_speech/tools/vqgan/extract_vq.py +2 -2
  128. xinference/thirdparty/fish_speech/tools/vqgan/inference.py +4 -2
  129. xinference/thirdparty/fish_speech/tools/webui.py +12 -146
  130. xinference/thirdparty/matcha/VERSION +1 -0
  131. xinference/thirdparty/matcha/hifigan/LICENSE +21 -0
  132. xinference/thirdparty/matcha/hifigan/README.md +101 -0
  133. xinference/thirdparty/omnilmm/LICENSE +201 -0
  134. xinference/thirdparty/whisper/__init__.py +156 -0
  135. xinference/thirdparty/whisper/__main__.py +3 -0
  136. xinference/thirdparty/whisper/assets/gpt2.tiktoken +50256 -0
  137. xinference/thirdparty/whisper/assets/mel_filters.npz +0 -0
  138. xinference/thirdparty/whisper/assets/multilingual.tiktoken +50257 -0
  139. xinference/thirdparty/whisper/audio.py +157 -0
  140. xinference/thirdparty/whisper/decoding.py +826 -0
  141. xinference/thirdparty/whisper/model.py +314 -0
  142. xinference/thirdparty/whisper/normalizers/__init__.py +2 -0
  143. xinference/thirdparty/whisper/normalizers/basic.py +76 -0
  144. xinference/thirdparty/whisper/normalizers/english.json +1741 -0
  145. xinference/thirdparty/whisper/normalizers/english.py +550 -0
  146. xinference/thirdparty/whisper/timing.py +386 -0
  147. xinference/thirdparty/whisper/tokenizer.py +395 -0
  148. xinference/thirdparty/whisper/transcribe.py +605 -0
  149. xinference/thirdparty/whisper/triton_ops.py +109 -0
  150. xinference/thirdparty/whisper/utils.py +316 -0
  151. xinference/thirdparty/whisper/version.py +1 -0
  152. xinference/types.py +14 -53
  153. xinference/web/ui/build/asset-manifest.json +6 -6
  154. xinference/web/ui/build/index.html +1 -1
  155. xinference/web/ui/build/static/css/{main.4bafd904.css → main.5061c4c3.css} +2 -2
  156. xinference/web/ui/build/static/css/main.5061c4c3.css.map +1 -0
  157. xinference/web/ui/build/static/js/main.754740c0.js +3 -0
  158. xinference/web/ui/build/static/js/{main.eb13fe95.js.LICENSE.txt → main.754740c0.js.LICENSE.txt} +2 -0
  159. xinference/web/ui/build/static/js/main.754740c0.js.map +1 -0
  160. xinference/web/ui/node_modules/.cache/babel-loader/10c69dc7a296779fcffedeff9393d832dfcb0013c36824adf623d3c518b801ff.json +1 -0
  161. xinference/web/ui/node_modules/.cache/babel-loader/68bede6d95bb5ef0b35bbb3ec5b8c937eaf6862c6cdbddb5ef222a7776aaf336.json +1 -0
  162. xinference/web/ui/node_modules/.cache/babel-loader/77d50223f3e734d4485cca538cb098a8c3a7a0a1a9f01f58cdda3af42fe1adf5.json +1 -0
  163. xinference/web/ui/node_modules/.cache/babel-loader/a56d5a642409a84988891089c98ca28ad0546432dfbae8aaa51bc5a280e1cdd2.json +1 -0
  164. xinference/web/ui/node_modules/.cache/babel-loader/cd90b08d177025dfe84209596fc51878f8a86bcaa6a240848a3d2e5fd4c7ff24.json +1 -0
  165. xinference/web/ui/node_modules/.cache/babel-loader/d9ff696a3e3471f01b46c63d18af32e491eb5dc0e43cb30202c96871466df57f.json +1 -0
  166. xinference/web/ui/node_modules/.cache/babel-loader/e42b72d4cc1ea412ebecbb8d040dc6c6bfee462c33903c2f1f3facb602ad742e.json +1 -0
  167. xinference/web/ui/node_modules/.cache/babel-loader/f5039ddbeb815c51491a1989532006b96fc3ae49c6c60e3c097f875b4ae915ae.json +1 -0
  168. xinference/web/ui/node_modules/.package-lock.json +37 -0
  169. xinference/web/ui/node_modules/a-sync-waterfall/package.json +21 -0
  170. xinference/web/ui/node_modules/nunjucks/node_modules/commander/package.json +48 -0
  171. xinference/web/ui/node_modules/nunjucks/package.json +112 -0
  172. xinference/web/ui/package-lock.json +38 -0
  173. xinference/web/ui/package.json +1 -0
  174. {xinference-0.14.4.post1.dist-info → xinference-0.15.1.dist-info}/METADATA +16 -10
  175. {xinference-0.14.4.post1.dist-info → xinference-0.15.1.dist-info}/RECORD +179 -127
  176. xinference/model/llm/transformers/llama_2.py +0 -108
  177. xinference/thirdparty/fish_speech/fish_speech/models/vqgan/lit_module.py +0 -442
  178. xinference/thirdparty/fish_speech/fish_speech/models/vqgan/modules/discriminator.py +0 -44
  179. xinference/thirdparty/fish_speech/fish_speech/models/vqgan/modules/reference.py +0 -115
  180. xinference/thirdparty/fish_speech/fish_speech/models/vqgan/modules/wavenet.py +0 -225
  181. xinference/thirdparty/fish_speech/tools/auto_rerank.py +0 -159
  182. xinference/thirdparty/fish_speech/tools/gen_ref.py +0 -36
  183. xinference/thirdparty/fish_speech/tools/merge_asr_files.py +0 -55
  184. xinference/web/ui/build/static/css/main.4bafd904.css.map +0 -1
  185. xinference/web/ui/build/static/js/main.eb13fe95.js +0 -3
  186. xinference/web/ui/build/static/js/main.eb13fe95.js.map +0 -1
  187. xinference/web/ui/node_modules/.cache/babel-loader/0b11a5339468c13b2d31ac085e7effe4303259b2071abd46a0a8eb8529233a5e.json +0 -1
  188. xinference/web/ui/node_modules/.cache/babel-loader/213b5913e164773c2b0567455377765715f5f07225fbac77ad8e1e9dc9648a47.json +0 -1
  189. xinference/web/ui/node_modules/.cache/babel-loader/5c26a23b5eacf5b752a08531577ae3840bb247745ef9a39583dc2d05ba93a82a.json +0 -1
  190. xinference/web/ui/node_modules/.cache/babel-loader/978b57d1a04a701bc3fcfebc511f5f274eed6ed7eade67f6fb76c27d5fd9ecc8.json +0 -1
  191. {xinference-0.14.4.post1.dist-info → xinference-0.15.1.dist-info}/LICENSE +0 -0
  192. {xinference-0.14.4.post1.dist-info → xinference-0.15.1.dist-info}/WHEEL +0 -0
  193. {xinference-0.14.4.post1.dist-info → xinference-0.15.1.dist-info}/entry_points.txt +0 -0
  194. {xinference-0.14.4.post1.dist-info → xinference-0.15.1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1 @@
1
+ {"ast":null,"code":"\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), 'Cancel');\nexports.default = _default;","map":{"version":3,"names":["_interopRequireDefault","require","Object","defineProperty","exports","value","default","_createSvgIcon","_jsxRuntime","_default","jsx","d"],"sources":["/home/runner/work/inference/inference/xinference/web/ui/node_modules/@mui/icons-material/Cancel.js"],"sourcesContent":["\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), 'Cancel');\nexports.default = _default;"],"mappings":"AAAA,YAAY;AACZ,YAAY;;AAEZ,IAAIA,sBAAsB,GAAGC,OAAO,CAAC,8CAA8C,CAAC;AACpFC,MAAM,CAACC,cAAc,CAACC,OAAO,EAAE,YAAY,EAAE;EAC3CC,KAAK,EAAE;AACT,CAAC,CAAC;AACFD,OAAO,CAACE,OAAO,GAAG,KAAK,CAAC;AACxB,IAAIC,cAAc,GAAGP,sBAAsB,CAACC,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAC7E,IAAIO,WAAW,GAAGP,OAAO,CAAC,mBAAmB,CAAC;AAC9C,IAAIQ,QAAQ,GAAG,CAAC,CAAC,EAAEF,cAAc,CAACD,OAAO,GAAG,aAAa,CAAC,CAAC,EAAEE,WAAW,CAACE,GAAG,EAAE,MAAM,EAAE;EACpFC,CAAC,EAAE;AACL,CAAC,CAAC,EAAE,QAAQ,CAAC;AACbP,OAAO,CAACE,OAAO,GAAGG,QAAQ","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}
@@ -0,0 +1 @@
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{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'}];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];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')&&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:\"Model Specs\"}),/*#__PURE__*/_jsx(Button,{variant:\"contained\",size:\"small\",endIcon:/*#__PURE__*/_jsx(AddIcon,{}),className:\"addBtn\",onClick:handleAddSpecs,children:\"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:\"Model Format\"}),/*#__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'){var quantizationAlertIdArr=Array.from(new Set([].concat(_toConsumableArray(quantizationAlertId),[item.id])));setQuantizationAlertId(quantizationAlertIdArr);}},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:\"Model Path\",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:\"For PyTorch, provide the model directory. For GGUF, provide the model file path.\"}),/*#__PURE__*/_jsx(Box,{padding:\"15px\"}),/*#__PURE__*/_jsx(TextField,{error:Number(item.model_size_in_billions)>0?false:true,label:\"Model Size in Billions\",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:\"Please enter a number greater than 0.\"}),/*#__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'?'Quantization':'Quantization (Optional)',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'?'For GPTQ/AWQ/FP8 models, please be careful to fill in the quantization corresponding to the model you want to register.':''}),item.model_format!=='ggufv2'&&quantizationAlertId.includes(item.id)&&item.quantizations[0]==''&&/*#__PURE__*/_jsx(Alert,{severity:\"error\",children:\"Quantization cannot be left empty.\"})]}),specsArr.length>1&&/*#__PURE__*/_jsx(Tooltip,{title:\"Delete specs\",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","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","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'\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]\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\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 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' }}>Model Specs</label>\n <Button\n variant=\"contained\"\n size=\"small\"\n endIcon={<AddIcon />}\n className=\"addBtn\"\n onClick={handleAddSpecs}\n >\n 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 Model Format\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 ) {\n const quantizationAlertIdArr = Array.from(\n new Set([...quantizationAlertId, item.id])\n )\n setQuantizationAlertId(quantizationAlertIdArr)\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=\"Model Path\"\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=\"For PyTorch, provide the model directory. For GGUF, provide the model file path.\"\n />\n <Box padding=\"15px\"></Box>\n\n <TextField\n error={Number(item.model_size_in_billions) > 0 ? false : true}\n label=\"Model Size in Billions\"\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 Please enter a number greater than 0.\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 ? 'Quantization'\n : 'Quantization (Optional)'\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 ? 'For GPTQ/AWQ/FP8 models, please be careful to fill in the quantization corresponding to the model you want to register.'\n : ''\n }\n />\n {item.model_format !== 'ggufv2' &&\n quantizationAlertId.includes(item.id) &&\n item.quantizations[0] == '' && (\n <Alert severity=\"error\">\n Quantization cannot be left empty.\n </Alert>\n )}\n </>\n )}\n\n {specsArr.length > 1 && (\n <Tooltip title=\"Delete specs\" 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":[]}