mlxsmith 0.1.1__tar.gz → 0.1.2__tar.gz

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.
Files changed (84) hide show
  1. {mlxsmith-0.1.1/src/mlxsmith.egg-info → mlxsmith-0.1.2}/PKG-INFO +3 -13
  2. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/README.md +2 -10
  3. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/pyproject.toml +1 -2
  4. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/accel/__init__.py +0 -3
  5. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/cli.py +1 -2
  6. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/config_models.py +1 -1
  7. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/util.py +0 -6
  8. {mlxsmith-0.1.1 → mlxsmith-0.1.2/src/mlxsmith.egg-info}/PKG-INFO +3 -13
  9. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith.egg-info/SOURCES.txt +0 -1
  10. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith.egg-info/requires.txt +0 -3
  11. mlxsmith-0.1.1/src/mlxsmith/accel/zmlx_backend.py +0 -42
  12. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/LICENSE +0 -0
  13. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/setup.cfg +0 -0
  14. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/__init__.py +0 -0
  15. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/accel/base.py +0 -0
  16. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/accel/none.py +0 -0
  17. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/adapters.py +0 -0
  18. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/api/__init__.py +0 -0
  19. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/api/handlers.py +0 -0
  20. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/api/schemas.py +0 -0
  21. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/auth.py +0 -0
  22. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/bench.py +0 -0
  23. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/config.py +0 -0
  24. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/data.py +0 -0
  25. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/envs/__init__.py +0 -0
  26. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/envs/system.py +0 -0
  27. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/envs/token_env.py +0 -0
  28. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/eval.py +0 -0
  29. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/infer.py +0 -0
  30. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/llm/__init__.py +0 -0
  31. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/llm/backend.py +0 -0
  32. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/llm/interface.py +0 -0
  33. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/llm/mlx_lm_backend.py +0 -0
  34. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/llm/mock_backend.py +0 -0
  35. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/llm/registry.py +0 -0
  36. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/models.py +0 -0
  37. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/orchestrator/__init__.py +0 -0
  38. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/orchestrator/daemon.py +0 -0
  39. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/orchestrator/inference_worker.py +0 -0
  40. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/orchestrator/queue.py +0 -0
  41. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/orchestrator/trainer_worker.py +0 -0
  42. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/rlm/__init__.py +0 -0
  43. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/rlm/corpus.py +0 -0
  44. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/rlm/gating.py +0 -0
  45. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/rlm/generate.py +0 -0
  46. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/rlm/history.py +0 -0
  47. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/rlm/inference.py +0 -0
  48. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/rlm/loop.py +0 -0
  49. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/rlm/mutate.py +0 -0
  50. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/rlm/trainer.py +0 -0
  51. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/rlm/weights.py +0 -0
  52. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/runs.py +0 -0
  53. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/sdk/__init__.py +0 -0
  54. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/sdk/future.py +0 -0
  55. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/sdk/losses.py +0 -0
  56. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/sdk/sampling_client.py +0 -0
  57. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/sdk/training_client.py +0 -0
  58. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/server.py +0 -0
  59. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/train/__init__.py +0 -0
  60. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/train/distill.py +0 -0
  61. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/train/lora.py +0 -0
  62. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/train/pref.py +0 -0
  63. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/train/rft.py +0 -0
  64. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/train/sft.py +0 -0
  65. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/verifiers/__init__.py +0 -0
  66. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/verifiers/compose.py +0 -0
  67. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/verifiers/docker_verifier.py +0 -0
  68. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/verifiers/jsonschema.py +0 -0
  69. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/verifiers/pytest_verifier.py +0 -0
  70. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/verifiers/regex.py +0 -0
  71. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith/verifiers/types.py +0 -0
  72. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith.egg-info/dependency_links.txt +0 -0
  73. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith.egg-info/entry_points.txt +0 -0
  74. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/src/mlxsmith.egg-info/top_level.txt +0 -0
  75. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/tests/test_api.py +0 -0
  76. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/tests/test_auth.py +0 -0
  77. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/tests/test_config.py +0 -0
  78. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/tests/test_data.py +0 -0
  79. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/tests/test_rlm.py +0 -0
  80. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/tests/test_rlm_mutation.py +0 -0
  81. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/tests/test_runs.py +0 -0
  82. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/tests/test_sdk.py +0 -0
  83. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/tests/test_training_smoke.py +0 -0
  84. {mlxsmith-0.1.1 → mlxsmith-0.1.2}/tests/test_verifiers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mlxsmith
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: Apple Silicon MLX fine-tuning toolkit — SFT, DPO/ORPO, GRPO, distillation, and OpenAI-compatible serving.
5
5
  Author-email: Shannon Labs <hmbown@gmail.com>
