Views
No views yet
1from transformers import AutoModelForCausalLM, AutoTokenizer
2import torch
3
4# Load model and tokenizer
5model = AutoModelForCausalLM.from_pretrained("shivash/MyAwesome-299M-Model")
6tokenizer = AutoTokenizer.from_pretrained("shivash/MyAwesome-299M-Model")
7
8# Generate text
9prompt = "The future of AI is"
10inputs = tokenizer(prompt, return_tensors="pt")
11
12with torch.no_grad():
13 outputs = model.generate(
14 **inputs,
15 max_new_tokens=50,
16 temperature=0.7,
17 do_sample=True,
18 pad_token_id=tokenizer.eos_token_id
19 )
20
21response = tokenizer.decode(outputs[0], skip_special_tokens=True)
22print(response)1from peft import LoraConfig, get_peft_model, TaskType
2
3# Configure LoRA adapter
4lora_config = LoraConfig(
5 task_type=TaskType.CAUSAL_LM,
6 r=8, # Rank
7 lora_alpha=16, # Alpha scaling
8 lora_dropout=0.1,
9 target_modules=[
10 "q_proj", "k_proj", "v_proj", "o_proj",
11 "gate_proj", "up_proj", "down_proj"
12 ],
13 bias="none"
14)
15
16# Apply LoRA to model
17model = get_peft_model(model, lora_config)
18
19# Now ready for task-specific fine-tuning!
20# Only ~1% of parameters are trainable
21print(f"Trainable parameters: {model.num_parameters(only_trainable=True):,}")1# Train a math specialist (from the framework)
2python scripts/train_task_adapters.py --task math --testInput: "What is 25% of 160?"
Output: "To find 25% of 160:
25% = 25/100 = 0.25
0.25 × 160 = 40
Therefore, 25% of 160 is 40."1# Train a coding assistant
2python scripts/train_task_adapters.py --task coding --test1# Input: "Function to check if a number is prime"
2def is_prime(n):
3 if n < 2:
4 return False
5 for i in range(2, int(n**0.5) + 1):
6 if n % i == 0:
7 return False
8 return True1# Train a creative writing assistant
2python scripts/train_task_adapters.py --task creative --testInput: "A robot discovers emotions"
Output: "Unit-7742 had processed millions of data points, but nothing had
prepared it for the strange sensation that flooded its circuits when it
witnessed the sunset. For the first time, efficiency seemed irrelevant."1# Expand vocabulary to match any teacher model
2python expand_vocab.py \
3 --model_repo_id "shivash/MyAwesome-299M-Model" \
4 --new_tokenizer_repo_id "Qwen/Qwen2-1.5B" \
5 --output_dir "./MyAwesome-299M-Model-Qwen-Vocab"1# For Qwen2 teachers (151K vocabulary)
2python expand_vocab.py \
3 --model_repo_id "shivash/MyAwesome-299M-Model" \
4 --new_tokenizer_repo_id "Qwen/Qwen2-1.5B" \
5 --output_dir "./expanded-qwen-vocab"
6
7# For Llama 3 teachers (128K vocabulary)
8python expand_vocab.py \
9 --model_repo_id "shivash/MyAwesome-299M-Model" \
10 --new_tokenizer_repo_id "meta-llama/Meta-Llama-3-8B" \
11 --output_dir "./expanded-llama3-vocab"1# Clone the Transfer-First LLM Framework
2git clone https://github.com/your-username/transfer-first-llm.git
3cd transfer-first-llm
4
5# Install dependencies
6pip install -e ".[dev]"
7
8# Train custom adapters
9python scripts/train_task_adapters.py --task reasoning --epochs 3 --test1from transformers import TrainingArguments, Trainer
2from peft import LoraConfig, get_peft_model
3import torch
4
5# Setup model with LoRA
6model = AutoModelForCausalLM.from_pretrained("shivash/MyAwesome-299M-Model")
7lora_config = LoraConfig(
8 task_type="CAUSAL_LM",
9 r=8, lora_alpha=16, lora_dropout=0.1,
10 target_modules=["q_proj", "v_proj", "o_proj"]
11)
12model = get_peft_model(model, lora_config)
13
14# Prepare your dataset
15# dataset = your_formatted_dataset
16
17# Training arguments
18training_args = TrainingArguments(
19 output_dir="./my-adapter",
20 num_train_epochs=3,
21 per_device_train_batch_size=4,
22 learning_rate=1e-4,
23 logging_steps=10,
24)
25
26# Train
27trainer = Trainer(
28 model=model,
29 args=training_args,
30 train_dataset=dataset,
31 tokenizer=tokenizer
32)
33trainer.train()
34
35# Save adapter
36model.save_pretrained("./my-custom-adapter")1Model Architecture:
2 Type: LlamaForCausalLM
3 Layers: 8
4 Hidden Size: 512
5 Attention Heads: 8
6 KV Heads: 4 (Grouped-Query Attention)
7 Intermediate Size: 2048
8 Vocab Size: 50257
9 Max Position: 1024
10 RMS Norm Epsilon: 1e-5
11
12Optimizations:
13 Attention: Grouped-Query for efficiency
14 Activation: SiLU (Swish)
15 Normalization: RMSNorm
16 Position Encoding: Rotary (RoPE)1Model Loading:
2 FP32: ~230MB
3 FP16: ~115MB
4 INT8: ~60MB
5
6Training (with LoRA):
7 Base Model: 115MB
8 Gradients: ~1MB (only adapter params)
9 Optimizer States: ~2MB
10 Total: <200MB GPU memorytransfer-first-adapter for discoverability1@misc{myawesome299m,
2 title={MyAwesome-299M-Model: Efficient Language Model for Adapter-Based Transfer Learning},
3 author={Shivash Puri},
4 year={2024},
5 url={https://huggingface.co/shivash/MyAwesome-299M-Model}
6}