import os import torch from transformers import LlamaConfig, LlamaForCausalLM import accelerate def initialize(): # Load the 350M config we just created model_dir = "e:/agent/agent_ai/sail/sail_hf_model" if os.name == 'nt' else "/mnt/e/agent/agent_ai/sail/sail_hf_model" print(f"Loading 350M configuration from {model_dir}/config.json ...") config = LlamaConfig.from_pretrained(model_dir) print("Initializing weights from scratch for 350M parameters (this will utilize ~1.4GB)...") # We initialize the model instantaneously using accelerate with accelerate.init_empty_weights(): model = LlamaForCausalLM(config) # Materialize weights (creates random normal distribution internally during instantiation) model.to_empty(device="cpu") # Ensure standard normal initialization for parameters for param in model.parameters(): torch.nn.init.normal_(param, mean=0.0, std=0.02) print(f"Total parameters: {model.num_parameters():,}") # Save using safe_serialization (safetensors format), which is standard for Unsloth / Llama Factory print("Saving to safetensors format...") model.save_pretrained(model_dir, safe_serialization=True) print("DONE! Your 350M foundational blank model is ready in safetensors format.") print("You can now load this directory directly into Unsloth or Llama-Factory for pre-training.") if __name__ == "__main__": initialize()