6
6
  License: MIT
@@ -40,8 +40,6 @@ Provides-Extra: serve
40
40
  Requires-Dist: fastapi>=0.128.0; extra == "serve"
41
41
  Requires-Dist: uvicorn>=0.40.0; extra == "serve"
42
42
  Requires-Dist: httpx>=0.28.0; extra == "serve"
43
- Provides-Extra: zmlx
44
- Requires-Dist: zmlx; extra == "zmlx"
45
43
  Provides-Extra: dev
46
44
  Requires-Dist: pytest>=9.0.0; extra == "dev"
47
45
  Requires-Dist: ruff>=0.14.0; extra == "dev"
@@ -59,7 +57,7 @@ Dynamic: license-file
59
57
 
60
58
  Apple Silicon MLX fine-tuning toolkit — SFT, DPO/ORPO, GRPO, distillation, and OpenAI-compatible serving.
61
59
 
62
- **Status:** alpha (v0.1.0). Full training pipeline validated on Qwen3-4B.
60
+ **Status:** alpha (v0.1.2). Full training pipeline validated on Qwen3-4B.
63
61
 
64
62
  ## Install
65
63
 
@@ -85,7 +83,7 @@ pip install "mlxsmith[all]"
85
83
  ```bash
86
84
  mlxsmith init myproj
87
85
  cd myproj
88
- mlxsmith doctor # check Python, MLX, Metal, ZMLX
86
+ mlxsmith doctor # check Python, MLX, Metal
89
87
  ```
90
88
 
91
89
  ## Training
@@ -269,14 +267,6 @@ mlxsmith rlm history # view history
269
267
 
270
268
  Includes task generation, mutation for data diversity, corpus management, EMA-based gating, and weight pointer IPC for multi-process coordination. See `docs/orchestrator.md`.
271
269
 
272
- ### ZMLX acceleration
273
-
274
- Optional zero-copy MLX acceleration backend.
275
-
276
- ```bash
277
- mlxsmith accel status
278
- ```
279
-
280
270
  ## Docs
281
271
 
282
272
  - `docs/PROJECT_FORMAT.md` — project layout and artifacts
@@ -2,7 +2,7 @@
2
2
 
3
3
  Apple Silicon MLX fine-tuning toolkit — SFT, DPO/ORPO, GRPO, distillation, and OpenAI-compatible serving.
4
4
 
5
- **Status:** alpha (v0.1.0). Full training pipeline validated on Qwen3-4B.
5
+ **Status:** alpha (v0.1.2). Full training pipeline validated on Qwen3-4B.
6
6
 
7
7
  ## Install
8
8
 
@@ -28,7 +28,7 @@ pip install "mlxsmith[all]"
28
28
  ```bash
29
29
  mlxsmith init myproj
30
30
  cd myproj
31
- mlxsmith doctor # check Python, MLX, Metal, ZMLX
31
+ mlxsmith doctor # check Python, MLX, Metal
32
32
  ```
33
33
 
34
34
  ## Training
@@ -212,14 +212,6 @@ mlxsmith rlm history # view history
212
212
 
213
213
  Includes task generation, mutation for data diversity, corpus management, EMA-based gating, and weight pointer IPC for multi-process coordination. See `docs/orchestrator.md`.
214
214
 
215
- ### ZMLX acceleration
216
-
217
- Optional zero-copy MLX acceleration backend.
218
-
219
- ```bash
220
- mlxsmith accel status
221
- ```
222
-
223
215
  ## Docs
224
216
 
