nexaai 1.0.4rc16__cp310-cp310-macosx_14_0_universal2.whl → 1.0.6rc1__cp310-cp310-macosx_14_0_universal2.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 nexaai might be problematic. Click here for more details.
- nexaai/_stub.cpython-310-darwin.so +0 -0
- nexaai/_version.py +1 -1
- nexaai/binds/libnexa_bridge.dylib +0 -0
- nexaai/binds/llm_bind.cpython-310-darwin.so +0 -0
- nexaai/binds/nexa_llama_cpp/libggml-base.dylib +0 -0
- nexaai/binds/nexa_llama_cpp/libggml-cpu.so +0 -0
- nexaai/binds/nexa_llama_cpp/libggml-metal.so +0 -0
- nexaai/binds/nexa_llama_cpp/libllama.dylib +0 -0
- nexaai/binds/nexa_llama_cpp/libmtmd.dylib +0 -0
- nexaai/binds/nexa_llama_cpp/libnexa_plugin.dylib +0 -0
- nexaai/common.py +42 -7
- nexaai/llm.py +5 -1
- nexaai/llm_impl/mlx_llm_impl.py +7 -0
- nexaai/llm_impl/pybind_llm_impl.py +10 -1
- nexaai/mlx_backend/llm/interface.py +10 -10
- nexaai/vlm.py +5 -1
- nexaai/vlm_impl/mlx_vlm_impl.py +7 -0
- nexaai/vlm_impl/pybind_vlm_impl.py +10 -1
- {nexaai-1.0.4rc16.dist-info → nexaai-1.0.6rc1.dist-info}/METADATA +13 -9
- {nexaai-1.0.4rc16.dist-info → nexaai-1.0.6rc1.dist-info}/RECORD +22 -22
- {nexaai-1.0.4rc16.dist-info → nexaai-1.0.6rc1.dist-info}/WHEEL +0 -0
- {nexaai-1.0.4rc16.dist-info → nexaai-1.0.6rc1.dist-info}/top_level.txt +0 -0
|
Binary file
|
nexaai/_version.py
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
nexaai/common.py
CHANGED
|
@@ -59,10 +59,45 @@ class ModelConfig:
|
|
|
59
59
|
|
|
60
60
|
@dataclass(frozen=True) # Read-only
|
|
61
61
|
class ProfilingData:
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
62
|
+
"""Profiling data structure for LLM/VLM performance metrics."""
|
|
63
|
+
ttft: int = 0 # Time to first token (us)
|
|
64
|
+
prompt_time: int = 0 # Prompt processing time (us)
|
|
65
|
+
decode_time: int = 0 # Token generation time (us)
|
|
66
|
+
prompt_tokens: int = 0 # Number of prompt tokens
|
|
67
|
+
generated_tokens: int = 0 # Number of generated tokens
|
|
68
|
+
audio_duration: int = 0 # Audio duration (us)
|
|
69
|
+
prefill_speed: float = 0.0 # Prefill speed (tokens/sec)
|
|
70
|
+
decoding_speed: float = 0.0 # Decoding speed (tokens/sec)
|
|
71
|
+
real_time_factor: float = 0.0 # Real-Time Factor (RTF)
|
|
72
|
+
stop_reason: str = "" # Stop reason: "eos", "length", "user", "stop_sequence"
|
|
73
|
+
|
|
74
|
+
@classmethod
|
|
75
|
+
def from_dict(cls, data: dict) -> "ProfilingData":
|
|
76
|
+
"""Create ProfilingData from dictionary."""
|
|
77
|
+
return cls(
|
|
78
|
+
ttft=data.get("ttft", 0),
|
|
79
|
+
prompt_time=data.get("prompt_time", 0),
|
|
80
|
+
decode_time=data.get("decode_time", 0),
|
|
81
|
+
prompt_tokens=data.get("prompt_tokens", 0),
|
|
82
|
+
generated_tokens=data.get("generated_tokens", 0),
|
|
83
|
+
audio_duration=data.get("audio_duration", 0),
|
|
84
|
+
prefill_speed=data.get("prefill_speed", 0.0),
|
|
85
|
+
decoding_speed=data.get("decoding_speed", 0.0),
|
|
86
|
+
real_time_factor=data.get("real_time_factor", 0.0),
|
|
87
|
+
stop_reason=data.get("stop_reason", "")
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
def to_dict(self) -> dict:
|
|
91
|
+
"""Convert to dictionary."""
|
|
92
|
+
return {
|
|
93
|
+
"ttft": self.ttft,
|
|
94
|
+
"prompt_time": self.prompt_time,
|
|
95
|
+
"decode_time": self.decode_time,
|
|
96
|
+
"prompt_tokens": self.prompt_tokens,
|
|
97
|
+
"generated_tokens": self.generated_tokens,
|
|
98
|
+
"audio_duration": self.audio_duration,
|
|
99
|
+
"prefill_speed": self.prefill_speed,
|
|
100
|
+
"decoding_speed": self.decoding_speed,
|
|
101
|
+
"real_time_factor": self.real_time_factor,
|
|
102
|
+
"stop_reason": self.stop_reason
|
|
103
|
+
}
|
nexaai/llm.py
CHANGED
|
@@ -4,7 +4,7 @@ import queue
|
|
|
4
4
|
import threading
|
|
5
5
|
|
|
6
6
|
from nexaai.common import ModelConfig, GenerationConfig, ChatMessage, PluginID
|
|
7
|
-
from nexaai.base import BaseModel
|
|
7
|
+
from nexaai.base import BaseModel, ProfilingData
|
|
8
8
|
|
|
9
9
|
class LLM(BaseModel):
|
|
10
10
|
def __init__(self, m_cfg: ModelConfig = ModelConfig()):
|
|
@@ -63,6 +63,10 @@ class LLM(BaseModel):
|
|
|
63
63
|
"""
|
|
64
64
|
pass
|
|
65
65
|
|
|
66
|
+
def get_profiling_data(self) -> Optional[ProfilingData]:
|
|
67
|
+
"""Get profiling data from the last generation."""
|
|
68
|
+
pass
|
|
69
|
+
|
|
66
70
|
@abstractmethod
|
|
67
71
|
def save_kv_cache(self, path: str):
|
|
68
72
|
"""
|
nexaai/llm_impl/mlx_llm_impl.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from typing import Generator, Optional, Any, Sequence, Union
|
|
2
2
|
|
|
3
|
+
from nexaai.base import ProfilingData
|
|
3
4
|
from nexaai.common import ModelConfig, GenerationConfig, ChatMessage, PluginID
|
|
4
5
|
from nexaai.llm import LLM
|
|
5
6
|
from nexaai.mlx_backend.llm.interface import LLM as MLXLLMInterface
|
|
@@ -215,6 +216,12 @@ class MLXLLMImpl(LLM):
|
|
|
215
216
|
except Exception as e:
|
|
216
217
|
raise RuntimeError(f"Failed to generate text: {str(e)}")
|
|
217
218
|
|
|
219
|
+
def get_profiling_data(self) -> Optional[ProfilingData]:
|
|
220
|
+
"""Get profiling data from the last generation."""
|
|
221
|
+
if not self._mlx_llm:
|
|
222
|
+
raise RuntimeError("MLX LLM not loaded")
|
|
223
|
+
return self._mlx_llm.get_profiling_data()
|
|
224
|
+
|
|
218
225
|
def save_kv_cache(self, path: str):
|
|
219
226
|
"""
|
|
220
227
|
Save the key-value cache to the file.
|
|
@@ -2,6 +2,7 @@ from typing import Generator, Optional, Union
|
|
|
2
2
|
import queue
|
|
3
3
|
import threading
|
|
4
4
|
|
|
5
|
+
from nexaai.base import ProfilingData
|
|
5
6
|
from nexaai.common import ModelConfig, GenerationConfig, ChatMessage, PluginID
|
|
6
7
|
from nexaai.binds import llm_bind, common_bind
|
|
7
8
|
from nexaai.runtime import _ensure_runtime
|
|
@@ -13,6 +14,7 @@ class PyBindLLMImpl(LLM):
|
|
|
13
14
|
"""Private constructor, should not be called directly."""
|
|
14
15
|
super().__init__(m_cfg)
|
|
15
16
|
self._handle = handle # This is a py::capsule
|
|
17
|
+
self._profiling_data = None
|
|
16
18
|
|
|
17
19
|
@classmethod
|
|
18
20
|
def _load_from(cls,
|
|
@@ -97,13 +99,14 @@ class PyBindLLMImpl(LLM):
|
|
|
97
99
|
# Run generation in thread
|
|
98
100
|
def generate():
|
|
99
101
|
try:
|
|
100
|
-
llm_bind.ml_llm_generate(
|
|
102
|
+
result = llm_bind.ml_llm_generate(
|
|
101
103
|
handle=self._handle,
|
|
102
104
|
prompt=prompt,
|
|
103
105
|
config=config,
|
|
104
106
|
on_token=on_token,
|
|
105
107
|
user_data=None
|
|
106
108
|
)
|
|
109
|
+
self._profiling_data = ProfilingData.from_dict(result.get("profile_data", {}))
|
|
107
110
|
except Exception as e:
|
|
108
111
|
exception_container[0] = e
|
|
109
112
|
finally:
|
|
@@ -145,8 +148,14 @@ class PyBindLLMImpl(LLM):
|
|
|
145
148
|
on_token=None, # No callback for non-streaming
|
|
146
149
|
user_data=None
|
|
147
150
|
)
|
|
151
|
+
|
|
152
|
+
self._profiling_data = ProfilingData.from_dict(result.get("profile_data", {}))
|
|
148
153
|
return result.get("text", "")
|
|
149
154
|
|
|
155
|
+
def get_profiling_data(self) -> Optional[ProfilingData]:
|
|
156
|
+
"""Get profiling data."""
|
|
157
|
+
return self._profiling_data
|
|
158
|
+
|
|
150
159
|
def save_kv_cache(self, path: str):
|
|
151
160
|
"""
|
|
152
161
|
Save the key-value cache to the file.
|
|
@@ -371,19 +371,19 @@ class LLM(BaseLLM, ProfilingMixin):
|
|
|
371
371
|
cached_tokens = 0
|
|
372
372
|
|
|
373
373
|
# Only offset prefix kv-cache at first round
|
|
374
|
-
if is_first_round:
|
|
374
|
+
# if is_first_round:
|
|
375
375
|
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
376
|
+
# # Handle KV cache prefix offset if available
|
|
377
|
+
# if self.kv_cache is not None and len(self.kv_cache) > 0:
|
|
378
|
+
# # Get the offset from the first cache layer
|
|
379
|
+
# if hasattr(self.kv_cache[0], 'offset'):
|
|
380
|
+
# cached_tokens = self.kv_cache[0].offset - 1
|
|
381
381
|
|
|
382
|
-
|
|
383
|
-
|
|
382
|
+
# # Process only the non-cached tokens
|
|
383
|
+
# incremental_tokens = incremental_tokens[cached_tokens:] if cached_tokens > 0 else incremental_tokens
|
|
384
384
|
|
|
385
|
-
|
|
386
|
-
|
|
385
|
+
# if len(incremental_tokens) == 0:
|
|
386
|
+
# raise ValueError("No tokens to process, KV cache is too long.")
|
|
387
387
|
|
|
388
388
|
# Since apply_chat_template now returns incremental prompts, we can use the prompt directly
|
|
389
389
|
# The prompt is already the incremental part based on global_n_past
|
nexaai/vlm.py
CHANGED
|
@@ -6,7 +6,7 @@ import base64
|
|
|
6
6
|
from pathlib import Path
|
|
7
7
|
|
|
8
8
|
from nexaai.common import ModelConfig, GenerationConfig, MultiModalMessage, PluginID
|
|
9
|
-
from nexaai.base import BaseModel
|
|
9
|
+
from nexaai.base import BaseModel, ProfilingData
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class VLM(BaseModel):
|
|
@@ -120,4 +120,8 @@ class VLM(BaseModel):
|
|
|
120
120
|
Returns:
|
|
121
121
|
str: The generated text.
|
|
122
122
|
"""
|
|
123
|
+
pass
|
|
124
|
+
|
|
125
|
+
def get_profiling_data(self) -> Optional[ProfilingData]:
|
|
126
|
+
"""Get profiling data from the last generation."""
|
|
123
127
|
pass
|
nexaai/vlm_impl/mlx_vlm_impl.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from typing import Generator, Optional, List, Dict, Any, Union
|
|
2
2
|
|
|
3
|
+
from nexaai.base import ProfilingData
|
|
3
4
|
from nexaai.common import ModelConfig, GenerationConfig, MultiModalMessage, PluginID
|
|
4
5
|
from nexaai.vlm import VLM
|
|
5
6
|
from nexaai.mlx_backend.vlm.interface import VLM as MLXVLMInterface
|
|
@@ -247,3 +248,9 @@ class MlxVlmImpl(VLM):
|
|
|
247
248
|
|
|
248
249
|
except Exception as e:
|
|
249
250
|
raise RuntimeError(f"Failed to generate text: {str(e)}")
|
|
251
|
+
|
|
252
|
+
def get_profiling_data(self) -> Optional[ProfilingData]:
|
|
253
|
+
"""Get profiling data from the last generation."""
|
|
254
|
+
if not self._mlx_vlm:
|
|
255
|
+
raise RuntimeError("MLX VLM not loaded")
|
|
256
|
+
return self._mlx_vlm.get_profiling_data()
|
|
@@ -8,6 +8,7 @@ from nexaai.common import ModelConfig, GenerationConfig, MultiModalMessage, Plug
|
|
|
8
8
|
from nexaai.binds import vlm_bind, common_bind
|
|
9
9
|
from nexaai.runtime import _ensure_runtime
|
|
10
10
|
from nexaai.vlm import VLM
|
|
11
|
+
from nexaai.base import ProfilingData
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
class PyBindVLMImpl(VLM):
|
|
@@ -15,6 +16,7 @@ class PyBindVLMImpl(VLM):
|
|
|
15
16
|
"""Private constructor, should not be called directly."""
|
|
16
17
|
super().__init__(m_cfg)
|
|
17
18
|
self._handle = handle # This is a py::capsule
|
|
19
|
+
self._profiling_data = None
|
|
18
20
|
|
|
19
21
|
@classmethod
|
|
20
22
|
def _load_from(cls,
|
|
@@ -143,13 +145,14 @@ class PyBindVLMImpl(VLM):
|
|
|
143
145
|
# Run generation in thread
|
|
144
146
|
def generate():
|
|
145
147
|
try:
|
|
146
|
-
vlm_bind.ml_vlm_generate(
|
|
148
|
+
result = vlm_bind.ml_vlm_generate(
|
|
147
149
|
handle=self._handle,
|
|
148
150
|
prompt=prompt,
|
|
149
151
|
config=config,
|
|
150
152
|
on_token=on_token,
|
|
151
153
|
user_data=None
|
|
152
154
|
)
|
|
155
|
+
self._profiling_data = ProfilingData.from_dict(result.get("profile_data", {}))
|
|
153
156
|
except Exception as e:
|
|
154
157
|
exception_container[0] = e
|
|
155
158
|
finally:
|
|
@@ -191,8 +194,14 @@ class PyBindVLMImpl(VLM):
|
|
|
191
194
|
on_token=None, # No callback for non-streaming
|
|
192
195
|
user_data=None
|
|
193
196
|
)
|
|
197
|
+
|
|
198
|
+
self._profiling_data = ProfilingData.from_dict(result.get("profile_data", {}))
|
|
194
199
|
return result.get("text", "")
|
|
195
200
|
|
|
201
|
+
def get_profiling_data(self) -> Optional[ProfilingData]:
|
|
202
|
+
"""Get profiling data."""
|
|
203
|
+
return self._profiling_data
|
|
204
|
+
|
|
196
205
|
def _convert_generation_config(self, g_cfg: GenerationConfig):
|
|
197
206
|
"""Convert GenerationConfig to binding format."""
|
|
198
207
|
config = common_bind.GenerationConfig()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nexaai
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.6rc1
|
|
4
4
|
Summary: Python bindings for NexaSDK C-lib backend
|
|
5
5
|
Author-email: "Nexa AI, Inc." <dev@nexa.ai>
|
|
6
6
|
Project-URL: Homepage, https://github.com/NexaAI/nexasdk-bridge
|
|
@@ -17,11 +17,15 @@ Requires-Dist: tqdm
|
|
|
17
17
|
Requires-Dist: hf_xet
|
|
18
18
|
Requires-Dist: numpy
|
|
19
19
|
Requires-Dist: httpx
|
|
20
|
-
|
|
21
|
-
Requires-Dist: mlx
|
|
22
|
-
Requires-Dist:
|
|
23
|
-
Requires-Dist:
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist:
|
|
26
|
-
Requires-Dist:
|
|
27
|
-
Requires-Dist:
|
|
20
|
+
Provides-Extra: mlx
|
|
21
|
+
Requires-Dist: mlx; extra == "mlx"
|
|
22
|
+
Requires-Dist: mlx-lm; extra == "mlx"
|
|
23
|
+
Requires-Dist: mlx-vlm; extra == "mlx"
|
|
24
|
+
Requires-Dist: tokenizers; extra == "mlx"
|
|
25
|
+
Requires-Dist: safetensors; extra == "mlx"
|
|
26
|
+
Requires-Dist: Pillow; extra == "mlx"
|
|
27
|
+
Requires-Dist: scipy; extra == "mlx"
|
|
28
|
+
Requires-Dist: soundfile; extra == "mlx"
|
|
29
|
+
Requires-Dist: opencv-python; extra == "mlx"
|
|
30
|
+
Requires-Dist: shapely; extra == "mlx"
|
|
31
|
+
Requires-Dist: pyclipper; extra == "mlx"
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
nexaai/__init__.py,sha256=jXdC4vv6DBK1fVewYTYSUhOOYfvf_Mk81UIeMGGIKUg,2029
|
|
2
|
-
nexaai/_stub.cpython-310-darwin.so,sha256=
|
|
3
|
-
nexaai/_version.py,sha256=
|
|
2
|
+
nexaai/_stub.cpython-310-darwin.so,sha256=HD3LnNPlQm7XugP9lz_ed5o9EIZZwH5_SUfJWjeyJwg,66768
|
|
3
|
+
nexaai/_version.py,sha256=o8WPRe-h5be83JEwTPwBVdsZ20QQ2VFyIwzifvgbiPQ,142
|
|
4
4
|
nexaai/asr.py,sha256=NljMXDErwPNMOPaRkJZMEDka9Nk8xyur7L8i924TStY,2054
|
|
5
5
|
nexaai/base.py,sha256=N8PRgDFA-XPku2vWnQIofQ7ipz3pPlO6f8YZGnuhquE,982
|
|
6
|
-
nexaai/common.py,sha256=
|
|
6
|
+
nexaai/common.py,sha256=yBnIbqYaQYnfrl7IczOBh6MDibYZVxwaRJEglYcKgGs,3422
|
|
7
7
|
nexaai/cv.py,sha256=RHCDo8gvBH8BkGZx7qVyp-OKxqi7E1GG9XzyaXehCNA,3273
|
|
8
8
|
nexaai/embedder.py,sha256=Cw0tSHkPgd-RI62afCqQAcTHMnQhaI2CvfTMO-1JKOg,2452
|
|
9
9
|
nexaai/image_gen.py,sha256=0C_5Tjj4BYmxLbmMmvwajp-yy2mmEEOKwBFnDQNPzx4,4356
|
|
10
|
-
nexaai/llm.py,sha256=
|
|
10
|
+
nexaai/llm.py,sha256=S1o_k2VQoF5w2wO25f142OO1R75TP89Ii69VZv8pIGo,3567
|
|
11
11
|
nexaai/rerank.py,sha256=vWaBucoQ1wz-2iYnZqyFIcEjm-4Xcs1KDbFN5X8zzDQ,1872
|
|
12
12
|
nexaai/runtime.py,sha256=mxxHYsb5iBUAm2K_u-XJWr_U-spJ9S4eApc8kf9myjw,1957
|
|
13
13
|
nexaai/tts.py,sha256=ZnBpWUxIfHhh7KfEjddtH7hHOTa91zg7ogGLakMIALo,2167
|
|
14
|
-
nexaai/vlm.py,sha256=
|
|
14
|
+
nexaai/vlm.py,sha256=3voXmAVnGlXnOiwA3wcX4p0Lvmp0X1VKkQVPObJdwBY,4649
|
|
15
15
|
nexaai/asr_impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
16
|
nexaai/asr_impl/mlx_asr_impl.py,sha256=eosd8-TIWAOwV0HltmoFrLwzXHcU4jyxtncvuZE9pgA,3257
|
|
17
17
|
nexaai/asr_impl/pybind_asr_impl.py,sha256=pE9Hb_hMi5yAc4MF83bLVOb8zDtreCkB3_u7XED9YpA,1516
|
|
@@ -19,16 +19,16 @@ nexaai/binds/__init__.py,sha256=T9Ua7SzHNglSeEqXlfH5ymYXRyXhNKkC9z_y_bWCNMo,80
|
|
|
19
19
|
nexaai/binds/common_bind.cpython-310-darwin.so,sha256=hVxY76tn7hN6uHDIgM7LWNvgoudHgNZVoaygM9X1RWE,217232
|
|
20
20
|
nexaai/binds/embedder_bind.cpython-310-darwin.so,sha256=FT8581RNciilskK89PhtnNSjw4Oh0-xk8QdbJVFmOd8,202064
|
|
21
21
|
nexaai/binds/libcrypto.dylib,sha256=aWif9WhTKVQhmZL3DmtIpMkZY5JSb_Ny6CClmUBKYM4,4710416
|
|
22
|
-
nexaai/binds/libnexa_bridge.dylib,sha256=
|
|
22
|
+
nexaai/binds/libnexa_bridge.dylib,sha256=hv4zUyl0ajPO_84svUUssADt0qGeLouyMGeeyqsrWOY,251480
|
|
23
23
|
nexaai/binds/libssl.dylib,sha256=Q2frAdhR729oKYuCjJOEr1Ott3idFWoFp98fwNqtIaU,881616
|
|
24
|
-
nexaai/binds/llm_bind.cpython-310-darwin.so,sha256=
|
|
25
|
-
nexaai/binds/nexa_llama_cpp/libggml-base.dylib,sha256=
|
|
26
|
-
nexaai/binds/nexa_llama_cpp/libggml-cpu.so,sha256=
|
|
27
|
-
nexaai/binds/nexa_llama_cpp/libggml-metal.so,sha256=
|
|
24
|
+
nexaai/binds/llm_bind.cpython-310-darwin.so,sha256=3Bsq0_tGkM027-bORVeJUDl6CYZxAF9sbDIn1l31XTQ,182704
|
|
25
|
+
nexaai/binds/nexa_llama_cpp/libggml-base.dylib,sha256=JM4oOkie1su0ES5hMdtILeQHlRukRzH1vTleTupUXhg,650736
|
|
26
|
+
nexaai/binds/nexa_llama_cpp/libggml-cpu.so,sha256=qiYxbTe4Nt7n36zJVvq3zovgSZEmrN2is6gzTern7UI,677728
|
|
27
|
+
nexaai/binds/nexa_llama_cpp/libggml-metal.so,sha256=zfaX7rIBYQazH2lf-vza007BMhPTK1ASd2T0HLLIA4E,673104
|
|
28
28
|
nexaai/binds/nexa_llama_cpp/libggml.dylib,sha256=aOTj_6RrAMkfDO0ZI28_3nfcC-l4Y3dRCiS3C0d0_eI,58592
|
|
29
|
-
nexaai/binds/nexa_llama_cpp/libllama.dylib,sha256=
|
|
30
|
-
nexaai/binds/nexa_llama_cpp/libmtmd.dylib,sha256=
|
|
31
|
-
nexaai/binds/nexa_llama_cpp/libnexa_plugin.dylib,sha256=
|
|
29
|
+
nexaai/binds/nexa_llama_cpp/libllama.dylib,sha256=RkBd5usb8RvEIOamvxCW3UvMauI5bC66G_n6hw83NpY,1786128
|
|
30
|
+
nexaai/binds/nexa_llama_cpp/libmtmd.dylib,sha256=o6mQqefzQNF0CS4j6odwJKj0gkXm15hIxwlNt88FOn4,605248
|
|
31
|
+
nexaai/binds/nexa_llama_cpp/libnexa_plugin.dylib,sha256=8YVSN-7p64t6o5UEmeAxHQIWX-aPlYzT00o0dqYBlmQ,2422808
|
|
32
32
|
nexaai/binds/nexa_mlx/libnexa_plugin.dylib,sha256=yjbdy0FpBE_RwgqvwGxd3czIfs3OYVoh--vWpn2H7RQ,1422888
|
|
33
33
|
nexaai/binds/nexa_mlx/py-lib/ml.py,sha256=LafDM_TeXmuQkld2tdQxUBGgooT0JPMXngLam2TADqU,23179
|
|
34
34
|
nexaai/binds/nexa_mlx/py-lib/profiling.py,sha256=Dc-mybFwBdCIKFWL7CbSHjkOJGAoYHG7r_e_XPhzwBU,9361
|
|
@@ -192,8 +192,8 @@ nexaai/image_gen_impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
|
192
192
|
nexaai/image_gen_impl/mlx_image_gen_impl.py,sha256=BuDkksvXyb4J02GsdnbGAmYckfUU0Eah6BimoMD3QqY,11219
|
|
193
193
|
nexaai/image_gen_impl/pybind_image_gen_impl.py,sha256=ms34VYoD5AxZFG6cIG0QAJDjCtfphaZ1bHzKzey1xF8,3692
|
|
194
194
|
nexaai/llm_impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
195
|
-
nexaai/llm_impl/mlx_llm_impl.py,sha256=
|
|
196
|
-
nexaai/llm_impl/pybind_llm_impl.py,sha256=
|
|
195
|
+
nexaai/llm_impl/mlx_llm_impl.py,sha256=4v7jUFzHfE7zw2uViekGQDaTROz8A6oaW31Z3iVe6tg,11157
|
|
196
|
+
nexaai/llm_impl/pybind_llm_impl.py,sha256=aooqkcXZWhCo07wbSafGgBrA3WnijtnUADShjjgFsBQ,8051
|
|
197
197
|
nexaai/mlx_backend/ml.py,sha256=LafDM_TeXmuQkld2tdQxUBGgooT0JPMXngLam2TADqU,23179
|
|
198
198
|
nexaai/mlx_backend/profiling.py,sha256=Dc-mybFwBdCIKFWL7CbSHjkOJGAoYHG7r_e_XPhzwBU,9361
|
|
199
199
|
nexaai/mlx_backend/asr/__init__.py,sha256=fuT_9_xpYJ28m4yjly5L2jChUrzlSQz-b_S7nujxkSM,451
|
|
@@ -213,7 +213,7 @@ nexaai/mlx_backend/embedding/modeling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
|
|
|
213
213
|
nexaai/mlx_backend/embedding/modeling/nexa_jina_v2.py,sha256=F9Z_9r-Dh0wNThiMp5W5hqE2dt5bf4ps5_c6h4BuWGw,15218
|
|
214
214
|
nexaai/mlx_backend/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
215
215
|
nexaai/mlx_backend/llm/generate.py,sha256=Phes0tzxbbEWA2hDylQvD0LjorMaPwvcfZq9RKCAOt0,4399
|
|
216
|
-
nexaai/mlx_backend/llm/interface.py,sha256=
|
|
216
|
+
nexaai/mlx_backend/llm/interface.py,sha256=SZFkuAUi2vxj_dSqj8RXf9vPTGMtpks_pZxxrF7iIe8,29330
|
|
217
217
|
nexaai/mlx_backend/llm/main.py,sha256=gFDE4VZv_CLKMCTn0N521OfCKH_Ys26bHDh6g9VEFNc,1982
|
|
218
218
|
nexaai/mlx_backend/mlx_audio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
219
219
|
nexaai/mlx_backend/mlx_audio/server.py,sha256=Pqy13Fafq4WX_cTuvRFz1jq89beQm2QQGpXmhK4b9jc,17547
|
|
@@ -514,9 +514,9 @@ nexaai/utils/decode.py,sha256=61n4Zf6c5QLyqGoctEitlI9BX3tPlP2a5aaKNHbw3T4,404
|
|
|
514
514
|
nexaai/utils/model_manager.py,sha256=c07ocxxw1IHCQw6esbmYK0dX2R2OajfEIGsC_2teHXo,48572
|
|
515
515
|
nexaai/utils/progress_tracker.py,sha256=76HlPkyN41IMHSsH56-qdlN_aY_oBfJz50J16Cx67R0,15102
|
|
516
516
|
nexaai/vlm_impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
517
|
-
nexaai/vlm_impl/mlx_vlm_impl.py,sha256=
|
|
518
|
-
nexaai/vlm_impl/pybind_vlm_impl.py,sha256=
|
|
519
|
-
nexaai-1.0.
|
|
520
|
-
nexaai-1.0.
|
|
521
|
-
nexaai-1.0.
|
|
522
|
-
nexaai-1.0.
|
|
517
|
+
nexaai/vlm_impl/mlx_vlm_impl.py,sha256=od1R1mRoIgPG3NHC7JiDlcB_YJY8aklX8Em3ZkeHNpE,10734
|
|
518
|
+
nexaai/vlm_impl/pybind_vlm_impl.py,sha256=5ZMFgDATthmMzjrd-vE5KX5ZAMoWPYbF_FTLz8DBKIk,8908
|
|
519
|
+
nexaai-1.0.6rc1.dist-info/METADATA,sha256=U2gJx8JlzG3wUYtVYk7VdDN7ildkHxWTQUE5Oya_Z_s,1154
|
|
520
|
+
nexaai-1.0.6rc1.dist-info/WHEEL,sha256=T2p57lol9__xkoU6aJTyN1Pm43ZpRU3q6km7mIbrAMs,114
|
|
521
|
+
nexaai-1.0.6rc1.dist-info/top_level.txt,sha256=LRE2YERlrZk2vfuygnSzsEeqSknnZbz3Z1MHyNmBU4w,7
|
|
522
|
+
nexaai-1.0.6rc1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|