| --- |
| base_model: |
| - google/gemma-3-1b-it |
| tags: |
| - tunix |
| - jax |
| --- |
| tiny random Gemma 3 model (5 layers) for tunix |
|
|
|
|
| ```py |
| """Create a tiny random Gemma 3 model (5 layers) and upload to HuggingFace. |
| |
| One-off script. The model is text-only with random weights, intended for |
| fast smoke tests with tunix/JAX |
| |
| Usage: uv run python scripts/create_tiny_gemma3.py |
| """ |
| |
| import torch |
| from transformers import ( |
| AutoTokenizer, |
| GenerationConfig, |
| set_seed, |
| ) |
| from transformers.models.gemma3 import Gemma3ForCausalLM, Gemma3TextConfig |
| from huggingface_hub import HfApi |
| |
| source_model_id = "google/gemma-3-1b-it" |
| repo_id = "wassname/gemma3-5lyr-tiny-random" |
| save_folder = "/tmp/tiny-random/gemma3-5lyr" |
| |
| # Tokenizer from source (same vocab) |
| tokenizer = AutoTokenizer.from_pretrained(source_model_id) |
| tokenizer.save_pretrained(save_folder) |
| |
| # Tiny text-only config matching tunix ModelConfig in model.py |
| config = Gemma3TextConfig( |
| vocab_size=262144, |
| hidden_size=64, |
| intermediate_size=128, |
| num_hidden_layers=5, |
| num_attention_heads=2, |
| head_dim=32, |
| num_key_value_heads=1, |
| sliding_window=512, |
| tie_word_embeddings=True, |
| ) |
| config._name_or_path = source_model_id |
| |
| model = Gemma3ForCausalLM(config).to(torch.bfloat16) |
| |
| # Random init |
| set_seed(42) |
| with torch.no_grad(): |
| for name, p in sorted(model.named_parameters()): |
| torch.nn.init.normal_(p, 0, 0.5) |
| print(name, p.shape) |
| |
| model.generation_config = GenerationConfig.from_pretrained(source_model_id) |
| model.save_pretrained(save_folder) |
| |
| # Upload |
| api = HfApi() |
| api.create_repo(repo_id, exist_ok=True) |
| api.upload_folder(folder_path=save_folder, repo_id=repo_id) |
| print(f"Uploaded to https://huggingface.co/{repo_id}") |
| |
| ``` |