ollada 0.0.1__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.
@@ -0,0 +1,46 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ - uses: actions/setup-python@v5
15
+ with:
16
+ python-version: "3.12"
17
+ - name: Check tag matches package version
18
+ run: |
19
+ PKG_VERSION=$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")
20
+ if [ "$GITHUB_REF_TYPE" = "tag" ]; then
21
+ TAG_VERSION="${GITHUB_REF_NAME#v}"
22
+ echo "package=$PKG_VERSION tag=$TAG_VERSION"
23
+ test "$PKG_VERSION" = "$TAG_VERSION"
24
+ else
25
+ echo "package=$PKG_VERSION (manual dispatch from $GITHUB_REF_NAME, tag check skipped)"
26
+ fi
27
+ - name: Build wheel and sdist
28
+ run: |
29
+ python -m pip install --upgrade build
30
+ python -m build
31
+ - uses: actions/upload-artifact@v4
32
+ with:
33
+ name: dist
34
+ path: dist/
35
+
36
+ publish:
37
+ needs: build
38
+ runs-on: ubuntu-latest
39
+ permissions:
40
+ id-token: write
41
+ steps:
42
+ - uses: actions/download-artifact@v4
43
+ with:
44
+ name: dist
45
+ path: dist/
46
+ - uses: pypa/gh-action-pypi-publish@release/v1
ollada-0.0.1/PKG-INFO ADDED
@@ -0,0 +1,51 @@
1
+ Metadata-Version: 2.5
2
+ Name: ollada
3
+ Version: 0.0.1
4
+ Summary: The shelf for open-source diffusion language models — pull, run, and serve dLLMs locally, Ollama-style.
5
+ Project-URL: Homepage, https://github.com/OpenSourceRulesz/ollada
6
+ Project-URL: Repository, https://github.com/OpenSourceRulesz/ollada
7
+ Author: OpenSourceRulesz
8
+ License: MIT
9
+ Keywords: diffusion,dllm,inference,llada,llm,local-ai
10
+ Classifier: Development Status :: 1 - Planning
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
15
+ Requires-Python: >=3.10
16
+ Description-Content-Type: text/markdown
17
+
18
+ # ollada
19
+
20
+ **The shelf for open-source diffusion language models.**
21
+
22
+ Ollama is where people go to get open-source autoregressive models: clean names, one command, it just works. Diffusion language models (dLLMs) — LLaDA, Dream, SDAR, Stable-DiffCoder — have none of that. They're scattered across Hugging Face with incompatible generation code, undocumented defaults, and no verified "this actually runs" guarantee.
23
+
24
+ **ollada** is building the equivalent for diffusion:
25
+
26
+ ```bash
27
+ pip install ollada
28
+ ollada pull diffcoder:8b
29
+ ollada run diffcoder:8b
30
+ ollada serve # local API on http://localhost:11435
31
+ ```
32
+
33
+ - **Curated library, short names** — `dream:7b`, `sdar:4b`, `diffcoder:8b`. A model is on the shelf only after a real-load verification run on real GPU hardware.
34
+ - **Verified recipes, not homework** — the steps / block size / threshold / quantization that actually work are baked into each model's recipe, tested and published with the hardware they were measured on.
35
+ - **A local API tools can point at** — Ollama-shaped and OpenAI-shaped endpoints.
36
+
37
+ ## Status
38
+
39
+ **0.0.1 — name-claim / planning release.** The full plan (product definition, recipe format, initial 3-model shelf, verification gate, phased timeline) is in [PLAN.md](PLAN.md). No models are served yet; the runtime is in development.
40
+
41
+ Named the way Ollama was: Ollama ← LLaMA (the first big open autoregressive model). **Ollada ← LLaDA** (the first big open diffusion language model, Feb 2025).
42
+
43
+ ## Principles
44
+
45
+ - $0 project: no telemetry, no phone-home, no paid services.
46
+ - GPU-first and honest about it (diffusion on CPU is minutes per answer).
47
+ - Vendor benchmarks are never presented as our measurements.
48
+
49
+ ## License
50
+
51
+ MIT
ollada-0.0.1/PLAN.md ADDED
@@ -0,0 +1,126 @@
1
+ # Diffusion Shelf — Plan
2
+ ### Working name: **Ollada** (see §9 — mirrors Ollama's naming move: Ollama ← LLaMA, Ollada ← LLaDA). An "Ollama for diffusion models": a curated library + local service where people know to get open-source diffusion language models (dLLMs).
3
+ **Status:** Plan v1.1 — 2026-10-21 — name claim in progress at Dallas's direction ("take ollada name asap"): GitHub repo **created and pushed 2026-10-21** (github.com/OpenSourceRulesz/ollada, initial commit with this plan + 0.0.1 package skeleton, fresh-venv install verified). PyPI claim pending only Dallas's pending-trusted-publisher registration (project `ollada`, owner `OpenSourceRulesz`, repo `ollada`, workflow `publish.yml`, environment blank); tag v0.0.1 fires only AFTER that registration (PrivateContext lesson). Runtime build still awaits the remaining plan decisions.
4
+ **Cost rule:** $0 project (same as FFTP / PrivateContext). No domain, no telemetry, no paid services. Gemini free tier only if ever needed. Nothing public without per-item approval (draft → review → agree → post).
5
+
6
+ ---
7
+
8
+ ## 1. The insight this is built on
9
+ - People don't get AR models from a raw engine, they get them from a *shelf*: Ollama's library. Clean short names, a model is either on the shelf (tested, quantized, templated, safe) or it isn't.
10
+ - Diffusion has no shelf. As of Oct 2026: no free browser demo that reliably works (except one community LLaDA Space), no canonical names, every Hugging Face repo has a different `generate()` signature, most need `trust_remote_code=True`, and defaults (steps / block size / threshold) that make or break quality are left to the user to guess.
11
+ - HF is the warehouse (storage). This project is the store (curation + working recipes + a local API tools can point at).
12
+
13
+ ## 2. Product definition (MVP)
14
+ One command installs it, one command runs a diffusion model, models have short names, and a local HTTP API serves them.
15
+
16
+ ```
17
+ pip install <name>
18
+ <name> pull diffcoder:8b
19
+ <name> run diffcoder:8b
20
+ <name> serve # http://localhost:11435 (not 11434 — avoids the known Ollama/VS Code clash on Dallas's Dell)
21
+ ```
22
+
23
+ **In scope for v0.1:**
24
+ - CLI: `pull / run / list / ps / rm / serve / show`
25
+ - Daemon: FastAPI service, one GPU model loaded at a time, keep-alive + auto-unload, serial queue
26
+ - APIs: Ollama-shaped `POST /api/chat`, `POST /api/generate`, plus OpenAI-shaped `POST /v1/chat/completions` (final text only in v0.1)
27
+ - A model *Recipe* format (the DiffFile — Ollama's Modelfile equivalent, see §4)
28
+ - A curated catalog of **3 models** (see §5), each with a *verified* recipe
29
+ - A one-click Colab notebook demo — this is the "try it in a browser" gap that started the whole thread
30
+ - Static catalog page (GitHub Pages, $0) listing the shelf: task, size, VRAM, verified speed, license
31
+
32
+ **Explicitly out of scope for v0.1:**
33
+ - C++ / GGUF engine (that's Tier 3 — team + a year; Python + PyTorch + bitsandbytes is the MVP runtime)
34
+ - CPU-first support (diffusion on CPU is minutes-per-answer; GPU-first, honest about it. CPU smoke-test only for the 1.7B)
35
+ - Canvas-snapshot streaming (v0.2 candidate — the "watch it develop" UI)
36
+ - Training / fine-tuning, multi-GPU, batching/concurrency beyond a serial queue
37
+ - Any model whose family adapter isn't hand-written and tested by us (no arbitrary repo execution)
38
+
39
+ ## 3. Architecture
40
+ ```
41
+ catalog/ # the shelf: one YAML per model on the shelf (curated, reviewed)
42
+ recipes/ # verified generation defaults per model (steps, block, threshold, quant, template)
43
+ adapters/ # one hand-written adapter per model FAMILY (load / generate / chat-template)
44
+ dream.py # reuse the proven npc-engine harness (8-bit load, BitsAndBytesConfig, transformers pin)
45
+ sdar.py # JetLM SDAR family (custom_code — re-implement its loop, don't execute theirs blindly)
46
+ diffcoder.py # Stable-DiffCoder family
47
+ runtime/
48
+ server.py # FastAPI daemon, model manager (load/unload/VRAM guard), queue
49
+ cli.py # Typer CLI
50
+ tests/
51
+ test_*.py # unit tests (mocked) — necessary, NOT sufficient (see §7)
52
+ verify/ # REAL-load verification scripts per model (the gate for "on the shelf")
53
+ notebooks/
54
+ colab_demo.ipynb # fresh-kernel-safe, version-stamped, prints version + "ready on cuda" acceptance line
55
+ docs/
56
+ LIBRARY.md # human-readable shelf, generated from catalog/
57
+ ```
58
+
59
+ Design rules carried over from npc-engine / PrivateContext (learned the hard way):
60
+ - Never pass raw quantization kwargs into a model's `__init__` (the `load_in_8bit` crash) — always `BitsAndBytesConfig`.
61
+ - Pin transformers *per adapter family* if needed, and say so in the recipe — Dream needed `transformers==4.53.3` (ROPE `'default'` KeyError on 5.x).
62
+ - Mocks don't cover real load paths. A model is not "supported" until a real-load verification has passed on real GPU hardware (see §7).
63
+ - PowerShell-first for all Windows-facing instructions; one command per fenced block, full args on one line.
64
+
65
+ ## 4. The Recipe (DiffFile) — the core standard we are proposing
66
+ ```yaml
67
+ name: diffcoder:8b
68
+ family: diffcoder
69
+ source: ByteDance-Seed/Stable-DiffCoder-8B-Instruct
70
+ license: MIT
71
+ task: coding
72
+ size_gb_bf16: 16
73
+ quant_default: int8 # ~8-9 GB — the safe default on 16-32 GB machines
74
+ generate:
75
+ steps: 128 # vendor example uses 512; our verified default is a measured quality/speed trade
76
+ gen_length: 256
77
+ block_length: 32
78
+ remasking: low_confidence
79
+ temperature: 0.0
80
+ verified:
81
+ hardware: T4-16GB (8-bit)
82
+ tokens_per_sec: null # filled in ONLY by a real verification run — never a vendor number, never a mockup
83
+ date: null
84
+ ```
85
+ Every field a normal user should never have to think about lives here, tested, not in the README as homework.
86
+
87
+ ## 5. The initial shelf (3 models for v0.1, expand only after the gate passes)
88
+ | Short name | Source | Job | Why it's on first |
89
+ |---|---|---|---|
90
+ | `dream:7b` | Dream-org/Dream-v0-Instruct-7B | general chat | We already have a proven, debugged harness for it (npc-engine). Lowest-risk first adapter. |
91
+ | `sdar:4b` | JetLM/SDAR-4B-Chat | general, balanced | Best general quality-per-GB in the SDAR family (MMLU 74.9 / GSM8K 89.9 class); 1.7B is the later "tiny" addition, 8B the later "max" addition. |
92
+ | `diffcoder:8b` | ByteDance-Seed/Stable-DiffCoder-8B-Instruct | coding | Best open diffusion coder (HumanEval 86.6 / MBPP 85.7 / BigCodeBench-Full 54.8), MIT. This is the model Dallas asked for for his own coding use. |
93
+
94
+ **v0.2 shelf candidates (not promises):** `sdar:1.7b`, `sdar:8b`, `dream-coder:7b`, `fast:1.5b` (Fast-dLLM v2), `llada:8b`, `nemotron:3b` (likely via an SGLang adapter — separate decision).
95
+
96
+ ## 6. Phases & rough timeline (solo + Muse, part-time)
97
+ - **Phase 0 — Spec freeze (1-2 days, no code beyond skeleton):** pick the public name (see §9), freeze Recipe format + API shapes, repo skeleton, this plan approved. *Gate: Dallas says go.*
98
+ - **Phase 1 — One model end-to-end (week 1):** daemon + CLI + Dream adapter, `pull/run/serve` working, real-load verified on Colab T4. Colab demo notebook v1. *Gate: a stranger could run the notebook fresh-kernel and get a good line out.*
99
+ - **Phase 2 — The shelf becomes real (week 2):** SDAR + DiffCoder adapters, steps-sweep for defaults (32/64/128/256, measured — quality vs tok/s), verification runs for all 3, catalog page generated. *Gate: all 3 pass §7 on T4; DiffCoder also passes a small real coding-prompt set (not just HumanEval numbers from the paper).*
100
+ - **Phase 3 — v0.1.0 release (week 3):** docs (exhaustive, zero-assumed-knowledge install walkthrough), PyPI publish via trusted publishing, GitHub public. *Each public step follows draft → review → agree → post; one-time tokens never stored.*
101
+ - **Phase 4 — Post-launch, only if people use it:** canvas streaming, more models, Continue / OpenWebUI integration snippets, a "verified on 4090" tier.
102
+
103
+ ## 7. Verification gate — what "on the shelf" means
104
+ A model earns its short name only when ALL of these are true, from a *real* run we did:
105
+ 1. Fresh-environment load (fresh Colab kernel / fresh venv) with the pinned deps in its recipe — version stamp printed.
106
+ 2. `ready on cuda` equivalent acceptance line + actual GPU generation (not CPU fallback).
107
+ 3. Fixed prompt set (chat, code, infill, short + long) produces sane output at the recipe's default steps.
108
+ 4. Measured: load time, peak VRAM, tokens/sec, at the default quant — published in the catalog, labelled with the hardware.
109
+ 5. Known-failure notes written down (context limits, prompt formats that break it, steps below which it falls apart).
110
+ If a model fails, it stays off the shelf and the failure is documented. No vendor benchmark is ever presented as our measurement.
111
+
112
+ ## 8. Risks & kill criteria
113
+ - **Transformers fragility** (biggest known risk — it bit npc-engine twice): mitigate with per-family pins + the §7 gate on every release. If a family needs a *fork* to stay working, that family gets cut, not the project.
114
+ - **Adapter sprawl:** if family #4 requires a materially different runtime (e.g. SGLang-only), stop and re-decide scope instead of growing a second engine quietly.
115
+ - **Expectation trap:** people will try it on CPU laptops (like the Dell) and conclude diffusion is slow. Mitigate by positioning GPU-first everywhere, and giving the 1.7B an honest "CPU: try-it speed" label later.
116
+ - **Trademark:** do NOT name it anything containing "Ollama" (their mark) or "Llama" (Meta's). Working title "Diffusion Shelf" is descriptive only.
117
+ - **Kill criterion:** if, after Phase 2, none of the 3 models gives a *good* experience on a free T4, the honest move is to stop at a research repo + write-up, not ship a shelf we wouldn't use ourselves.
118
+
119
+ ## 9. Decisions needed from Dallas (one round, then Phase 0 starts)
120
+ 1. **Name** — Dallas's direction (2026-10-21): do Ollama's naming move again. Ollama launched around **LLaMA** (Meta's first big open AR model); the first big open *text-diffusion* model is **LLaDA** (Feb 2025, Renmin / Ant Group — see plan notes). So: **Ollada** (O + Llada). Availability checked 2026-10-21 (404 = free at check time, controls `fftp`/`ollama` correctly returned 200; availability is not a trademark clearance): `ollada` is free on **both PyPI and Hugging Face**. Fallbacks also free on PyPI: `allada`, `lladama`, `dllada`, `diffshelf`, `diffserve`, `dllm`, `maskserve`. Note: LLaDA itself is Renmin/Ant's model name — Ollada is a distinct coinage in the same spirit as Ollama vs Llama, but a real trademark sanity check is a Phase 0 task, not an assumption.
121
+ 2. **First shelf** — approve the 3-model MVP (dream:7b / sdar:4b / diffcoder:8b), or swap one.
122
+ 3. **First hardware target** — RESOLVED 2026-10-21: Dallas's personal gaming desktop, an **RTX 5060 Ti 16GB** (variant confirmed by Dallas; Blackwell, 4,608 CUDA cores, 16GB GDDR7 — runs the full 8B shelf in 8-bit comfortably). This is also the archetypal target-user machine: Ollama's audience is people with consumer gaming GPUs on Windows. **Sequencing:** development + first verification happen on **Colab T4 now** (Dallas can't use the desktop at the moment). This does not change the design: the T4 is also 16GB, so every VRAM fit / quantization decision transfers 1:1. What does NOT transfer is speed — all published numbers stay labelled with the hardware they were measured on, T4 numbers will read as pessimistic vs the 5060 Ti, and a re-verification pass on the desktop is a required pre-launch gate. One dtype nuance: the T4 (Turing) has no native bf16 acceleration, so T4 recipes default to fp16 / 8-bit; the 5060 Ti (Blackwell) can use bf16 recipes. The work Dell (32GB, Intel integrated graphics) is explicitly NOT a target — it's a CPU-only smoke-test machine at best.
123
+ 4. **Public posture** — local-first like npc-engine started (build, verify, then a separate go for public), recommended. No public step is bundled into the build go.
124
+
125
+ ## 10. What success looks like
126
+ A developer who has never heard of SDAR can, in under 10 minutes on a free Colab GPU: install it, `run diffcoder:8b`, get good code out, and `serve` it for their editor — and when a friend asks "where do you get diffusion models?", the answer is this project's name.
ollada-0.0.1/README.md ADDED
@@ -0,0 +1,34 @@
1
+ # ollada
2
+
3
+ **The shelf for open-source diffusion language models.**
4
+
5
+ Ollama is where people go to get open-source autoregressive models: clean names, one command, it just works. Diffusion language models (dLLMs) — LLaDA, Dream, SDAR, Stable-DiffCoder — have none of that. They're scattered across Hugging Face with incompatible generation code, undocumented defaults, and no verified "this actually runs" guarantee.
6
+
7
+ **ollada** is building the equivalent for diffusion:
8
+
9
+ ```bash
10
+ pip install ollada
11
+ ollada pull diffcoder:8b
12
+ ollada run diffcoder:8b
13
+ ollada serve # local API on http://localhost:11435
14
+ ```
15
+
16
+ - **Curated library, short names** — `dream:7b`, `sdar:4b`, `diffcoder:8b`. A model is on the shelf only after a real-load verification run on real GPU hardware.
17
+ - **Verified recipes, not homework** — the steps / block size / threshold / quantization that actually work are baked into each model's recipe, tested and published with the hardware they were measured on.
18
+ - **A local API tools can point at** — Ollama-shaped and OpenAI-shaped endpoints.
19
+
20
+ ## Status
21
+
22
+ **0.0.1 — name-claim / planning release.** The full plan (product definition, recipe format, initial 3-model shelf, verification gate, phased timeline) is in [PLAN.md](PLAN.md). No models are served yet; the runtime is in development.
23
+
24
+ Named the way Ollama was: Ollama ← LLaMA (the first big open autoregressive model). **Ollada ← LLaDA** (the first big open diffusion language model, Feb 2025).
25
+
26
+ ## Principles
27
+
28
+ - $0 project: no telemetry, no phone-home, no paid services.
29
+ - GPU-first and honest about it (diffusion on CPU is minutes per answer).
30
+ - Vendor benchmarks are never presented as our measurements.
31
+
32
+ ## License
33
+
34
+ MIT
@@ -0,0 +1,3 @@
1
+ """ollada — the shelf for open-source diffusion language models."""
2
+
3
+ __version__ = "0.0.1"
@@ -0,0 +1,23 @@
1
+ """ollada CLI — 0.0.1 is a planning release; the runtime is in development."""
2
+
3
+ import sys
4
+
5
+ from ollada import __version__
6
+
7
+ MESSAGE = """ollada {version} — the shelf for open-source diffusion language models.
8
+
9
+ Status: planning release. The runtime (pull / run / serve) is in development.
10
+ Plan: https://github.com/OpenSourceRulesz/ollada/blob/main/PLAN.md"""
11
+
12
+
13
+ def main(argv=None):
14
+ args = list(sys.argv[1:] if argv is None else argv)
15
+ if args and args[0] in ("--version", "-V", "version"):
16
+ print(f"ollada {__version__}")
17
+ return 0
18
+ print(MESSAGE.format(version=__version__))
19
+ return 0
20
+
21
+
22
+ if __name__ == "__main__":
23
+ raise SystemExit(main())
@@ -0,0 +1,30 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "ollada"
7
+ version = "0.0.1"
8
+ description = "The shelf for open-source diffusion language models — pull, run, and serve dLLMs locally, Ollama-style."
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ license = { text = "MIT" }
12
+ authors = [{ name = "OpenSourceRulesz" }]
13
+ keywords = ["diffusion", "llm", "dllm", "llada", "local-ai", "inference"]
14
+ classifiers = [
15
+ "Development Status :: 1 - Planning",
16
+ "Intended Audience :: Developers",
17
+ "License :: OSI Approved :: MIT License",
18
+ "Programming Language :: Python :: 3",
19
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
20
+ ]
21
+
22
+ [project.urls]
23
+ Homepage = "https://github.com/OpenSourceRulesz/ollada"
24
+ Repository = "https://github.com/OpenSourceRulesz/ollada"
25
+
26
+ [project.scripts]
27
+ ollada = "ollada.cli:main"
28
+
29
+ [tool.hatch.build.targets.wheel]
30
+ packages = ["ollada"]