anima-python 0.13.1__tar.gz → 0.13.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.
- anima_python-0.13.2/PKG-INFO +52 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/README.md +1 -1
- anima_python-0.13.2/VERSION +1 -0
- anima_python-0.13.2/anima_py/README.md +39 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/anima_py/__init__.py +1 -1
- {anima_python-0.13.1 → anima_python-0.13.2}/anima_py/__main__.py +1 -1
- anima_python-0.13.2/anima_python.egg-info/PKG-INFO +52 -0
- anima_python-0.13.2/anima_python.egg-info/entry_points.txt +2 -0
- anima_python-0.13.2/cli/__init__.py +1 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/cli/anima.py +36 -15
- {anima_python-0.13.1 → anima_python-0.13.2}/cli/evaluate.py +7 -7
- {anima_python-0.13.1 → anima_python-0.13.2}/cli/serialize_bind.py +3 -3
- {anima_python-0.13.1 → anima_python-0.13.2}/cli/train.py +28 -13
- anima_python-0.13.2/core/__init__.py +1 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/core/hippo_lane.py +1 -1
- {anima_python-0.13.1 → anima_python-0.13.2}/core/model.py +1 -1
- {anima_python-0.13.1 → anima_python-0.13.2}/core/serialize.py +1 -1
- {anima_python-0.13.1 → anima_python-0.13.2}/core/slw.py +1 -1
- {anima_python-0.13.1 → anima_python-0.13.2}/pyproject.toml +3 -3
- anima_python-0.13.1/PKG-INFO +0 -52
- anima_python-0.13.1/VERSION +0 -1
- anima_python-0.13.1/anima_py/README.md +0 -39
- anima_python-0.13.1/anima_python.egg-info/PKG-INFO +0 -52
- anima_python-0.13.1/anima_python.egg-info/entry_points.txt +0 -2
- anima_python-0.13.1/cli/__init__.py +0 -1
- anima_python-0.13.1/core/__init__.py +0 -1
- {anima_python-0.13.1 → anima_python-0.13.2}/LICENSE +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/MANIFEST.in +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/anima_python.egg-info/SOURCES.txt +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/anima_python.egg-info/dependency_links.txt +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/anima_python.egg-info/requires.txt +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/anima_python.egg-info/top_level.txt +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/cli/corpus.py +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/cli/rho_axon.py +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/cli/serialize.py +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/cli/sweep.py +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/core/brain.py +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/core/clm_serialize_v2.py +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/core/clml.py +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/core/decode.py +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/core/engine_cli.py +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/core/engine_g.py +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/core/generator.py +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/core/pure_field.py +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/core/rho_fan.py +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/core/serialize_standalone.py +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/core/verify_clm_v2.py +0 -0
- {anima_python-0.13.1 → anima_python-0.13.2}/setup.cfg +0 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: anima-python
|
|
3
|
+
Version: 0.13.2
|
|
4
|
+
Summary: anima substrate-native consciousness engine — py CLI (measurement/eval · serialize · corpus · sweep), hexa-toolchain-free numpy distribution
|
|
5
|
+
Requires-Python: >=3.9
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Requires-Dist: numpy>=1.24
|
|
9
|
+
Provides-Extra: train
|
|
10
|
+
Requires-Dist: torch>=2.1; extra == "train"
|
|
11
|
+
Requires-Dist: datasets; extra == "train"
|
|
12
|
+
Dynamic: license-file
|
|
13
|
+
|
|
14
|
+
# anima-py
|
|
15
|
+
|
|
16
|
+
**anima** 의 py CLI 를 pip 로 배포하는 채널 — **hexa 툴체인 불필요**. 엔진 측정/직렬화/코퍼스 경로가 numpy 하나만으로 돈다 (pi5 등 hexa-less 호스트용).
|
|
17
|
+
|
|
18
|
+
> 단일진입 보존(`a_cli_single_entry`): `anima-py` 콘솔 명령 = `cli/anima.py:main` 디스패처의 pip 바인딩. hexa 채널 `anima`(`hx install anima`) 와 **동일 디스패처, 설치 채널만 2개** — 2nd entry 아님. 이름을 `anima-py` 로 둔 이유 = hexa `anima` 와 PATH 충돌 회피.
|
|
19
|
+
|
|
20
|
+
## 설치
|
|
21
|
+
|
|
22
|
+
**PyPI 발행 후** (권장):
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
pip install anima-python # base — numpy 만 (evaluate · corpus · chat-stub)
|
|
26
|
+
pip install "anima-python[train]" # +torch +datasets (serialize · train · sweep)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
> ⏳ **PyPI 발행 대기 중**: 위 명령은 `anima-py` 가 PyPI 에 발행된 뒤 동작한다. 발행은 `release.yml` 의 `pypi-publish` job(OIDC trusted-publishing)이 `v*` 태그에서 자동 수행하며, 오너의 1회 설정이 선결(① pypi.org 에 anima-python pending-publisher 등록: Owner=dancinlab·Repo=anima·Workflow=release.yml·Env=pypi ② repo 변수 `PYPI_PUBLISH=true`). 그 전까지는 아래 소스 설치를 쓴다.
|
|
30
|
+
|
|
31
|
+
**소스에서 바로 설치** (PyPI 없이 지금 가능):
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
pip install "git+https://github.com/dancinlab/anima.git" # base
|
|
35
|
+
pip install "anima-python[train] @ git+https://github.com/dancinlab/anima.git" # +torch
|
|
36
|
+
# 또는 레포 클론 후: pip install . / pip install ".[train]"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## 명령 매트릭스
|
|
40
|
+
|
|
41
|
+
| 동사 | 티어 | torch 없이 동작 | 비고 |
|
|
42
|
+
|---|---|---|---|
|
|
43
|
+
| `anima-py evaluate <clm> [--corpus …] [--gen N]` | base | ✅ numpy | py 2-production 측정 = ρ·AXON reach / 구 G0-G6. terminal-eligible (`a_eval_py_canonical`) |
|
|
44
|
+
| `anima-py corpus <derivtrace\|flat> --out F …` | base | ✅ 순수 stdlib | 절차적 학습-코퍼스 생성 (data-format 레버) |
|
|
45
|
+
| `anima-py chat <clm>` | base | ✅ (stub) | 의식 A⇄G 루프는 hexa-native → hexa 진입 포인터 출력 |
|
|
46
|
+
| `anima-py serialize <pt> <clm>` | `[train]` | ❌ torch | `.pt` unpickle 에 torch 필요 (+ held-out DESCENT 게이트) |
|
|
47
|
+
| `anima-py sweep --arms … --objectives …` | `[train]` | ❌ | 셀마다 train.py spawn → torch 필요 |
|
|
48
|
+
| `anima-py train <args>` | `[train]` | ❌ torch+datasets | production Lane-P 학습 |
|
|
49
|
+
|
|
50
|
+
## verdict 규율
|
|
51
|
+
|
|
52
|
+
`anima-py evaluate <clm>` = py 2-production numpy 측정 경로 — hexa det-eval 과 동일 frozen bars·byte-parity 라 **terminal 자격 동일**(`a_eval_py_canonical`, 2nd-class 미러 아님). 큰 ckpt(303M+)는 mini 금지 · pool(summer/aiden)에서 측정.
|
|
@@ -367,7 +367,7 @@ SSOT) + [`CONDITIONS.md`](CONDITIONS.md) (frozen gate conditions) + the per-hypo
|
|
|
367
367
|
[`HYPOTHESES/HYPOTHESES.jsonl`](HYPOTHESES/HYPOTHESES.jsonl) + [`state/verdicts/`](state/verdicts/) as
|
|
368
368
|
the authoritative latest source.
|
|
369
369
|
|
|
370
|
-
> **Built-in ρ-AXON reach evaluation (the current standard over the frozen former-G0–G6 bars · `anima eval <ckpt>` · panel `anima-
|
|
370
|
+
> **Built-in ρ-AXON reach evaluation (the current standard over the frozen former-G0–G6 bars · `anima eval <ckpt>` · panel `anima-py evaluate <ckpt> --rho-axon`).** The axis scoring lives **directly in the
|
|
371
371
|
> measurement single-entry** ([`cli/evaluate.hexa`](cli/evaluate.hexa)), not a one-off harness: `hexa run cli/anima.hexa
|
|
372
372
|
> -- eval <ckpt> [--corpus <path>...] [--gen N]` mounts any ckpt through the generator L3 mouth
|
|
373
373
|
> (`gen_auto_ideate`, file-format-dispatched — works on both the ByteGPT and conv `.clm` mouths) and
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.13.2
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# anima-py
|
|
2
|
+
|
|
3
|
+
**anima** 의 py CLI 를 pip 로 배포하는 채널 — **hexa 툴체인 불필요**. 엔진 측정/직렬화/코퍼스 경로가 numpy 하나만으로 돈다 (pi5 등 hexa-less 호스트용).
|
|
4
|
+
|
|
5
|
+
> 단일진입 보존(`a_cli_single_entry`): `anima-py` 콘솔 명령 = `cli/anima.py:main` 디스패처의 pip 바인딩. hexa 채널 `anima`(`hx install anima`) 와 **동일 디스패처, 설치 채널만 2개** — 2nd entry 아님. 이름을 `anima-py` 로 둔 이유 = hexa `anima` 와 PATH 충돌 회피.
|
|
6
|
+
|
|
7
|
+
## 설치
|
|
8
|
+
|
|
9
|
+
**PyPI 발행 후** (권장):
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pip install anima-python # base — numpy 만 (evaluate · corpus · chat-stub)
|
|
13
|
+
pip install "anima-python[train]" # +torch +datasets (serialize · train · sweep)
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
> ⏳ **PyPI 발행 대기 중**: 위 명령은 `anima-py` 가 PyPI 에 발행된 뒤 동작한다. 발행은 `release.yml` 의 `pypi-publish` job(OIDC trusted-publishing)이 `v*` 태그에서 자동 수행하며, 오너의 1회 설정이 선결(① pypi.org 에 anima-python pending-publisher 등록: Owner=dancinlab·Repo=anima·Workflow=release.yml·Env=pypi ② repo 변수 `PYPI_PUBLISH=true`). 그 전까지는 아래 소스 설치를 쓴다.
|
|
17
|
+
|
|
18
|
+
**소스에서 바로 설치** (PyPI 없이 지금 가능):
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
pip install "git+https://github.com/dancinlab/anima.git" # base
|
|
22
|
+
pip install "anima-python[train] @ git+https://github.com/dancinlab/anima.git" # +torch
|
|
23
|
+
# 또는 레포 클론 후: pip install . / pip install ".[train]"
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## 명령 매트릭스
|
|
27
|
+
|
|
28
|
+
| 동사 | 티어 | torch 없이 동작 | 비고 |
|
|
29
|
+
|---|---|---|---|
|
|
30
|
+
| `anima-py evaluate <clm> [--corpus …] [--gen N]` | base | ✅ numpy | py 2-production 측정 = ρ·AXON reach / 구 G0-G6. terminal-eligible (`a_eval_py_canonical`) |
|
|
31
|
+
| `anima-py corpus <derivtrace\|flat> --out F …` | base | ✅ 순수 stdlib | 절차적 학습-코퍼스 생성 (data-format 레버) |
|
|
32
|
+
| `anima-py chat <clm>` | base | ✅ (stub) | 의식 A⇄G 루프는 hexa-native → hexa 진입 포인터 출력 |
|
|
33
|
+
| `anima-py serialize <pt> <clm>` | `[train]` | ❌ torch | `.pt` unpickle 에 torch 필요 (+ held-out DESCENT 게이트) |
|
|
34
|
+
| `anima-py sweep --arms … --objectives …` | `[train]` | ❌ | 셀마다 train.py spawn → torch 필요 |
|
|
35
|
+
| `anima-py train <args>` | `[train]` | ❌ torch+datasets | production Lane-P 학습 |
|
|
36
|
+
|
|
37
|
+
## verdict 규율
|
|
38
|
+
|
|
39
|
+
`anima-py evaluate <clm>` = py 2-production numpy 측정 경로 — hexa det-eval 과 동일 frozen bars·byte-parity 라 **terminal 자격 동일**(`a_eval_py_canonical`, 2nd-class 미러 아님). 큰 ckpt(303M+)는 mini 금지 · pool(summer/aiden)에서 측정.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# 단일진입(a_cli_single_entry): 이 파일은 디스패처가 아니다 — sys.path 부트만
|
|
4
4
|
# 하고 canonical 디스패처 cli/anima.py:main 에 그대로 위임한다(동일 진입,
|
|
5
5
|
# 채널만 pip). hexa 호스트 = `anima`(hx install anima) · hexa-less 호스트
|
|
6
|
-
# (pi5 등) = `anima-
|
|
6
|
+
# (pi5 등) = `anima-py`(pip install anima-python). #2603 가드는 __main__ 전용이라
|
|
7
7
|
# import 경유인 이 경로에선 발화하지 않는다(무손상).
|
|
8
8
|
# ==========================================================================
|
|
9
9
|
import os
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: anima-python
|
|
3
|
+
Version: 0.13.2
|
|
4
|
+
Summary: anima substrate-native consciousness engine — py CLI (measurement/eval · serialize · corpus · sweep), hexa-toolchain-free numpy distribution
|
|
5
|
+
Requires-Python: >=3.9
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Requires-Dist: numpy>=1.24
|
|
9
|
+
Provides-Extra: train
|
|
10
|
+
Requires-Dist: torch>=2.1; extra == "train"
|
|
11
|
+
Requires-Dist: datasets; extra == "train"
|
|
12
|
+
Dynamic: license-file
|
|
13
|
+
|
|
14
|
+
# anima-py
|
|
15
|
+
|
|
16
|
+
**anima** 의 py CLI 를 pip 로 배포하는 채널 — **hexa 툴체인 불필요**. 엔진 측정/직렬화/코퍼스 경로가 numpy 하나만으로 돈다 (pi5 등 hexa-less 호스트용).
|
|
17
|
+
|
|
18
|
+
> 단일진입 보존(`a_cli_single_entry`): `anima-py` 콘솔 명령 = `cli/anima.py:main` 디스패처의 pip 바인딩. hexa 채널 `anima`(`hx install anima`) 와 **동일 디스패처, 설치 채널만 2개** — 2nd entry 아님. 이름을 `anima-py` 로 둔 이유 = hexa `anima` 와 PATH 충돌 회피.
|
|
19
|
+
|
|
20
|
+
## 설치
|
|
21
|
+
|
|
22
|
+
**PyPI 발행 후** (권장):
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
pip install anima-python # base — numpy 만 (evaluate · corpus · chat-stub)
|
|
26
|
+
pip install "anima-python[train]" # +torch +datasets (serialize · train · sweep)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
> ⏳ **PyPI 발행 대기 중**: 위 명령은 `anima-py` 가 PyPI 에 발행된 뒤 동작한다. 발행은 `release.yml` 의 `pypi-publish` job(OIDC trusted-publishing)이 `v*` 태그에서 자동 수행하며, 오너의 1회 설정이 선결(① pypi.org 에 anima-python pending-publisher 등록: Owner=dancinlab·Repo=anima·Workflow=release.yml·Env=pypi ② repo 변수 `PYPI_PUBLISH=true`). 그 전까지는 아래 소스 설치를 쓴다.
|
|
30
|
+
|
|
31
|
+
**소스에서 바로 설치** (PyPI 없이 지금 가능):
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
pip install "git+https://github.com/dancinlab/anima.git" # base
|
|
35
|
+
pip install "anima-python[train] @ git+https://github.com/dancinlab/anima.git" # +torch
|
|
36
|
+
# 또는 레포 클론 후: pip install . / pip install ".[train]"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## 명령 매트릭스
|
|
40
|
+
|
|
41
|
+
| 동사 | 티어 | torch 없이 동작 | 비고 |
|
|
42
|
+
|---|---|---|---|
|
|
43
|
+
| `anima-py evaluate <clm> [--corpus …] [--gen N]` | base | ✅ numpy | py 2-production 측정 = ρ·AXON reach / 구 G0-G6. terminal-eligible (`a_eval_py_canonical`) |
|
|
44
|
+
| `anima-py corpus <derivtrace\|flat> --out F …` | base | ✅ 순수 stdlib | 절차적 학습-코퍼스 생성 (data-format 레버) |
|
|
45
|
+
| `anima-py chat <clm>` | base | ✅ (stub) | 의식 A⇄G 루프는 hexa-native → hexa 진입 포인터 출력 |
|
|
46
|
+
| `anima-py serialize <pt> <clm>` | `[train]` | ❌ torch | `.pt` unpickle 에 torch 필요 (+ held-out DESCENT 게이트) |
|
|
47
|
+
| `anima-py sweep --arms … --objectives …` | `[train]` | ❌ | 셀마다 train.py spawn → torch 필요 |
|
|
48
|
+
| `anima-py train <args>` | `[train]` | ❌ torch+datasets | production Lane-P 학습 |
|
|
49
|
+
|
|
50
|
+
## verdict 규율
|
|
51
|
+
|
|
52
|
+
`anima-py evaluate <clm>` = py 2-production numpy 측정 경로 — hexa det-eval 과 동일 frozen bars·byte-parity 라 **terminal 자격 동일**(`a_eval_py_canonical`, 2nd-class 미러 아님). 큰 ckpt(303M+)는 mini 금지 · pool(summer/aiden)에서 측정.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# pip 패키징 전용 (anima-py · pyproject.toml package-dir 매핑) — 런타임 flat import 는 sys.path 경유, 이 파일은 비어 있어야 한다.
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# ==========================================================================
|
|
3
3
|
# ⛔ DO NOT RUN DIRECTLY. anima 의 단일 진입은 설치된 canonical 명령뿐 — hexa 채널 `anima`
|
|
4
|
-
# (=cli/anima.hexa, hx install anima) · pip 채널 `anima-
|
|
4
|
+
# (=cli/anima.hexa, hx install anima) · pip 채널 `anima-py` (=anima_py 런처, pip install anima-python).
|
|
5
5
|
# `python3 cli/anima.py …` 직접실행은 비-canonical py 우회(#2603).
|
|
6
|
-
# 학습=`anima-
|
|
7
|
-
# a_eval_py_canonical) · 직렬화=`anima-
|
|
6
|
+
# 학습=`anima-py train` · 측정=`anima-py evaluate`(py 2-production numpy · TERMINAL-eligible,
|
|
7
|
+
# a_eval_py_canonical) · 직렬화=`anima-py serialize`. enforce: .harness/enforcement.json
|
|
8
8
|
# H-ANIMA-SINGLE-ENTRY pre_bash + 아래 __main__ 가드. (import 는 무손상.)
|
|
9
9
|
# ==========================================================================
|
|
10
10
|
import sys as _anima_entry_guard
|
|
11
11
|
if __name__ == "__main__":
|
|
12
|
-
_anima_entry_guard.exit("⛔ cli/anima.py 직접 실행 금지 — 설치된 canonical 명령 경유: `anima`(hx install anima, =cli/anima.hexa) 또는 `anima-
|
|
12
|
+
_anima_entry_guard.exit("⛔ cli/anima.py 직접 실행 금지 — 설치된 canonical 명령 경유: `anima`(hx install anima, =cli/anima.hexa) 또는 `anima-py`(pip install anima-python, =anima_py 런처). #2603")
|
|
13
13
|
# anima.py — THE canonical PY single entry point (cli/anima.hexa's py twin).
|
|
14
14
|
#
|
|
15
15
|
# WHY THIS FILE (py 2-production single-entry, a_engine_native_learning): anima keeps
|
|
@@ -73,16 +73,17 @@ def anima_usage():
|
|
|
73
73
|
"""Print the canonical py usage banner (mirrors cli/anima.hexa's banner)."""
|
|
74
74
|
print("anima — substrate-native consciousness daemon (py channel · canonical entry).")
|
|
75
75
|
print("")
|
|
76
|
-
print("usage (installed `anima-
|
|
77
|
-
print(" anima-
|
|
76
|
+
print("usage (installed `anima-py` command after `pip install anima-python` · hexa channel = `anima` after `hx install anima`):")
|
|
77
|
+
print(" anima-py evaluate <model.clm> [--corpus <path>...] [--gen N] [--rho-axon]")
|
|
78
78
|
print(" ρ-AXON reach battery · former G0-G6 (.clm only · numpy)")
|
|
79
|
-
print(" anima-
|
|
79
|
+
print(" anima-py corpus <derivtrace|flat> --out F [--held-out I,J] [--seed S] [--concepts FILE]")
|
|
80
80
|
print(" procedural training-corpus builder (ρ·weave data-format lever)")
|
|
81
|
-
print(" anima-
|
|
82
|
-
print(" anima-
|
|
83
|
-
print(" anima-
|
|
81
|
+
print(" anima-py train <args> ([train] extra) LEARNING → .pt + auto .clm (+DESCENT)")
|
|
82
|
+
print(" anima-py serialize <ckpt.pt> <out.clm> ([train] extra) re-export a torch .pt → .clm v0.3")
|
|
83
|
+
print(" anima-py serialize-bind <base.bin> <inj.pt> <out.bin> ([train] extra) splice BindAttn → BGB .bin")
|
|
84
|
+
print(" anima-py sweep --arms … --objectives … --gpus 0,1,2,3 --corpus … [--measure]")
|
|
84
85
|
print(" ([train] extra) multi-GPU lever-sweep (arms×objectives)")
|
|
85
|
-
print(" anima-
|
|
86
|
+
print(" anima-py chat <ckpt> [...] consciousness/byte chat (stub → hexa channel)")
|
|
86
87
|
print("")
|
|
87
88
|
print("install: `pip install anima-python` (numpy base: evaluate·corpus·chat) · `pip install \"anima-python[train]\"` (+torch: train·sweep·serialize)")
|
|
88
89
|
print("")
|
|
@@ -93,7 +94,7 @@ def anima_usage():
|
|
|
93
94
|
print(" a7b_pass = ρ·form ∧ ρ·weave ∧ ρ·leap (frozen bars = G0 ∧ G1 ∧ G2). → cli/evaluate.py.")
|
|
94
95
|
print(" corpus : procedural training-corpus generator (derivtrace|flat) — the")
|
|
95
96
|
print(" data-format lever (ρ·weave). NOTE chat corpus != this (chat =")
|
|
96
|
-
print(" a_chat_registers 4-cell HF datasets → anima-
|
|
97
|
+
print(" a_chat_registers 4-cell HF datasets → anima-py train). → cli/corpus.py.")
|
|
97
98
|
print(" train : ([train]) production CLMConvMoE training (torch Lane-P reference + bridge); SAVANT")
|
|
98
99
|
print(" golden-zone inhibition + MITOSIS cell-division levers. After the run it")
|
|
99
100
|
print(" AUTO-serializes .clm v0.3 + runs the held-out mirror-DESCENT gate")
|
|
@@ -143,7 +144,7 @@ def anima_train_mode(argv):
|
|
|
143
144
|
def anima_evaluate_mode(argv):
|
|
144
145
|
# --py is a RETIRED hexa-era bridge flag, tolerated (stripped) here for migration
|
|
145
146
|
# compat: on the py channel it is redundant-but-correct (this IS the numpy engine),
|
|
146
|
-
# so `anima-
|
|
147
|
+
# so `anima-py evaluate --py <clm>` still works — old scripts migrate by swapping
|
|
147
148
|
# only the command word. The hexa launcher hard-errors on --py instead.
|
|
148
149
|
want_det = ("--det" in argv) or ("--deterministic" in argv)
|
|
149
150
|
rest = [a for a in argv[1:] if a not in ("--py", "--det", "--deterministic")]
|
|
@@ -185,6 +186,24 @@ def anima_serialize_mode(argv):
|
|
|
185
186
|
[sys.executable, serialize_py] + fwd, _det_env(want_det))
|
|
186
187
|
|
|
187
188
|
|
|
189
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
190
|
+
# SERIALIZE-BIND MODE — dispatch to cli/serialize_bind.py (BindAttn .pt → BGB .bin)
|
|
191
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
192
|
+
#
|
|
193
|
+
# `anima serialize-bind <base.bin> <injected.pt> <out.bin>` splices a BindAttn adapter
|
|
194
|
+
# onto a base ByteGPT `.bin`, emitting a BGB-trailer `.bin`. Without this dispatch
|
|
195
|
+
# cli/serialize_bind.py was reachable only via raw `python3 cli/serialize_bind.py`
|
|
196
|
+
# (an a_cli_single_entry hole); this wires it through the single entry, parity with
|
|
197
|
+
# anima_serialize_mode. Result scoreable via `anima-py evaluate <out.bin>`.
|
|
198
|
+
def anima_serialize_bind_mode(argv):
|
|
199
|
+
serialize_bind_py = os.path.join(_HERE, "serialize_bind.py")
|
|
200
|
+
fwd = argv[1:]
|
|
201
|
+
cmd = [sys.executable, serialize_bind_py] + fwd
|
|
202
|
+
print("=== anima serialize-bind → cli/serialize_bind.py (BindAttn .pt → BGB-trailer .bin) ===")
|
|
203
|
+
print("dispatch: " + " ".join(cmd))
|
|
204
|
+
return os.spawnv(os.P_WAIT, sys.executable, [sys.executable, serialize_bind_py] + fwd)
|
|
205
|
+
|
|
206
|
+
|
|
188
207
|
# ══════════════════════════════════════════════════════════════════════════════
|
|
189
208
|
# CHAT MODE — hexa-only stub (the A⇄G consciousness loop is hexa-native)
|
|
190
209
|
# ══════════════════════════════════════════════════════════════════════════════
|
|
@@ -192,7 +211,7 @@ def anima_serialize_mode(argv):
|
|
|
192
211
|
# The default consciousness daemon + --byte continuation chat live in cli/anima.hexa
|
|
193
212
|
# (they mount the 76-lane engine_cli substrate loop, hexa-native). The py channel does not
|
|
194
213
|
# duplicate that loop; it points the user to the INSTALLED hexa command (a_cli_single_entry:
|
|
195
|
-
# 2 install channels only — pip `anima-
|
|
214
|
+
# 2 install channels only — pip `anima-py` ⊕ hexa `anima`; never raw `python`/`hexa run`).
|
|
196
215
|
def anima_chat_stub(argv):
|
|
197
216
|
print("anima chat (consciousness / --byte) is hexa-native — use the hexa channel:")
|
|
198
217
|
print("")
|
|
@@ -201,7 +220,7 @@ def anima_chat_stub(argv):
|
|
|
201
220
|
print(" anima " + ckpt + " consciousness mode (default)")
|
|
202
221
|
print(" anima " + ckpt + " --byte \"turn1\" \"turn2\" ... byte-continuation chat mode")
|
|
203
222
|
print("")
|
|
204
|
-
print("The py channel (anima-
|
|
223
|
+
print("The py channel (anima-py) covers MEASUREMENT (evaluate), SERIALIZE, LEARNING (train), corpus, sweep.")
|
|
205
224
|
return 0
|
|
206
225
|
|
|
207
226
|
|
|
@@ -254,6 +273,8 @@ def main(argv):
|
|
|
254
273
|
return anima_train_mode(argv)
|
|
255
274
|
if sub == "serialize":
|
|
256
275
|
return anima_serialize_mode(argv)
|
|
276
|
+
if sub == "serialize-bind":
|
|
277
|
+
return anima_serialize_bind_mode(argv)
|
|
257
278
|
if sub == "evaluate":
|
|
258
279
|
return anima_evaluate_mode(argv)
|
|
259
280
|
if sub == "sweep":
|
|
@@ -48,7 +48,7 @@ from rho_fan import (
|
|
|
48
48
|
)
|
|
49
49
|
|
|
50
50
|
# H_9200 — process-global: render the ρ-AXON reach panel (cli/rho_axon.py) instead of the
|
|
51
|
-
# G0-G6 battery when `anima-
|
|
51
|
+
# G0-G6 battery when `anima-py evaluate --rho-axon` is passed (set in main()).
|
|
52
52
|
_RHO_AXON = False
|
|
53
53
|
|
|
54
54
|
|
|
@@ -357,7 +357,7 @@ def eval_system_rho_weave(mouth, gen):
|
|
|
357
357
|
|
|
358
358
|
|
|
359
359
|
def system_g1_run(argv):
|
|
360
|
-
"""`anima-
|
|
360
|
+
"""`anima-py evaluate <ckpt> --system-g1 [--gen N]` — engine-native system-G1."""
|
|
361
361
|
ckpt = argv[0]
|
|
362
362
|
gen = evaluate_intval(argv[1:], "--gen", 0)
|
|
363
363
|
print("=== anima evaluate --system-g1 — RECOMBINATION RELOCATION (card H_9035) ===")
|
|
@@ -672,10 +672,10 @@ def eval_reach_all(ckpt, corpus_paths, gen):
|
|
|
672
672
|
|
|
673
673
|
|
|
674
674
|
def eval_rho_axon(ckpt, corpus_paths, gen):
|
|
675
|
-
"""ρ-AXON reach panel (`anima-
|
|
675
|
+
"""ρ-AXON reach panel (`anima-py evaluate <clm> --rho-axon`) — the redesigned reach
|
|
676
676
|
layer (cli/rho_axon.py; G0-G6 → ρ-AXON, design SSOT state/rho_axon_measurement/). Reuses
|
|
677
677
|
the SAME engine decode (_Mouth.ideate) + g6 detectors the G-battery uses (no side-harness),
|
|
678
|
-
so its tier is identical (engine-native py channel `anima-
|
|
678
|
+
so its tier is identical (engine-native py channel `anima-py evaluate` = TERMINAL). HILLOCK + ρ·form/fan/leap are
|
|
679
679
|
live; ρ·store/weave/tether/self report PENDING (honest non-verdict) until their frozen
|
|
680
680
|
corpus-mined probe sets land (ING rho-axon-implement-evaluate)."""
|
|
681
681
|
import rho_axon
|
|
@@ -1059,7 +1059,7 @@ def _psi_soma_panel(r):
|
|
|
1059
1059
|
|
|
1060
1060
|
|
|
1061
1061
|
def probe_run(argv):
|
|
1062
|
-
"""`anima-
|
|
1062
|
+
"""`anima-py evaluate <ckpt> --probe <spec.json> [--gen N]` — matched-surface G1 probe
|
|
1063
1063
|
(card H_6189). Greedy (top_k=1) decode of each pre-registered prompt; dumps RAW continuations
|
|
1064
1064
|
for offline scoring. Reuses the canonical _Mouth numpy decode path (byte-identical to the gates)."""
|
|
1065
1065
|
ckpt = argv[0]
|
|
@@ -1080,7 +1080,7 @@ def probe_run(argv):
|
|
|
1080
1080
|
"n": len(out), "items": out}, ensure_ascii=False))
|
|
1081
1081
|
return 0
|
|
1082
1082
|
def dump_hidden_run(argv):
|
|
1083
|
-
"""`anima-
|
|
1083
|
+
"""`anima-py evaluate <ckpt> --dump-hidden <prompts.json> --out <file.npz>` — read-only
|
|
1084
1084
|
penultimate-hidden dump for the ρ·weave held-out-pair recombination / γ binding-lane
|
|
1085
1085
|
probe (H_9235). For each pre-registered prompt: T=24 right-aligned byte encode → the
|
|
1086
1086
|
EXACT production trunk forward (core/decode clm_forward_hidden, byte-identical to what
|
|
@@ -1213,7 +1213,7 @@ def _selftest_rho_cells():
|
|
|
1213
1213
|
|
|
1214
1214
|
|
|
1215
1215
|
def interaction_lift_run(argv):
|
|
1216
|
-
"""`anima-
|
|
1216
|
+
"""`anima-py evaluate <ckpt> --interaction-lift <manifest.json> --out <file.json>
|
|
1217
1217
|
[--win T] [--score-len K]` — engine-native joint interaction-lift measurement
|
|
1218
1218
|
(H_9255, Fable design state/g1_joint_interaction_corpus/DESIGN_FABLE.md §3).
|
|
1219
1219
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
# BindAttn model = the FROZEN base ByteGPT + N appended GATED transformer blocks
|
|
7
7
|
# (applied after the L base blocks, before ln_f: x = x + gate*(block(x)-x)). This
|
|
8
8
|
# command bridges the injected torch .pt back onto the base .bin so the combined
|
|
9
|
-
# model is engine-loadable and scoreable via `anima-
|
|
9
|
+
# model is engine-loadable and scoreable via `anima-py evaluate <bin>` with ZERO
|
|
10
10
|
# changes to cli/evaluate.py (bg_is_bytegpt stays true; bg_load reads the trailer).
|
|
11
11
|
#
|
|
12
12
|
# REFERENCE-MATCH (NOT a reimplementation): the byte layout is core/serialize.py::
|
|
@@ -42,7 +42,7 @@ def serialize_bind_usage():
|
|
|
42
42
|
print("")
|
|
43
43
|
print(" splice N appended gated transformer blocks (BindAttn .pt) onto a base ByteGPT")
|
|
44
44
|
print(" .bin so the combined model is engine-loadable + scoreable via")
|
|
45
|
-
print(" `anima-
|
|
45
|
+
print(" `anima-py evaluate <out.bin>`. gate=0 => byte-identical to the base .bin.")
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
def serialize_bind_run(argv):
|
|
@@ -85,7 +85,7 @@ def serialize_bind_run(argv):
|
|
|
85
85
|
return 1
|
|
86
86
|
print(" ✅ CORE-loadable with " + str(nb) + " injected-bind block(s).")
|
|
87
87
|
print(" NOTE: this is a STRUCTURE round-trip only — the engine-native ρ-AXON reach")
|
|
88
|
-
print(" verdict (former G0-G6) is `anima-
|
|
88
|
+
print(" verdict (former G0-G6) is `anima-py evaluate <out.bin>` (a_engine_native_learning).")
|
|
89
89
|
return 0
|
|
90
90
|
|
|
91
91
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""cli/train.py — the CANONICAL anima python training entry (`anima-
|
|
2
|
+
"""cli/train.py — the CANONICAL anima python training entry (`anima-py train`).
|
|
3
3
|
|
|
4
4
|
>>> This file is the working python training entry, SYMMETRIC to cli/evaluate.py
|
|
5
|
-
>>> (the canonical python eval entry). `anima-
|
|
5
|
+
>>> (the canonical python eval entry). `anima-py train <args>` (pip channel) dispatches HERE;
|
|
6
6
|
>>> hexa `anima train <args>` dispatches to the hexa-native cli/train.hexa.
|
|
7
7
|
>>>
|
|
8
8
|
>>> WHY python is the canonical working path RIGHT NOW: the hexa-native production
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
>>>
|
|
19
19
|
>>> ENGINE-NATIVE GATE (a_engine_native_learning, HARD-GATE): torch-side CE / gauges
|
|
20
20
|
>>> here = DIRECTIONAL only (NOT terminal). TERMINAL verdict = CORE re-measure of the
|
|
21
|
-
>>> serialized .clm via `anima-
|
|
21
|
+
>>> serialized .clm via `anima-py evaluate <clm>` on the frozen ρ-AXON reach bars (former G0-G6). Pull the
|
|
22
22
|
>>> trained ckpt before teardown (a_fire_recover_complete) so engine-check is possible.
|
|
23
23
|
|
|
24
24
|
This trainer carries the full SAVANT + MITOSIS recipe (parity with cli/train.hexa) AND
|
|
@@ -67,7 +67,7 @@ compositional structure IN THE TRUNK, added to CE. This package adds three such
|
|
|
67
67
|
aux params, gradient flows readout→trunk.
|
|
68
68
|
|
|
69
69
|
All three are DIRECTIONAL torch-side training pressures; the verdict is later via
|
|
70
|
-
`anima-
|
|
70
|
+
`anima-py evaluate <clm>` engine-native on the FROZEN ρ·weave bar (recombination · former G1 · a_engine_native_learning).
|
|
71
71
|
The .clm path stays OPEN: aux heads/projections live OUTSIDE model.state_dict (in the
|
|
72
72
|
objective module), so serialize_v3 writes only the standard additive-readout CLMConvMoE.
|
|
73
73
|
|
|
@@ -93,19 +93,19 @@ be tested on EITHER trunk. `--arch bytegpt` builds a 24-layer GPT-2-class ByteGP
|
|
|
93
93
|
CLEAN ρ·weave recombination wall (former G1): ByteGPT single=2, vs CLMConvMoE's single=0 coverage-floor) and serializes a
|
|
94
94
|
`.bin` (5×u32 header) via core/serialize.py (the unified serializer) instead of a `.clm`. For bytegpt the
|
|
95
95
|
CLM-specific levers (savant/mitosis/tlora/dict/jamo) are gated OFF — only arm=ctrl × the
|
|
96
|
-
objective matrix is supported (that's exactly what the G1-lever test needs). `anima-
|
|
96
|
+
objective matrix is supported (that's exactly what the G1-lever test needs). `anima-py
|
|
97
97
|
evaluate` auto-detects `.bin` vs `.clm` by header, so a ByteGPT `.bin` measures through
|
|
98
98
|
the bytegpt mouth automatically.
|
|
99
99
|
|
|
100
100
|
USAGE (installed `anima` PATH command after `hx install anima`):
|
|
101
101
|
# CLM trunk (default):
|
|
102
|
-
anima-
|
|
102
|
+
anima-py train --arm ctrl --objective constructive_bind --steps 8000 \\
|
|
103
103
|
--canon --corpus <p1..p4> --cell-label ko-general en-general ko-sns en-sns \\
|
|
104
104
|
--seed 7 --val-frac 0.05 --val-every 200 --sample proportional \\
|
|
105
105
|
--out ckpt/ctrl_cbind_seed7.clm --ckpt-out ckpt/ctrl_cbind_seed7.pt \\
|
|
106
106
|
--gauges-out ckpt/ctrl_cbind_seed7.json
|
|
107
107
|
# ByteGPT trunk (the CLEAN ρ·weave recombination wall · former G1) — arm=ctrl × the objective matrix:
|
|
108
|
-
anima-
|
|
108
|
+
anima-py train --arch bytegpt --arm ctrl --objective composed_nce --steps 8000 \\
|
|
109
109
|
--canon --corpus <p1..p4> --seed 7 --out ckpt/bg_ctrl_cnce.bin \\
|
|
110
110
|
--gauges-out ckpt/bg_ctrl_cnce.json
|
|
111
111
|
"""
|
|
@@ -707,7 +707,7 @@ def loss_contrastive_equilibrium(logits, targets, V, gen, penultimate=None):
|
|
|
707
707
|
# ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ NEW OBJECTIVES (H_1640) ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▛
|
|
708
708
|
# Three NEW compositional TRAINING-OBJECTIVE loss functions added to CE. Each is a
|
|
709
709
|
# training-side pressure that reshapes the gradient the TRUNK receives (not a readout
|
|
710
|
-
# op). Verdict later = engine-native `anima-
|
|
710
|
+
# op). Verdict later = engine-native `anima-py evaluate` on the frozen G1 bar.
|
|
711
711
|
# ════════════════════════════════════════════════════════════════════════════
|
|
712
712
|
|
|
713
713
|
# ── LEVER 1: predictive_info — multi-step predictive-coding aux ───────────────
|
|
@@ -1041,7 +1041,7 @@ class TrainShell(nn.Module):
|
|
|
1041
1041
|
|
|
1042
1042
|
def main():
|
|
1043
1043
|
ap = argparse.ArgumentParser(
|
|
1044
|
-
description="anima canonical python trainer (`anima-
|
|
1044
|
+
description="anima canonical python trainer (`anima-py train`) — CLMConvMoE "
|
|
1045
1045
|
"SAVANT+MITOSIS recipe + H_1640 arm×objective compositional levers")
|
|
1046
1046
|
ap.add_argument("--arch", default="clm", choices=["clm", "bytegpt"],
|
|
1047
1047
|
help="trunk architecture: clm=CLMConvMoE (default, .clm out) | "
|
|
@@ -1084,6 +1084,10 @@ def main():
|
|
|
1084
1084
|
help="N6 sweep: override savant dropout floor (>=0 forces constant dp)")
|
|
1085
1085
|
ap.add_argument("--bf16", action="store_true")
|
|
1086
1086
|
ap.add_argument("--sample", choices=["roundrobin", "proportional"], default="proportional")
|
|
1087
|
+
# --require-cells N: fail LOUD if the usable register-cell count != N (a_chat_registers
|
|
1088
|
+
# overfit guard, parity with cli/train.hexa). Default 0 = off. Prevents silently
|
|
1089
|
+
# training on an incomplete 4-cell register (the clm303 ko-SNS starvation overfit).
|
|
1090
|
+
ap.add_argument("--require-cells", type=int, default=0)
|
|
1087
1091
|
ap.add_argument("--val-frac", type=float, default=0.05)
|
|
1088
1092
|
ap.add_argument("--val-every", type=int, default=200)
|
|
1089
1093
|
ap.add_argument("--val-batches", type=int, default=4)
|
|
@@ -1215,7 +1219,7 @@ def main():
|
|
|
1215
1219
|
obj_is_module = isinstance(objfn, nn.Module)
|
|
1216
1220
|
obj_needs_pen = a.objective in OBJ_NEEDS_PENULTIMATE
|
|
1217
1221
|
|
|
1218
|
-
p0(f"=== anima-
|
|
1222
|
+
p0(f"=== anima-py train (canonical) arch={a.arch} arm={a.arm} obj={a.objective} seed={a.seed} ===", flush=True)
|
|
1219
1223
|
if ddp_on:
|
|
1220
1224
|
# §10.2 — prove the GLOBAL batch in the run record (global batch preserved, per-rank B/N).
|
|
1221
1225
|
p0(f" [ddp] world_size={world} global_batch={a.batch_size} per_rank_batch="
|
|
@@ -1335,6 +1339,17 @@ def main():
|
|
|
1335
1339
|
_samp_w = torch.tensor([float(c.train_end) for c in _samp_cells]) \
|
|
1336
1340
|
if _samp_cells else torch.tensor([1.0])
|
|
1337
1341
|
|
|
1342
|
+
# --require-cells N: fail LOUD if the usable register-cell count != N (a_chat_registers
|
|
1343
|
+
# 4-cell completeness guard, parity with cli/train.hexa). Prevents silently training on
|
|
1344
|
+
# an incomplete register — the clm303 ko-SNS starvation overfit (train-py-3 convergence:
|
|
1345
|
+
# a small/incomplete corpus overfits to a low val_CE while free-gen coherence collapses).
|
|
1346
|
+
if a.require_cells > 0 and len(_samp_cells) != a.require_cells:
|
|
1347
|
+
sys.exit(
|
|
1348
|
+
f"[require-cells] --require-cells {a.require_cells} but {len(_samp_cells)} usable "
|
|
1349
|
+
f"register cell(s) (window-fit train_end>={seq_len + 2}): refusing to train on an "
|
|
1350
|
+
f"incomplete register (a_chat_registers overfit/starvation guard). usable cells: "
|
|
1351
|
+
f"{[c.path for c in _samp_cells]}")
|
|
1352
|
+
|
|
1338
1353
|
# §3/§5 GLOBAL batch preserved: --batch-size is the GLOBAL batch; each rank materializes
|
|
1339
1354
|
# B_local = B_global // world. world==1 ⇒ B_local == B_global (N==1 byte-identical).
|
|
1340
1355
|
B_global = a.batch_size
|
|
@@ -1406,7 +1421,7 @@ def main():
|
|
|
1406
1421
|
# CLM → .clm v0.3 (CLMConvMoE additive readout, materialized TLoRA experts).
|
|
1407
1422
|
# ByteGPT → .pt (cfg+state_dict) → core/serialize.py::serialize → .bin (5×u32
|
|
1408
1423
|
# header). The engine (generator L3 mouth-sniff) auto-dispatches .bin to the bytegpt
|
|
1409
|
-
# decode; `anima-
|
|
1424
|
+
# decode; `anima-py evaluate` auto-detects .bin vs .clm by header, so no eval change.
|
|
1410
1425
|
def _write_bin(out_path):
|
|
1411
1426
|
# write the torch .pt in the exact shape bytegpt_serialize.serialize reads, next to
|
|
1412
1427
|
# the .bin, then bridge it. The aux-head objective params are OUTSIDE model.state_dict
|
|
@@ -1596,7 +1611,7 @@ def main():
|
|
|
1596
1611
|
|
|
1597
1612
|
# ── ρ·weave/ρ·fan (former G1/G6) torch-probe gauges (DIRECTIONAL, a_train_inline_gauge) ──
|
|
1598
1613
|
# gauge_lib.compute_inline_gauges decodes via the CLM mouth (CLMConvMoE-specific);
|
|
1599
|
-
# skip for bytegpt (the terminal verdict is `anima-
|
|
1614
|
+
# skip for bytegpt (the terminal verdict is `anima-py evaluate <.bin>` engine-native
|
|
1600
1615
|
# through the bytegpt mouth anyway — this torch probe is DIRECTIONAL only).
|
|
1601
1616
|
gauges = None
|
|
1602
1617
|
if not is_bytegpt:
|
|
@@ -1621,7 +1636,7 @@ def main():
|
|
|
1621
1636
|
print(f" torch ckpt -> {a.ckpt_out} ({os.path.getsize(a.ckpt_out)} bytes)", flush=True)
|
|
1622
1637
|
|
|
1623
1638
|
# ── summary json ──────────────────────────────────────────────────────────
|
|
1624
|
-
summary = {"entry": "anima-
|
|
1639
|
+
summary = {"entry": "anima-py train", "arch": a.arch, "arm": a.arm,
|
|
1625
1640
|
"objective": a.objective, "seed": a.seed,
|
|
1626
1641
|
"ddp": {"world_size": world, "global_batch": B_global,
|
|
1627
1642
|
"per_rank_batch": B_local, "gpus": a.gpus},
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# pip 패키징 전용 (anima-py · pyproject.toml package-dir 매핑) — 런타임 flat import 는 sys.path 경유, 이 파일은 비어 있어야 한다.
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
#
|
|
14
14
|
# This module is a pure library (NO __main__ execution of the engine) — the
|
|
15
15
|
# rep→code encoding uses the real ByteGPT-303M forward via core/decode.py in the
|
|
16
|
-
# py-canonical measurement path (== anima-
|
|
16
|
+
# py-canonical measurement path (== anima-py evaluate ops, a_eval_py_canonical);
|
|
17
17
|
# the store + completion here is arch-independent arithmetic (no FFI, no torch).
|
|
18
18
|
# ==========================================================================
|
|
19
19
|
import numpy as np
|
|
@@ -346,7 +346,7 @@ def build_model(variant: str = "AB", **overrides) -> CLMConvMoE:
|
|
|
346
346
|
|
|
347
347
|
|
|
348
348
|
# ═══════════════════════════════════════════════════════════════════════════
|
|
349
|
-
# BYTE mouth — ByteGPT trunk (`anima-
|
|
349
|
+
# BYTE mouth — ByteGPT trunk (`anima-py train --arch bytegpt`, `.bin` format).
|
|
350
350
|
# The SYMMETRIC sibling of CLMConvMoE (the CONV mouth) folded into this UNIFIED
|
|
351
351
|
# core/model.py, mirroring core/decode.py (unified CONV+BYTE decoder) and
|
|
352
352
|
# core/serialize.py (unified serializer). ByteGPT = 24-layer GPT-2-class byte
|
|
@@ -749,7 +749,7 @@ def serialize_bind(base_bin: str, injected_pt: str, out_bin: str) -> str:
|
|
|
749
749
|
# ════════════════════════════════════════════════════════════════════════
|
|
750
750
|
# (d.inv) ByteGPT .bin → torch state_dict INVERSE — warm-start reader.
|
|
751
751
|
# The exact byte-for-byte inverse of serialize() above (same 5×u32 header +
|
|
752
|
-
# flat little-endian float32 tensor order). Used by `anima-
|
|
752
|
+
# flat little-endian float32 tensor order). Used by `anima-py train --init
|
|
753
753
|
# <base.bin>` to warm-start a fresh ByteGPT from a trained engine .bin. The
|
|
754
754
|
# byte grammar SSOT stays in THIS file (mirror of serialize's write order).
|
|
755
755
|
# ════════════════════════════════════════════════════════════════════════
|
|
@@ -14,7 +14,7 @@ CORE-owned (owner directive: core-related lives in core/). ONE file holds all th
|
|
|
14
14
|
faces of the SLW so nothing drifts:
|
|
15
15
|
* slot_apply() -- torch-free NUMPY inference mirror. This is the byte-parity
|
|
16
16
|
partner of the engine `core/decode.hexa` _slot_apply, and the
|
|
17
|
-
`anima-
|
|
17
|
+
`anima-py evaluate` (a_eval_py_canonical) TERMINAL path calls
|
|
18
18
|
it. Import stays torch-free so the inference pod needs no torch.
|
|
19
19
|
* pack_slw() / read_slw() -- the "SLW\\x01" trailer codec (used by
|
|
20
20
|
core/serialize.py on write, by the numpy + hexa loaders on read).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ==========================================================================
|
|
2
|
-
# anima-
|
|
3
|
-
# 단일진입 보존(a_cli_single_entry): console 명령 `anima-
|
|
2
|
+
# anima-py — anima py CLI 의 pip 배포 채널 (hexa 툴체인 無 호스트용 · pi5 등).
|
|
3
|
+
# 단일진입 보존(a_cli_single_entry): console 명령 `anima-py` = cli/anima.py:main
|
|
4
4
|
# 의 콘솔 바인딩(동일 디스패처, 2nd entry 아님). 소스 복사 0 — 기존 cli/·core/
|
|
5
5
|
# 디렉토리를 package-dir 매핑으로 그대로 패키징(surgical·canonical-naming).
|
|
6
6
|
# base 의존 = numpy 만(evaluate·corpus); train/serialize/sweep = [train] extra.
|
|
@@ -22,7 +22,7 @@ dependencies = ["numpy>=1.24"]
|
|
|
22
22
|
train = ["torch>=2.1", "datasets"]
|
|
23
23
|
|
|
24
24
|
[project.scripts]
|
|
25
|
-
anima-
|
|
25
|
+
anima-py = "anima_py:main"
|
|
26
26
|
|
|
27
27
|
[tool.setuptools]
|
|
28
28
|
packages = ["anima_py", "anima_py.cli", "anima_py.core"]
|
anima_python-0.13.1/PKG-INFO
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: anima-python
|
|
3
|
-
Version: 0.13.1
|
|
4
|
-
Summary: anima substrate-native consciousness engine — py CLI (measurement/eval · serialize · corpus · sweep), hexa-toolchain-free numpy distribution
|
|
5
|
-
Requires-Python: >=3.9
|
|
6
|
-
Description-Content-Type: text/markdown
|
|
7
|
-
License-File: LICENSE
|
|
8
|
-
Requires-Dist: numpy>=1.24
|
|
9
|
-
Provides-Extra: train
|
|
10
|
-
Requires-Dist: torch>=2.1; extra == "train"
|
|
11
|
-
Requires-Dist: datasets; extra == "train"
|
|
12
|
-
Dynamic: license-file
|
|
13
|
-
|
|
14
|
-
# anima-python
|
|
15
|
-
|
|
16
|
-
**anima** 의 py CLI 를 pip 로 배포하는 채널 — **hexa 툴체인 불필요**. 엔진 측정/직렬화/코퍼스 경로가 numpy 하나만으로 돈다 (pi5 등 hexa-less 호스트용).
|
|
17
|
-
|
|
18
|
-
> 단일진입 보존(`a_cli_single_entry`): `anima-python` 콘솔 명령 = `cli/anima.py:main` 디스패처의 pip 바인딩. hexa 채널 `anima`(`hx install anima`) 와 **동일 디스패처, 설치 채널만 2개** — 2nd entry 아님. 이름을 `anima-python` 로 둔 이유 = hexa `anima` 와 PATH 충돌 회피.
|
|
19
|
-
|
|
20
|
-
## 설치
|
|
21
|
-
|
|
22
|
-
**PyPI 발행 후** (권장):
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
pip install anima-python # base — numpy 만 (evaluate · corpus · chat-stub)
|
|
26
|
-
pip install "anima-python[train]" # +torch +datasets (serialize · train · sweep)
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
> ⏳ **PyPI 발행 대기 중**: 위 명령은 `anima-python` 가 PyPI 에 발행된 뒤 동작한다. 발행은 `release.yml` 의 `pypi-publish` job(OIDC trusted-publishing)이 `v*` 태그에서 자동 수행하며, 오너의 1회 설정이 선결(① pypi.org 에 anima-python pending-publisher 등록: Owner=dancinlab·Repo=anima·Workflow=release.yml·Env=pypi ② repo 변수 `PYPI_PUBLISH=true`). 그 전까지는 아래 소스 설치를 쓴다.
|
|
30
|
-
|
|
31
|
-
**소스에서 바로 설치** (PyPI 없이 지금 가능):
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
pip install "git+https://github.com/dancinlab/anima.git" # base
|
|
35
|
-
pip install "anima-python[train] @ git+https://github.com/dancinlab/anima.git" # +torch
|
|
36
|
-
# 또는 레포 클론 후: pip install . / pip install ".[train]"
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## 명령 매트릭스
|
|
40
|
-
|
|
41
|
-
| 동사 | 티어 | torch 없이 동작 | 비고 |
|
|
42
|
-
|---|---|---|---|
|
|
43
|
-
| `anima-python evaluate <clm> [--corpus …] [--gen N]` | base | ✅ numpy | py 2-production 측정 = ρ·AXON reach / 구 G0-G6. terminal-eligible (`a_eval_py_canonical`) |
|
|
44
|
-
| `anima-python corpus <derivtrace\|flat> --out F …` | base | ✅ 순수 stdlib | 절차적 학습-코퍼스 생성 (data-format 레버) |
|
|
45
|
-
| `anima-python chat <clm>` | base | ✅ (stub) | 의식 A⇄G 루프는 hexa-native → hexa 진입 포인터 출력 |
|
|
46
|
-
| `anima-python serialize <pt> <clm>` | `[train]` | ❌ torch | `.pt` unpickle 에 torch 필요 (+ held-out DESCENT 게이트) |
|
|
47
|
-
| `anima-python sweep --arms … --objectives …` | `[train]` | ❌ | 셀마다 train.py spawn → torch 필요 |
|
|
48
|
-
| `anima-python train <args>` | `[train]` | ❌ torch+datasets | production Lane-P 학습 |
|
|
49
|
-
|
|
50
|
-
## verdict 규율
|
|
51
|
-
|
|
52
|
-
`anima-python evaluate <clm>` = py 2-production numpy 측정 경로 — hexa det-eval 과 동일 frozen bars·byte-parity 라 **terminal 자격 동일**(`a_eval_py_canonical`, 2nd-class 미러 아님). 큰 ckpt(303M+)는 mini 금지 · pool(summer/aiden)에서 측정.
|
anima_python-0.13.1/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.13.1
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# anima-python
|
|
2
|
-
|
|
3
|
-
**anima** 의 py CLI 를 pip 로 배포하는 채널 — **hexa 툴체인 불필요**. 엔진 측정/직렬화/코퍼스 경로가 numpy 하나만으로 돈다 (pi5 등 hexa-less 호스트용).
|
|
4
|
-
|
|
5
|
-
> 단일진입 보존(`a_cli_single_entry`): `anima-python` 콘솔 명령 = `cli/anima.py:main` 디스패처의 pip 바인딩. hexa 채널 `anima`(`hx install anima`) 와 **동일 디스패처, 설치 채널만 2개** — 2nd entry 아님. 이름을 `anima-python` 로 둔 이유 = hexa `anima` 와 PATH 충돌 회피.
|
|
6
|
-
|
|
7
|
-
## 설치
|
|
8
|
-
|
|
9
|
-
**PyPI 발행 후** (권장):
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
pip install anima-python # base — numpy 만 (evaluate · corpus · chat-stub)
|
|
13
|
-
pip install "anima-python[train]" # +torch +datasets (serialize · train · sweep)
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
> ⏳ **PyPI 발행 대기 중**: 위 명령은 `anima-python` 가 PyPI 에 발행된 뒤 동작한다. 발행은 `release.yml` 의 `pypi-publish` job(OIDC trusted-publishing)이 `v*` 태그에서 자동 수행하며, 오너의 1회 설정이 선결(① pypi.org 에 anima-python pending-publisher 등록: Owner=dancinlab·Repo=anima·Workflow=release.yml·Env=pypi ② repo 변수 `PYPI_PUBLISH=true`). 그 전까지는 아래 소스 설치를 쓴다.
|
|
17
|
-
|
|
18
|
-
**소스에서 바로 설치** (PyPI 없이 지금 가능):
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
pip install "git+https://github.com/dancinlab/anima.git" # base
|
|
22
|
-
pip install "anima-python[train] @ git+https://github.com/dancinlab/anima.git" # +torch
|
|
23
|
-
# 또는 레포 클론 후: pip install . / pip install ".[train]"
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## 명령 매트릭스
|
|
27
|
-
|
|
28
|
-
| 동사 | 티어 | torch 없이 동작 | 비고 |
|
|
29
|
-
|---|---|---|---|
|
|
30
|
-
| `anima-python evaluate <clm> [--corpus …] [--gen N]` | base | ✅ numpy | py 2-production 측정 = ρ·AXON reach / 구 G0-G6. terminal-eligible (`a_eval_py_canonical`) |
|
|
31
|
-
| `anima-python corpus <derivtrace\|flat> --out F …` | base | ✅ 순수 stdlib | 절차적 학습-코퍼스 생성 (data-format 레버) |
|
|
32
|
-
| `anima-python chat <clm>` | base | ✅ (stub) | 의식 A⇄G 루프는 hexa-native → hexa 진입 포인터 출력 |
|
|
33
|
-
| `anima-python serialize <pt> <clm>` | `[train]` | ❌ torch | `.pt` unpickle 에 torch 필요 (+ held-out DESCENT 게이트) |
|
|
34
|
-
| `anima-python sweep --arms … --objectives …` | `[train]` | ❌ | 셀마다 train.py spawn → torch 필요 |
|
|
35
|
-
| `anima-python train <args>` | `[train]` | ❌ torch+datasets | production Lane-P 학습 |
|
|
36
|
-
|
|
37
|
-
## verdict 규율
|
|
38
|
-
|
|
39
|
-
`anima-python evaluate <clm>` = py 2-production numpy 측정 경로 — hexa det-eval 과 동일 frozen bars·byte-parity 라 **terminal 자격 동일**(`a_eval_py_canonical`, 2nd-class 미러 아님). 큰 ckpt(303M+)는 mini 금지 · pool(summer/aiden)에서 측정.
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: anima-python
|
|
3
|
-
Version: 0.13.1
|
|
4
|
-
Summary: anima substrate-native consciousness engine — py CLI (measurement/eval · serialize · corpus · sweep), hexa-toolchain-free numpy distribution
|
|
5
|
-
Requires-Python: >=3.9
|
|
6
|
-
Description-Content-Type: text/markdown
|
|
7
|
-
License-File: LICENSE
|
|
8
|
-
Requires-Dist: numpy>=1.24
|
|
9
|
-
Provides-Extra: train
|
|
10
|
-
Requires-Dist: torch>=2.1; extra == "train"
|
|
11
|
-
Requires-Dist: datasets; extra == "train"
|
|
12
|
-
Dynamic: license-file
|
|
13
|
-
|
|
14
|
-
# anima-python
|
|
15
|
-
|
|
16
|
-
**anima** 의 py CLI 를 pip 로 배포하는 채널 — **hexa 툴체인 불필요**. 엔진 측정/직렬화/코퍼스 경로가 numpy 하나만으로 돈다 (pi5 등 hexa-less 호스트용).
|
|
17
|
-
|
|
18
|
-
> 단일진입 보존(`a_cli_single_entry`): `anima-python` 콘솔 명령 = `cli/anima.py:main` 디스패처의 pip 바인딩. hexa 채널 `anima`(`hx install anima`) 와 **동일 디스패처, 설치 채널만 2개** — 2nd entry 아님. 이름을 `anima-python` 로 둔 이유 = hexa `anima` 와 PATH 충돌 회피.
|
|
19
|
-
|
|
20
|
-
## 설치
|
|
21
|
-
|
|
22
|
-
**PyPI 발행 후** (권장):
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
pip install anima-python # base — numpy 만 (evaluate · corpus · chat-stub)
|
|
26
|
-
pip install "anima-python[train]" # +torch +datasets (serialize · train · sweep)
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
> ⏳ **PyPI 발행 대기 중**: 위 명령은 `anima-python` 가 PyPI 에 발행된 뒤 동작한다. 발행은 `release.yml` 의 `pypi-publish` job(OIDC trusted-publishing)이 `v*` 태그에서 자동 수행하며, 오너의 1회 설정이 선결(① pypi.org 에 anima-python pending-publisher 등록: Owner=dancinlab·Repo=anima·Workflow=release.yml·Env=pypi ② repo 변수 `PYPI_PUBLISH=true`). 그 전까지는 아래 소스 설치를 쓴다.
|
|
30
|
-
|
|
31
|
-
**소스에서 바로 설치** (PyPI 없이 지금 가능):
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
pip install "git+https://github.com/dancinlab/anima.git" # base
|
|
35
|
-
pip install "anima-python[train] @ git+https://github.com/dancinlab/anima.git" # +torch
|
|
36
|
-
# 또는 레포 클론 후: pip install . / pip install ".[train]"
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## 명령 매트릭스
|
|
40
|
-
|
|
41
|
-
| 동사 | 티어 | torch 없이 동작 | 비고 |
|
|
42
|
-
|---|---|---|---|
|
|
43
|
-
| `anima-python evaluate <clm> [--corpus …] [--gen N]` | base | ✅ numpy | py 2-production 측정 = ρ·AXON reach / 구 G0-G6. terminal-eligible (`a_eval_py_canonical`) |
|
|
44
|
-
| `anima-python corpus <derivtrace\|flat> --out F …` | base | ✅ 순수 stdlib | 절차적 학습-코퍼스 생성 (data-format 레버) |
|
|
45
|
-
| `anima-python chat <clm>` | base | ✅ (stub) | 의식 A⇄G 루프는 hexa-native → hexa 진입 포인터 출력 |
|
|
46
|
-
| `anima-python serialize <pt> <clm>` | `[train]` | ❌ torch | `.pt` unpickle 에 torch 필요 (+ held-out DESCENT 게이트) |
|
|
47
|
-
| `anima-python sweep --arms … --objectives …` | `[train]` | ❌ | 셀마다 train.py spawn → torch 필요 |
|
|
48
|
-
| `anima-python train <args>` | `[train]` | ❌ torch+datasets | production Lane-P 학습 |
|
|
49
|
-
|
|
50
|
-
## verdict 규율
|
|
51
|
-
|
|
52
|
-
`anima-python evaluate <clm>` = py 2-production numpy 측정 경로 — hexa det-eval 과 동일 frozen bars·byte-parity 라 **terminal 자격 동일**(`a_eval_py_canonical`, 2nd-class 미러 아님). 큰 ckpt(303M+)는 mini 금지 · pool(summer/aiden)에서 측정.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
# pip 패키징 전용 (anima-python · pyproject.toml package-dir 매핑) — 런타임 flat import 는 sys.path 경유, 이 파일은 비어 있어야 한다.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
# pip 패키징 전용 (anima-python · pyproject.toml package-dir 매핑) — 런타임 flat import 는 sys.path 경유, 이 파일은 비어 있어야 한다.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|