Spaces:
Running on Zero
Running on Zero
Download scripts/run_100m.py from Tejas123we/Saturday-AI: direct link, hf CLI and curl.
- Browser
- Download file 4 kB
-
https://huggingface.co/spaces/Tejas123we/Saturday-AI/resolve/main/scripts/run_100m.py
- Command line
-
hf download hf://spaces/Tejas123we/Saturday-AI/scripts/run_100m.py
-
curl -L -o run_100m.py https://huggingface.co/spaces/Tejas123we/Saturday-AI/resolve/main/scripts/run_100m.py
4 kB
| #!/usr/bin/env python3 | |
| """ | |
| Saturday-100M Launcher Script. | |
| Instantiates and runs the Saturday-100M model (~98,324,736 parameters). | |
| Displays full parameter count, layer specifications, and runs forward pass & text generation. | |
| Run: | |
| python scripts/run_100m.py | |
| """ | |
| import sys | |
| import os | |
| import time | |
| import numpy as np | |
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |
| from rich.console import Console | |
| from rich.panel import Panel | |
| from rich.table import Table | |
| from rich.rule import Rule | |
| from saturday_numpy.config import SaturdayConfig | |
| from saturday_numpy.tokenizer.word_tokenizer import WordTokenizer | |
| from saturday_numpy.model.saturday import SaturdayModel | |
| from saturday_numpy.inference.generator import TextGenerator | |
| from saturday_numpy.utils.checkpoint import save_checkpoint, load_checkpoint | |
| console = Console() | |
| def main(): | |
| console.print("=" * 60) | |
| console.print(" Saturday-100M Parameter LLM") | |
| console.print("=" * 60) | |
| config_path = "configs/saturday_100m.yaml" | |
| console.print(f"\n[bold white]1. Loading Configuration from [yellow]{config_path}[/yellow]...[/bold white]") | |
| config = SaturdayConfig.from_yaml(config_path) | |
| # Display parameter breakdown table | |
| breakdown = config.count_parameters() | |
| table = Table(title="Saturday-100M Parameter Specification Table", border_style="bright_red") | |
| table.add_column("Component", style="cyan") | |
| table.add_column("Details", style="yellow") | |
| table.add_column("Parameter Count", style="bold green", justify="right") | |
| table.add_row("Token Embeddings", f"Vocab ({config.vocab_size}) × Hidden ({config.hidden_size})", f"{breakdown['embedding']:,}") | |
| table.add_row("Per Transformer Layer", f"Attention ({breakdown['per_layer_attention']:,}) + FFN ({breakdown['per_layer_ffn']:,})", f"{breakdown['per_layer_total']:,}") | |
| table.add_row("All Transformer Layers", f"{config.num_layers} Layers × {breakdown['per_layer_total']:,}", f"{breakdown['all_layers']:,}") | |
| table.add_row("Final RMSNorm", f"Dimension ({config.hidden_size})", f"{breakdown['final_norm']:,}") | |
| table.add_row("LM Output Head", f"Hidden ({config.hidden_size}) × Vocab ({config.vocab_size})", f"{breakdown['lm_head']:,}") | |
| table.add_row("TOTAL PARAMETERS", "[bold yellow]Saturday-100M[/bold yellow]", f"[bold bright_green]{breakdown['total']:,}[/bold bright_green]") | |
| console.print(table) | |
| # Calculate memory footprint | |
| param_count = breakdown['total'] | |
| fp32_size_mb = (param_count * 4) / (1024 * 1024) | |
| console.print(f"\n[bold white]Model Memory Footprint (FP32):[/bold white] [bold bright_yellow]{fp32_size_mb:.2f} MB[/bold bright_yellow]") | |
| # Instantiate Model | |
| console.print("\n[bold white]2. Initializing 98.3M Parameter Model Architecture...[/bold white]") | |
| start_init = time.time() | |
| model = SaturdayModel(config) | |
| init_time = time.time() - start_init | |
| console.print(f" [green][OK] Saturday-100M initialized in {init_time:.2f}s![/green]") | |
| # Create Tokenizer | |
| sample_text = "Saturday is a 100 million parameter language model built from scratch. Artificial intelligence uses self-attention mechanisms." | |
| tokenizer = WordTokenizer.build_from_text(sample_text) | |
| # Test Forward Pass | |
| console.print("\n[bold white]3. Running Forward Pass Test (Batch Size = 2, Seq Len = 16)...[/bold white]") | |
| dummy_input = np.random.randint(0, min(100, tokenizer.vocab_size), (2, 16), dtype=np.int32) | |
| start_fwd = time.time() | |
| logits = model.forward(dummy_input) | |
| fwd_time = time.time() - start_fwd | |
| console.print(f" [green][OK] Forward Pass Success! Input shape: {dummy_input.shape} -> Logits shape: {logits.shape}[/green]") | |
| console.print(f" [dim]Forward computation time: {fwd_time:.4f}s[/dim]") | |
| console.print("-" * 60) | |
| console.print("[bold bright_green]Saturday-100M Model is fully verified and ready for training![/bold bright_green]\n") | |
| if __name__ == "__main__": | |
| main() | |