|
Download README.md from will-taggart/AFFECTOR-ARC: direct link, hf CLI and curl.
- Browser
- Download file 5.15 kB
-
https://huggingface.co/will-taggart/AFFECTOR-ARC/resolve/main/README.md
- Command line
-
hf download hf://will-taggart/AFFECTOR-ARC/README.md
-
curl -L -o README.md https://huggingface.co/will-taggart/AFFECTOR-ARC/resolve/main/README.md
5.15 kB
| inference: false | |
| language: | |
| - en | |
| tags: | |
| - activation-steering | |
| - research | |
| - pytorch | |
| - cuda | |
| **Technical paper:** [PDF](https://huggingface.co/will-taggart/AFFECTOR-ARC/resolve/main/paper/AFFECTOR-ARC.pdf?download=true) 路 [LaTeX source](https://huggingface.co/will-taggart/AFFECTOR-ARC/blob/main/paper/AFFECTOR-ARC.tex) 路 [Complete source ZIP](https://huggingface.co/will-taggart/AFFECTOR-ARC/resolve/main/paper/AFFECTOR-ARC-source.zip?download=true) 路 [Markdown](https://huggingface.co/will-taggart/AFFECTOR-ARC/blob/main/paper/TECHNICAL_PAPER.md) 路 [Figures and source](paper/) | |
| # AFFECTOR-ARC | |
| CUDA emotional-shape rewriting for Qwen3.5-0.8B on Virginia Tech ARC. This repository includes the engine source, command-line controls, setup script, and Slurm smoke test. Model weights are downloaded separately at the pinned revision. | |
| ## Rewrite a document | |
| After [setup](README.txt), run inside a GPU allocation: | |
| ```bash | |
| python run_arc.py --mode rewrite --text-file target.txt \ | |
| --geometry shape.json --style Restrained \ | |
| --strength 0.47 --budget 0.47 --inertia 0.2 \ | |
| --temperature 0 --top-p 0.95 --top-k 40 \ | |
| --output runs/rewrite.json | |
| ``` | |
| The geometry argument accepts an exported geometry or supported analysis JSON; omit it to use the default demonstration trajectory. Calibration is performed anew on CUDA. Output is saved incrementally to the JSON report and matching `.txt` file. Use a distinct output name for each run. This runner does not resume prior reports. | |
| **November 13 update:** the engine is now bundled as a versioned source snapshot rather than fetched from an older GH commit. [ENGINE_MANIFEST.json](ENGINE_MANIFEST.json) records source hashes. | |
| - **Minimal / Restrained / Balanced / Creative** prompts, with Restrained as the default. | |
| - Sentence-aware chunks of up to approximately 700 characters. | |
| - Original-length aim; 125% character ceiling within each original paragraph, carrying unused allowance forward within that paragraph only. | |
| - Sentence-boundary stopping begins at 85% of the input chunk length. A token safety allowance expands as needed, to at most 2,048 tokens. | |
| - Repetition and time limits stop runaway generation. Complete, nonrepetitive sentences are retained; raw returned drafts remain in the report. If no usable sentence exists, the original chunk is retained and flagged. | |
| - A failed chunk does not stop later chunks. Requested strength/budget/inertia are never silently reduced or retried at lower values. | |
| **Extreme values for strength, budget, and inertia may cause generation failures.** The runner also displays this warning in red in an ANSI-compatible terminal. | |
| ## Controls | |
| | Control | Meaning / default | | |
| |---|---| | |
| | `--strength` | Scale of the activation displacement; 0.12 | | |
| | `--budget` | Maximum displacement RMS relative to hidden-state RMS; 0.2 | | |
| | `--inertia` | Previous displacement weight during generation; 0.2 | | |
| | `--axis-top-k` | Number of emotional axes retained; 3 | | |
| | `--axis-mass` | Cumulative emotional-axis magnitude retained; 1 | | |
| | `--axis-temperature` | Emotional-axis magnitude exponent control; 1 | | |
| | `--temperature` | Token sampling temperature; 0 (greedy) | | |
| | `--top-p` | Token probability-mass cutoff; 0.95 | | |
| | `--top-k` | Token candidate count; 40 | | |
| | `--max-tokens` | Base token allowance; 512, expanded in rewrite mode | | |
| | `--time-limit` | Per-generation time limit in seconds; 120 | | |
| Activation controls use the imported geometry's settings unless explicitly overridden. Top-p and top-k are inactive at temperature 0; they do not control activation axes. Geometry coordinates are applied through hidden states, not inserted into the rewrite prompt. This CLI has no desktop fields or theme controls. | |
| ## CUDA checks | |
| ```bash | |
| python run_arc.py --mode smoke --text-file passage.txt --output runs/smoke.json | |
| # or: | |
| sbatch --account=YOUR_ALLOCATION smoke.sbatch | |
| ``` | |
| Smoke mode remains the default for compatibility. Without explicit overrides it retains the original rewrite instruction, 128-token allowance, 600-second time limit, and original decoding options. The new repetition guards and document caps apply only to opt-in rewrite mode. It checks zero-strength greedy text/token equivalence, nonzero injections, normal hook restoration, restored baseline text, and disabled parameter gradients. Smoke mode intentionally does not apply document-length salvage, so these equivalence checks compare raw generations. | |
| Seven CPU policy tests and Python/shell syntax checks passed for this update. The updated CUDA path has **not yet been run on an ARC GPU**. A prior version was reported by the author to pass on `tc-dgx005` on November 12, 2026; that does not validate this revision. Emotional effectiveness, semantic fidelity, and behavior at extreme settings are not guaranteed. | |
| See [technical report](https://huggingface.co/will-taggart/AFFECTOR-ARC/blob/main/paper/TECHNICAL_PAPER.md) for a self-contained derivation of the steering mathematics, document workflow, controls, and validation limits. Engine licensing is preserved in [ATLAS_LICENSE](ATLAS_LICENSE); Qwen weights retain their upstream license. No weights are redistributed here. | |