225
217
  - `docs/PROJECT_FORMAT.md` — project layout and artifacts
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mlxsmith"
7
- version = "0.1.1"
7
+ version = "0.1.2"
8
8
  description = "Apple Silicon MLX fine-tuning toolkit — SFT, DPO/ORPO, GRPO, distillation, and OpenAI-compatible serving."
9
9
  readme = {file = "README.md", content-type = "text/markdown"}
10
10
  requires-python = ">=3.10"
@@ -52,7 +52,6 @@ serve = [
52
52
  "uvicorn>=0.40.0",
53
53
  "httpx>=0.28.0",
54
54
  ]
55
- zmlx = ["zmlx"]
56
55
  dev = ["pytest>=9.0.0", "ruff>=0.14.0"]
57
56
  all = [
58
57
  "mlx>=0.30.4",
@@ -1,10 +1,7 @@
1
1
  from __future__ import annotations
2
2
  from .none import NoneBackend
3
- from .zmlx_backend import ZMLXBackend
4
3
 
5
4
  def get_backend(name: str):
6
5
  if name == "none":
7
6
  return NoneBackend()
8
- if name == "zmlx":
9
- return ZMLXBackend()
10
7
  raise ValueError(f"Unknown accel backend: {name}")
@@ -83,7 +83,6 @@ def doctor():
83
83
  table.add_row("cpu_count", str(info.cpu_count))
84
84
  table.add_row("metal", str(info.has_metal))
85
85
  table.add_row("mlx", f"{info.has_mlx} {info.mlx_version or ''}".strip())
86
- table.add_row("zmlx", str(info.has_zmlx))
87
86
  console.print(table)
88
87
 
89
88
 
@@ -729,7 +728,7 @@ def rlm_history(limit: int = typer.Option(10, "--limit")):
729
728
 
730
729
  @accel_app.command("status")
731
730
  def accel_status():
732
- backends = ["none", "zmlx"]
731
+ backends = ["none"]
733
732
  table = Table(title="mlxsmith accel status")
734
733
  table.add_column("backend")
735
734
  table.add_column("available")
@@ -6,7 +6,7 @@ from typing import Dict, List, Literal, Optional, Any
6
6
 
7
7
  from pydantic import BaseModel, Field, field_validator
8
8
 
9
- AccelBackendName = Literal["none", "zmlx"]
9
+ AccelBackendName = Literal["none"]
10
10
 
11
11
 
12
12
  class ModelConfig(BaseModel):
@@ -46,7 +46,6 @@ class SystemInfo:
46
46
  has_metal: Optional[bool]
47
47
  has_mlx: bool
48
48
  mlx_version: Optional[str]
49
- has_zmlx: bool
50
49
 
51
50
  def detect_system() -> SystemInfo:
52
51
  has_mlx = False
@@ -58,10 +57,6 @@ def detect_system() -> SystemInfo:
58
57
  except Exception:
59
58
  pass
60
59
 
61
- import importlib.util
62
-
63
- has_zmlx = importlib.util.find_spec("zmlx") is not None
64
-
65
60
  # Metal detection (best-effort): on macOS we assume Metal is present; for CI, this is not reliable.
66
61
  has_metal = None
67
62
  if sys.platform == "darwin":
@@ -83,7 +78,6 @@ def detect_system() -> SystemInfo:
83
78
  has_metal=has_metal,
84
79
  has_mlx=has_mlx,
85
80
  mlx_version=mlx_version,
86
- has_zmlx=has_zmlx,
87
81
  )
88
82
 
89
83
  def require(cond: bool, msg: str):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mlxsmith
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: Apple Silicon MLX fine-tuning toolkit — SFT, DPO/ORPO, GRPO, distillation, and OpenAI-compatible serving.
5
5
  Author-email: Shannon Labs <hmbown@gmail.com>
6
6
  License: MIT
@@ -40,8 +40,6 @@ Provides-Extra: serve
40
40
  Requires-Dist: fastapi>=0.128.0; extra == "serve"
41
41
  Requires-Dist: uvicorn>=0.40.0; extra == "serve"
42
42
  Requires-Dist: httpx>=0.28.0; extra == "serve"
