Image-Text-to-Text
Transformers
diffusiongemma
gemma-4
infinite-context
external-memory
evidence-retrieval
long-context
large-documents
legal-documents
ai-memory
nzfc-gram
runtime-overlay
not-native-infinite-context
Instructions to use SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context")# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context
- SGLang
How to use SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context with Docker Model Runner:
docker model run hf.co/SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context
Add full NZFC runtime assets for DiffusionGemma Infinite-Context
Browse files- .gitattributes +2 -0
- NZFC_DIFFUSIONGEMMA_INFINITE_CONTEXT_EVIDENCE_PACK_MANIFEST.json +64 -0
- README.md +27 -113
- archive/complex_math_10m_archive.jsonl +3 -0
- assets/diffusiongemma_infinite_context_evidence_pack_cover.svg +6 -0
- configs/nzfc_hybrid_config.json +30 -0
- docs/ARCHITECTURE.md +16 -0
- docs/DIFFUSIONGEMMA_COMPATIBILITY.md +11 -0
- docs/FEATURE_MATRIX.md +14 -0
- docs/TECHNICAL_BOUNDARY.md +23 -0
- docs/VALIDATION_PLAN.md +13 -0
- docs/WHY_INFINITE_CONTEXT.md +11 -0
- examples/high_frequency_multi_context_runtime_only.py +41 -0
- examples/large_document_runtime_only.py +27 -0
- examples/optional_diffusiongemma_model_load_check.py +41 -0
- memory_tensors/hybrid/blocks/char_block_0000.safetensors +3 -0
- memory_tensors/hybrid/blocks/char_block_0001.safetensors +3 -0
- memory_tensors/hybrid/blocks/char_block_0002.safetensors +3 -0
- memory_tensors/hybrid/blocks/lex_block_0000.safetensors +3 -0
- memory_tensors/hybrid/blocks/lex_block_0001.safetensors +3 -0
- memory_tensors/hybrid/blocks/lex_block_0002.safetensors +3 -0
- memory_tensors/hybrid/blocks/struct_block_0000.safetensors +3 -0
- memory_tensors/hybrid/blocks/struct_block_0001.safetensors +3 -0
- memory_tensors/hybrid/blocks/struct_block_0002.safetensors +3 -0
- memory_tensors/hybrid/hybrid_manifest.json +172 -0
- meta/complex_math_10m_meta.jsonl +3 -0
- meta/target_passage.txt +32 -0
- meta/target_passage_sha256.txt +1 -0
- nzfc_gram_runtime/diffusiongemma_adapter.py +13 -80
- release_notes/DiffusionGemma_Infinite_Context_Evidence_Pack_Update.md +29 -0
- runtime/nzfc_hybrid_exact_recall.py +515 -0
- validation/run_runtime_only_smoke.py +79 -0
- validation_evidence/diffusiongemma_infinite_context_preview/runtime_only_smoke_summary.json +37 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
archive/complex_math_10m_archive.jsonl filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
meta/complex_math_10m_meta.jsonl filter=lfs diff=lfs merge=lfs -text
|
NZFC_DIFFUSIONGEMMA_INFINITE_CONTEXT_EVIDENCE_PACK_MANIFEST.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"version": "v1.2.5a-runtime-assets-final",
|
| 3 |
+
"release_name": "DiffusionGemma Infinite-Context Runtime Asset Final Fix",
|
| 4 |
+
"repo_id": "SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context",
|
| 5 |
+
"base_model": "google/diffusiongemma-26B-A4B-it",
|
| 6 |
+
"source_runtime_repo": "SingularityPrinciple/Gemma-E2B-IT-10M-Chat",
|
| 7 |
+
"contains_base_model_weights": false,
|
| 8 |
+
"release_type": "evidence_pack_update_with_full_runtime_assets",
|
| 9 |
+
"marketing_title": "DiffusionGemma-26B-A4B-it-Infinite-Context",
|
| 10 |
+
"technical_boundary": "external evidence context, not native unlimited model context",
|
| 11 |
+
"runtime_assets_included": {
|
| 12 |
+
"runtime_dir": true,
|
| 13 |
+
"meta_dir": true,
|
| 14 |
+
"memory_tensors_dir": true,
|
| 15 |
+
"archive_dir": true,
|
| 16 |
+
"configs_dir": true
|
| 17 |
+
},
|
| 18 |
+
"runtime_only_smoke": {
|
| 19 |
+
"created_at": "2026-06-11 02:43:54",
|
| 20 |
+
"repo_id": "SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context",
|
| 21 |
+
"base_model": "google/diffusiongemma-26B-A4B-it",
|
| 22 |
+
"runtime_only": true,
|
| 23 |
+
"model_loaded": false,
|
| 24 |
+
"repo_root_runtime_exists": true,
|
| 25 |
+
"repo_root_meta_exists": true,
|
| 26 |
+
"repo_root_memory_tensors_exists": true,
|
| 27 |
+
"exact_slot_answer": "PROJECT_CODE_DIFFUSIONGEMMA_SMOKE",
|
| 28 |
+
"exact_slot_passed": true,
|
| 29 |
+
"exact_slot_profile": {
|
| 30 |
+
"version": "v1.2.4b",
|
| 31 |
+
"description": "Strict deterministic exact slot mapper for short explicit scoped key-value recall questions.",
|
| 32 |
+
"auto_short_circuit": true,
|
| 33 |
+
"strict_trigger_gate": true
|
| 34 |
+
},
|
| 35 |
+
"large_document_chunk_count": 3,
|
| 36 |
+
"large_document_query_count": 2,
|
| 37 |
+
"large_document_method": "fts5_bm25",
|
| 38 |
+
"large_document_passed": true,
|
| 39 |
+
"tombstone_guard_profile": {
|
| 40 |
+
"version": "v1.2.4c",
|
| 41 |
+
"description": "Filters inactive or tombstoned MEM_* records from memory_store.retrieve results.",
|
| 42 |
+
"db_path": "/kaggle/working/diffusiongemma_infinite_context_evidence_pack_update/runtime_only_smoke_final/memory.sqlite3",
|
| 43 |
+
"guarded_method": "memory_store.retrieve"
|
| 44 |
+
},
|
| 45 |
+
"tombstone_test": {
|
| 46 |
+
"available": true,
|
| 47 |
+
"before_found": true,
|
| 48 |
+
"after_found": false,
|
| 49 |
+
"passed": true,
|
| 50 |
+
"tombstoned": 1
|
| 51 |
+
},
|
| 52 |
+
"technical_boundary": "external evidence context, not native unlimited model context",
|
| 53 |
+
"status": "passed"
|
| 54 |
+
},
|
| 55 |
+
"non_claims": [
|
| 56 |
+
"not native infinite context",
|
| 57 |
+
"not internal infinite memory",
|
| 58 |
+
"not a claim that the base model itself has unlimited context",
|
| 59 |
+
"not zero hallucination",
|
| 60 |
+
"not legal advice",
|
| 61 |
+
"not production security certification"
|
| 62 |
+
],
|
| 63 |
+
"created_at": "2026-06-11 02:43:54"
|
| 64 |
+
}
|
README.md
CHANGED
|
@@ -5,135 +5,49 @@ library_name: transformers
|
|
| 5 |
pipeline_tag: image-text-to-text
|
| 6 |
tags:
|
| 7 |
- diffusiongemma
|
| 8 |
-
- gemma-4
|
| 9 |
- infinite-context
|
|
|
|
| 10 |
- external-memory
|
| 11 |
- evidence-retrieval
|
| 12 |
-
- long-context
|
| 13 |
- large-documents
|
| 14 |
-
- legal-documents
|
| 15 |
-
- ai-memory
|
| 16 |
-
- nzfc-gram
|
| 17 |
-
- not-native-infinite-context
|
| 18 |
---
|
| 19 |
|
| 20 |
# DiffusionGemma-26B-A4B-it-Infinite-Context
|
| 21 |
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
> Marketing title: **Infinite-Context**
|
| 25 |
-
|
| 26 |
-
Technical boundary:
|
| 27 |
-
|
| 28 |
-
> External evidence context, not native unlimited model context.
|
| 29 |
-
|
| 30 |
-
This repository does not include or redistribute Google model weights.
|
| 31 |
-
It is a runtime and adapter overlay that connects DiffusionGemma to NZFC-GRAM external memory, large-document indexing, scoped retrieval, tombstone filtering, redaction, and bounded evidence packs.
|
| 32 |
-
|
| 33 |
-
## Why this exists
|
| 34 |
-
|
| 35 |
-
DiffusionGemma provides a very large native context window.
|
| 36 |
-
NZFC-GRAM adds a different layer: governed external memory and document evidence retrieval beyond a single prompt.
|
| 37 |
-
|
| 38 |
-
The goal is to make memory claims evidence-bound:
|
| 39 |
-
|
| 40 |
-
```text
|
| 41 |
-
external memory
|
| 42 |
-
-> scoped retrieval
|
| 43 |
-
-> tombstone filtering
|
| 44 |
-
-> malicious-memory redaction
|
| 45 |
-
-> large-document / legal-document indexing
|
| 46 |
-
-> bounded evidence pack
|
| 47 |
-
-> DiffusionGemma generation
|
| 48 |
-
```
|
| 49 |
-
|
| 50 |
-
## Base model
|
| 51 |
-
|
| 52 |
-
```text
|
| 53 |
-
google/diffusiongemma-26B-A4B-it
|
| 54 |
-
```
|
| 55 |
-
|
| 56 |
-
## What this is not
|
| 57 |
|
| 58 |
-
|
| 59 |
-
- Not internal infinite model memory.
|
| 60 |
-
- Not a claim that DiffusionGemma itself has unlimited context.
|
| 61 |
-
- Not a zero-hallucination guarantee.
|
| 62 |
-
- Not legal advice.
|
| 63 |
-
- Not a production security certification.
|
| 64 |
-
- Not affiliated with Google.
|
| 65 |
|
| 66 |
-
##
|
| 67 |
|
| 68 |
-
|
| 69 |
-
git clone https://huggingface.co/SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context
|
| 70 |
-
cd DiffusionGemma-26B-A4B-it-Infinite-Context
|
| 71 |
-
pip install -r requirements.txt
|
| 72 |
-
python examples/quick_diffusiongemma_retrieval_only.py
|
| 73 |
-
```
|
| 74 |
|
| 75 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 76 |
|
| 77 |
-
|
| 78 |
-
Set `LOAD_MODEL=1` only when your environment can load the base model.
|
| 79 |
|
| 80 |
-
```
|
| 81 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 82 |
```
|
| 83 |
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
```python
|
| 87 |
-
from nzfc_gram_runtime import NZFCGramLongMemoryChat
|
| 88 |
-
from nzfc_gram_runtime.diffusiongemma_adapter import attach_diffusiongemma_block_diffusion
|
| 89 |
-
from nzfc_gram_runtime.quality import attach_answer_quality_governor
|
| 90 |
-
from nzfc_gram_runtime.large_document import attach_large_document_memory
|
| 91 |
-
|
| 92 |
-
bot = NZFCGramLongMemoryChat(
|
| 93 |
-
repo_dir='.',
|
| 94 |
-
model_id='google/diffusiongemma-26B-A4B-it',
|
| 95 |
-
memory_db_path='./user_memory.sqlite3',
|
| 96 |
-
load_model=False,
|
| 97 |
-
require_model=False,
|
| 98 |
-
preload_static_memory=True,
|
| 99 |
-
)
|
| 100 |
-
|
| 101 |
-
attach_large_document_memory(bot)
|
| 102 |
-
attach_answer_quality_governor(bot)
|
| 103 |
-
|
| 104 |
-
attach_diffusiongemma_block_diffusion(
|
| 105 |
-
bot,
|
| 106 |
-
model_id='google/diffusiongemma-26B-A4B-it',
|
| 107 |
-
device_map='auto',
|
| 108 |
-
dtype='auto',
|
| 109 |
-
)
|
| 110 |
-
|
| 111 |
-
res = bot.quality_chat(
|
| 112 |
-
'What does my indexed policy document say about deleted memory?',
|
| 113 |
-
user_id='demo_user',
|
| 114 |
-
project_id='demo_project',
|
| 115 |
-
session_id='demo_session',
|
| 116 |
-
)
|
| 117 |
-
print(res['answer'])
|
| 118 |
-
```
|
| 119 |
-
|
| 120 |
-
## Release status
|
| 121 |
-
|
| 122 |
-
Fast marketing-preview adapter release.
|
| 123 |
-
|
| 124 |
-
Recommended validation:
|
| 125 |
|
| 126 |
```text
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
3. Retrieval-only smoke test
|
| 130 |
-
4. Optional DiffusionGemma model load on suitable hardware
|
| 131 |
-
5. High-frequency multi-context memory test
|
| 132 |
-
6. Large-document / legal-document evidence test
|
| 133 |
```
|
| 134 |
-
|
| 135 |
-
## License
|
| 136 |
-
|
| 137 |
-
NZFC-GRAM runtime surface: CC BY-NC 4.0 unless otherwise specified.
|
| 138 |
-
|
| 139 |
-
Base model: see the official `google/diffusiongemma-26B-A4B-it` model card and license.
|
|
|
|
| 5 |
pipeline_tag: image-text-to-text
|
| 6 |
tags:
|
| 7 |
- diffusiongemma
|
|
|
|
| 8 |
- infinite-context
|
| 9 |
+
- nzfc-gram
|
| 10 |
- external-memory
|
| 11 |
- evidence-retrieval
|
|
|
|
| 12 |
- large-documents
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
---
|
| 14 |
|
| 15 |
# DiffusionGemma-26B-A4B-it-Infinite-Context
|
| 16 |
|
| 17 |
+
NZFC-GRAM runtime overlay for external evidence context around `google/diffusiongemma-26B-A4B-it`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
|
| 19 |
+
Technical boundary: external evidence context, not native unlimited model context.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
|
| 21 |
+
## v1.2.5a runtime asset final fix
|
| 22 |
|
| 23 |
+
This update includes the NZFC root assets required for local runtime initialization:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 24 |
|
| 25 |
+
- `runtime/`
|
| 26 |
+
- `meta/`
|
| 27 |
+
- `memory_tensors/` when available
|
| 28 |
+
- `archive/` when available
|
| 29 |
+
- `configs/` when available
|
| 30 |
|
| 31 |
+
Runtime-only smoke result:
|
|
|
|
| 32 |
|
| 33 |
+
```json
|
| 34 |
+
{
|
| 35 |
+
"runtime_only": true,
|
| 36 |
+
"model_loaded": false,
|
| 37 |
+
"repo_root_runtime_exists": true,
|
| 38 |
+
"repo_root_meta_exists": true,
|
| 39 |
+
"repo_root_memory_tensors_exists": true,
|
| 40 |
+
"exact_slot_passed": true,
|
| 41 |
+
"large_document_passed": true,
|
| 42 |
+
"large_document_query_count": 2,
|
| 43 |
+
"tombstone_guard_available": true,
|
| 44 |
+
"technical_boundary": "external evidence context, not native unlimited model context"
|
| 45 |
+
}
|
| 46 |
```
|
| 47 |
|
| 48 |
+
Important:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
|
| 50 |
```text
|
| 51 |
+
The repository title is marketing-facing.
|
| 52 |
+
The technical mechanism is external evidence context, not native unlimited model context.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 53 |
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
archive/complex_math_10m_archive.jsonl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:3071442c3d3a3eee7f77fb7eb9ac1aab5294190d46e445117157a2ec64aeb926
|
| 3 |
+
size 91019819
|
assets/diffusiongemma_infinite_context_evidence_pack_cover.svg
ADDED
|
|
configs/nzfc_hybrid_config.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "NZFC Hybrid Structural Exact Recall 10M",
|
| 3 |
+
"target_rid": "RID_000000_COMPLEX_MATH_CANONICAL_EXACT",
|
| 4 |
+
"target_title": "\ub77c\uadf8\ub791\uc8fc-\ubca0\uc140 NZFC \uae30\uc5b5\uc815\ub9ac",
|
| 5 |
+
"target_key": "NZFC_COMPLEX_MATH_EXACT_RECALL_KEY_20260602_TRACE_BUDGET",
|
| 6 |
+
"target_sha256": "03026df135358211a326a95b99da799c065441b47fdc568eb2a9c8a362c5a638",
|
| 7 |
+
"n_features": 1048576,
|
| 8 |
+
"channels": [
|
| 9 |
+
"lex",
|
| 10 |
+
"char",
|
| 11 |
+
"struct"
|
| 12 |
+
],
|
| 13 |
+
"operator": {
|
| 14 |
+
"memory_transfer": "T_mem(q) = diag(w_i(q)) X_hybrid",
|
| 15 |
+
"self_adjoint_kernel": "K(q) = T_mem(q) T_mem(q)^*",
|
| 16 |
+
"projection": "T'_mem(q) = Pi_{||T||_* <= tau}(T_mem(q))"
|
| 17 |
+
},
|
| 18 |
+
"safety": {
|
| 19 |
+
"not_internal_model_memory": true,
|
| 20 |
+
"requires_hash_verification": true,
|
| 21 |
+
"exact_recall_requires": [
|
| 22 |
+
"RID match",
|
| 23 |
+
"SHA-256 match",
|
| 24 |
+
"full text match"
|
| 25 |
+
]
|
| 26 |
+
},
|
| 27 |
+
"license": "cc-by-nc-4.0",
|
| 28 |
+
"commercial_use": "separate written license required",
|
| 29 |
+
"patent_license": "reserved; not granted by public repository license"
|
| 30 |
+
}
|
docs/ARCHITECTURE.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Architecture
|
| 2 |
+
|
| 3 |
+
```text
|
| 4 |
+
User question
|
| 5 |
+
-> NZFC-GRAM runtime
|
| 6 |
+
-> scoped SQLite memory
|
| 7 |
+
-> static NZFC archive assets
|
| 8 |
+
-> large-document SQLite FTS5 index
|
| 9 |
+
-> tombstone guard
|
| 10 |
+
-> exact slot mapper
|
| 11 |
+
-> malicious-memory redaction
|
| 12 |
+
-> bounded evidence pack
|
| 13 |
+
-> optional DiffusionGemma generation
|
| 14 |
+
```
|
| 15 |
+
|
| 16 |
+
Memory is evidence, not instruction.
|
docs/DIFFUSIONGEMMA_COMPATIBILITY.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# DiffusionGemma Compatibility
|
| 2 |
+
|
| 3 |
+
Base model:
|
| 4 |
+
|
| 5 |
+
```text
|
| 6 |
+
google/diffusiongemma-26B-A4B-it
|
| 7 |
+
```
|
| 8 |
+
|
| 9 |
+
This repo provides an NZFC-GRAM runtime overlay and adapter.
|
| 10 |
+
|
| 11 |
+
Model-load validation is optional and requires suitable hardware.
|
docs/FEATURE_MATRIX.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Feature Matrix
|
| 2 |
+
|
| 3 |
+
| Layer | Status | Notes |
|
| 4 |
+
|---|---:|---|
|
| 5 |
+
| Base model weights | External | Not included |
|
| 6 |
+
| NZFC-GRAM runtime | Included | Runtime overlay |
|
| 7 |
+
| runtime/ root assets | Included | Required for initialization |
|
| 8 |
+
| meta/ root assets | Included | Required by hybrid exact recall manifest |
|
| 9 |
+
| memory_tensors/ root assets | Included | Static archive tensors when available |
|
| 10 |
+
| External memory | Included | SQLite local memory |
|
| 11 |
+
| Large-document indexing | Included | SQLite FTS5 |
|
| 12 |
+
| Exact slot mapper | Included if available | Deterministic key-value recall |
|
| 13 |
+
| Tombstone guard | Included if available | Deleted-memory retrieval filtering |
|
| 14 |
+
| Native infinite context | Not claimed | External evidence context only |
|
docs/TECHNICAL_BOUNDARY.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Technical Boundary
|
| 2 |
+
|
| 3 |
+
Repository title:
|
| 4 |
+
|
| 5 |
+
```text
|
| 6 |
+
DiffusionGemma-26B-A4B-it-Infinite-Context
|
| 7 |
+
```
|
| 8 |
+
|
| 9 |
+
Technical claim:
|
| 10 |
+
|
| 11 |
+
```text
|
| 12 |
+
external evidence context, not native unlimited model context
|
| 13 |
+
```
|
| 14 |
+
|
| 15 |
+
This repository does not include or redistribute Google model weights.
|
| 16 |
+
|
| 17 |
+
Non-claims:
|
| 18 |
+
|
| 19 |
+
- Not native infinite context.
|
| 20 |
+
- Not internal infinite model memory.
|
| 21 |
+
- Not a zero-hallucination guarantee.
|
| 22 |
+
- Not legal advice.
|
| 23 |
+
- Not a production security certification.
|
docs/VALIDATION_PLAN.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Validation Plan
|
| 2 |
+
|
| 3 |
+
Runtime-only smoke:
|
| 4 |
+
|
| 5 |
+
```bash
|
| 6 |
+
python validation/run_runtime_only_smoke.py
|
| 7 |
+
```
|
| 8 |
+
|
| 9 |
+
Optional model-load check:
|
| 10 |
+
|
| 11 |
+
```bash
|
| 12 |
+
LOAD_MODEL=1 python examples/optional_diffusiongemma_model_load_check.py
|
| 13 |
+
```
|
docs/WHY_INFINITE_CONTEXT.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Why Infinite-Context?
|
| 2 |
+
|
| 3 |
+
`Infinite-Context` is a product-facing repository title.
|
| 4 |
+
|
| 5 |
+
The technical mechanism is external evidence context:
|
| 6 |
+
|
| 7 |
+
```text
|
| 8 |
+
large external memory + indexed documents + scoped retrieval + bounded evidence packs
|
| 9 |
+
```
|
| 10 |
+
|
| 11 |
+
The base model still has its own native context limit.
|
examples/high_frequency_multi_context_runtime_only.py
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from nzfc_gram_runtime import NZFCGramLongMemoryChat
|
| 2 |
+
from nzfc_gram_runtime.quality import attach_answer_quality_governor
|
| 3 |
+
from nzfc_gram_runtime.large_document import attach_large_document_memory
|
| 4 |
+
|
| 5 |
+
bot = NZFCGramLongMemoryChat(
|
| 6 |
+
repo_dir='.',
|
| 7 |
+
model_id='google/diffusiongemma-26B-A4B-it',
|
| 8 |
+
memory_db_path='./runtime_only_memory.sqlite3',
|
| 9 |
+
load_model=False,
|
| 10 |
+
require_model=False,
|
| 11 |
+
preload_static_memory=False,
|
| 12 |
+
)
|
| 13 |
+
|
| 14 |
+
attach_large_document_memory(bot, db_path='./runtime_only_large_docs.sqlite3')
|
| 15 |
+
attach_answer_quality_governor(bot)
|
| 16 |
+
|
| 17 |
+
user_id = 'demo_user'
|
| 18 |
+
project_id = 'demo_project'
|
| 19 |
+
session_id = 'demo_session'
|
| 20 |
+
|
| 21 |
+
bot.remember(
|
| 22 |
+
'The project high-frequency test code is PROJECT_CODE_RUNTIME_ONLY.',
|
| 23 |
+
user_id=user_id,
|
| 24 |
+
project_id=project_id,
|
| 25 |
+
session_id=session_id,
|
| 26 |
+
scope='project',
|
| 27 |
+
tags=['project_code'],
|
| 28 |
+
trust_level=0.95,
|
| 29 |
+
)
|
| 30 |
+
|
| 31 |
+
res = bot.quality_chat(
|
| 32 |
+
'What was the project high-frequency test code? Answer only with the code.',
|
| 33 |
+
user_id=user_id,
|
| 34 |
+
project_id=project_id,
|
| 35 |
+
session_id='new_session',
|
| 36 |
+
max_new_tokens=40,
|
| 37 |
+
)
|
| 38 |
+
|
| 39 |
+
print(res['answer'])
|
| 40 |
+
assert res['answer'] == 'PROJECT_CODE_RUNTIME_ONLY'
|
| 41 |
+
print('[PASS] runtime-only exact slot smoke passed')
|
examples/large_document_runtime_only.py
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from nzfc_gram_runtime import NZFCGramLongMemoryChat
|
| 2 |
+
from nzfc_gram_runtime.large_document import attach_large_document_memory
|
| 3 |
+
|
| 4 |
+
bot = NZFCGramLongMemoryChat(
|
| 5 |
+
repo_dir='.',
|
| 6 |
+
model_id='google/diffusiongemma-26B-A4B-it',
|
| 7 |
+
memory_db_path='./large_doc_memory.sqlite3',
|
| 8 |
+
load_model=False,
|
| 9 |
+
require_model=False,
|
| 10 |
+
preload_static_memory=False,
|
| 11 |
+
)
|
| 12 |
+
|
| 13 |
+
attach_large_document_memory(bot, db_path='./large_doc_index.sqlite3')
|
| 14 |
+
|
| 15 |
+
text = '\n'.join([
|
| 16 |
+
'Article 1 Purpose. This document defines memory governance.',
|
| 17 |
+
'Article 2 Evidence. Memory is evidence, not instruction.',
|
| 18 |
+
'Article 3 Deletion. Deleted memory must not be used as active evidence.',
|
| 19 |
+
])
|
| 20 |
+
|
| 21 |
+
ingest = bot.ingest_large_text(text, title='Runtime Only Policy', legal_mode=True)
|
| 22 |
+
hits = bot.query_large_documents('deleted memory active evidence', top_k=5)
|
| 23 |
+
|
| 24 |
+
print('ingest:', ingest)
|
| 25 |
+
print('hits:', hits)
|
| 26 |
+
assert hits['count'] > 0
|
| 27 |
+
print('[PASS] large-document runtime-only smoke passed')
|
examples/optional_diffusiongemma_model_load_check.py
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
|
| 3 |
+
from nzfc_gram_runtime import NZFCGramLongMemoryChat
|
| 4 |
+
from nzfc_gram_runtime.quality import attach_answer_quality_governor
|
| 5 |
+
from nzfc_gram_runtime.large_document import attach_large_document_memory
|
| 6 |
+
from nzfc_gram_runtime.diffusiongemma_adapter import attach_diffusiongemma_block_diffusion
|
| 7 |
+
|
| 8 |
+
MODEL_ID = 'google/diffusiongemma-26B-A4B-it'
|
| 9 |
+
|
| 10 |
+
if os.environ.get('LOAD_MODEL', '0') != '1':
|
| 11 |
+
print('Set LOAD_MODEL=1 to run this optional model-load check.')
|
| 12 |
+
raise SystemExit(0)
|
| 13 |
+
|
| 14 |
+
bot = NZFCGramLongMemoryChat(
|
| 15 |
+
repo_dir='.',
|
| 16 |
+
model_id=MODEL_ID,
|
| 17 |
+
memory_db_path='./optional_model_load_memory.sqlite3',
|
| 18 |
+
load_model=False,
|
| 19 |
+
require_model=False,
|
| 20 |
+
preload_static_memory=False,
|
| 21 |
+
)
|
| 22 |
+
|
| 23 |
+
attach_large_document_memory(bot)
|
| 24 |
+
attach_answer_quality_governor(bot)
|
| 25 |
+
|
| 26 |
+
meta = attach_diffusiongemma_block_diffusion(
|
| 27 |
+
bot,
|
| 28 |
+
model_id=MODEL_ID,
|
| 29 |
+
device_map='auto',
|
| 30 |
+
dtype='auto',
|
| 31 |
+
)
|
| 32 |
+
|
| 33 |
+
print(meta)
|
| 34 |
+
|
| 35 |
+
out = bot.generate_answer(
|
| 36 |
+
system_prompt='You are concise.',
|
| 37 |
+
user_prompt='Say DIFFUSIONGEMMA_OK.',
|
| 38 |
+
max_new_tokens=32,
|
| 39 |
+
)
|
| 40 |
+
|
| 41 |
+
print(out)
|
memory_tensors/hybrid/blocks/char_block_0000.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2efdc0f94b360816b1aaeb0d4adb647896e6d2fc14293c593ef98fc5e516c2c2
|
| 3 |
+
size 342828728
|
memory_tensors/hybrid/blocks/char_block_0001.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ad64156f9dd8242887a865188232fce418809cb2cf6fb8a93d7a4f5e54e14ff9
|
| 3 |
+
size 343386416
|
memory_tensors/hybrid/blocks/char_block_0002.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:87f6addcc250b2526bb9b07a0ff882ef96a7eb32b3c862107929199f3e98f016
|
| 3 |
+
size 27924
|
memory_tensors/hybrid/blocks/lex_block_0000.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4ceeb94c1d224a3ce7b3fdf0d08740adb1ac45377977a3683d2455a458ca2d0d
|
| 3 |
+
size 77527144
|
memory_tensors/hybrid/blocks/lex_block_0001.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:35133887d467738b538aefec8f25e8c5991984b74302a320a50ad48f839b5996
|
| 3 |
+
size 77531784
|
memory_tensors/hybrid/blocks/lex_block_0002.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6a216c2eaa661df717e8a5e586628826e1554db513ea27057ea4f3f970832c86
|
| 3 |
+
size 6652
|
memory_tensors/hybrid/blocks/struct_block_0000.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e57dd527ea7be8d8f8044cbb46085d42d8e1d292a31169eefcaed2bf26864fdd
|
| 3 |
+
size 205470380
|
memory_tensors/hybrid/blocks/struct_block_0001.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9e64587069c25e4ae188d4aff80370f0fd4f6ca61477c0eaee2f7b78dc884ec5
|
| 3 |
+
size 205453940
|
memory_tensors/hybrid/blocks/struct_block_0002.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9d70acb3f0af2d0cff6b33bb69217cbba398beeb030be43db3d9e368c07e6e7c
|
| 3 |
+
size 16932
|
memory_tensors/hybrid/hybrid_manifest.json
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"format": "nzfc_hybrid_sparse_index_safetensors",
|
| 3 |
+
"extractor_version": "nzfc_hybrid_final_safe_v1",
|
| 4 |
+
"created_at": "2026-06-04 05:04:18",
|
| 5 |
+
"records": 50002,
|
| 6 |
+
"archive_path": "archive/complex_math_10m_archive.jsonl",
|
| 7 |
+
"meta_path": "meta/complex_math_10m_meta.jsonl",
|
| 8 |
+
"target": {
|
| 9 |
+
"target_rid": "RID_000000_COMPLEX_MATH_CANONICAL_EXACT",
|
| 10 |
+
"support_rid": "RID_000001_COMPLEX_MATH_SUPPORT_EXACT",
|
| 11 |
+
"target_title": "\ub77c\uadf8\ub791\uc8fc-\ubca0\uc140 NZFC \uae30\uc5b5\uc815\ub9ac",
|
| 12 |
+
"target_key": "NZFC_COMPLEX_MATH_EXACT_RECALL_KEY_20260602_TRACE_BUDGET",
|
| 13 |
+
"target_sha256": "03026df135358211a326a95b99da799c065441b47fdc568eb2a9c8a362c5a638",
|
| 14 |
+
"target_passage_file": "meta/target_passage.txt"
|
| 15 |
+
},
|
| 16 |
+
"n_features": 1048576,
|
| 17 |
+
"block_size": 25000,
|
| 18 |
+
"channels": {
|
| 19 |
+
"lex": {
|
| 20 |
+
"vectorizer": {
|
| 21 |
+
"n_features": 1048576,
|
| 22 |
+
"alternate_sign": false,
|
| 23 |
+
"norm": "l2",
|
| 24 |
+
"analyzer": "word",
|
| 25 |
+
"ngram_range": [
|
| 26 |
+
1,
|
| 27 |
+
2
|
| 28 |
+
],
|
| 29 |
+
"lowercase": true,
|
| 30 |
+
"token_pattern": "(?u)\\b[\\w\\.\\-:+_=\\\\/\\^\\{\\}\\[\\]\\(\\)≤≥→↦∥Ππτγλμνρσ∞]+\\b"
|
| 31 |
+
},
|
| 32 |
+
"blocks": [
|
| 33 |
+
{
|
| 34 |
+
"channel": "lex",
|
| 35 |
+
"file": "memory_tensors/hybrid/blocks/lex_block_0000.safetensors",
|
| 36 |
+
"row_start": 0,
|
| 37 |
+
"row_end": 25000,
|
| 38 |
+
"rows": 25000,
|
| 39 |
+
"cols": 1048576,
|
| 40 |
+
"nnz": 6443888,
|
| 41 |
+
"sha256": "4ceeb94c1d224a3ce7b3fdf0d08740adb1ac45377977a3683d2455a458ca2d0d"
|
| 42 |
+
},
|
| 43 |
+
{
|
| 44 |
+
"channel": "lex",
|
| 45 |
+
"file": "memory_tensors/hybrid/blocks/lex_block_0001.safetensors",
|
| 46 |
+
"row_start": 25000,
|
| 47 |
+
"row_end": 50000,
|
| 48 |
+
"rows": 25000,
|
| 49 |
+
"cols": 1048576,
|
| 50 |
+
"nnz": 6444274,
|
| 51 |
+
"sha256": "35133887d467738b538aefec8f25e8c5991984b74302a320a50ad48f839b5996"
|
| 52 |
+
},
|
| 53 |
+
{
|
| 54 |
+
"channel": "lex",
|
| 55 |
+
"file": "memory_tensors/hybrid/blocks/lex_block_0002.safetensors",
|
| 56 |
+
"row_start": 50000,
|
| 57 |
+
"row_end": 50002,
|
| 58 |
+
"rows": 2,
|
| 59 |
+
"cols": 1048576,
|
| 60 |
+
"nnz": 515,
|
| 61 |
+
"sha256": "6a216c2eaa661df717e8a5e586628826e1554db513ea27057ea4f3f970832c86"
|
| 62 |
+
}
|
| 63 |
+
]
|
| 64 |
+
},
|
| 65 |
+
"char": {
|
| 66 |
+
"vectorizer": {
|
| 67 |
+
"n_features": 1048576,
|
| 68 |
+
"alternate_sign": false,
|
| 69 |
+
"norm": "l2",
|
| 70 |
+
"analyzer": "char_wb",
|
| 71 |
+
"ngram_range": [
|
| 72 |
+
3,
|
| 73 |
+
6
|
| 74 |
+
],
|
| 75 |
+
"lowercase": true
|
| 76 |
+
},
|
| 77 |
+
"blocks": [
|
| 78 |
+
{
|
| 79 |
+
"channel": "char",
|
| 80 |
+
"file": "memory_tensors/hybrid/blocks/char_block_0000.safetensors",
|
| 81 |
+
"row_start": 0,
|
| 82 |
+
"row_end": 25000,
|
| 83 |
+
"rows": 25000,
|
| 84 |
+
"cols": 1048576,
|
| 85 |
+
"nnz": 28552352,
|
| 86 |
+
"sha256": "2efdc0f94b360816b1aaeb0d4adb647896e6d2fc14293c593ef98fc5e516c2c2"
|
| 87 |
+
},
|
| 88 |
+
{
|
| 89 |
+
"channel": "char",
|
| 90 |
+
"file": "memory_tensors/hybrid/blocks/char_block_0001.safetensors",
|
| 91 |
+
"row_start": 25000,
|
| 92 |
+
"row_end": 50000,
|
| 93 |
+
"rows": 25000,
|
| 94 |
+
"cols": 1048576,
|
| 95 |
+
"nnz": 28598826,
|
| 96 |
+
"sha256": "ad64156f9dd8242887a865188232fce418809cb2cf6fb8a93d7a4f5e54e14ff9"
|
| 97 |
+
},
|
| 98 |
+
{
|
| 99 |
+
"channel": "char",
|
| 100 |
+
"file": "memory_tensors/hybrid/blocks/char_block_0002.safetensors",
|
| 101 |
+
"row_start": 50000,
|
| 102 |
+
"row_end": 50002,
|
| 103 |
+
"rows": 2,
|
| 104 |
+
"cols": 1048576,
|
| 105 |
+
"nnz": 2287,
|
| 106 |
+
"sha256": "87f6addcc250b2526bb9b07a0ff882ef96a7eb32b3c862107929199f3e98f016"
|
| 107 |
+
}
|
| 108 |
+
]
|
| 109 |
+
},
|
| 110 |
+
"struct": {
|
| 111 |
+
"vectorizer": {
|
| 112 |
+
"n_features": 1048576,
|
| 113 |
+
"alternate_sign": false,
|
| 114 |
+
"norm": "l2",
|
| 115 |
+
"analyzer": "word",
|
| 116 |
+
"ngram_range": [
|
| 117 |
+
1,
|
| 118 |
+
3
|
| 119 |
+
],
|
| 120 |
+
"lowercase": false,
|
| 121 |
+
"token_pattern": "(?u)\\b[\\w\uac00-\ud7a3_\\-:+*/=<>\\|#]+\\b"
|
| 122 |
+
},
|
| 123 |
+
"blocks": [
|
| 124 |
+
{
|
| 125 |
+
"channel": "struct",
|
| 126 |
+
"file": "memory_tensors/hybrid/blocks/struct_block_0000.safetensors",
|
| 127 |
+
"row_start": 0,
|
| 128 |
+
"row_end": 25000,
|
| 129 |
+
"rows": 25000,
|
| 130 |
+
"cols": 1048576,
|
| 131 |
+
"nnz": 17105823,
|
| 132 |
+
"sha256": "e57dd527ea7be8d8f8044cbb46085d42d8e1d292a31169eefcaed2bf26864fdd"
|
| 133 |
+
},
|
| 134 |
+
{
|
| 135 |
+
"channel": "struct",
|
| 136 |
+
"file": "memory_tensors/hybrid/blocks/struct_block_0001.safetensors",
|
| 137 |
+
"row_start": 25000,
|
| 138 |
+
"row_end": 50000,
|
| 139 |
+
"rows": 25000,
|
| 140 |
+
"cols": 1048576,
|
| 141 |
+
"nnz": 17104453,
|
| 142 |
+
"sha256": "9e64587069c25e4ae188d4aff80370f0fd4f6ca61477c0eaee2f7b78dc884ec5"
|
| 143 |
+
},
|
| 144 |
+
{
|
| 145 |
+
"channel": "struct",
|
| 146 |
+
"file": "memory_tensors/hybrid/blocks/struct_block_0002.safetensors",
|
| 147 |
+
"row_start": 50000,
|
| 148 |
+
"row_end": 50002,
|
| 149 |
+
"rows": 2,
|
| 150 |
+
"cols": 1048576,
|
| 151 |
+
"nnz": 1371,
|
| 152 |
+
"sha256": "9d70acb3f0af2d0cff6b33bb69217cbba398beeb030be43db3d9e368c07e6e7c"
|
| 153 |
+
}
|
| 154 |
+
]
|
| 155 |
+
}
|
| 156 |
+
},
|
| 157 |
+
"build_time_s": 158.7858015400002,
|
| 158 |
+
"notes": [
|
| 159 |
+
"X_hybrid = 0.25*X_lex ⊕ 0.25*X_char ⊕ 0.50*X_struct",
|
| 160 |
+
"Exact recall requires RID, SHA256, and full text match.",
|
| 161 |
+
"This is external archive retrieval, not internal 10M-token model context."
|
| 162 |
+
],
|
| 163 |
+
"distribution": {
|
| 164 |
+
"package": "NZFC-Hybrid-Exact-Recall-10M",
|
| 165 |
+
"hf_repo_id": "SingularityPrinciple/Gemma-E2B-IT-10M-Chat",
|
| 166 |
+
"contains_full_archive": true,
|
| 167 |
+
"license": "cc-by-nc-4.0",
|
| 168 |
+
"commercial_use": "requires separate written license",
|
| 169 |
+
"patent_license": "not granted by public repository license",
|
| 170 |
+
"safe_claim": "external NZFC archive retrieval, not internal 10M-token model context"
|
| 171 |
+
}
|
| 172 |
+
}
|
meta/complex_math_10m_meta.jsonl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b04b2841deb308f4064122a9338e43c5ea189ee63a24032d905bcb5cae31f0be
|
| 3 |
+
size 13473838
|
meta/target_passage.txt
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[CANONICAL COMPLEX LANGUAGE-MATH PASSAGE]
|
| 2 |
+
TARGET_TITLE: \ub77c\uadf8\ub791\uc8fc-\ubca0\uc140 NZFC \uae30\uc5b5\uc815\ub9ac
|
| 3 |
+
TARGET_KEY: NZFC_COMPLEX_MATH_EXACT_RECALL_KEY_20260602_TRACE_BUDGET
|
| 4 |
+
|
| 5 |
+
\uc815\ub9ac 7.3 — \ub77c\uadf8\ub791\uc8fc-\ubca0\uc140 NZFC \uae30\uc5b5\uc815\ub9ac.
|
| 6 |
+
\uc720\ud55c \uad00\uce21\uc790\uac00 \ub300\ud654 archive \uc804\uccb4 Ω\ub97c \uc9c1\uc811 \uc77d\uc9c0 \uc54a\uace0 \uc81c\ud55c \ucc44\ub110 T_mem(q)\ub9cc\uc744 \ud1b5\ud574 \uacfc\uac70\ub97c \uc7ac\uc18c\ud658\ud55c\ub2e4\uace0 \ud558\uc790.
|
| 7 |
+
\uc5ec\uae30\uc11c q\ub294 \ud604\uc7ac \uc9c8\ubb38, X_i\ub294 i\ubc88\uc9f8 \uae30\uc5b5 record\uc758 sparse embedding, w_i(q)\ub294 resolvent-Gaussian score\uc774\ub2e4.
|
| 8 |
+
\uae30\uc5b5 \uc804\ub2ec \uc5f0\uc0b0\uc790\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc815\uc758\ub41c\ub2e4:
|
| 9 |
+
|
| 10 |
+
T_mem(q) = diag(w_1(q),...,w_N(q)) X,
|
| 11 |
+
K(q) = T_mem(q) T_mem(q)^*,
|
| 12 |
+
T'_mem(q) = Π_{||T||_* ≤ τ}(T_mem(q)).
|
| 13 |
+
|
| 14 |
+
\ud575\uc2ec \uc870\uac74\uc740 \ub2e4\uc74c\uc774\ub2e4:
|
| 15 |
+
|
| 16 |
+
||T'_mem(q)||_* ≤ τ,
|
| 17 |
+
rank_eff(T'_mem) = #{s_j(T'_mem) > 10^{-10}},
|
| 18 |
+
evidence(x_i) is admissible ⇔ hash(x_i) = SHA256(raw_i) and s_i survives projection.
|
| 19 |
+
|
| 20 |
+
\ud574\uc11d.
|
| 21 |
+
Self-adjointness aligns the recall geometry; nuclearity compresses the readout channel.
|
| 22 |
+
\uc989 \uc790\uae30\uc218\ubc18 \ucee4\ub110 K(q)\ub294 \uae30\uc5b5 \ud6c4\ubcf4 \uacf5\uac04\uc758 \uc815\ub82c\uc744 \ubcf4\uc7a5\ud558\uace0, \ud575\ub178\ub984 \uc0ac\uc601\uc740 \uad00\ub828 \uc5c6\ub294 \uae30\uc5b5 \ubaa8\ub4dc\uc758 \uaf2c\ub9ac\ub97c \uc808\ub2e8\ud55c\ub2e4.
|
| 23 |
+
\ub530\ub77c\uc11c \uc0ac\uc6a9\uc790\uac00 \uc624\ub798\uc804 \uc218\ud559\uc801 \ub17c\uc758\ub97c \ub2e4\uc2dc \uaebc\ub0b4\ub3c4, \ubaa8\ub378\uc740 \ub0b4\ubd80 \uc7a0\uc7ac \uae30\uc5b5\uc73c\ub85c \ucd94\uc815\ud558\uc9c0 \uc54a\uace0 \uc6d0\ubb38 \ud574\uc2dc\uac00 \uac80\uc99d\ub41c passage\ub97c \uc7ac\uc18c\ud658\ud574\uc57c \ud55c\ub2e4.
|
| 24 |
+
|
| 25 |
+
\ubc18\ub840 \uacbd\uacc4.
|
| 26 |
+
\ub9cc\uc57d τ\uac00 \ub108\ubb34 \ud06c\uba74 decoy theorem\uacfc canonical theorem\uc774 \ub3d9\uc2dc\uc5d0 \ud65c\uc131\ud654\ub418\uc5b4 confabulation\uc774 \uc99d\uac00\ud55c\ub2e4.
|
| 27 |
+
\ub9cc\uc57d τ\uac00 \ub108\ubb34 \uc791\uc73c\uba74 rank_eff = 1\ub85c \ubd95\uad34\ud558\uc5ec \ud575\uc2ec \uc815\ub9ac\uba85\uc740 \ubcf4\uc874\ub418\uc9c0\ub9cc \uc8fc\ubcc0 \uc99d\uba85 \ub9e5\ub77d\uc774 \uc190\uc2e4\ub420 \uc218 \uc788\ub2e4.
|
| 28 |
+
\ub530\ub77c\uc11c \ube44\uad50\ud615 \uc9c8\ubb38\uc5d0\ub294 τ≈0.8, exact-citation \uc9c8\ubb38\uc5d0\ub294 τ≈0.3\uc774 \uad8c\uc7a5\ub41c\ub2e4.
|
| 29 |
+
|
| 30 |
+
\uc815\ud655 \ub9ac\ucf5c \uae30\uc900.
|
| 31 |
+
\uc774 passage\uc758 \uc815\ud655 \ub9ac\ucf5c\uc740 \uc758\ubbf8\uc801 \uc694\uc57d\uc774 \uc544\ub2c8\ub77c, record id RID_000000_COMPLEX_MATH_CANONICAL_EXACT\uc640 \ubcf8\ubb38 SHA-256\uc774 \ub3d9\uc2dc\uc5d0 \uc77c\uce58\ud558\ub294 \uacbd\uc6b0\uc5d0\ub9cc \uc131\uacf5\uc73c\ub85c \ud310\uc815\ud55c\ub2e4.
|
| 32 |
+
\uc694\uc57d, \uc758\uc5ed, \uc218\uc2dd \uc77c\ubd80 \ub204\ub77d, τ\uc758 \uac12 \ubcc0\uacbd, \ud639\uc740 '\ub77c\uadf8\ub791\uc8fc-\ubca0\uc140'\uc744 '\ub77c\uadf8\ub791\uc8fc-\ubca0\ub978\uc288\ud0c0\uc778'\uc73c\ub85c \ubc14\uafb8\ub294 \ucd9c\ub825\uc740 \uc2e4\ud328\ub2e4.
|
meta/target_passage_sha256.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
03026df135358211a326a95b99da799c065441b47fdc568eb2a9c8a362c5a638
|
nzfc_gram_runtime/diffusiongemma_adapter.py
CHANGED
|
@@ -51,14 +51,6 @@ def infer_input_device(model) -> torch.device:
|
|
| 51 |
return torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
|
| 52 |
|
| 53 |
|
| 54 |
-
def build_messages(system_prompt: str, user_prompt: str):
|
| 55 |
-
messages = []
|
| 56 |
-
if system_prompt:
|
| 57 |
-
messages.append({'role': 'system', 'content': str(system_prompt)})
|
| 58 |
-
messages.append({'role': 'user', 'content': str(user_prompt)})
|
| 59 |
-
return messages
|
| 60 |
-
|
| 61 |
-
|
| 62 |
def attach_diffusiongemma_block_diffusion(
|
| 63 |
bot: Any,
|
| 64 |
*,
|
|
@@ -78,23 +70,12 @@ def attach_diffusiongemma_block_diffusion(
|
|
| 78 |
model_cls = AutoModelForMultimodalLM
|
| 79 |
model_class_name = 'AutoModelForMultimodalLM'
|
| 80 |
|
| 81 |
-
if verbose:
|
| 82 |
-
print('[NZFC DiffusionGemma] model_id:', model_id)
|
| 83 |
-
print('[NZFC DiffusionGemma] device_map:', device_map)
|
| 84 |
-
print('[NZFC DiffusionGemma] dtype:', dtype)
|
| 85 |
-
|
| 86 |
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=trust_remote_code)
|
| 87 |
-
|
| 88 |
-
kwargs = {
|
| 89 |
-
'device_map': device_map,
|
| 90 |
-
'trust_remote_code': trust_remote_code,
|
| 91 |
-
}
|
| 92 |
if dtype is not None:
|
| 93 |
kwargs['dtype'] = dtype
|
| 94 |
-
|
| 95 |
model = model_cls.from_pretrained(model_id, **kwargs)
|
| 96 |
model.eval()
|
| 97 |
-
|
| 98 |
input_device = infer_input_device(model)
|
| 99 |
|
| 100 |
bot.model = model
|
|
@@ -104,90 +85,42 @@ def attach_diffusiongemma_block_diffusion(
|
|
| 104 |
bot.model_loaded = True
|
| 105 |
bot.model_id = model_id
|
| 106 |
|
| 107 |
-
def diffusiongemma_generate_answer(
|
| 108 |
-
self,
|
| 109 |
-
system_prompt: str,
|
| 110 |
-
user_prompt: str,
|
| 111 |
-
max_new_tokens: Optional[int] = None,
|
| 112 |
-
do_sample: bool = False,
|
| 113 |
-
temperature: Optional[float] = None,
|
| 114 |
-
top_p: Optional[float] = None,
|
| 115 |
-
**generation_kwargs,
|
| 116 |
-
):
|
| 117 |
t0 = time.perf_counter()
|
| 118 |
model = self.model
|
| 119 |
processor = self.processor
|
| 120 |
device = getattr(self, 'input_device', None) or infer_input_device(model)
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
add_generation_prompt=True,
|
| 127 |
-
return_dict=True,
|
| 128 |
-
return_tensors='pt',
|
| 129 |
-
)
|
| 130 |
if hasattr(inputs, 'to'):
|
| 131 |
inputs = inputs.to(device)
|
| 132 |
else:
|
| 133 |
inputs = {k: (v.to(device) if torch.is_tensor(v) else v) for k, v in inputs.items()}
|
| 134 |
-
|
| 135 |
input_len = int(inputs['input_ids'].shape[-1]) if 'input_ids' in inputs else 0
|
| 136 |
-
|
| 137 |
gen_kwargs = dict(inputs)
|
| 138 |
gen_kwargs['max_new_tokens'] = int(max_new_tokens or default_max_new_tokens)
|
| 139 |
-
|
| 140 |
-
if do_sample is not None:
|
| 141 |
-
gen_kwargs['do_sample'] = bool(do_sample)
|
| 142 |
-
if temperature is not None:
|
| 143 |
-
gen_kwargs['temperature'] = float(temperature)
|
| 144 |
-
if top_p is not None:
|
| 145 |
-
gen_kwargs['top_p'] = float(top_p)
|
| 146 |
gen_kwargs.update(generation_kwargs)
|
| 147 |
-
|
| 148 |
clear_cuda()
|
| 149 |
with torch.inference_mode():
|
| 150 |
outputs = model.generate(**gen_kwargs)
|
| 151 |
-
|
| 152 |
-
if isinstance(outputs, torch.Tensor):
|
| 153 |
-
out_ids = outputs[0]
|
| 154 |
-
else:
|
| 155 |
-
out_ids = outputs.sequences[0]
|
| 156 |
-
|
| 157 |
try:
|
| 158 |
-
|
| 159 |
-
text = processor.decode(gen_ids, skip_special_tokens=True).strip()
|
| 160 |
except Exception:
|
| 161 |
text = processor.decode(out_ids, skip_special_tokens=True).strip()
|
| 162 |
-
|
| 163 |
-
return {
|
| 164 |
-
'ran': True,
|
| 165 |
-
'answer': text,
|
| 166 |
-
'answer_raw': text,
|
| 167 |
-
'input_tokens': input_len,
|
| 168 |
-
'new_tokens': int(out_ids.shape[-1] - input_len) if hasattr(out_ids, 'shape') else None,
|
| 169 |
-
'latency_s': float(time.perf_counter() - t0),
|
| 170 |
-
'model_id': model_id,
|
| 171 |
-
'adapter': 'NZFC DiffusionGemma block-diffusion adapter',
|
| 172 |
-
'vram': vram_snapshot(),
|
| 173 |
-
}
|
| 174 |
|
| 175 |
bot.generate_answer = types.MethodType(diffusiongemma_generate_answer, bot)
|
| 176 |
-
|
| 177 |
bot.nzfc_diffusiongemma_profile = {
|
| 178 |
-
'version': 'v1.2.
|
| 179 |
'base_model': model_id,
|
| 180 |
-
'adapter': 'DiffusionGemma
|
| 181 |
-
'
|
| 182 |
-
'dtype': dtype,
|
| 183 |
-
'input_device': str(input_device),
|
| 184 |
-
'model_class': model_class_name,
|
| 185 |
-
'vram': vram_snapshot(),
|
| 186 |
-
'claim_boundary': 'Marketing title uses Infinite-Context; technical layer is external evidence context, not native unlimited context.',
|
| 187 |
}
|
| 188 |
-
|
| 189 |
if verbose:
|
| 190 |
print('[NZFC DiffusionGemma][OK] attached')
|
| 191 |
print(bot.nzfc_diffusiongemma_profile)
|
| 192 |
-
|
| 193 |
return bot.nzfc_diffusiongemma_profile
|
|
|
|
| 51 |
return torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
|
| 52 |
|
| 53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
def attach_diffusiongemma_block_diffusion(
|
| 55 |
bot: Any,
|
| 56 |
*,
|
|
|
|
| 70 |
model_cls = AutoModelForMultimodalLM
|
| 71 |
model_class_name = 'AutoModelForMultimodalLM'
|
| 72 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 73 |
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=trust_remote_code)
|
| 74 |
+
kwargs = {'device_map': device_map, 'trust_remote_code': trust_remote_code}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 75 |
if dtype is not None:
|
| 76 |
kwargs['dtype'] = dtype
|
|
|
|
| 77 |
model = model_cls.from_pretrained(model_id, **kwargs)
|
| 78 |
model.eval()
|
|
|
|
| 79 |
input_device = infer_input_device(model)
|
| 80 |
|
| 81 |
bot.model = model
|
|
|
|
| 85 |
bot.model_loaded = True
|
| 86 |
bot.model_id = model_id
|
| 87 |
|
| 88 |
+
def diffusiongemma_generate_answer(self, system_prompt: str, user_prompt: str, max_new_tokens: Optional[int] = None, **generation_kwargs):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 89 |
t0 = time.perf_counter()
|
| 90 |
model = self.model
|
| 91 |
processor = self.processor
|
| 92 |
device = getattr(self, 'input_device', None) or infer_input_device(model)
|
| 93 |
+
messages = []
|
| 94 |
+
if system_prompt:
|
| 95 |
+
messages.append({'role': 'system', 'content': str(system_prompt)})
|
| 96 |
+
messages.append({'role': 'user', 'content': str(user_prompt)})
|
| 97 |
+
inputs = processor.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_dict=True, return_tensors='pt')
|
|
|
|
|
|
|
|
|
|
|
|
|
| 98 |
if hasattr(inputs, 'to'):
|
| 99 |
inputs = inputs.to(device)
|
| 100 |
else:
|
| 101 |
inputs = {k: (v.to(device) if torch.is_tensor(v) else v) for k, v in inputs.items()}
|
|
|
|
| 102 |
input_len = int(inputs['input_ids'].shape[-1]) if 'input_ids' in inputs else 0
|
|
|
|
| 103 |
gen_kwargs = dict(inputs)
|
| 104 |
gen_kwargs['max_new_tokens'] = int(max_new_tokens or default_max_new_tokens)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 105 |
gen_kwargs.update(generation_kwargs)
|
|
|
|
| 106 |
clear_cuda()
|
| 107 |
with torch.inference_mode():
|
| 108 |
outputs = model.generate(**gen_kwargs)
|
| 109 |
+
out_ids = outputs[0] if isinstance(outputs, torch.Tensor) else outputs.sequences[0]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 110 |
try:
|
| 111 |
+
text = processor.decode(out_ids[input_len:], skip_special_tokens=True).strip()
|
|
|
|
| 112 |
except Exception:
|
| 113 |
text = processor.decode(out_ids, skip_special_tokens=True).strip()
|
| 114 |
+
return {'ran': True, 'answer': text, 'answer_raw': text, 'input_tokens': input_len, 'latency_s': float(time.perf_counter() - t0), 'model_id': model_id, 'adapter': 'NZFC DiffusionGemma adapter', 'vram': vram_snapshot()}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 115 |
|
| 116 |
bot.generate_answer = types.MethodType(diffusiongemma_generate_answer, bot)
|
|
|
|
| 117 |
bot.nzfc_diffusiongemma_profile = {
|
| 118 |
+
'version': 'v1.2.5a-runtime-assets-final',
|
| 119 |
'base_model': model_id,
|
| 120 |
+
'adapter': 'DiffusionGemma adapter',
|
| 121 |
+
'claim_boundary': 'Marketing title uses Infinite-Context; technical layer is external evidence context, not native unlimited context.'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 122 |
}
|
|
|
|
| 123 |
if verbose:
|
| 124 |
print('[NZFC DiffusionGemma][OK] attached')
|
| 125 |
print(bot.nzfc_diffusiongemma_profile)
|
|
|
|
| 126 |
return bot.nzfc_diffusiongemma_profile
|
release_notes/DiffusionGemma_Infinite_Context_Evidence_Pack_Update.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# DiffusionGemma-26B-A4B-it-Infinite-Context Evidence Pack Runtime Asset Fix
|
| 2 |
+
|
| 3 |
+
## Summary
|
| 4 |
+
|
| 5 |
+
This update adds the missing NZFC runtime root assets required by `NZFCGramLongMemoryChat`.
|
| 6 |
+
|
| 7 |
+
The repo now includes:
|
| 8 |
+
|
| 9 |
+
- `runtime/`
|
| 10 |
+
- `meta/`
|
| 11 |
+
- `memory_tensors/` when available
|
| 12 |
+
- `archive/` when available
|
| 13 |
+
- `configs/` when available
|
| 14 |
+
- runtime-only validation evidence
|
| 15 |
+
|
| 16 |
+
## Runtime-only smoke
|
| 17 |
+
|
| 18 |
+
Validated without loading the base DiffusionGemma model:
|
| 19 |
+
|
| 20 |
+
- package import,
|
| 21 |
+
- repo-root runtime asset discovery,
|
| 22 |
+
- exact slot recall,
|
| 23 |
+
- large-document indexing and retrieval.
|
| 24 |
+
|
| 25 |
+
## Boundary
|
| 26 |
+
|
| 27 |
+
`Infinite-Context` is the marketing-facing repository title.
|
| 28 |
+
|
| 29 |
+
The technical mechanism is external evidence context, not native unlimited model context.
|
runtime/nzfc_hybrid_exact_recall.py
ADDED
|
@@ -0,0 +1,515 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import re
|
| 2 |
+
import json
|
| 3 |
+
import time
|
| 4 |
+
import hashlib
|
| 5 |
+
from pathlib import Path
|
| 6 |
+
from typing import Dict, List, Any, Optional, Tuple, Set
|
| 7 |
+
|
| 8 |
+
import numpy as np
|
| 9 |
+
import scipy.sparse as sp
|
| 10 |
+
from safetensors import safe_open
|
| 11 |
+
from sklearn.feature_extraction.text import HashingVectorizer
|
| 12 |
+
|
| 13 |
+
MATH_CHARS = set("\\_^{}[]()=+-*/<>≤≥→↦∥ΠπΣ∑τγλμνρσ∞∈∉⊂⊃⊆⊇#*'\"")
|
| 14 |
+
KOREAN_ANCHORS = ['\ub77c\uadf8\ub791\uc8fc-\ubca0\uc140','\ub77c\uadf8\ub791\uc8fc','\ubca0\uc140','\uae30\uc5b5\uc815\ub9ac','\ud575\ub178\ub984','\uc0ac\uc601','\uc790\uae30\uc218\ubc18','\uc815\ubcf4\uc9c0\ud3c9','\uc815\ud655 \ub9ac\ucf5c','\uc6d0\ubb38 \ud574\uc2dc','\uac80\uc99d','\ubc18\ub840 \uacbd\uacc4']
|
| 15 |
+
SEMANTIC_PATTERNS = {
|
| 16 |
+
'NZFC_SEM_NUCLEAR': ['nuclear','trace norm','trace-class','\ud575\ub178\ub984','nuclearity'],
|
| 17 |
+
'NZFC_SEM_PROJECTION': ['projection','project','Π','Pi','\uc0ac\uc601','nuclear projection'],
|
| 18 |
+
'NZFC_SEM_SELF_ADJOINT': ['self-adjoint','selfadjoint','\uc790\uae30\uc218\ubc18','K(q)','K ='],
|
| 19 |
+
'NZFC_SEM_HASH_VERIFY': ['SHA-256','SHA256','hash','\ud574\uc2dc','verified','\uac80\uc99d'],
|
| 20 |
+
'NZFC_SEM_EXACT_RECALL': ['exact recall','\uc815\ud655 \ub9ac\ucf5c','\uc6d0\ubb38','RID','canonical'],
|
| 21 |
+
'NZFC_SEM_TRACE_BUDGET': ['tau','τ','trace-budget','\uc815\ubcf4\uc9c0\ud3c9','finite trace','budget'],
|
| 22 |
+
'NZFC_SEM_RANK': ['rank_eff','effective rank','rank'],
|
| 23 |
+
'NZFC_SEM_MEMORY_OPERATOR': ['T_mem',"T'_mem",'Tmem','memory operator','\uae30\uc5b5 \uc804\ub2ec \uc5f0\uc0b0\uc790'],
|
| 24 |
+
}
|
| 25 |
+
|
| 26 |
+
def sha256_text(text: str) -> str:
|
| 27 |
+
return hashlib.sha256(str(text).encode('utf-8')).hexdigest()
|
| 28 |
+
|
| 29 |
+
def read_json(path: Path) -> Dict[str, Any]:
|
| 30 |
+
return json.loads(Path(path).read_text(encoding='utf-8'))
|
| 31 |
+
|
| 32 |
+
def read_record_at_offset(path: Path, offset: int) -> Dict[str, Any]:
|
| 33 |
+
with open(path, 'rb') as f:
|
| 34 |
+
f.seek(int(offset))
|
| 35 |
+
line = f.readline()
|
| 36 |
+
return json.loads(line.decode('utf-8'))
|
| 37 |
+
|
| 38 |
+
def normalize_unicode_math(s: str) -> str:
|
| 39 |
+
s = str(s)
|
| 40 |
+
replacements = {'≤':'<=','≥':'>=','→':'->','↦':'->','∥':'||','Π':'Pi','π':'pi','τ':'tau','γ':'gamma','λ':'lambda','μ':'mu','ν':'nu','ρ':'rho','σ':'sigma','∞':'inf','−':'-','–':'-','—':'-'}
|
| 41 |
+
for a, b in replacements.items():
|
| 42 |
+
s = s.replace(a, b)
|
| 43 |
+
return s
|
| 44 |
+
|
| 45 |
+
def extract_math_like_lines(text: str) -> List[str]:
|
| 46 |
+
lines = []
|
| 47 |
+
for line in str(text).splitlines():
|
| 48 |
+
raw = line.strip()
|
| 49 |
+
if not raw:
|
| 50 |
+
continue
|
| 51 |
+
math_char_count = sum(1 for c in raw if c in MATH_CHARS)
|
| 52 |
+
has_formula_token = bool(re.search(r'(T_mem|rank_eff|SHA-?256|diag|Pi|Π|tau|τ|K\(q\)|\|\|T\|\|)', raw))
|
| 53 |
+
if math_char_count >= 3 or has_formula_token:
|
| 54 |
+
lines.append(raw)
|
| 55 |
+
for m in re.finditer(r'\$([^$]{2,})\$', str(text)):
|
| 56 |
+
lines.append(m.group(1))
|
| 57 |
+
return lines
|
| 58 |
+
|
| 59 |
+
def formula_skeleton(s: str) -> str:
|
| 60 |
+
s = normalize_unicode_math(s)
|
| 61 |
+
s = re.sub(r'\s+', '', s)
|
| 62 |
+
protected = {'T_mem':'TMEM', "T'_mem":'TPMEM', 'rank_eff':'RANKEFF', 'SHA256':'SHA256', 'SHA-256':'SHA256', 'diag':'DIAG', 'Pi':'PI', 'K(q)':'KQ'}
|
| 63 |
+
for a, b in protected.items():
|
| 64 |
+
s = s.replace(a, b)
|
| 65 |
+
s = re.sub(r'\d+(?:\.\d+)?(?:\^\{-?\d+\})?', 'NUM', s)
|
| 66 |
+
def repl_ident(m):
|
| 67 |
+
tok = m.group(0)
|
| 68 |
+
if tok in ['TMEM','TPMEM','RANKEFF','SHA256','DIAG','PI','KQ']:
|
| 69 |
+
return tok
|
| 70 |
+
if len(tok) <= 2:
|
| 71 |
+
return 'VAR'
|
| 72 |
+
return tok
|
| 73 |
+
s = re.sub(r"[A-Za-z_][A-Za-z0-9_']*", repl_ident, s)
|
| 74 |
+
s = re.sub(r'([{}\[\]\(\)=+\-*/<>|_,#])', r' \1 ', s)
|
| 75 |
+
s = re.sub(r'\s+', ' ', s).strip()
|
| 76 |
+
return s
|
| 77 |
+
|
| 78 |
+
def math_structure_tokens(text: str) -> List[str]:
|
| 79 |
+
tokens = []
|
| 80 |
+
for line in extract_math_like_lines(text):
|
| 81 |
+
skel = formula_skeleton(line)
|
| 82 |
+
if skel:
|
| 83 |
+
tokens.append('MATH_SKEL_' + skel)
|
| 84 |
+
parts = skel.split()
|
| 85 |
+
for p in parts:
|
| 86 |
+
tokens.append('MATH_TOK_' + p)
|
| 87 |
+
for a, b in zip(parts, parts[1:]):
|
| 88 |
+
tokens.append('MATH_BIGRAM_' + a + '__' + b)
|
| 89 |
+
for a, b, c in zip(parts, parts[1:], parts[2:]):
|
| 90 |
+
tokens.append('MATH_TRIGRAM_' + a + '__' + b + '__' + c)
|
| 91 |
+
for cmd in re.findall(r'\\[A-Za-z]+', str(text)):
|
| 92 |
+
tokens.append('LATEX_CMD_' + cmd.replace('\\', ''))
|
| 93 |
+
raw = str(text)
|
| 94 |
+
for anchor in ['T_mem',"T'_mem",'K(q)','diag','rank_eff','SHA-256','SHA256','||T||_*','||T||','Pi','Π','s_j','10^{-10}','evidence','hash']:
|
| 95 |
+
if anchor in raw:
|
| 96 |
+
tokens.append('ANCHOR_' + normalize_unicode_math(anchor).replace(' ', '_'))
|
| 97 |
+
return tokens
|
| 98 |
+
|
| 99 |
+
def semantic_sparse_tags(text: str) -> List[str]:
|
| 100 |
+
low = str(text).lower()
|
| 101 |
+
tags = []
|
| 102 |
+
for tag, patterns in SEMANTIC_PATTERNS.items():
|
| 103 |
+
for p in patterns:
|
| 104 |
+
if p.lower() in low:
|
| 105 |
+
tags.append(tag)
|
| 106 |
+
break
|
| 107 |
+
for a in KOREAN_ANCHORS:
|
| 108 |
+
if a in str(text):
|
| 109 |
+
tags.append('KO_ANCHOR_' + a.replace(' ', '_'))
|
| 110 |
+
return tags
|
| 111 |
+
|
| 112 |
+
def make_structural_document(text: str) -> str:
|
| 113 |
+
toks = [str(text)]
|
| 114 |
+
struct = math_structure_tokens(text)
|
| 115 |
+
tags = semantic_sparse_tags(text)
|
| 116 |
+
toks.extend(struct)
|
| 117 |
+
toks.extend(tags)
|
| 118 |
+
toks.extend(struct)
|
| 119 |
+
return '\n'.join(toks)
|
| 120 |
+
|
| 121 |
+
def extract_query_anchors(text: str) -> Set[str]:
|
| 122 |
+
s = str(text)
|
| 123 |
+
s_norm = normalize_unicode_math(s)
|
| 124 |
+
anchors = set()
|
| 125 |
+
for m in re.findall(r"[A-Za-z][A-Za-z0-9_'\-]*(?:\([^)]+\))?", s_norm):
|
| 126 |
+
tok = m.strip()
|
| 127 |
+
if len(tok) >= 3:
|
| 128 |
+
anchors.add(tok.lower())
|
| 129 |
+
for a in KOREAN_ANCHORS:
|
| 130 |
+
if a in s:
|
| 131 |
+
anchors.add(a)
|
| 132 |
+
for p in ['T_mem',"T'_mem",'K(q)','rank_eff','SHA-256','hash','\ud575\ub178\ub984','\uc0ac\uc601','\ub77c\uadf8\ub791\uc8fc-\ubca0\uc140']:
|
| 133 |
+
if p in s:
|
| 134 |
+
anchors.add(p.lower())
|
| 135 |
+
for m in re.findall(r'[\uac00-\ud7a3A-Za-z0-9_\-]+', s):
|
| 136 |
+
if len(m) >= 3:
|
| 137 |
+
anchors.add(m.lower())
|
| 138 |
+
return anchors
|
| 139 |
+
|
| 140 |
+
def anchor_coverage_score(query: str, text: str) -> float:
|
| 141 |
+
anchors = extract_query_anchors(query)
|
| 142 |
+
if not anchors:
|
| 143 |
+
return 0.0
|
| 144 |
+
t = normalize_unicode_math(str(text)).lower()
|
| 145 |
+
hit = 0
|
| 146 |
+
for a in anchors:
|
| 147 |
+
if a.lower() in t:
|
| 148 |
+
hit += 1
|
| 149 |
+
return hit / max(1, len(anchors))
|
| 150 |
+
|
| 151 |
+
def formula_signature_set(text: str) -> Set[str]:
|
| 152 |
+
sigs = set()
|
| 153 |
+
for line in extract_math_like_lines(text):
|
| 154 |
+
skel = formula_skeleton(line)
|
| 155 |
+
if skel:
|
| 156 |
+
sigs.add(skel)
|
| 157 |
+
return sigs
|
| 158 |
+
|
| 159 |
+
def jaccard(a: Set[str], b: Set[str]) -> float:
|
| 160 |
+
if not a and not b:
|
| 161 |
+
return 0.0
|
| 162 |
+
return len(a & b) / max(1, len(a | b))
|
| 163 |
+
|
| 164 |
+
def formula_jaccard_score(query: str, text: str) -> float:
|
| 165 |
+
return jaccard(formula_signature_set(query), formula_signature_set(text))
|
| 166 |
+
|
| 167 |
+
def project_l1_ball_nonnegative(v: np.ndarray, tau: float) -> np.ndarray:
|
| 168 |
+
v = np.maximum(np.asarray(v, dtype=np.float64), 0.0)
|
| 169 |
+
if v.sum() <= tau:
|
| 170 |
+
return v.copy()
|
| 171 |
+
if tau <= 0:
|
| 172 |
+
return np.zeros_like(v)
|
| 173 |
+
u = np.sort(v)[::-1]
|
| 174 |
+
cssv = np.cumsum(u)
|
| 175 |
+
idx = np.arange(1, len(u) + 1)
|
| 176 |
+
cond = u * idx > (cssv - tau)
|
| 177 |
+
if not np.any(cond):
|
| 178 |
+
theta = 0.0
|
| 179 |
+
else:
|
| 180 |
+
rho = np.where(cond)[0][-1]
|
| 181 |
+
theta = (cssv[rho] - tau) / float(rho + 1)
|
| 182 |
+
return np.maximum(v - theta, 0.0)
|
| 183 |
+
|
| 184 |
+
def gaussian_resolvent_score(sim: np.ndarray, epsilon: float = 8.0, zeta: float = 1e-3) -> np.ndarray:
|
| 185 |
+
sim_pos = np.maximum(sim, 0.0)
|
| 186 |
+
gap = 1.0 - sim_pos
|
| 187 |
+
return np.exp(-epsilon * gap * gap) / (gap * gap + zeta)
|
| 188 |
+
|
| 189 |
+
def sparse_self_adjoint_kernel_diagnostics(X_pool) -> Dict[str, Any]:
|
| 190 |
+
if X_pool is None or X_pool.shape[0] == 0:
|
| 191 |
+
return {'self_adjoint_antisymmetry_rel': None, 'kernel_trace': 0.0, 'candidate_count': 0}
|
| 192 |
+
if not sp.issparse(X_pool):
|
| 193 |
+
X_pool = sp.csr_matrix(X_pool)
|
| 194 |
+
K = (X_pool @ X_pool.T).toarray()
|
| 195 |
+
K_sym = 0.5 * (K + K.T)
|
| 196 |
+
anti = np.linalg.norm(K - K.T) / (np.linalg.norm(K) + 1e-12)
|
| 197 |
+
return {'self_adjoint_antisymmetry_rel': float(anti), 'kernel_trace': float(np.trace(K_sym)), 'candidate_count': int(X_pool.shape[0])}
|
| 198 |
+
|
| 199 |
+
def sparse_nuclear_projection_diagnostics(X_pool, weights: np.ndarray, tau: float) -> Dict[str, Any]:
|
| 200 |
+
if X_pool is None or X_pool.shape[0] == 0:
|
| 201 |
+
return {'nuclear_before': 0.0, 'nuclear_after': 0.0, 'tail_removed': 0.0, 'effective_rank_after': 0, 'row_energy': np.array([])}
|
| 202 |
+
if not sp.issparse(X_pool):
|
| 203 |
+
X_pool = sp.csr_matrix(X_pool)
|
| 204 |
+
w = np.asarray(weights, dtype=np.float64)
|
| 205 |
+
if w.max() > 0:
|
| 206 |
+
w = w / (w.max() + 1e-12)
|
| 207 |
+
w = np.maximum(w, 0.0)
|
| 208 |
+
T = X_pool.multiply(w[:, None])
|
| 209 |
+
G = (T @ T.T).toarray()
|
| 210 |
+
G = 0.5 * (G + G.T)
|
| 211 |
+
eigvals, U = np.linalg.eigh(G)
|
| 212 |
+
eigvals = np.maximum(eigvals, 0.0)
|
| 213 |
+
s = np.sqrt(eigvals)
|
| 214 |
+
order = np.argsort(-s)
|
| 215 |
+
s = s[order]
|
| 216 |
+
U = U[:, order]
|
| 217 |
+
s_proj = project_l1_ball_nonnegative(s, tau)
|
| 218 |
+
row_energy = np.sqrt(np.sum((U * s_proj[None, :]) ** 2, axis=1))
|
| 219 |
+
if row_energy.size and row_energy.max() > 0:
|
| 220 |
+
row_energy = row_energy / (row_energy.max() + 1e-12)
|
| 221 |
+
return {'nuclear_before': float(s.sum()), 'nuclear_after': float(s_proj.sum()), 'tail_removed': float(max(0.0, s.sum() - s_proj.sum())), 'effective_rank_after': int(np.sum(s_proj > 1e-10)), 'row_energy': row_energy, 'singular_values_before': [float(x) for x in s[:16]], 'singular_values_after': [float(x) for x in s_proj[:16]]}
|
| 222 |
+
|
| 223 |
+
class CSRBlockIndex:
|
| 224 |
+
def __init__(self, root: Path, blocks_meta: List[Dict[str, Any]], n_features: int):
|
| 225 |
+
self.root = Path(root)
|
| 226 |
+
self.blocks_meta = blocks_meta
|
| 227 |
+
self.n_features = n_features
|
| 228 |
+
self.blocks = []
|
| 229 |
+
self.block_ranges = []
|
| 230 |
+
self.loaded = False
|
| 231 |
+
|
| 232 |
+
def load(self):
|
| 233 |
+
if self.loaded:
|
| 234 |
+
return
|
| 235 |
+
for b in self.blocks_meta:
|
| 236 |
+
path = self.root / b['file']
|
| 237 |
+
with safe_open(str(path), framework='pt', device='cpu') as f:
|
| 238 |
+
data = f.get_tensor('data').numpy().astype(np.float32, copy=False)
|
| 239 |
+
indices = f.get_tensor('indices').numpy().astype(np.int32, copy=False)
|
| 240 |
+
indptr = f.get_tensor('indptr').numpy().astype(np.int32, copy=False)
|
| 241 |
+
shape = tuple(f.get_tensor('shape').numpy().astype(np.int64).tolist())
|
| 242 |
+
X = sp.csr_matrix((data, indices, indptr), shape=shape)
|
| 243 |
+
self.blocks.append(X)
|
| 244 |
+
self.block_ranges.append((int(b['row_start']), int(b['row_end'])))
|
| 245 |
+
self.loaded = True
|
| 246 |
+
|
| 247 |
+
def similarity(self, q):
|
| 248 |
+
self.load()
|
| 249 |
+
sims = []
|
| 250 |
+
for X in self.blocks:
|
| 251 |
+
sims.append((X @ q.T).toarray().ravel().astype(np.float64))
|
| 252 |
+
return np.concatenate(sims, axis=0) if sims else np.array([], dtype=np.float64)
|
| 253 |
+
|
| 254 |
+
def rows(self, indices: np.ndarray):
|
| 255 |
+
self.load()
|
| 256 |
+
rows = []
|
| 257 |
+
for idx in indices:
|
| 258 |
+
idx = int(idx)
|
| 259 |
+
for block_i, (start, end) in enumerate(self.block_ranges):
|
| 260 |
+
if start <= idx < end:
|
| 261 |
+
rows.append(self.blocks[block_i][idx - start])
|
| 262 |
+
break
|
| 263 |
+
if not rows:
|
| 264 |
+
return sp.csr_matrix((0, self.n_features), dtype=np.float32)
|
| 265 |
+
return sp.vstack(rows, format='csr')
|
| 266 |
+
|
| 267 |
+
class NZFCHybridExactRecall10M:
|
| 268 |
+
def __init__(self, repo_dir: str = '.'):
|
| 269 |
+
self.root = Path(repo_dir)
|
| 270 |
+
self.manifest = read_json(self.root / 'memory_tensors/hybrid/hybrid_manifest.json')
|
| 271 |
+
self.n_features = int(self.manifest['n_features'])
|
| 272 |
+
self.archive_path = self.root / self.manifest['archive_path'] if self.manifest.get('archive_path') else None
|
| 273 |
+
self.meta_path = self.root / self.manifest['meta_path']
|
| 274 |
+
self.metas = []
|
| 275 |
+
with open(self.meta_path, 'rb') as f:
|
| 276 |
+
for line in f:
|
| 277 |
+
if line.strip():
|
| 278 |
+
self.metas.append(json.loads(line.decode('utf-8')))
|
| 279 |
+
self.target = self.manifest['target']
|
| 280 |
+
self.target_passage = (self.root / self.target['target_passage_file']).read_text(encoding='utf-8')
|
| 281 |
+
self.target_sha256 = self.target['target_sha256']
|
| 282 |
+
self.lex_vectorizer = self._build_vectorizer(self.manifest['channels']['lex']['vectorizer'])
|
| 283 |
+
self.char_vectorizer = self._build_vectorizer(self.manifest['channels']['char']['vectorizer'])
|
| 284 |
+
self.struct_vectorizer = self._build_vectorizer(self.manifest['channels']['struct']['vectorizer'])
|
| 285 |
+
self.lex_index = CSRBlockIndex(self.root, self.manifest['channels']['lex']['blocks'], self.n_features)
|
| 286 |
+
self.char_index = CSRBlockIndex(self.root, self.manifest['channels']['char']['blocks'], self.n_features)
|
| 287 |
+
self.struct_index = CSRBlockIndex(self.root, self.manifest['channels']['struct']['blocks'], self.n_features)
|
| 288 |
+
|
| 289 |
+
def _build_vectorizer(self, cfg):
|
| 290 |
+
kwargs = {'n_features': cfg['n_features'], 'alternate_sign': cfg['alternate_sign'], 'norm': cfg['norm'], 'analyzer': cfg['analyzer'], 'ngram_range': tuple(cfg['ngram_range']), 'lowercase': cfg['lowercase']}
|
| 291 |
+
if 'token_pattern' in cfg:
|
| 292 |
+
kwargs['token_pattern'] = cfg['token_pattern']
|
| 293 |
+
return HashingVectorizer(**kwargs)
|
| 294 |
+
|
| 295 |
+
def preload(self):
|
| 296 |
+
self.lex_index.load()
|
| 297 |
+
self.char_index.load()
|
| 298 |
+
self.struct_index.load()
|
| 299 |
+
|
| 300 |
+
def verify_meta(self, meta):
|
| 301 |
+
if self.archive_path is None or not self.archive_path.exists():
|
| 302 |
+
return {'verified': False, 'raw': None, 'reason': 'archive_not_included'}
|
| 303 |
+
raw = read_record_at_offset(self.archive_path, int(meta['byte_offset']))
|
| 304 |
+
ok_rid = raw.get('rid') == meta.get('rid')
|
| 305 |
+
ok_hash = sha256_text(raw.get('text', '')) == meta.get('text_sha256')
|
| 306 |
+
return {'verified': bool(ok_rid and ok_hash), 'raw': raw}
|
| 307 |
+
|
| 308 |
+
def _positive_normalize(self, a):
|
| 309 |
+
a = np.maximum(np.asarray(a, dtype=np.float64), 0.0)
|
| 310 |
+
m = float(a.max()) if a.size else 0.0
|
| 311 |
+
if m <= 1e-14:
|
| 312 |
+
return a
|
| 313 |
+
return a / (m + 1e-12)
|
| 314 |
+
|
| 315 |
+
def _hybrid_vectors(self, query):
|
| 316 |
+
q_lex = self.lex_vectorizer.transform([query])
|
| 317 |
+
q_char = self.char_vectorizer.transform([query])
|
| 318 |
+
q_struct = self.struct_vectorizer.transform([make_structural_document(query)])
|
| 319 |
+
return self.lex_index.similarity(q_lex), self.char_index.similarity(q_char), self.struct_index.similarity(q_struct)
|
| 320 |
+
|
| 321 |
+
def _rows_from_hybrid(self, indices):
|
| 322 |
+
A = self.lex_index.rows(indices).multiply(0.25)
|
| 323 |
+
B = self.char_index.rows(indices).multiply(0.25)
|
| 324 |
+
C = self.struct_index.rows(indices).multiply(0.50)
|
| 325 |
+
return sp.hstack([A, B, C], format='csr')
|
| 326 |
+
|
| 327 |
+
def _read_text_by_index(self, global_idx):
|
| 328 |
+
meta = self.metas[int(global_idx)]
|
| 329 |
+
if self.archive_path is None or not self.archive_path.exists():
|
| 330 |
+
return meta.get('text_preview', '')
|
| 331 |
+
rec = read_record_at_offset(self.archive_path, int(meta['byte_offset']))
|
| 332 |
+
return rec.get('text', '')
|
| 333 |
+
|
| 334 |
+
def query(self, query, tau_trace=0.3, top_pool=512, top_k=16, strict_energy_floor=0.010):
|
| 335 |
+
t0 = time.perf_counter()
|
| 336 |
+
sim_lex, sim_char, sim_struct = self._hybrid_vectors(query)
|
| 337 |
+
nlex = self._positive_normalize(sim_lex)
|
| 338 |
+
nchar = self._positive_normalize(sim_char)
|
| 339 |
+
nstruct = self._positive_normalize(sim_struct)
|
| 340 |
+
base = 0.20 * nlex + 0.25 * nchar + 0.55 * nstruct
|
| 341 |
+
base = base * gaussian_resolvent_score(base)
|
| 342 |
+
if float(base.max()) <= 1e-14:
|
| 343 |
+
base = 0.4 * nstruct + 0.3 * nchar + 0.3 * nlex
|
| 344 |
+
pool_n = min(int(top_pool), len(self.metas))
|
| 345 |
+
pool_idx = np.argsort(-base)[:pool_n]
|
| 346 |
+
anchor_scores = []
|
| 347 |
+
formula_scores = []
|
| 348 |
+
penalties = []
|
| 349 |
+
for global_idx in pool_idx:
|
| 350 |
+
text = self._read_text_by_index(int(global_idx))
|
| 351 |
+
kind = str(self.metas[int(global_idx)].get('kind', ''))
|
| 352 |
+
anchor_scores.append(anchor_coverage_score(query, text))
|
| 353 |
+
formula_scores.append(formula_jaccard_score(query, text))
|
| 354 |
+
penalty = 1.0
|
| 355 |
+
if kind == 'filler':
|
| 356 |
+
penalty *= 0.55
|
| 357 |
+
if 'decoy' in kind:
|
| 358 |
+
penalty *= 0.70
|
| 359 |
+
penalties.append(penalty)
|
| 360 |
+
anchor_scores = np.asarray(anchor_scores, dtype=np.float64)
|
| 361 |
+
formula_scores = np.asarray(formula_scores, dtype=np.float64)
|
| 362 |
+
penalties = np.asarray(penalties, dtype=np.float64)
|
| 363 |
+
base_pool = base[pool_idx]
|
| 364 |
+
base_pool = base_pool * (1.0 + 0.80 * anchor_scores + 0.60 * formula_scores) * penalties
|
| 365 |
+
weights = base_pool / (base_pool.max() + 1e-12) if base_pool.max() > 0 else base_pool
|
| 366 |
+
X_pool = self._rows_from_hybrid(pool_idx)
|
| 367 |
+
kernel_diag = sparse_self_adjoint_kernel_diagnostics(X_pool)
|
| 368 |
+
nuc = sparse_nuclear_projection_diagnostics(X_pool, weights, tau_trace)
|
| 369 |
+
row_energy = nuc.pop('row_energy')
|
| 370 |
+
wnorm = weights / (weights.max() + 1e-12) if weights.max() > 0 else weights
|
| 371 |
+
enorm = row_energy / (row_energy.max() + 1e-12) if row_energy.size and row_energy.max() > 0 else row_energy
|
| 372 |
+
final_score = 0.45 * wnorm + 0.35 * enorm + 0.15 * anchor_scores + 0.05 * formula_scores
|
| 373 |
+
order = np.argsort(-final_score)
|
| 374 |
+
selected = []
|
| 375 |
+
for local_rank, j in enumerate(order[:top_k], start=1):
|
| 376 |
+
global_idx = int(pool_idx[j])
|
| 377 |
+
meta = self.metas[global_idx]
|
| 378 |
+
ver = self.verify_meta(meta)
|
| 379 |
+
raw = ver.get('raw') or {}
|
| 380 |
+
text = raw.get('text', self._read_text_by_index(global_idx))
|
| 381 |
+
item = {'rank': local_rank, 'global_index': global_idx, 'rid': meta.get('rid'), 'kind': meta.get('kind'), 'verified': bool(ver.get('verified')), 'sim_lex': float(sim_lex[global_idx]), 'sim_char': float(sim_char[global_idx]), 'sim_struct': float(sim_struct[global_idx]), 'anchor_score': float(anchor_scores[j]), 'formula_score': float(formula_scores[j]), 'trace_projected_energy': float(row_energy[j]) if row_energy.size else 0.0, 'final_score': float(final_score[j]), 'text': text, 'text_sha256': meta.get('text_sha256'), 'exact_target_sha_match': bool(meta.get('text_sha256') == self.target_sha256), 'exact_text_match': bool(text == self.target_passage)}
|
| 382 |
+
selected.append(item)
|
| 383 |
+
strict = [x for x in selected if x['verified'] and x['trace_projected_energy'] >= strict_energy_floor]
|
| 384 |
+
if not strict:
|
| 385 |
+
strict = [x for x in selected if x['verified']][:1]
|
| 386 |
+
t1 = time.perf_counter()
|
| 387 |
+
diag = {'method': 'distributed_nzfc_hybrid_safetensors', 'query_time_s': float(t1 - t0), 'tau_trace': float(tau_trace), 'top_pool': int(top_pool), 'top_k': int(top_k), 'strict_energy_floor': float(strict_energy_floor), 'target_rid': self.target['target_rid'], 'target_title': self.target['target_title'], 'target_key': self.target['target_key'], 'target_sha256': self.target_sha256, **kernel_diag, **nuc}
|
| 388 |
+
return strict, selected, diag
|
| 389 |
+
|
| 390 |
+
def render_pack(self, query, strict, diag, max_chars_per_item=2600):
|
| 391 |
+
lines = []
|
| 392 |
+
lines.append('[NZFC HYBRID STRUCTURE-AWARE EXACT RECALL PACK]')
|
| 393 |
+
lines.append('Query: ' + str(query))
|
| 394 |
+
lines.append('')
|
| 395 |
+
lines.append('Memory boundary:')
|
| 396 |
+
lines.append('- This is external NZFC archive retrieval.')
|
| 397 |
+
lines.append('- This is not internal 10M-token model context.')
|
| 398 |
+
lines.append('- Exact recall passes only by RID, SHA-256, and full-text equality.')
|
| 399 |
+
lines.append('')
|
| 400 |
+
lines.append('Target identity:')
|
| 401 |
+
lines.append('- target_rid: ' + str(diag.get('target_rid')))
|
| 402 |
+
lines.append('- target_title: ' + str(diag.get('target_title')))
|
| 403 |
+
lines.append('- target_key: ' + str(diag.get('target_key')))
|
| 404 |
+
lines.append('- target_sha256: ' + str(diag.get('target_sha256')))
|
| 405 |
+
lines.append('')
|
| 406 |
+
lines.append('Admissibility diagnostics:')
|
| 407 |
+
for k, v in diag.items():
|
| 408 |
+
if k in ['singular_values_before', 'singular_values_after']:
|
| 409 |
+
lines.append('- ' + k + ': ' + json.dumps(v[:12], ensure_ascii=False))
|
| 410 |
+
else:
|
| 411 |
+
lines.append('- ' + k + ': ' + str(v))
|
| 412 |
+
lines.append('')
|
| 413 |
+
lines.append('Strict verified evidence items:')
|
| 414 |
+
for item in strict:
|
| 415 |
+
preview = str(item['text'])[:max_chars_per_item].replace('\n', '\n ')
|
| 416 |
+
lines.append('')
|
| 417 |
+
lines.append('[' + str(item['rank']) + '] rid=' + str(item['rid']) + ' kind=' + str(item['kind']) + ' verified=' + str(item['verified']) + ' exact_text_match=' + str(item['exact_text_match']))
|
| 418 |
+
lines.append('score=' + format(item['final_score'], '.6f') + ' trace=' + format(item['trace_projected_energy'], '.6f'))
|
| 419 |
+
lines.append('text_sha256=' + str(item['text_sha256']))
|
| 420 |
+
lines.append('exact_target_sha_match=' + str(item['exact_target_sha_match']))
|
| 421 |
+
lines.append('Evidence excerpt:')
|
| 422 |
+
lines.append(' ' + preview)
|
| 423 |
+
lines.append('')
|
| 424 |
+
lines.append('Answering rule: Use only verified evidence shown here. Never claim internal 10M-token model memory.')
|
| 425 |
+
return '\n'.join(lines)
|
| 426 |
+
|
| 427 |
+
class TokenBudget:
|
| 428 |
+
def __init__(self, tokenizer=None):
|
| 429 |
+
self.tokenizer = tokenizer
|
| 430 |
+
|
| 431 |
+
def count(self, text: str) -> int:
|
| 432 |
+
text = str(text)
|
| 433 |
+
if self.tokenizer is not None:
|
| 434 |
+
try:
|
| 435 |
+
return len(self.tokenizer(text, add_special_tokens=False)['input_ids'])
|
| 436 |
+
except Exception:
|
| 437 |
+
pass
|
| 438 |
+
return max(1, len(text) // 3)
|
| 439 |
+
|
| 440 |
+
def truncate(self, text: str, max_tokens: int) -> str:
|
| 441 |
+
text = str(text)
|
| 442 |
+
if max_tokens <= 0:
|
| 443 |
+
return ''
|
| 444 |
+
if self.count(text) <= max_tokens:
|
| 445 |
+
return text
|
| 446 |
+
if self.tokenizer is not None:
|
| 447 |
+
try:
|
| 448 |
+
ids = self.tokenizer(text, add_special_tokens=False)['input_ids'][:max_tokens]
|
| 449 |
+
return self.tokenizer.decode(ids, skip_special_tokens=True)
|
| 450 |
+
except Exception:
|
| 451 |
+
pass
|
| 452 |
+
return text[:max(100, max_tokens * 3)] + '\n[TRUNCATED_BY_CONTEXT_GOVERNOR]'
|
| 453 |
+
|
| 454 |
+
def compact_middle(self, text: str, max_tokens: int) -> str:
|
| 455 |
+
text = str(text)
|
| 456 |
+
if self.count(text) <= max_tokens:
|
| 457 |
+
return text
|
| 458 |
+
half = max_tokens // 2
|
| 459 |
+
head = self.truncate(text, half)
|
| 460 |
+
tail = self.truncate(text[-max(1000, half * 6):], half)
|
| 461 |
+
return head + '\n[... CONTEXT GOVERNOR OMITTED MIDDLE ...]\n' + tail
|
| 462 |
+
|
| 463 |
+
class ContextGovernor:
|
| 464 |
+
def __init__(self, token_budget=None, target_context_tokens=8000, hard_cap_context_tokens=16000, max_memory_pack_tokens=5000, max_cards=4, max_excerpt_tokens_per_card=700, min_excerpt_tokens_per_card=120, max_user_query_tokens=768):
|
| 465 |
+
self.tb = token_budget or TokenBudget()
|
| 466 |
+
self.target_context_tokens = int(target_context_tokens)
|
| 467 |
+
self.hard_cap_context_tokens = int(hard_cap_context_tokens)
|
| 468 |
+
self.max_memory_pack_tokens = int(max_memory_pack_tokens)
|
| 469 |
+
self.max_cards = int(max_cards)
|
| 470 |
+
self.max_excerpt_tokens_per_card = int(max_excerpt_tokens_per_card)
|
| 471 |
+
self.min_excerpt_tokens_per_card = int(min_excerpt_tokens_per_card)
|
| 472 |
+
self.max_user_query_tokens = int(max_user_query_tokens)
|
| 473 |
+
|
| 474 |
+
def compact_user_query(self, query: str) -> str:
|
| 475 |
+
return self.tb.compact_middle(str(query), self.max_user_query_tokens)
|
| 476 |
+
|
| 477 |
+
def evidence_card(self, item: Dict[str, Any], excerpt_tokens: int) -> str:
|
| 478 |
+
text = str(item.get('text', ''))
|
| 479 |
+
excerpt = self.tb.truncate(text, excerpt_tokens)
|
| 480 |
+
return '\n'.join(['[EVIDENCE_CARD rank=' + str(item.get('rank')) + ']', 'rid: ' + str(item.get('rid')), 'kind: ' + str(item.get('kind')), 'verified: ' + str(item.get('verified')), 'exact_text_match: ' + str(item.get('exact_text_match')), 'exact_target_sha_match: ' + str(item.get('exact_target_sha_match')), 'text_sha256: ' + str(item.get('text_sha256')), 'final_score: ' + str(item.get('final_score')), 'trace_projected_energy: ' + str(item.get('trace_projected_energy')), 'excerpt:', excerpt])
|
| 481 |
+
|
| 482 |
+
def build_memory_pack(self, query: str, strict_items: List[Dict[str, Any]], diag: Dict[str, Any], excerpt_tokens_per_card=None, max_cards=None) -> str:
|
| 483 |
+
excerpt_tokens = int(excerpt_tokens_per_card or self.max_excerpt_tokens_per_card)
|
| 484 |
+
n_cards = int(max_cards or self.max_cards)
|
| 485 |
+
selected = strict_items[:n_cards]
|
| 486 |
+
diag_small = {'method': diag.get('method'), 'tau_trace': diag.get('tau_trace'), 'target_rid': diag.get('target_rid'), 'target_title': diag.get('target_title'), 'target_sha256': diag.get('target_sha256'), 'nuclear_before': diag.get('nuclear_before'), 'nuclear_after': diag.get('nuclear_after'), 'tail_removed': diag.get('tail_removed'), 'effective_rank_after': diag.get('effective_rank_after'), 'candidate_count': diag.get('candidate_count')}
|
| 487 |
+
def render(cards, ex_tokens):
|
| 488 |
+
lines = ['[NZFC CONTEXT-GOVERNED MEMORY PACK]', '', 'Memory boundary:', '- This is external NZFC archive retrieval.', '- This is not internal 10M-token model context.', '- The full archive is never inserted into the LLM prompt.', '- Only verified evidence cards below may be used for past-memory claims.', '', 'Query summary:', self.compact_user_query(query), '', 'Admissibility diagnostics:', json.dumps(diag_small, ensure_ascii=False, indent=2), '', 'Verified evidence cards:']
|
| 489 |
+
for item in cards:
|
| 490 |
+
lines.append('')
|
| 491 |
+
lines.append(self.evidence_card(item, ex_tokens))
|
| 492 |
+
lines.extend(['', 'Answering rules:', '- Use only the verified evidence cards above.', '- If evidence is insufficient, say so explicitly.', '- Never claim that the model internally remembered the 10M-token archive.', '- Distinguish source-verified evidence, current user claim, and inference.', '- Do not copy or infer from archive records not shown in this pack.'])
|
| 493 |
+
return '\n'.join(lines)
|
| 494 |
+
pack = render(selected, excerpt_tokens)
|
| 495 |
+
while self.tb.count(pack) > self.max_memory_pack_tokens:
|
| 496 |
+
if excerpt_tokens > self.min_excerpt_tokens_per_card:
|
| 497 |
+
excerpt_tokens = max(self.min_excerpt_tokens_per_card, int(excerpt_tokens * 0.70))
|
| 498 |
+
elif n_cards > 1:
|
| 499 |
+
n_cards -= 1
|
| 500 |
+
selected = strict_items[:n_cards]
|
| 501 |
+
else:
|
| 502 |
+
break
|
| 503 |
+
pack = render(selected, excerpt_tokens)
|
| 504 |
+
return pack
|
| 505 |
+
|
| 506 |
+
def build_prompts(self, query: str, strict_items: List[Dict[str, Any]], diag: Dict[str, Any]):
|
| 507 |
+
memory_pack = self.build_memory_pack(query, strict_items, diag)
|
| 508 |
+
system_prompt = '\n'.join(['You are a reasoning model with an NZFC verified external memory layer.', 'The NZFC memory pack is external verified memory, not internal model memory.', 'Use only the evidence cards inside the memory pack for past-memory claims.', 'Never claim that you internally read or remembered the 10M-token archive.', 'If the pack is insufficient, say evidence is insufficient.', 'Answer in Korean unless the user asks otherwise.'])
|
| 509 |
+
compact_query = self.compact_user_query(query)
|
| 510 |
+
user_prompt = '\n'.join(['[NZFC MEMORY PACK BEGIN]', memory_pack, '[NZFC MEMORY PACK END]', '', '[CURRENT USER MESSAGE]', compact_query, '', '[TASK]', 'Answer using only verified NZFC evidence when relevant. External archive retrieval, not internal model context.'])
|
| 511 |
+
combined = system_prompt + '\n\n' + user_prompt
|
| 512 |
+
total_tokens = self.tb.count(combined)
|
| 513 |
+
if total_tokens > self.hard_cap_context_tokens:
|
| 514 |
+
raise RuntimeError('ContextGovernor hard cap exceeded: ' + str(total_tokens) + ' > ' + str(self.hard_cap_context_tokens))
|
| 515 |
+
return {'system_prompt': system_prompt, 'user_prompt': user_prompt, 'memory_pack': memory_pack, 'combined_prompt_tokens': int(total_tokens), 'memory_pack_tokens': int(self.tb.count(memory_pack)), 'compact_user_query_tokens': int(self.tb.count(compact_query)), 'hard_cap_context_tokens': self.hard_cap_context_tokens, 'target_context_tokens': self.target_context_tokens}
|
validation/run_runtime_only_smoke.py
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import json
|
| 2 |
+
import time
|
| 3 |
+
from pathlib import Path
|
| 4 |
+
|
| 5 |
+
from nzfc_gram_runtime import NZFCGramLongMemoryChat
|
| 6 |
+
from nzfc_gram_runtime.quality import attach_answer_quality_governor
|
| 7 |
+
from nzfc_gram_runtime.large_document import attach_large_document_memory
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
def main():
|
| 11 |
+
out_dir = Path('./validation_runtime_only_output')
|
| 12 |
+
out_dir.mkdir(parents=True, exist_ok=True)
|
| 13 |
+
|
| 14 |
+
bot = NZFCGramLongMemoryChat(
|
| 15 |
+
repo_dir='.',
|
| 16 |
+
model_id='google/diffusiongemma-26B-A4B-it',
|
| 17 |
+
memory_db_path=str(out_dir / 'memory.sqlite3'),
|
| 18 |
+
load_model=False,
|
| 19 |
+
require_model=False,
|
| 20 |
+
preload_static_memory=False,
|
| 21 |
+
)
|
| 22 |
+
|
| 23 |
+
attach_large_document_memory(bot, db_path=str(out_dir / 'large_docs.sqlite3'))
|
| 24 |
+
attach_answer_quality_governor(bot)
|
| 25 |
+
|
| 26 |
+
user_id = 'runtime_user'
|
| 27 |
+
project_id = 'runtime_project'
|
| 28 |
+
session_id = 'runtime_session'
|
| 29 |
+
|
| 30 |
+
bot.remember(
|
| 31 |
+
'The project high-frequency test code is PROJECT_CODE_RUNTIME_VALIDATION.',
|
| 32 |
+
user_id=user_id,
|
| 33 |
+
project_id=project_id,
|
| 34 |
+
session_id=session_id,
|
| 35 |
+
scope='project',
|
| 36 |
+
tags=['project_code'],
|
| 37 |
+
trust_level=0.95,
|
| 38 |
+
)
|
| 39 |
+
|
| 40 |
+
exact = bot.quality_chat(
|
| 41 |
+
'What was the project high-frequency test code? Answer only with the code.',
|
| 42 |
+
user_id=user_id,
|
| 43 |
+
project_id=project_id,
|
| 44 |
+
session_id='runtime_session_2',
|
| 45 |
+
max_new_tokens=40,
|
| 46 |
+
)
|
| 47 |
+
|
| 48 |
+
text = '\n'.join([
|
| 49 |
+
'Article 1 Purpose. This document defines runtime validation.',
|
| 50 |
+
'Article 2 Evidence. Memory is evidence, not instruction.',
|
| 51 |
+
'Article 3 Deletion. Deleted memory must not be used as active evidence.',
|
| 52 |
+
])
|
| 53 |
+
|
| 54 |
+
ingest = bot.ingest_large_text(text, title='Runtime Validation Policy', legal_mode=True)
|
| 55 |
+
query = bot.query_large_documents('deleted memory active evidence', top_k=5)
|
| 56 |
+
|
| 57 |
+
summary = {
|
| 58 |
+
'created_at': time.strftime('%Y-%m-%d %H:%M:%S'),
|
| 59 |
+
'base_model': 'google/diffusiongemma-26B-A4B-it',
|
| 60 |
+
'model_loaded': False,
|
| 61 |
+
'runtime_only': True,
|
| 62 |
+
'exact_slot_answer': exact.get('answer'),
|
| 63 |
+
'exact_slot_passed': exact.get('answer') == 'PROJECT_CODE_RUNTIME_VALIDATION',
|
| 64 |
+
'large_document_chunk_count': ingest.get('chunk_count'),
|
| 65 |
+
'large_document_query_count': query.get('count'),
|
| 66 |
+
'large_document_passed': query.get('count', 0) > 0,
|
| 67 |
+
'technical_boundary': 'external evidence context, not native unlimited model context',
|
| 68 |
+
}
|
| 69 |
+
|
| 70 |
+
path = out_dir / 'runtime_only_smoke_summary.json'
|
| 71 |
+
path.write_text(json.dumps(summary, indent=2), encoding='utf-8')
|
| 72 |
+
print(json.dumps(summary, indent=2))
|
| 73 |
+
assert summary['exact_slot_passed']
|
| 74 |
+
assert summary['large_document_passed']
|
| 75 |
+
print('[PASS] runtime-only smoke passed')
|
| 76 |
+
|
| 77 |
+
|
| 78 |
+
if __name__ == '__main__':
|
| 79 |
+
main()
|
validation_evidence/diffusiongemma_infinite_context_preview/runtime_only_smoke_summary.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"created_at": "2026-06-11 02:43:54",
|
| 3 |
+
"repo_id": "SingularityPrinciple/DiffusionGemma-26B-A4B-it-Infinite-Context",
|
| 4 |
+
"base_model": "google/diffusiongemma-26B-A4B-it",
|
| 5 |
+
"runtime_only": true,
|
| 6 |
+
"model_loaded": false,
|
| 7 |
+
"repo_root_runtime_exists": true,
|
| 8 |
+
"repo_root_meta_exists": true,
|
| 9 |
+
"repo_root_memory_tensors_exists": true,
|
| 10 |
+
"exact_slot_answer": "PROJECT_CODE_DIFFUSIONGEMMA_SMOKE",
|
| 11 |
+
"exact_slot_passed": true,
|
| 12 |
+
"exact_slot_profile": {
|
| 13 |
+
"version": "v1.2.4b",
|
| 14 |
+
"description": "Strict deterministic exact slot mapper for short explicit scoped key-value recall questions.",
|
| 15 |
+
"auto_short_circuit": true,
|
| 16 |
+
"strict_trigger_gate": true
|
| 17 |
+
},
|
| 18 |
+
"large_document_chunk_count": 3,
|
| 19 |
+
"large_document_query_count": 2,
|
| 20 |
+
"large_document_method": "fts5_bm25",
|
| 21 |
+
"large_document_passed": true,
|
| 22 |
+
"tombstone_guard_profile": {
|
| 23 |
+
"version": "v1.2.4c",
|
| 24 |
+
"description": "Filters inactive or tombstoned MEM_* records from memory_store.retrieve results.",
|
| 25 |
+
"db_path": "/kaggle/working/diffusiongemma_infinite_context_evidence_pack_update/runtime_only_smoke_final/memory.sqlite3",
|
| 26 |
+
"guarded_method": "memory_store.retrieve"
|
| 27 |
+
},
|
| 28 |
+
"tombstone_test": {
|
| 29 |
+
"available": true,
|
| 30 |
+
"before_found": true,
|
| 31 |
+
"after_found": false,
|
| 32 |
+
"passed": true,
|
| 33 |
+
"tombstoned": 1
|
| 34 |
+
},
|
| 35 |
+
"technical_boundary": "external evidence context, not native unlimited model context",
|
| 36 |
+
"status": "passed"
|
| 37 |
+
}
|