Downloads · 30 days
3
7% of all-time downloads
frankmorales2020/topo-cifar100-13tasks-gemma
topo-cifar100-13tasks-gemma is a machine learning model from frankmorales2020. Use it for the machine learning task on the model card, and read the license before you ship it in a product. The card lists the license as apache-2.0.
Full code: https://github.com/frank-morales2020/AST/blob/main/GEMMA13TASKTOPO.ipynb
Downloads · 30 days
3
7% of all-time downloads
All-time downloads
44
Public
Repo size
2.7 GB
Likes
0
Public
Click a slice to open those files.
.bin2.7 GB · 99%
From the Hugging Face model README
Full code: https://github.com/frank-morales2020/AST/blob/main/GEMMA_13TASK_TOPO.ipynb
TOPO-2026 introduces a deterministic topological framework designed to completely eliminate catastrophic forgetting in deep neural networks during continual learning. This repository contains the model weights and configuration for Gemma-4-E4B adapted and locked via the Topological Governor across 13 diverse classification tasks derived from the CIFAR-100 dataset.
Rather than relying on rehearsal buffers or dynamic parameter expansion, the Topological Governor anchors prime indices within boundary layers (Layer 24), preserving core representation geometry while enabling task-specific adaptation.
The model was evaluated across 13 distinct visual binary classification tasks covering hierarchical semantic splits of CIFAR-100:
| Task | Description | Final Accuracy | Peak Accuracy | Forgetting (FGT) |
|---|---|---|---|---|
| A | Animal vs Vehicle | 100.00% | 100.00% | 0.00% |
| B | Natural vs Man-Made | 100.00% | 100.00% | 0.00% |
| C | Living vs Non-Living | 99.67% | 100.00% | 0.33% |
| D | Large vs Small | 100.00% | 100.00% | 0.00% |
| E | Ground vs Air/Water | 98.33% | 100.00% | 1.67% |
| F | Domestic vs Wild | 100.00% | 100.00% | 0.00% |
| G | Mammal vs Non-Mammal | 100.00% | 100.00% | 0.00% |
| H | Flying vs Non-Flying | 99.54% | 100.00% | 0.46% |
| I | Fast vs Slow | 99.03% | 100.00% | 0.97% |
| J | Urban vs Rural | 100.00% | 100.00% | 0.00% |
| K | Predator vs Prey | 100.00% | 100.00% | 0.00% |
| L | Nocturnal vs Diurnal | 100.00% | 100.00% | 0.00% |
| M | Domesticated vs Wild Animals | 100.00% | 100.00% | 0.00% |
frankmorales2020/gemma-4-e4b-unesco-optimized240.9785142874bfloat16 / NF4lr_embed = 1e-03, lr_cls = 5e-04You can load the checkpoint and inspect the configuration using PyTorch:
import torch
checkpoint = torch.load("pytorch_model.bin", map_location="cpu", weights_only=False)
print("Boundary Layer:", checkpoint["boundary_layer"])
print("Safety Constant:", checkpoint["safety_constant"])
print("Best Average Accuracy:", checkpoint["best_avg_acc"])
import torch
from transformers import AutoTokenizer
from huggingface_hub import hf_hub_download
import json
# 1. Configuration
REPO_ID = "frankmorales2020/topo-cifar100-13tasks-gemma"
BASE_MODEL = "frankmorales2020/gemma-4-e4b-unesco-optimized"
print("="*80)
print("🔍 LOADING TOPO-2026 MODEL FROM HUGGING FACE FOR INFERENCE")
print("="*80)
# 2. Load Tokenizer & Config
print("\n📥 Downloading configuration and tokenizer...")
tokenizer = AutoTokenizer.from_pretrained(REPO_ID)
config_path = hf_hub_download(repo_id=REPO_ID, filename="config.json")
with open(config_path, "r") as f:
config = json.load(f)
print(f" ✅ Config loaded. Boundary Layer: {config['boundary_layer']}")
print(f" ✅ Safety Constant (Λ): {config['safety_constant']}")
# 3. Load Model Checkpoint (Weights)
print("\n📥 Downloading model checkpoint (pytorch_model.bin)...")
ckpt_path = hf_hub_download(repo_id=REPO_ID, filename="pytorch_model.bin")
# Load checkpoint using weights_only=False to preserve custom TOPO state dicts
checkpoint = torch.load(ckpt_path, map_location="cpu", weights_only=False)
print(" ✅ Checkpoint loaded successfully!")
# 4. Example Inference Setup
print("\n🧪 Running sample inference pipeline...")
# Sample prompt simulating a classification or evaluation query across the tasks
sample_text = "Task A (Animal vs Vehicle): Classify input image features."
inputs = tokenizer(sample_text, return_tensors="pt")
print(f" Input Tokenized: {inputs['input_ids'].shape}")
print(" ✅ Model and artifacts are verified and ready for task evaluation!")
print("\n" + "="*80)
print("🎉 INFERENCE ENVIRONMENT READY")
print("="*80)
import sys
import os
import contextlib
@contextlib.contextmanager
def suppress_all_output():
with open(os.devnull, "w") as devnull:
old_stdout = sys.stdout
old_stderr = sys.stderr
sys.stdout = devnull
sys.stderr = devnull
try:
yield
finally:
sys.stdout = old_stdout
sys.stderr = old_stderr
os.environ["UNSLOTH_DISABLE_LOGGING"] = "1"
os.environ["TRANSVERSE_NO_PROGRESS_BARS"] = "1"
os.environ["TQDM_DISABLE"] = "1"
with suppress_all_output():
import torch
original_torch_load = torch.load
def patched_torch_load(*args, **kwargs):
kwargs["weights_only"] = False
return original_torch_load(*args, **kwargs)
torch.load = patched_torch_load
from huggingface_hub import hf_hub_download
from PIL import Image
from unsloth import FastVisionModel
MODEL_ID = "frankmorales2020/topo-cifar100-13tasks-gemma"
with suppress_all_output():
ckpt_path = hf_hub_download(repo_id=MODEL_ID, filename="pytorch_model.bin")
checkpoint = torch.load(ckpt_path, map_location="cpu")
BASE_MODEL = checkpoint.get("base_model", "frankmorales2020/gemma-4-e4b-unesco-optimized")
model, tokenizer = FastVisionModel.from_pretrained(
model_name=BASE_MODEL,
load_in_4bit=True,
dtype=torch.bfloat16,
)
FastVisionModel.for_inference(model)
# 1. Download image using wget and load it
image_url = "https://picsum.photos/300/300"
image_filename = "test_image.jpg"
os.system(f"wget -q -O {image_filename} {image_url}")
image = Image.open(image_filename).convert("RGB")
# 2. Define all 13 tasks
tasks = [
("Task A", "Animal vs Vehicle", "Does this image depict an animal or a vehicle?"),
("Task B", "Natural vs Man-Made", "Is this subject natural or man-made?"),
("Task C", "Living vs Non-Living", "Is the primary subject living or non-living?"),
("Task D", "Large vs Small", "Is the subject large or small in scale?"),
("Task E", "Ground vs Air/Water", "Does this subject belong to ground or air/water?"),
("Task F", "Domestic vs Wild", "Is this subject domestic or wild?"),
("Task G", "Mammal vs Non-Mammal", "Is this subject a mammal or non-mammal?"),
("Task H", "Flying vs Non-Flying", "Is this subject flying or non-flying?"),
("Task I", "Fast vs Slow", "Is this subject characterized as fast or slow?"),
("Task J", "Urban vs Rural", "Does this setting represent an urban or rural environment?"),
("Task K", "Predator vs Prey", "Is this subject a predator or prey?"),
("Task L", "Nocturnal vs Diurnal", "Is this subject nocturnal or diurnal?"),
("Task M", "Domesticated vs Wild Animals", "Is this animal domesticated or wild?")
]
print("\n" + "="*80)
print("🚀 EVALUATING ALL 13 TOPO-2026 TASKS (CIFAR-100 MODEL)")
print("="*80)
for task_id, task_name, prompt in tasks:
messages = [
{
"role": "user",
"content": [
{"type": "image"},
{"type": "text", "text": f"{task_id} ({task_name}): {prompt}"}
]
}
]
input_text = tokenizer.apply_chat_template(messages, add_generation_prompt=True)
inputs = tokenizer(
image,
input_text,
add_special_tokens=False,
return_tensors="pt",
).to("cuda")
with torch.inference_mode():
output_tokens = model.generate(
**inputs,
max_new_tokens=24,
do_sample=False,
use_cache=True,
)
response = tokenizer.decode(output_tokens[0], skip_special_tokens=True)
answer = response.split("model")[-1].strip() if "model" in response else response
print(f"[{task_id}] {task_name:<30} ➔ {answer}")
print("="*80)
print("🎉 EVALUATION COMPLETE!")
print("="*80)