43
- Provides-Extra: zmlx
44
- Requires-Dist: zmlx; extra == "zmlx"
45
43
  Provides-Extra: dev
46
44
  Requires-Dist: pytest>=9.0.0; extra == "dev"
47
45
  Requires-Dist: ruff>=0.14.0; extra == "dev"
@@ -59,7 +57,7 @@ Dynamic: license-file
59
57
 
60
58
  Apple Silicon MLX fine-tuning toolkit — SFT, DPO/ORPO, GRPO, distillation, and OpenAI-compatible serving.
61
59
 
62
- **Status:** alpha (v0.1.0). Full training pipeline validated on Qwen3-4B.
60
+ **Status:** alpha (v0.1.2). Full training pipeline validated on Qwen3-4B.
63
61
 
64
62
  ## Install
65
63
 
@@ -85,7 +83,7 @@ pip install "mlxsmith[all]"
85
83
  ```bash
86
84
  mlxsmith init myproj
87
85
  cd myproj
88
- mlxsmith doctor # check Python, MLX, Metal, ZMLX
86
+ mlxsmith doctor # check Python, MLX, Metal
89
87
  ```
90
88
 
91
89
  ## Training
@@ -269,14 +267,6 @@ mlxsmith rlm history # view history
269
267
 
270
268
  Includes task generation, mutation for data diversity, corpus management, EMA-based gating, and weight pointer IPC for multi-process coordination. See `docs/orchestrator.md`.
271
269
 
272
- ### ZMLX acceleration
273
-
274
- Optional zero-copy MLX acceleration backend.
275
-
276
- ```bash
277
- mlxsmith accel status
278
- ```
279
-
280
270
  ## Docs
281
271
 
282
272
  - `docs/PROJECT_FORMAT.md` — project layout and artifacts
@@ -24,7 +24,6 @@ src/mlxsmith.egg-info/top_level.txt
24
24
  src/mlxsmith/accel/__init__.py
25
25
  src/mlxsmith/accel/base.py
26
26
  src/mlxsmith/accel/none.py
27
- src/mlxsmith/accel/zmlx_backend.py
28
27
  src/mlxsmith/api/__init__.py
29
28
  src/mlxsmith/api/handlers.py
30
29
  src/mlxsmith/api/schemas.py
@@ -34,6 +34,3 @@ mlx>=0.30.4
34
34
  fastapi>=0.128.0
35
35
  uvicorn>=0.40.0
36
36
  httpx>=0.28.0
37
-
38
- [zmlx]
39
- zmlx
@@ -1,42 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from typing import Any, Dict
4
- from .base import AccelStats
5
-
6
- class ZMLXBackend:
7
- name = "zmlx"
8
-
9
- def __init__(self):
10
- self._available = False
11
- self._notes = {}
12
- try:
13
- import zmlx # type: ignore
14
- self._available = True
15
- self._notes["zmlx_version"] = getattr(zmlx, "__version__", None)
16
- except Exception as e:
17
- self._available = False
18
- self._notes["error"] = f"{type(e).__name__}: {e}"
19
-
20
- def patch(self) -> None:
21
- if not self._available:
22
- # soft fail; caller should report status
23
- return
24
- # ZMLX can patch ops/modules. We keep this intentionally minimal and safe.
25
- try:
26
- import zmlx # type: ignore
27
- # If ZMLX provides a global patch hook, call it; otherwise, no-op.
28
- patch_fn = getattr(zmlx, "patch", None)
29
- if callable(patch_fn):
30
- patch_fn()
31
- self._notes["patched"] = True
32
- else:
33
- self._notes["patched"] = False
34
- self._notes["hint"] = "No zmlx.patch() found; implement patch hook or integrate per-module."
35
- except Exception as e:
36
- self._notes["patched_error"] = f"{type(e).__name__}: {e}"
37
-
38
- def warmup(self, model: Any, example_batch: Any) -> Dict[str, Any]:
39
- return {"warmup": "not_implemented", "notes": self._notes}
40
-
41
- def stats(self) -> AccelStats:
42
- return AccelStats(backend="zmlx", notes=self._notes)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes