nexaai 1.0.16rc11__cp310-cp310-macosx_14_0_universal2.whl → 1.0.17rc1__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/__init__.py +7 -0
- nexaai/_stub.cpython-310-darwin.so +0 -0
- nexaai/_version.py +1 -1
- nexaai/binds/common_bind.cpython-310-darwin.so +0 -0
- nexaai/binds/libnexa_bridge.dylib +0 -0
- nexaai/binds/llm_bind.cpython-310-darwin.so +0 -0
- nexaai/binds/nexa_llama_cpp/libnexa_plugin.dylib +0 -0
- nexaai/binds/nexa_nexaml/libggml-base.dylib +0 -0
- nexaai/binds/nexa_nexaml/libggml-cpu.so +0 -0
- nexaai/binds/nexa_nexaml/libggml-metal.so +0 -0
- nexaai/binds/nexa_nexaml/libggml.dylib +0 -0
- nexaai/binds/nexa_nexaml/libnexa-mm-process.dylib +0 -0
- nexaai/binds/nexa_nexaml/libnexa-sampling.dylib +0 -0
- nexaai/binds/nexa_nexaml/libnexa_plugin.dylib +0 -0
- nexaai/binds/nexa_nexaml/libnexaproc.dylib +0 -0
- nexaai/binds/nexa_nexaml/libqwen3-vl.dylib +0 -0
- nexaai/binds/nexa_nexaml/libqwen3vl-vision.dylib +0 -0
- nexaai/common.py +1 -0
- nexaai/log.py +92 -0
- nexaai/mlx_backend/vlm/interface.py +33 -2
- nexaai/runtime.py +4 -0
- nexaai/utils/quantization_utils.py +7 -1
- {nexaai-1.0.16rc11.dist-info → nexaai-1.0.17rc1.dist-info}/METADATA +1 -1
- {nexaai-1.0.16rc11.dist-info → nexaai-1.0.17rc1.dist-info}/RECORD +26 -15
- {nexaai-1.0.16rc11.dist-info → nexaai-1.0.17rc1.dist-info}/WHEEL +0 -0
- {nexaai-1.0.16rc11.dist-info → nexaai-1.0.17rc1.dist-info}/top_level.txt +0 -0
nexaai/__init__.py
CHANGED
|
@@ -21,6 +21,9 @@ except ImportError:
|
|
|
21
21
|
# Import common configuration classes first (no external dependencies)
|
|
22
22
|
from .common import ModelConfig, GenerationConfig, ChatMessage, SamplerConfig, PluginID
|
|
23
23
|
|
|
24
|
+
# Import logging functionality
|
|
25
|
+
from .log import set_logger, get_error_message
|
|
26
|
+
|
|
24
27
|
# Create alias for PluginID to be accessible as plugin_id
|
|
25
28
|
plugin_id = PluginID
|
|
26
29
|
|
|
@@ -45,6 +48,10 @@ __all__ = [
|
|
|
45
48
|
"EmbeddingConfig",
|
|
46
49
|
"PluginID",
|
|
47
50
|
"plugin_id",
|
|
51
|
+
|
|
52
|
+
# Logging functionality
|
|
53
|
+
"set_logger",
|
|
54
|
+
"get_error_message",
|
|
48
55
|
|
|
49
56
|
"LLM",
|
|
50
57
|
"Embedder",
|
|
Binary file
|
nexaai/_version.py
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
nexaai/common.py
CHANGED
nexaai/log.py
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Logging configuration for NexaAI bridge.
|
|
3
|
+
|
|
4
|
+
This module provides a minimal API to configure bridge-wide logging
|
|
5
|
+
to route into Python's logging system.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import logging
|
|
9
|
+
import threading
|
|
10
|
+
from enum import IntEnum
|
|
11
|
+
from typing import Optional
|
|
12
|
+
|
|
13
|
+
from nexaai.binds import common_bind
|
|
14
|
+
from nexaai.runtime import is_initialized
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class LogLevel(IntEnum):
|
|
18
|
+
"""Log levels matching ml_LogLevel from ml.h"""
|
|
19
|
+
TRACE = 0
|
|
20
|
+
DEBUG = 1
|
|
21
|
+
INFO = 2
|
|
22
|
+
WARN = 3
|
|
23
|
+
ERROR = 4
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
# Module-level state
|
|
27
|
+
_config_lock = threading.Lock()
|
|
28
|
+
_current_logger: Optional[logging.Logger] = None
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def set_logger(logger: Optional[logging.Logger] = None, *, strict: bool = True) -> None:
|
|
32
|
+
"""
|
|
33
|
+
Set the process-wide bridge logger.
|
|
34
|
+
|
|
35
|
+
Args:
|
|
36
|
+
logger: Python logger to receive bridge logs. If None, uses "nexaai.ml" logger.
|
|
37
|
+
strict: If True, raises if called after runtime initialization.
|
|
38
|
+
If False, attempts to set anyway (best-effort).
|
|
39
|
+
|
|
40
|
+
Raises:
|
|
41
|
+
RuntimeError: If strict=True and runtime is already initialized.
|
|
42
|
+
"""
|
|
43
|
+
global _current_logger
|
|
44
|
+
|
|
45
|
+
with _config_lock:
|
|
46
|
+
# Check initialization state if strict mode
|
|
47
|
+
if strict and is_initialized():
|
|
48
|
+
raise RuntimeError(
|
|
49
|
+
"Cannot configure logging after runtime initialization. "
|
|
50
|
+
"Call set_logger() before creating any models, or use strict=False for best-effort."
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
# Use default logger if none provided
|
|
54
|
+
if logger is None:
|
|
55
|
+
logger = logging.getLogger("nexaai.ml")
|
|
56
|
+
|
|
57
|
+
_current_logger = logger
|
|
58
|
+
|
|
59
|
+
# Set the C callback
|
|
60
|
+
common_bind.ml_set_log(_log_callback)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def _log_callback(level: int, message: str) -> None:
|
|
64
|
+
"""Internal callback that forwards bridge logs to Python logger."""
|
|
65
|
+
if _current_logger is None:
|
|
66
|
+
return
|
|
67
|
+
|
|
68
|
+
# Map bridge log levels to Python logging levels
|
|
69
|
+
if level == LogLevel.TRACE or level == LogLevel.DEBUG:
|
|
70
|
+
_current_logger.debug(message)
|
|
71
|
+
elif level == LogLevel.INFO:
|
|
72
|
+
_current_logger.info(message)
|
|
73
|
+
elif level == LogLevel.WARN:
|
|
74
|
+
_current_logger.warning(message)
|
|
75
|
+
elif level == LogLevel.ERROR:
|
|
76
|
+
_current_logger.error(message)
|
|
77
|
+
else:
|
|
78
|
+
# Fallback for unknown levels
|
|
79
|
+
_current_logger.info(f"[Level {level}] {message}")
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def get_error_message(error_code: int) -> str:
|
|
83
|
+
"""
|
|
84
|
+
Get error message string for error code.
|
|
85
|
+
|
|
86
|
+
Args:
|
|
87
|
+
error_code: ML error code (typically negative)
|
|
88
|
+
|
|
89
|
+
Returns:
|
|
90
|
+
Human-readable error message
|
|
91
|
+
"""
|
|
92
|
+
return common_bind.ml_get_error_message(error_code)
|
|
@@ -80,6 +80,9 @@ class VLM(ProfilingMixin):
|
|
|
80
80
|
|
|
81
81
|
# Init deafutl sampler config with defualt.
|
|
82
82
|
self.sampler_config = SamplerConfig()
|
|
83
|
+
|
|
84
|
+
# Track global character position for incremental processing
|
|
85
|
+
self.global_n_past_chars = 0
|
|
83
86
|
|
|
84
87
|
def destroy(self) -> None:
|
|
85
88
|
"""Destroy the model and free resources."""
|
|
@@ -89,6 +92,7 @@ class VLM(ProfilingMixin):
|
|
|
89
92
|
def reset(self) -> None:
|
|
90
93
|
"""Reset the model state."""
|
|
91
94
|
self._reset_cache()
|
|
95
|
+
self.global_n_past_chars = 0
|
|
92
96
|
|
|
93
97
|
def _reset_cache(self) -> None:
|
|
94
98
|
"""Reset the KV cache."""
|
|
@@ -141,6 +145,16 @@ class VLM(ProfilingMixin):
|
|
|
141
145
|
image_list = [str(path) for path in image_paths] if image_paths else None
|
|
142
146
|
audio_list = [str(path) for path in audio_paths] if audio_paths else None
|
|
143
147
|
|
|
148
|
+
# Extract incremental portion of the prompt (similar to llama.cpp VLM)
|
|
149
|
+
full_prompt_len = len(prompt)
|
|
150
|
+
incremental_prompt = prompt
|
|
151
|
+
|
|
152
|
+
if self.global_n_past_chars < full_prompt_len:
|
|
153
|
+
incremental_prompt = prompt[self.global_n_past_chars:]
|
|
154
|
+
else:
|
|
155
|
+
# No new text to process
|
|
156
|
+
incremental_prompt = ""
|
|
157
|
+
|
|
144
158
|
# End prompt processing, start decode
|
|
145
159
|
self._prompt_end()
|
|
146
160
|
self._decode_start()
|
|
@@ -152,7 +166,7 @@ class VLM(ProfilingMixin):
|
|
|
152
166
|
text, stats = generate(
|
|
153
167
|
self.model,
|
|
154
168
|
self.processor,
|
|
155
|
-
prompt
|
|
169
|
+
incremental_prompt, # Use incremental prompt instead of full prompt
|
|
156
170
|
image=image_list,
|
|
157
171
|
audio=audio_list,
|
|
158
172
|
**gen_kwargs,
|
|
@@ -181,6 +195,10 @@ class VLM(ProfilingMixin):
|
|
|
181
195
|
self._update_prompt_tokens(prompt_tokens)
|
|
182
196
|
self._update_generated_tokens(generated_tokens)
|
|
183
197
|
self._set_stop_reason(StopReason.ML_STOP_REASON_COMPLETED)
|
|
198
|
+
|
|
199
|
+
# Update global character position
|
|
200
|
+
self.global_n_past_chars = full_prompt_len + len(text)
|
|
201
|
+
|
|
184
202
|
self._decode_end()
|
|
185
203
|
self._end_profiling()
|
|
186
204
|
|
|
@@ -226,6 +244,16 @@ class VLM(ProfilingMixin):
|
|
|
226
244
|
image_list = [str(path) for path in image_paths] if image_paths else None
|
|
227
245
|
audio_list = [str(path) for path in audio_paths] if audio_paths else None
|
|
228
246
|
|
|
247
|
+
# Extract incremental portion of the prompt (similar to llama.cpp VLM)
|
|
248
|
+
full_prompt_len = len(prompt)
|
|
249
|
+
incremental_prompt = prompt
|
|
250
|
+
|
|
251
|
+
if self.global_n_past_chars < full_prompt_len:
|
|
252
|
+
incremental_prompt = prompt[self.global_n_past_chars:]
|
|
253
|
+
else:
|
|
254
|
+
# No new text to process
|
|
255
|
+
incremental_prompt = ""
|
|
256
|
+
|
|
229
257
|
# End prompt processing, start decode
|
|
230
258
|
self._prompt_end()
|
|
231
259
|
self._decode_start()
|
|
@@ -239,7 +267,7 @@ class VLM(ProfilingMixin):
|
|
|
239
267
|
for result in stream_generate_impl(
|
|
240
268
|
self.model,
|
|
241
269
|
self.processor,
|
|
242
|
-
prompt
|
|
270
|
+
incremental_prompt, # Use incremental prompt instead of full prompt
|
|
243
271
|
image=image_list,
|
|
244
272
|
audio=audio_list,
|
|
245
273
|
**gen_kwargs,
|
|
@@ -266,6 +294,9 @@ class VLM(ProfilingMixin):
|
|
|
266
294
|
self._update_prompt_tokens(last_result.prompt_tokens)
|
|
267
295
|
self._update_generated_tokens(last_result.generation_tokens)
|
|
268
296
|
|
|
297
|
+
# Update global character position
|
|
298
|
+
self.global_n_past_chars = full_prompt_len + len(text)
|
|
299
|
+
|
|
269
300
|
self._decode_end()
|
|
270
301
|
self._end_profiling()
|
|
271
302
|
|
nexaai/runtime.py
CHANGED
|
@@ -28,6 +28,10 @@ def _shutdown_runtime() -> None:
|
|
|
28
28
|
# Public helper so advanced users can reclaim memory on demand
|
|
29
29
|
shutdown = _shutdown_runtime
|
|
30
30
|
|
|
31
|
+
def is_initialized() -> bool:
|
|
32
|
+
"""Check if the runtime has been initialized."""
|
|
33
|
+
return _runtime_alive
|
|
34
|
+
|
|
31
35
|
# ----------------------------------------------------------------------
|
|
32
36
|
# Single public class
|
|
33
37
|
# ----------------------------------------------------------------------
|
|
@@ -25,12 +25,15 @@ class QuantizationType(str, Enum):
|
|
|
25
25
|
F16 = "F16"
|
|
26
26
|
Q2_K = "Q2_K"
|
|
27
27
|
Q2_K_L = "Q2_K_L"
|
|
28
|
+
Q3_K = "Q3_K"
|
|
28
29
|
Q3_K_M = "Q3_K_M"
|
|
29
30
|
Q3_K_S = "Q3_K_S"
|
|
30
31
|
Q4_0 = "Q4_0"
|
|
31
32
|
Q4_1 = "Q4_1"
|
|
33
|
+
Q4_K = "Q4_K"
|
|
32
34
|
Q4_K_M = "Q4_K_M"
|
|
33
35
|
Q4_K_S = "Q4_K_S"
|
|
36
|
+
Q5_K = "Q5_K"
|
|
34
37
|
Q5_K_M = "Q5_K_M"
|
|
35
38
|
Q5_K_S = "Q5_K_S"
|
|
36
39
|
Q6_K = "Q6_K"
|
|
@@ -67,12 +70,15 @@ def extract_quantization_from_filename(filename: str) -> Optional[QuantizationTy
|
|
|
67
70
|
'f16.': QuantizationType.F16, # Add F16 support
|
|
68
71
|
'q2_k_l.': QuantizationType.Q2_K_L, # Check Q2_K_L before Q2_K to avoid partial match
|
|
69
72
|
'q2_k.': QuantizationType.Q2_K,
|
|
73
|
+
'q3_k.': QuantizationType.Q3_K,
|
|
70
74
|
'q3_k_m.': QuantizationType.Q3_K_M,
|
|
71
|
-
'
|
|
75
|
+
'q3_k_s.': QuantizationType.Q3_K_S,
|
|
72
76
|
'q4_k_m.': QuantizationType.Q4_K_M,
|
|
73
77
|
'q4_k_s.': QuantizationType.Q4_K_S,
|
|
74
78
|
'q4_0.': QuantizationType.Q4_0,
|
|
75
79
|
'q4_1.': QuantizationType.Q4_1,
|
|
80
|
+
'q4_k.': QuantizationType.Q4_K,
|
|
81
|
+
'q5_k.': QuantizationType.Q5_K,
|
|
76
82
|
'q5_k_m.': QuantizationType.Q5_K_M,
|
|
77
83
|
'q5_k_s.': QuantizationType.Q5_K_S,
|
|
78
84
|
'q6_k.': QuantizationType.Q6_K,
|
|
@@ -1,25 +1,26 @@
|
|
|
1
|
-
nexaai/__init__.py,sha256=
|
|
2
|
-
nexaai/_stub.cpython-310-darwin.so,sha256
|
|
3
|
-
nexaai/_version.py,sha256=
|
|
1
|
+
nexaai/__init__.py,sha256=L8oB7GFZZMGnUpCg0PecDbI_ycKuQak-ZEJ4Y12_QIw,2184
|
|
2
|
+
nexaai/_stub.cpython-310-darwin.so,sha256=-U41Rg1210R-O8tEXhmXA-PPJ5tIk48yx-v6HoJD660,66768
|
|
3
|
+
nexaai/_version.py,sha256=rKQTMRjwBe37A1MYCov01rf2P607gRZoI-XbYCSIcoA,143
|
|
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=Y0NJNLTi4Nq4x1WL6PQsSvGUto0eGmWhjpsC6jcekfA,3444
|
|
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
10
|
nexaai/llm.py,sha256=S1o_k2VQoF5w2wO25f142OO1R75TP89Ii69VZv8pIGo,3567
|
|
11
|
+
nexaai/log.py,sha256=Kwo2CIfWN6iP4M4F5EUIV8KIO5hAsvz6HZAaOwJ27Og,2628
|
|
11
12
|
nexaai/rerank.py,sha256=vWaBucoQ1wz-2iYnZqyFIcEjm-4Xcs1KDbFN5X8zzDQ,1872
|
|
12
|
-
nexaai/runtime.py,sha256=
|
|
13
|
+
nexaai/runtime.py,sha256=JvllhlNPgYGLbgGyX2yNvmGzT0lZ5XbvTvEo8sZG_Ho,2067
|
|
13
14
|
nexaai/tts.py,sha256=ZnBpWUxIfHhh7KfEjddtH7hHOTa91zg7ogGLakMIALo,2167
|
|
14
15
|
nexaai/vlm.py,sha256=OCxwML-Z5uVGp3fjzJVtbCxfTLpgxkhQ8Wo6MVysoiw,4733
|
|
15
16
|
nexaai/asr_impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
17
|
nexaai/asr_impl/mlx_asr_impl.py,sha256=eosd8-TIWAOwV0HltmoFrLwzXHcU4jyxtncvuZE9pgA,3257
|
|
17
18
|
nexaai/asr_impl/pybind_asr_impl.py,sha256=pE9Hb_hMi5yAc4MF83bLVOb8zDtreCkB3_u7XED9YpA,1516
|
|
18
19
|
nexaai/binds/__init__.py,sha256=eYuay_8DDXeOUWz2_R9HFSabohxs6hvZn391t2L0Po0,104
|
|
19
|
-
nexaai/binds/common_bind.cpython-310-darwin.so,sha256=
|
|
20
|
+
nexaai/binds/common_bind.cpython-310-darwin.so,sha256=ya8gz7NnUtHlniGnRyExdwWfdHimEHiJ7Dry4I7_y44,235264
|
|
20
21
|
nexaai/binds/embedder_bind.cpython-310-darwin.so,sha256=tPa0c0Dv_GiW66fgmAGWGCHXRGNApznqoQS0eQx9GFM,202064
|
|
21
|
-
nexaai/binds/libnexa_bridge.dylib,sha256=
|
|
22
|
-
nexaai/binds/llm_bind.cpython-310-darwin.so,sha256=
|
|
22
|
+
nexaai/binds/libnexa_bridge.dylib,sha256=4VzUccl3U2lTlNEK7-Q1szFpdE7HKRiPmJwQ5Y-VgqM,251192
|
|
23
|
+
nexaai/binds/llm_bind.cpython-310-darwin.so,sha256=TAWfa1Hzq00TjtC1xVsiAeLp6hv2LrL5afDz4omUghc,182784
|
|
23
24
|
nexaai/binds/vlm_bind.cpython-310-darwin.so,sha256=nd6eG_m2EiPthzkSZ97hlXWUOZQir4cQfFJZ4p6eR2U,182704
|
|
24
25
|
nexaai/binds/nexa_llama_cpp/libggml-base.dylib,sha256=JM4oOkie1su0ES5hMdtILeQHlRukRzH1vTleTupUXhg,650736
|
|
25
26
|
nexaai/binds/nexa_llama_cpp/libggml-cpu.so,sha256=qiYxbTe4Nt7n36zJVvq3zovgSZEmrN2is6gzTern7UI,677728
|
|
@@ -27,7 +28,7 @@ nexaai/binds/nexa_llama_cpp/libggml-metal.so,sha256=zfaX7rIBYQazH2lf-vza007BMhPT
|
|
|
27
28
|
nexaai/binds/nexa_llama_cpp/libggml.dylib,sha256=aOTj_6RrAMkfDO0ZI28_3nfcC-l4Y3dRCiS3C0d0_eI,58592
|
|
28
29
|
nexaai/binds/nexa_llama_cpp/libllama.dylib,sha256=RkBd5usb8RvEIOamvxCW3UvMauI5bC66G_n6hw83NpY,1786128
|
|
29
30
|
nexaai/binds/nexa_llama_cpp/libmtmd.dylib,sha256=o6mQqefzQNF0CS4j6odwJKj0gkXm15hIxwlNt88FOn4,605248
|
|
30
|
-
nexaai/binds/nexa_llama_cpp/libnexa_plugin.dylib,sha256=
|
|
31
|
+
nexaai/binds/nexa_llama_cpp/libnexa_plugin.dylib,sha256=f-ctmVHSL5x1LKLr0StYM5WscvUW_5olJ7al3ciVmmQ,1863000
|
|
31
32
|
nexaai/binds/nexa_mlx/libnexa_plugin.dylib,sha256=s4oelR1kkFrk0MKL23I0m9Uei4yPf48rzdNvknpjodg,623192
|
|
32
33
|
nexaai/binds/nexa_mlx/py-lib/ml.py,sha256=DKXVOAfh8cg7KTKljh7jpcPwfQFNigc6uv_ZXF6lse8,23977
|
|
33
34
|
nexaai/binds/nexa_mlx/py-lib/profiling.py,sha256=Dc-mybFwBdCIKFWL7CbSHjkOJGAoYHG7r_e_XPhzwBU,9361
|
|
@@ -181,6 +182,16 @@ nexaai/binds/nexa_mlx/py-lib/mlx_audio/tts/tests/test_base.py,sha256=dAeEA0IsBnU
|
|
|
181
182
|
nexaai/binds/nexa_mlx/py-lib/mlx_audio/tts/tests/test_convert.py,sha256=79ddUhtTUlElD9NvBupUxl-MV4HKFM9PUxQpTwKLnBA,5804
|
|
182
183
|
nexaai/binds/nexa_mlx/py-lib/mlx_audio/tts/tests/test_interpolate.py,sha256=9dNmH03C46HtxwesH2DpT2oTNEG1KCZWYEKq6UQ3vfk,3536
|
|
183
184
|
nexaai/binds/nexa_mlx/py-lib/mlx_audio/tts/tests/test_models.py,sha256=12RiOfPtSZQj5g5JM-yCJk3uGQfM3OdmRiPt5uUDE4E,35096
|
|
185
|
+
nexaai/binds/nexa_nexaml/libggml-base.dylib,sha256=JM4oOkie1su0ES5hMdtILeQHlRukRzH1vTleTupUXhg,650736
|
|
186
|
+
nexaai/binds/nexa_nexaml/libggml-cpu.so,sha256=qiYxbTe4Nt7n36zJVvq3zovgSZEmrN2is6gzTern7UI,677728
|
|
187
|
+
nexaai/binds/nexa_nexaml/libggml-metal.so,sha256=zfaX7rIBYQazH2lf-vza007BMhPTK1ASd2T0HLLIA4E,673104
|
|
188
|
+
nexaai/binds/nexa_nexaml/libggml.dylib,sha256=aOTj_6RrAMkfDO0ZI28_3nfcC-l4Y3dRCiS3C0d0_eI,58592
|
|
189
|
+
nexaai/binds/nexa_nexaml/libnexa-mm-process.dylib,sha256=3mITty3oYhoi5yc690CxS0tf4LGanqrPCR0meE-h9HQ,8568120
|
|
190
|
+
nexaai/binds/nexa_nexaml/libnexa-sampling.dylib,sha256=OliTBr-r2y22Ebjc1Y33Ax56XpLMFQKtsHgfouj6TQM,7865400
|
|
191
|
+
nexaai/binds/nexa_nexaml/libnexa_plugin.dylib,sha256=rkTrXOKH71m0SmUP5IBLsJrLTbCElcWX3GKn33BPZpY,224056
|
|
192
|
+
nexaai/binds/nexa_nexaml/libnexaproc.dylib,sha256=Pnxgm2k29hfedLjNP4t44gvioh-NWbE_3BW-VsCdHp8,880560
|
|
193
|
+
nexaai/binds/nexa_nexaml/libqwen3-vl.dylib,sha256=hd8VPINYTH8mbU3BPxnjrPOKTw-NkWn7zkDB7p074-U,753168
|
|
194
|
+
nexaai/binds/nexa_nexaml/libqwen3vl-vision.dylib,sha256=AmUk-DBtBAp5DOR14ICZcsiAcKjxxAx1y6mHAaETQu8,570024
|
|
184
195
|
nexaai/cv_impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
185
196
|
nexaai/cv_impl/mlx_cv_impl.py,sha256=gKECQOv8iaWwG3bl7xeqVy2NN_9K7tYerIFzfn4eLo4,3228
|
|
186
197
|
nexaai/cv_impl/pybind_cv_impl.py,sha256=uSmwBste4cT7c8DQmXzRLmzwDf773PAbXNYWW1UzVls,1064
|
|
@@ -399,7 +410,7 @@ nexaai/mlx_backend/tts/interface.py,sha256=0FvZbIyOvg8jERZEQ6bygbv7v02O9xHO4-TPU
|
|
|
399
410
|
nexaai/mlx_backend/vlm/__init__.py,sha256=_25kvMEviX16Hg3bro8Ws70V0eeIEqYKV8ZDXqYzKew,73
|
|
400
411
|
nexaai/mlx_backend/vlm/generate.py,sha256=DqHFEAuqk-nko8ho6U9GAXTDAWz4d8GTe_hCt-XFyCw,19071
|
|
401
412
|
nexaai/mlx_backend/vlm/generate_qwen3_vl.py,sha256=undjso1mfxqpd6FMTksSA5qagRttxAGbOBj1x7cqI1s,9211
|
|
402
|
-
nexaai/mlx_backend/vlm/interface.py,sha256=
|
|
413
|
+
nexaai/mlx_backend/vlm/interface.py,sha256=0BLfodbYOU71jFvAvv01FuLBE_KBtyB-8Cd7LqzzRHY,17450
|
|
403
414
|
nexaai/mlx_backend/vlm/main.py,sha256=nPcg25jupeDD74uvRoxpWp3Dsulw7WddI7vll6zejak,10664
|
|
404
415
|
nexaai/mlx_backend/vlm/modeling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
405
416
|
nexaai/mlx_backend/vlm/modeling/convert.py,sha256=ia5i9cgTufFGmKyhkYUaW0nfNqT_bMo8i-Hg_zy5JC4,1863
|
|
@@ -536,11 +547,11 @@ nexaai/utils/manifest_utils.py,sha256=sR9Nme4GbD3Cb3fMd55yLvGZpqxb71vd6b2XZTsrIG
|
|
|
536
547
|
nexaai/utils/model_manager.py,sha256=p2kJKK63Zk-rEUucFsgY0T5PyXi_IvJY0gKewUVcAV4,56081
|
|
537
548
|
nexaai/utils/model_types.py,sha256=-DER8L4lAUR_iLS99F0r57avwqWtuN21ug5pX2p24_E,1369
|
|
538
549
|
nexaai/utils/progress_tracker.py,sha256=jdUqtmPqyhwC9uSKvQcJEYETwSt-OhP4oitdJ94614o,15394
|
|
539
|
-
nexaai/utils/quantization_utils.py,sha256=
|
|
550
|
+
nexaai/utils/quantization_utils.py,sha256=FYcNSAKGlBqFDUTx3jSKOr2lnq4nyiyC0ZG8oSxFwiU,7825
|
|
540
551
|
nexaai/vlm_impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
541
552
|
nexaai/vlm_impl/mlx_vlm_impl.py,sha256=pLtWm_ckz8a0U-AtAOMVseFDO4OVPvHyYO2KlfBaGYk,10833
|
|
542
553
|
nexaai/vlm_impl/pybind_vlm_impl.py,sha256=FAbhpRJzHgI78r0mUvKybO97R1szvNhH0aTn_I52oT4,8597
|
|
543
|
-
nexaai-1.0.
|
|
544
|
-
nexaai-1.0.
|
|
545
|
-
nexaai-1.0.
|
|
546
|
-
nexaai-1.0.
|
|
554
|
+
nexaai-1.0.17rc1.dist-info/METADATA,sha256=-o225-FK1Adyvf4f8tzZM7FMyeq9g9CJthuqKuNKvG4,1201
|
|
555
|
+
nexaai-1.0.17rc1.dist-info/WHEEL,sha256=T2p57lol9__xkoU6aJTyN1Pm43ZpRU3q6km7mIbrAMs,114
|
|
556
|
+
nexaai-1.0.17rc1.dist-info/top_level.txt,sha256=LRE2YERlrZk2vfuygnSzsEeqSknnZbz3Z1MHyNmBU4w,7
|
|
557
|
+
nexaai-1.0.17rc1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|