|
Download cloud/README.md from abuz8studios/FAIE: direct link, hf CLI and curl.
- Browser
- Download file 5.88 kB
-
https://huggingface.co/abuz8studios/FAIE/resolve/main/cloud/README.md
- Command line
-
hf download hf://abuz8studios/FAIE/cloud/README.md
-
curl -L -o README.md https://huggingface.co/abuz8studios/FAIE/resolve/main/cloud/README.md
5.88 kB
| # cloud/ β the TAJWID lane on rented GPUs | |
| **Built 2026-07-27 Β· session e67037de Β· companion to `../ROOT_CALCULUS.md` + `../THE_BRAIN_SPEC.md`** | |
| Everything here is written, selftested, and **proven against the local brain** before any | |
| cloud key exists. When you authenticate, nothing changes but an environment variable. | |
| --- | |
| ## 1. The correction that reshapes the idea | |
| **NVIDIA NIM cannot train.** It is inference microservices β you call it to *generate*. | |
| So "build it on NVIDIA's GPUs" isn't available through NIM. What NIM *can* do is | |
| generate teacher text fast, and that happens to attack the real bottleneck. | |
| **Lightning AI can train.** Studios give you an A100/H100 you attach and detach. That is | |
| where H2 (QLoRA distillation) and eventually H3 belong. | |
| | lane | where it runs | why there | | |
| |---|---|---| | |
| | GGUF surgery, spectra, llama.cpp judging | **local** | the model is 129 GB on local disk; uploading it is absurd | | |
| | Teacher trace generation | **NIM, or self-hosted teacher on Lightning** | local single-stream is 210 tok/s; batched remote is 20Γ+ | | |
| | QLoRA distillation (H2 tajwΔ«d) | **Lightning A100/H100** | needs sustained GPU hours β the thing blocked locally | | |
| | Born-factored pretrain (H3) | **Lightning multi-GPU** | far beyond this box | | |
| | Serving the finished student | **local** | it's 5β12 GB. That was the whole point. | | |
| The 129 GB oracle **never leaves the house**. The student is pulled from HF *on the | |
| remote machine*, which is faster than any upload from here. | |
| --- | |
| ## 2. Measured throughput β why the cloud is worth it, in numbers | |
| From the smoke run against Ornith (2026-07-27, real completions): | |
| - **210 tok/s** single-stream, **~3,957 completion tokens per sample** | |
| - A useful distill set of **5,000 samples β 19.8 M tokens β ~26 hours local** | |
| - Full harvest of all **40,259** available workload prompts β 159 M tokens β **~8.8 days local** | |
| - Batched vLLM on one A100/H100 is conservatively **20Γ** aggregate β **26 hours becomes ~1.3 hours** | |
| That is the entire argument for renting: not that the local card is weak, but that | |
| single-stream generation cannot be batched and the corpus is the long pole. | |
| --- | |
| ## 3. What YOU do β two owner actions, both under five minutes | |
| I do not create accounts, accept terms, or authorise spend. Both of these meter money, | |
| so both are yours (hard stop *c*). | |
| ### A Β· Lightning (required for training) | |
| ```bash | |
| lightning login | |
| ``` | |
| Then, from `E:\ABU\NEOCORTEX\cloud`: | |
| ```bash | |
| python lightning_launch.py --start --machine A100 | |
| python lightning_launch.py --run "pip install -r requirements.txt" | |
| ``` | |
| `--stop` is what stops the meter. The launcher refuses to do anything until you're | |
| authenticated, and says exactly this if you aren't. | |
| ### B Β· NIM (optional β only for bulk trace speed) | |
| Get a key from NVIDIA's developer portal, then: | |
| ```powershell | |
| $env:TEACHER_BASE_URL = "https://integrate.api.nvidia.com/v1" | |
| $env:TEACHER_API_KEY = "<your key>" | |
| $env:TEACHER_MODEL = "<the model id you chose>" | |
| python teacher_client.py # must print ARITHMETIC: PASS before anything else | |
| ``` | |
| **Read this before pointing traces at any managed API.** Generating training data from a | |
| hosted model's outputs is governed by that provider's terms, and some providers restrict | |
| using outputs to train other models. You sell software, so this is commercial exposure, | |
| not a theoretical worry. `make_traces.py` therefore **refuses to run against a non-local | |
| endpoint** unless you pass `--i-checked-the-licence`. That flag is a speed bump against | |
| an expensive mistake β it is not legal advice, and I am not a lawyer. | |
| **The clean way around it entirely:** self-host an open-weight teacher on the Lightning | |
| GPU you're already paying for. No terms ambiguity, and you get logprobs β which | |
| text-only APIs cannot give you and which make for better distillation. | |
| --- | |
| ## 4. The files | |
| | file | what it does | proven? | | |
| |---|---|---| | |
| | `teacher_client.py` | one OpenAI-compatible client for NIM / Lightning / local. `smoke()` verifies with a **real completion**, never `/health` | β 223 tok/s vs Ornith, `391` correct | | |
| | `make_traces.py` | teacher answers to **your real prompts** (`train.jsonl`), resume-safe, per-stratum, licence gate | β 4/5 kept, caught 1 empty-completion | | |
| | `distill_qlora.py` | the H2 student trainer. `--dry-run` builds the dataset with no GPU and no model load | β dry-run green | | |
| | `lightning_launch.py` | Studio create/start/upload/run/stop. Refuses without auth | β auth gate correct | | |
| | `requirements.txt` | the remote stack. Local box has everything **except `peft`** | β | | |
| --- | |
| ## 5. Two traps already coded around | |
| **Empty completions are failures, not short answers.** Reasoning models emit | |
| `reasoning_content` first and return `content: ''` if the budget runs out β | |
| `finish_reason: length`. This fired on the very first smoke run (1 of 5). Storing those | |
| as training targets would teach the student to say nothing. `make_traces.py` skips and | |
| logs them; `DEFAULT_MAX_TOKENS` is 4096, never small. | |
| **Strata are mixed at TRAIN time, not harvest time.** Arabic is 0.0227% of natural | |
| traffic and pays a ~2.3β2.8Γ tokenizer tax. Left proportional it contributes no gradient; | |
| blended at harvest it contaminates the workload distribution. `--arabic-ratio` makes it | |
| an explicit, logged, tunable decision, and the two holdouts are scored **separately**. | |
| --- | |
| ## 6. The gate that decides whether any of this worked | |
| Same judge as every other gate in this project β llama.cpp on a held-out set, never the | |
| training loss, never a self-written reference: | |
| ```bash | |
| llama-perplexity -m <student.gguf> -f corpus/calib_holdout.txt # workload | |
| llama-perplexity -m <student.gguf> -f corpus/calib_arabic_holdout.txt # arabic, apart | |
| ``` | |
| Target: student holdout PPL within **5%** of the teacher's on the workload stratum. | |
| Anything else is a number, not a result. | |