TroglodyteDerivations's picture
Upload 48 files
c28358e verified
raw
history blame
3.21 kB
#!/usr/bin/env python3
"""
Comprehensive analysis of the GPT-OSS-120B model
"""
from transformers import AutoTokenizer, AutoConfig
import json
import logging
from pathlib import Path
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
def analyze_model():
"""Comprehensive model analysis"""
model_path = "./my_model"
logger.info("=" * 60)
logger.info("🔍 GPT-OSS-120B-MXFP4-Q4 Comprehensive Analysis")
logger.info("=" * 60)
# Load config
config = AutoConfig.from_pretrained(model_path)
logger.info("📊 Model Configuration:")
logger.info(f" Architecture: {config.architectures[0]}")
logger.info(f" Model type: {config.model_type}")
logger.info(f" Vocab size: {config.vocab_size:,}")
logger.info(f" Hidden size: {config.hidden_size}")
logger.info(f" Num hidden layers: {config.num_hidden_layers}")
logger.info(f" Num attention heads: {config.num_attention_heads}")
logger.info(f" Max position embeddings: {config.max_position_embeddings}")
# Load tokenizer
tokenizer = AutoTokenizer.from_pretrained(model_path)
logger.info("\n🔤 Tokenizer Analysis:")
logger.info(f" Vocabulary size: {tokenizer.vocab_size:,}")
logger.info(f" Special tokens: {len(tokenizer.special_tokens_map)}")
logger.info(f" Padding token: {tokenizer.pad_token}")
logger.info(f" EOS token: {tokenizer.eos_token}")
# Test various prompts
test_prompts = [
"The capital of France is",
"Artificial intelligence is",
"The future of machine learning will",
"Once upon a time",
"import numpy as np",
"量子コンピューティングとは", # Japanese
"El aprendizaje automático es", # Spanish
"机器学习是", # Chinese
"<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n<|im_start|>user\nHello!<|im_end|>\n<|im_start|>assistant"
]
logger.info("\n🧪 Tokenization Examples:")
for prompt in test_prompts:
tokens = tokenizer.encode(prompt)
decoded = tokenizer.decode(tokens[:10]) + ("..." if len(tokens) > 10 else "")
logger.info(f" '{prompt[:30]}{'...' if len(prompt) > 30 else ''}'")
logger.info(f" → {len(tokens)} tokens: {tokens[:10]}{'...' if len(tokens) > 10 else ''}")
logger.info(f" → decoded: {decoded}")
# Check model files
model_files = list(Path(model_path).glob("*.safetensors"))
logger.info(f"\n📦 Model Files: {len(model_files)} safetensors files")
# Estimate memory requirements
total_params = 120_000_000_000 # 120B parameters
param_size = 0.5 # bytes per parameter for 4-bit quantization
total_memory_gb = (total_params * param_size) / (1024 ** 3)
logger.info("\n💾 Memory Requirements (Estimated):")
logger.info(f" Model size (4-bit): ~{total_memory_gb:.1f} GB")
logger.info(f" Inference RAM: ~{total_memory_gb * 1.5:.1f} GB+")
logger.info(f" GPU VRAM: ~{total_memory_gb:.1f} GB+ (recommended)")
return config, tokenizer
if __name__ == "__main__":
analyze_model()