xinference 0.11.2__py3-none-any.whl → 0.11.3__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.
- xinference/_version.py +3 -3
- xinference/api/restful_api.py +14 -8
- xinference/constants.py +4 -0
- xinference/core/__init__.py +0 -2
- xinference/core/cache_tracker.py +22 -1
- xinference/core/chat_interface.py +71 -10
- xinference/core/supervisor.py +5 -3
- xinference/core/worker.py +8 -3
- xinference/model/llm/__init__.py +2 -0
- xinference/model/llm/llm_family.json +336 -39
- xinference/model/llm/llm_family_modelscope.json +267 -1
- xinference/model/llm/pytorch/baichuan.py +2 -1
- xinference/model/llm/pytorch/cogvlm2.py +257 -0
- xinference/model/llm/pytorch/core.py +1 -0
- xinference/model/llm/pytorch/intern_vl.py +8 -53
- xinference/model/llm/vllm/core.py +1 -1
- {xinference-0.11.2.dist-info → xinference-0.11.3.dist-info}/METADATA +4 -4
- {xinference-0.11.2.dist-info → xinference-0.11.3.dist-info}/RECORD +22 -21
- {xinference-0.11.2.dist-info → xinference-0.11.3.dist-info}/LICENSE +0 -0
- {xinference-0.11.2.dist-info → xinference-0.11.3.dist-info}/WHEEL +0 -0
- {xinference-0.11.2.dist-info → xinference-0.11.3.dist-info}/entry_points.txt +0 -0
- {xinference-0.11.2.dist-info → xinference-0.11.3.dist-info}/top_level.txt +0 -0
|
@@ -73,7 +73,8 @@ class BaichuanPytorchChatModel(PytorchChatModel):
|
|
|
73
73
|
) -> bool:
|
|
74
74
|
if llm_spec.model_format != "pytorch":
|
|
75
75
|
return False
|
|
76
|
-
|
|
76
|
+
model_family = llm_family.model_family or llm_family.model_name
|
|
77
|
+
if model_family not in ["baichuan-chat", "baichuan-2-chat"]:
|
|
77
78
|
return False
|
|
78
79
|
if "chat" not in llm_family.model_ability:
|
|
79
80
|
return False
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
# Copyright 2022-2023 XProbe Inc.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
import base64
|
|
15
|
+
import logging
|
|
16
|
+
import time
|
|
17
|
+
import uuid
|
|
18
|
+
from concurrent.futures import ThreadPoolExecutor
|
|
19
|
+
from io import BytesIO
|
|
20
|
+
from typing import Dict, Iterator, List, Optional, Tuple, Union
|
|
21
|
+
|
|
22
|
+
import requests
|
|
23
|
+
import torch
|
|
24
|
+
from PIL import Image
|
|
25
|
+
|
|
26
|
+
from ....model.utils import select_device
|
|
27
|
+
from ....types import (
|
|
28
|
+
ChatCompletion,
|
|
29
|
+
ChatCompletionChunk,
|
|
30
|
+
ChatCompletionMessage,
|
|
31
|
+
Completion,
|
|
32
|
+
CompletionChoice,
|
|
33
|
+
CompletionUsage,
|
|
34
|
+
)
|
|
35
|
+
from ..llm_family import LLMFamilyV1, LLMSpecV1
|
|
36
|
+
from .core import PytorchChatModel, PytorchGenerateConfig
|
|
37
|
+
|
|
38
|
+
logger = logging.getLogger(__name__)
|
|
39
|
+
|
|
40
|
+
IMAGENET_MEAN = (0.485, 0.456, 0.406)
|
|
41
|
+
IMAGENET_STD = (0.229, 0.224, 0.225)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class CogVLM2Model(PytorchChatModel):
|
|
45
|
+
def __init__(self, *args, **kwargs):
|
|
46
|
+
super().__init__(*args, **kwargs)
|
|
47
|
+
self._torch_type = None
|
|
48
|
+
self._device = None
|
|
49
|
+
self._tokenizer = None
|
|
50
|
+
self._model = None
|
|
51
|
+
|
|
52
|
+
@classmethod
|
|
53
|
+
def match(
|
|
54
|
+
cls, model_family: "LLMFamilyV1", model_spec: "LLMSpecV1", quantization: str
|
|
55
|
+
) -> bool:
|
|
56
|
+
family = model_family.model_family or model_family.model_name
|
|
57
|
+
if "cogvlm" in family.lower():
|
|
58
|
+
return True
|
|
59
|
+
return False
|
|
60
|
+
|
|
61
|
+
def load(self, **kwargs):
|
|
62
|
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
|
63
|
+
from transformers.generation import GenerationConfig
|
|
64
|
+
|
|
65
|
+
device = self._pytorch_model_config.get("device", "auto")
|
|
66
|
+
self._device = select_device(device)
|
|
67
|
+
self._torch_type = (
|
|
68
|
+
torch.bfloat16
|
|
69
|
+
if torch.cuda.is_available() and torch.cuda.get_device_capability()[0] >= 8
|
|
70
|
+
else torch.float16
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
self._tokenizer = AutoTokenizer.from_pretrained(
|
|
74
|
+
self.model_path,
|
|
75
|
+
trust_remote_code=True,
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
self._model = AutoModelForCausalLM.from_pretrained(
|
|
79
|
+
self.model_path,
|
|
80
|
+
torch_dtype=self._torch_type,
|
|
81
|
+
trust_remote_code=True,
|
|
82
|
+
low_cpu_mem_usage=True,
|
|
83
|
+
device_map="auto",
|
|
84
|
+
).eval()
|
|
85
|
+
|
|
86
|
+
# Specify hyperparameters for generation
|
|
87
|
+
self._model.generation_config = GenerationConfig.from_pretrained(
|
|
88
|
+
self.model_path,
|
|
89
|
+
trust_remote_code=True,
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
def _message_content_to_cogvlm2(self, content):
|
|
93
|
+
def _load_image(_url):
|
|
94
|
+
if _url.startswith("data:"):
|
|
95
|
+
logging.info("Parse url by base64 decoder.")
|
|
96
|
+
# https://platform.openai.com/docs/guides/vision/uploading-base-64-encoded-images
|
|
97
|
+
# e.g. f"data:image/jpeg;base64,{base64_image}"
|
|
98
|
+
_type, data = _url.split(";")
|
|
99
|
+
_, ext = _type.split("/")
|
|
100
|
+
data = data[len("base64,") :]
|
|
101
|
+
data = base64.b64decode(data.encode("utf-8"))
|
|
102
|
+
return Image.open(BytesIO(data)).convert("RGB")
|
|
103
|
+
else:
|
|
104
|
+
try:
|
|
105
|
+
response = requests.get(_url)
|
|
106
|
+
except requests.exceptions.MissingSchema:
|
|
107
|
+
return Image.open(_url).convert("RGB")
|
|
108
|
+
else:
|
|
109
|
+
return Image.open(BytesIO(response.content)).convert("RGB")
|
|
110
|
+
|
|
111
|
+
if not isinstance(content, str):
|
|
112
|
+
texts = []
|
|
113
|
+
image_urls = []
|
|
114
|
+
for c in content:
|
|
115
|
+
c_type = c.get("type")
|
|
116
|
+
if c_type == "text":
|
|
117
|
+
texts.append(c["text"])
|
|
118
|
+
elif c_type == "image_url":
|
|
119
|
+
image_urls.append(c["image_url"]["url"])
|
|
120
|
+
image_futures = []
|
|
121
|
+
with ThreadPoolExecutor() as executor:
|
|
122
|
+
for image_url in image_urls:
|
|
123
|
+
fut = executor.submit(_load_image, image_url)
|
|
124
|
+
image_futures.append(fut)
|
|
125
|
+
images = [fut.result() for fut in image_futures]
|
|
126
|
+
text = " ".join(texts)
|
|
127
|
+
if len(images) == 0:
|
|
128
|
+
return text, None
|
|
129
|
+
elif len(images) == 1:
|
|
130
|
+
return text, images
|
|
131
|
+
else:
|
|
132
|
+
raise RuntimeError(
|
|
133
|
+
"Only one image per message is supported by CogVLM2."
|
|
134
|
+
)
|
|
135
|
+
return content, None
|
|
136
|
+
|
|
137
|
+
def _history_content_to_cogvlm2(
|
|
138
|
+
self, system_prompt: str, chat_history: List[ChatCompletionMessage]
|
|
139
|
+
):
|
|
140
|
+
def _image_to_piexl_values(image):
|
|
141
|
+
if image.startswith("data:"):
|
|
142
|
+
logging.info("Parse url by base64 decoder.")
|
|
143
|
+
# https://platform.openai.com/docs/guides/vision/uploading-base-64-encoded-images
|
|
144
|
+
# e.g. f"data:image/jpeg;base64,{base64_image}"
|
|
145
|
+
_type, data = image.split(";")
|
|
146
|
+
_, ext = _type.split("/")
|
|
147
|
+
data = data[len("base64,") :]
|
|
148
|
+
data = base64.b64decode(data.encode("utf-8"))
|
|
149
|
+
return Image.open(BytesIO(data)).convert("RGB")
|
|
150
|
+
else:
|
|
151
|
+
try:
|
|
152
|
+
response = requests.get(image)
|
|
153
|
+
except requests.exceptions.MissingSchema:
|
|
154
|
+
return Image.open(image).convert("RGB")
|
|
155
|
+
else:
|
|
156
|
+
return Image.open(BytesIO(response.content)).convert("RGB")
|
|
157
|
+
|
|
158
|
+
query = system_prompt
|
|
159
|
+
history: List[Tuple] = []
|
|
160
|
+
pixel_values = None
|
|
161
|
+
for i in range(0, len(chat_history), 2):
|
|
162
|
+
user = chat_history[i]["content"]
|
|
163
|
+
if isinstance(user, List):
|
|
164
|
+
for content in user:
|
|
165
|
+
c_type = content.get("type")
|
|
166
|
+
if c_type == "text":
|
|
167
|
+
user = content["text"]
|
|
168
|
+
elif c_type == "image_url" and not pixel_values:
|
|
169
|
+
pixel_values = _image_to_piexl_values(
|
|
170
|
+
content["image_url"]["url"]
|
|
171
|
+
)
|
|
172
|
+
assistant = chat_history[i + 1]["content"]
|
|
173
|
+
query = query + f" USER: {user} ASSISTANT:"
|
|
174
|
+
history.append((query, assistant))
|
|
175
|
+
query = query + f" {assistant}"
|
|
176
|
+
return query, history, [pixel_values]
|
|
177
|
+
|
|
178
|
+
def chat(
|
|
179
|
+
self,
|
|
180
|
+
prompt: Union[str, List[Dict]],
|
|
181
|
+
system_prompt: Optional[str] = None,
|
|
182
|
+
chat_history: Optional[List[ChatCompletionMessage]] = None,
|
|
183
|
+
generate_config: Optional[PytorchGenerateConfig] = None,
|
|
184
|
+
) -> Union[ChatCompletion, Iterator[ChatCompletionChunk]]:
|
|
185
|
+
system_prompt = system_prompt if system_prompt else ""
|
|
186
|
+
if generate_config and generate_config.get("stream"):
|
|
187
|
+
raise Exception(
|
|
188
|
+
f"Chat with model {self.model_family.model_name} does not support stream."
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
sanitized_config = {
|
|
192
|
+
"pad_token_id": 128002,
|
|
193
|
+
"max_new_tokens": generate_config.get("max_tokens", 512)
|
|
194
|
+
if generate_config
|
|
195
|
+
else 512,
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
content, image = self._message_content_to_cogvlm2(prompt)
|
|
199
|
+
|
|
200
|
+
history = []
|
|
201
|
+
query = ""
|
|
202
|
+
history_image = None
|
|
203
|
+
if chat_history:
|
|
204
|
+
query, history, history_image = self._history_content_to_cogvlm2(
|
|
205
|
+
system_prompt, chat_history
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
if image and history_image:
|
|
209
|
+
history = []
|
|
210
|
+
query = system_prompt + f" USER: {content} ASSISTANT:"
|
|
211
|
+
else:
|
|
212
|
+
image = image if image else history_image
|
|
213
|
+
query = query + f" USER: {content} ASSISTANT:"
|
|
214
|
+
|
|
215
|
+
input_by_model = self._model.build_conversation_input_ids(
|
|
216
|
+
self._tokenizer,
|
|
217
|
+
query=query,
|
|
218
|
+
history=history,
|
|
219
|
+
images=image,
|
|
220
|
+
template_version="chat",
|
|
221
|
+
)
|
|
222
|
+
|
|
223
|
+
inputs = {
|
|
224
|
+
"input_ids": input_by_model["input_ids"].unsqueeze(0).to(self._device),
|
|
225
|
+
"token_type_ids": input_by_model["token_type_ids"]
|
|
226
|
+
.unsqueeze(0)
|
|
227
|
+
.to(self._device),
|
|
228
|
+
"attention_mask": input_by_model["attention_mask"]
|
|
229
|
+
.unsqueeze(0)
|
|
230
|
+
.to(self._device),
|
|
231
|
+
"images": [
|
|
232
|
+
[input_by_model["images"][0].to(self._device).to(self._torch_type)]
|
|
233
|
+
]
|
|
234
|
+
if image is not None
|
|
235
|
+
else None,
|
|
236
|
+
}
|
|
237
|
+
with torch.no_grad():
|
|
238
|
+
outputs = self._model.generate(**inputs, **sanitized_config)
|
|
239
|
+
outputs = outputs[:, inputs["input_ids"].shape[1] :]
|
|
240
|
+
response = self._tokenizer.decode(outputs[0])
|
|
241
|
+
response = response.split("<|end_of_text|>")[0]
|
|
242
|
+
|
|
243
|
+
chunk = Completion(
|
|
244
|
+
id=str(uuid.uuid1()),
|
|
245
|
+
object="text_completion",
|
|
246
|
+
created=int(time.time()),
|
|
247
|
+
model=self.model_uid,
|
|
248
|
+
choices=[
|
|
249
|
+
CompletionChoice(
|
|
250
|
+
index=0, text=response, finish_reason="stop", logprobs=None
|
|
251
|
+
)
|
|
252
|
+
],
|
|
253
|
+
usage=CompletionUsage(
|
|
254
|
+
prompt_tokens=-1, completion_tokens=-1, total_tokens=-1
|
|
255
|
+
),
|
|
256
|
+
)
|
|
257
|
+
return self._to_chat_completion(chunk)
|
|
@@ -21,9 +21,7 @@ from typing import Dict, Iterator, List, Optional, Tuple, Union
|
|
|
21
21
|
|
|
22
22
|
import requests
|
|
23
23
|
import torch
|
|
24
|
-
import torchvision.transforms as T
|
|
25
24
|
from PIL import Image
|
|
26
|
-
from torchvision.transforms.functional import InterpolationMode
|
|
27
25
|
|
|
28
26
|
from ....model.utils import select_device
|
|
29
27
|
from ....types import (
|
|
@@ -79,19 +77,14 @@ class InternVLChatModel(PytorchChatModel):
|
|
|
79
77
|
"device_map": device,
|
|
80
78
|
}
|
|
81
79
|
|
|
82
|
-
if "
|
|
83
|
-
kwargs
|
|
84
|
-
|
|
85
|
-
"load_in_8bit": True,
|
|
86
|
-
"device_map": device,
|
|
87
|
-
}
|
|
88
|
-
)
|
|
89
|
-
elif "mini" in self.model_family.model_name:
|
|
80
|
+
if "int8" in self.quantization.lower():
|
|
81
|
+
kwargs["load_in_8bit"] = True
|
|
82
|
+
elif 2 == self.model_spec.model_size_in_billions:
|
|
90
83
|
kwargs.pop("device_map")
|
|
91
84
|
|
|
92
85
|
self._model = AutoModel.from_pretrained(self.model_path, **kwargs).eval()
|
|
93
86
|
|
|
94
|
-
if "
|
|
87
|
+
if "int8" not in self.quantization.lower():
|
|
95
88
|
self._model.cuda()
|
|
96
89
|
|
|
97
90
|
# Specify hyperparameters for generation
|
|
@@ -205,47 +198,6 @@ class InternVLChatModel(PytorchChatModel):
|
|
|
205
198
|
history.append(tuple(tmp))
|
|
206
199
|
return history, pixel_values
|
|
207
200
|
|
|
208
|
-
def _load_image(_url):
|
|
209
|
-
if _url.startswith("data:"):
|
|
210
|
-
logging.info("Parse url by base64 decoder.")
|
|
211
|
-
# https://platform.openai.com/docs/guides/vision/uploading-base-64-encoded-images
|
|
212
|
-
# e.g. f"data:image/jpeg;base64,{base64_image}"
|
|
213
|
-
_type, data = _url.split(";")
|
|
214
|
-
_, ext = _type.split("/")
|
|
215
|
-
data = data[len("base64,") :]
|
|
216
|
-
data = base64.b64decode(data.encode("utf-8"))
|
|
217
|
-
|
|
218
|
-
return Image.open(BytesIO(data)).convert("RGB")
|
|
219
|
-
else:
|
|
220
|
-
try:
|
|
221
|
-
response = requests.get(_url)
|
|
222
|
-
except requests.exceptions.MissingSchema:
|
|
223
|
-
return Image.open(_url).convert("RGB")
|
|
224
|
-
else:
|
|
225
|
-
return Image.open(BytesIO(response.content)).convert("RGB")
|
|
226
|
-
|
|
227
|
-
if not isinstance(content, str):
|
|
228
|
-
texts = []
|
|
229
|
-
image_urls = []
|
|
230
|
-
for c in content:
|
|
231
|
-
c_type = c.get("type")
|
|
232
|
-
if c_type == "text":
|
|
233
|
-
texts.append(c["text"])
|
|
234
|
-
elif c_type == "image_url":
|
|
235
|
-
image_urls.append(c["image_url"]["url"])
|
|
236
|
-
image_futures = []
|
|
237
|
-
with ThreadPoolExecutor() as executor:
|
|
238
|
-
for image_url in image_urls:
|
|
239
|
-
fut = executor.submit(_load_image, image_url)
|
|
240
|
-
image_futures.append(fut)
|
|
241
|
-
images = [fut.result() for fut in image_futures]
|
|
242
|
-
text = " ".join(texts)
|
|
243
|
-
if len(images) == 0:
|
|
244
|
-
return text
|
|
245
|
-
else:
|
|
246
|
-
return text, images
|
|
247
|
-
return content
|
|
248
|
-
|
|
249
201
|
def _find_closest_aspect_ratio(
|
|
250
202
|
self, aspect_ratio, target_ratios, width, height, image_size
|
|
251
203
|
):
|
|
@@ -309,6 +261,9 @@ class InternVLChatModel(PytorchChatModel):
|
|
|
309
261
|
return processed_images
|
|
310
262
|
|
|
311
263
|
def _build_transform(self, input_size):
|
|
264
|
+
import torchvision.transforms as T
|
|
265
|
+
from torchvision.transforms.functional import InterpolationMode
|
|
266
|
+
|
|
312
267
|
MEAN, STD = IMAGENET_MEAN, IMAGENET_STD
|
|
313
268
|
transform = T.Compose(
|
|
314
269
|
[
|
|
@@ -338,7 +293,7 @@ class InternVLChatModel(PytorchChatModel):
|
|
|
338
293
|
chat_history: Optional[List[ChatCompletionMessage]] = None,
|
|
339
294
|
generate_config: Optional[PytorchGenerateConfig] = None,
|
|
340
295
|
) -> Union[ChatCompletion, Iterator[ChatCompletionChunk]]:
|
|
341
|
-
if generate_config and generate_config.
|
|
296
|
+
if generate_config and generate_config.get("stream"):
|
|
342
297
|
raise Exception(
|
|
343
298
|
f"Chat with model {self.model_family.model_name} does not support stream."
|
|
344
299
|
)
|
|
@@ -114,6 +114,7 @@ VLLM_SUPPORTED_CHAT_MODELS = [
|
|
|
114
114
|
"qwen-chat",
|
|
115
115
|
"Yi-chat",
|
|
116
116
|
"Yi-1.5-chat",
|
|
117
|
+
"Yi-1.5-chat-16k",
|
|
117
118
|
"code-llama-instruct",
|
|
118
119
|
"mistral-instruct-v0.1",
|
|
119
120
|
"mistral-instruct-v0.2",
|
|
@@ -140,7 +141,6 @@ if VLLM_INSTALLED and vllm.__version__ >= "0.3.3":
|
|
|
140
141
|
if VLLM_INSTALLED and vllm.__version__ >= "0.4.0":
|
|
141
142
|
VLLM_SUPPORTED_CHAT_MODELS.append("qwen1.5-moe-chat")
|
|
142
143
|
VLLM_SUPPORTED_CHAT_MODELS.append("c4ai-command-r-v01")
|
|
143
|
-
VLLM_SUPPORTED_CHAT_MODELS.append("c4ai-command-r-v01-4bit")
|
|
144
144
|
|
|
145
145
|
|
|
146
146
|
class VLLMModel(LLM):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: xinference
|
|
3
|
-
Version: 0.11.
|
|
3
|
+
Version: 0.11.3
|
|
4
4
|
Summary: Model Serving Made Easy
|
|
5
5
|
Home-page: https://github.com/xorbitsai/inference
|
|
6
6
|
Author: Qin Xuye
|
|
@@ -177,12 +177,12 @@ potential of cutting-edge AI models.
|
|
|
177
177
|
- Docker image: [#855](https://github.com/xorbitsai/inference/pull/855)
|
|
178
178
|
- Support multimodal: [#829](https://github.com/xorbitsai/inference/pull/829)
|
|
179
179
|
### New Models
|
|
180
|
+
- Built-in support for [CogVLM2](https://github.com/THUDM/CogVLM2): [#1551](https://github.com/xorbitsai/inference/pull/1551)
|
|
181
|
+
- Built-in support for [InternVL-Chat-V1-5](https://github.com/OpenGVLab/InternVL): [#1536](https://github.com/xorbitsai/inference/pull/1536)
|
|
182
|
+
- Built-in support for [Yi-1.5](https://github.com/01-ai/Yi-1.5): [#1489](https://github.com/xorbitsai/inference/pull/1489)
|
|
180
183
|
- Built-in support for [Llama 3](https://github.com/meta-llama/llama3): [#1332](https://github.com/xorbitsai/inference/pull/1332)
|
|
181
184
|
- Built-in support for [Qwen1.5 110B](https://huggingface.co/Qwen/Qwen1.5-110B-Chat): [#1388](https://github.com/xorbitsai/inference/pull/1388)
|
|
182
185
|
- Built-in support for [Mixtral-8x22B-instruct-v0.1](https://huggingface.co/mistralai/Mixtral-8x22B-Instruct-v0.1): [#1340](https://github.com/xorbitsai/inference/pull/1340)
|
|
183
|
-
- Built-in support for [Command-R](https://huggingface.co/CohereForAI/c4ai-command-r-v01): [#1310](https://github.com/xorbitsai/inference/pull/1310)
|
|
184
|
-
- Built-in support for [Qwen1.5 MOE](https://huggingface.co/Qwen/Qwen1.5-MoE-A2.7B-Chat): [#1263](https://github.com/xorbitsai/inference/pull/1263)
|
|
185
|
-
- Built-in support for [Qwen1.5 32B](https://huggingface.co/Qwen/Qwen1.5-32B-Chat): [#1249](https://github.com/xorbitsai/inference/pull/1249)
|
|
186
186
|
### Integrations
|
|
187
187
|
- [Dify](https://docs.dify.ai/advanced/model-configuration/xinference): an LLMOps platform that enables developers (and even non-developers) to quickly build useful applications based on large language models, ensuring they are visual, operable, and improvable.
|
|
188
188
|
- [FastGPT](https://github.com/labring/FastGPT): a knowledge-based platform built on the LLM, offers out-of-the-box data processing and model invocation capabilities, allows for workflow orchestration through Flow visualization.
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
xinference/__init__.py,sha256=0LgIveLP6CXxoIaSrxhlFyOh0lOqPgJBVcBe0tkWJjc,987
|
|
2
2
|
xinference/_compat.py,sha256=SQAjZMGxtBIce45qtW7ob7RWzA0zhv2yB3AxT0rb0uU,1778
|
|
3
|
-
xinference/_version.py,sha256=
|
|
3
|
+
xinference/_version.py,sha256=3PbaSmy-dqQ13cZaaCK5ch6akdnc3CpE14f0GcuqBi8,498
|
|
4
4
|
xinference/conftest.py,sha256=Qus4KWCeaKS7c5UgNCTpPNucD2bjV8P7u1_qRosgGno,9743
|
|
5
|
-
xinference/constants.py,sha256=
|
|
5
|
+
xinference/constants.py,sha256=SIUOiSDpDIcZeuOE8kpF4NgUpCYGrHFIFjv4ogi5SAE,3040
|
|
6
6
|
xinference/device_utils.py,sha256=zswJiws3VyTIaNO8z-MOcsJH_UiPoePPiKK5zoNrjTA,3285
|
|
7
7
|
xinference/fields.py,sha256=0UtBFaDNzn1n9MRjyTkNrolsIML-TpZfudWOejqjni8,5245
|
|
8
8
|
xinference/isolation.py,sha256=NstVRcO3dG4umHExICXAHlzVKwH8ch8MBwKwE-KFkE0,1826
|
|
9
9
|
xinference/types.py,sha256=BFKUGHb0jKkAA1dczSf8pPlFutRE7-JtRp6C3oVSJ7Q,13626
|
|
10
10
|
xinference/utils.py,sha256=VSOJMFd9H7kce98OtJZbcDjjpfzRpHAFs8WU0xXPBM8,717
|
|
11
11
|
xinference/api/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
|
|
12
|
-
xinference/api/restful_api.py,sha256=
|
|
12
|
+
xinference/api/restful_api.py,sha256=iuyxeNxwJHjEH5eSLCjoi1bZRmJFsG0j7pFI2ytQWjw,60830
|
|
13
13
|
xinference/api/oauth2/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
|
|
14
14
|
xinference/api/oauth2/auth_service.py,sha256=74JzB42fbbmBu4Q1dW3A9Fp_N7167KgRGB42Z0NHjAM,6119
|
|
15
15
|
xinference/api/oauth2/types.py,sha256=K923sv_XySIUtM2Eozl9IG082IJcDOS5SFLrPZ5ELBg,996
|
|
@@ -19,18 +19,18 @@ xinference/client/common.py,sha256=iciZRs5YjM2gYsXnwACPMaiBZp4_XpawWwfym0Iyu40,1
|
|
|
19
19
|
xinference/client/handlers.py,sha256=3gd9C7u4URbcVdR6Eyv8cpEZ175Ll4q_jGL07CnEIpg,648
|
|
20
20
|
xinference/client/restful/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
|
|
21
21
|
xinference/client/restful/restful_client.py,sha256=zqfZHliUeiDHvKKo1SrXH3rAvyxp0o_TaMwuCjV2pjQ,43589
|
|
22
|
-
xinference/core/__init__.py,sha256=
|
|
23
|
-
xinference/core/cache_tracker.py,sha256=
|
|
24
|
-
xinference/core/chat_interface.py,sha256=
|
|
22
|
+
xinference/core/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
|
|
23
|
+
xinference/core/cache_tracker.py,sha256=xlhHwWsSLIo743r5U5l69b_rti_7Way-kGYzsunzs9s,5846
|
|
24
|
+
xinference/core/chat_interface.py,sha256=7SOm6Qi-iFh1otycHpn6CpISq2wTLlJzEUngJtOwMIk,19558
|
|
25
25
|
xinference/core/event.py,sha256=dTXv-zg-sAqlY1rFLvyor9D8WEXZvnUH7NigegpziO8,1648
|
|
26
26
|
xinference/core/image_interface.py,sha256=G2iK24auEN4MrLkPlu1CAA_gf-BQrGQTjazi_FYqIxE,8825
|
|
27
27
|
xinference/core/metrics.py,sha256=ScmTG15Uq3h_ob72ybZSMWdnk8P4sUZFcm60f4ikSXc,2631
|
|
28
28
|
xinference/core/model.py,sha256=KAD9a2fYY97MfByNRnmia2oZR-UK7B-zW8gWl_tUJgs,18121
|
|
29
29
|
xinference/core/resource.py,sha256=FQ0aRt3T4ZQo0P6CZZf5QUKHiCsr5llBvKb1f7wfnxg,1611
|
|
30
30
|
xinference/core/status_guard.py,sha256=fF5hisvfn6es9DV6Z6RRD6V_S_uLcb8lHM6PArGgb04,2820
|
|
31
|
-
xinference/core/supervisor.py,sha256=
|
|
31
|
+
xinference/core/supervisor.py,sha256=4UoXuzrDNk5P1eteUjOlXwdm8W5JFgUTn8kwSmxlROw,42076
|
|
32
32
|
xinference/core/utils.py,sha256=LqPrez5dGELRQDSwOD5EP8XHb-aUKAdyszS-QpNouuw,6401
|
|
33
|
-
xinference/core/worker.py,sha256=
|
|
33
|
+
xinference/core/worker.py,sha256=bf5FtsVWMxQmQNmK0hTsC27CLU6ByGC02eCyrnJg4og,32999
|
|
34
34
|
xinference/deploy/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
|
|
35
35
|
xinference/deploy/cmdline.py,sha256=J1NSfnQ-iJ87OPb_kNOfONgMZNqCow1Klm91uLS4_Lk,44582
|
|
36
36
|
xinference/deploy/local.py,sha256=vlAvhcl8utP1DjW4MJpBgD4JLHQV-1Xebmdd8j9M8IM,3946
|
|
@@ -65,11 +65,11 @@ xinference/model/image/model_spec_modelscope.json,sha256=KMI-2YOJoLUtN93LZiqqETW
|
|
|
65
65
|
xinference/model/image/utils.py,sha256=gxg8jJ2nYaDknzCcSC53WCy1slbB5aWU14AbJbfm6Z4,906
|
|
66
66
|
xinference/model/image/stable_diffusion/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
|
|
67
67
|
xinference/model/image/stable_diffusion/core.py,sha256=ib_ZeSg7hzynmRqSnhjtrVuhoLOgZPrR1ZH2LjBmH2E,6063
|
|
68
|
-
xinference/model/llm/__init__.py,sha256=
|
|
68
|
+
xinference/model/llm/__init__.py,sha256=AR36qg9QKRb3HtGauEGeFveFpg9xgOY0vJvJVHcJxkw,9946
|
|
69
69
|
xinference/model/llm/core.py,sha256=CZJrbW3HaV8vJj5mxSnBD8ssABALG_xyXyPS0hHVBPY,7982
|
|
70
|
-
xinference/model/llm/llm_family.json,sha256=
|
|
70
|
+
xinference/model/llm/llm_family.json,sha256=ej30g6j2_jYHTFMj5_hi2ERbs-d5KUdSW47lKU0tjMo,160208
|
|
71
71
|
xinference/model/llm/llm_family.py,sha256=aQZPE2gj5YfII2mhgbaSs1MfllKnUXd8xbflKr_YdFs,37357
|
|
72
|
-
xinference/model/llm/llm_family_modelscope.json,sha256=
|
|
72
|
+
xinference/model/llm/llm_family_modelscope.json,sha256=f72zwrQfBJzijQwTD1yIy6KPInuyddKE44Iy8arMo-A,98156
|
|
73
73
|
xinference/model/llm/memory.py,sha256=PTD8m6TCZVU1zrwc9wepX9cUjCqAXBENj6X7tjua0to,10207
|
|
74
74
|
xinference/model/llm/utils.py,sha256=0SindpTW6dUWn17E-Ne9scnSfPOovb53sIuc9zxIFfo,31653
|
|
75
75
|
xinference/model/llm/ggml/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
|
|
@@ -79,13 +79,14 @@ xinference/model/llm/ggml/tools/__init__.py,sha256=6a6P2VPKE06xKxJ-dTqp4TRO2IEDW
|
|
|
79
79
|
xinference/model/llm/ggml/tools/convert_ggml_to_gguf.py,sha256=92To8eoVQBkDZD52_aWBNda2K1Ob6YaHlcfS-8_aOuw,17991
|
|
80
80
|
xinference/model/llm/ggml/tools/gguf.py,sha256=Hv2haR-UN7NdB1N8YId32hFoEPd-JX6_aUNWRJhyJZc,30277
|
|
81
81
|
xinference/model/llm/pytorch/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
|
|
82
|
-
xinference/model/llm/pytorch/baichuan.py,sha256=
|
|
82
|
+
xinference/model/llm/pytorch/baichuan.py,sha256=TpCfi37Ou87VA8S5siGRUK5JWC5SjGbZYkZoTe9VSA8,2883
|
|
83
83
|
xinference/model/llm/pytorch/chatglm.py,sha256=meFb4P1MXw63IhoDQwmFGczTXa3vEpv1L1Eo9XIifG8,9624
|
|
84
|
+
xinference/model/llm/pytorch/cogvlm2.py,sha256=hRFsNQIgvNa7Dfhh08Z2K3QuKzXop_fkkXtbXwUaKWg,9472
|
|
84
85
|
xinference/model/llm/pytorch/compression.py,sha256=U0vMJ-JaBt4oC2LffgWg6HbPj1CeUi_YdwVbjDd0mRA,8112
|
|
85
|
-
xinference/model/llm/pytorch/core.py,sha256=
|
|
86
|
+
xinference/model/llm/pytorch/core.py,sha256=qyAd2UdWq1PFJgFBksMGDouFxbksdr7AmM2bW8TsWEU,19999
|
|
86
87
|
xinference/model/llm/pytorch/deepseek_vl.py,sha256=T9DKP4cULvRaHSiU08lOWd_j6mt8b3ZIBByneZ0jY8U,11498
|
|
87
88
|
xinference/model/llm/pytorch/falcon.py,sha256=POSP7vzRJaM5PjvX8dh60jNDXgnCwktwSmeZ7kypQU0,4499
|
|
88
|
-
xinference/model/llm/pytorch/intern_vl.py,sha256=
|
|
89
|
+
xinference/model/llm/pytorch/intern_vl.py,sha256=_7IxqtTODTOTfR_4BDQ1hSkgE_qLjAhdyNt7fz_AD20,13044
|
|
89
90
|
xinference/model/llm/pytorch/internlm2.py,sha256=vjspoc2VHbuD1JaUtjt0sOq9MwvRr2OD3_tKQhBVUPc,7244
|
|
90
91
|
xinference/model/llm/pytorch/llama_2.py,sha256=HMhUmn4oYW2maeSMIr1yY7jlAOMD0OVAxnF0dnRWmio,3710
|
|
91
92
|
xinference/model/llm/pytorch/omnilmm.py,sha256=4r6pipch1LU1FPA80sOCE7Z0k3TO_J8CIT7pmVmWKEM,5664
|
|
@@ -96,7 +97,7 @@ xinference/model/llm/pytorch/yi_vl.py,sha256=MljT7tpgFIhL6n5rdoS3hmq_u0rtHRE6cxX
|
|
|
96
97
|
xinference/model/llm/sglang/__init__.py,sha256=-sjSIQ4K6w-TEzx49kVaWeWC443fnZqODU91GCQ_JNo,581
|
|
97
98
|
xinference/model/llm/sglang/core.py,sha256=RGHy6t9n0c4zL6Uha8P7t-qPvisPyulFVHw-8Aq8CJ0,14046
|
|
98
99
|
xinference/model/llm/vllm/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
|
|
99
|
-
xinference/model/llm/vllm/core.py,sha256=
|
|
100
|
+
xinference/model/llm/vllm/core.py,sha256=a__R1e3V_PwEOtky5NxVIMKWLo4eVX8S4BnSVWM5uAs,21597
|
|
100
101
|
xinference/model/rerank/__init__.py,sha256=BXIL1uu3ZpZHX9bODhW9lxKUXudZE7-OkXFmmM5rpMU,2817
|
|
101
102
|
xinference/model/rerank/core.py,sha256=BLIIStjxUFghSFoxCimet88ghqGwmVaskOYdVRxKdpI,10572
|
|
102
103
|
xinference/model/rerank/custom.py,sha256=NKk7jA7p4xkuwS5WoOs2SY2wdnoAVpyCjBTvv317bBw,3917
|
|
@@ -15423,9 +15424,9 @@ xinference/web/ui/node_modules/yargs-parser/package.json,sha256=BSwbOzgetKXMK4u0
|
|
|
15423
15424
|
xinference/web/ui/node_modules/yocto-queue/package.json,sha256=6U1XHQPGXJTqsiFvT953ORihUtXTblZy4fXBWP9qxC0,725
|
|
15424
15425
|
xinference/web/ui/node_modules/yup/package.json,sha256=xRFSROB9NKxqSWHEVFvSTsPs9Ll074uo8OS1zEw0qhA,1206
|
|
15425
15426
|
xinference/web/ui/node_modules/yup/node_modules/type-fest/package.json,sha256=JTv2zTTVgxQ2H82m1-6qEpdMv08lHjFx4Puf_MsbB_Q,1134
|
|
15426
|
-
xinference-0.11.
|
|
15427
|
-
xinference-0.11.
|
|
15428
|
-
xinference-0.11.
|
|
15429
|
-
xinference-0.11.
|
|
15430
|
-
xinference-0.11.
|
|
15431
|
-
xinference-0.11.
|
|
15427
|
+
xinference-0.11.3.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
15428
|
+
xinference-0.11.3.dist-info/METADATA,sha256=Hp7uQ0rgqOkdwWD1T7U3KHMijVdeISct2OvSYNSq4EY,15495
|
|
15429
|
+
xinference-0.11.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
15430
|
+
xinference-0.11.3.dist-info/entry_points.txt,sha256=-lDyyzqWMFQF0Rgm7VxBNz0V-bMBMQLRR3pvQ-Y8XTY,226
|
|
15431
|
+
xinference-0.11.3.dist-info/top_level.txt,sha256=L1rQt7pl6m8tmKXpWVHzP-GtmzAxp663rXxGE7qnK00,11
|
|
15432
|
+
xinference-0.11.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|