import XCTest @testable import MarkBase final class G12BForwardTests: XCTestCase { func testModelInitialization() throws { print("\n═══════════════════════════════════════") print(" 12B Model Initialization Test") print("═══════════════════════════════════════\n") let modelDir = "/Users/accusys/.cache/huggingface/hub/models--mlx-community--gemma-4-12B-it-4bit/snapshots/73bcf09092aa277861d5a191b989b666f7f32e8f" print("Step 1: Initialize Metal engine...") let engine = try MarkBaseEngine() try engine.compileSource(MetalKernels.combinedSource) print(" ✓ Engine ready\n") print("Step 2: Load 12B model...") // This will trigger the full shard loading do { let model = try E4BModel(modelDir: modelDir, engine: engine, maxContextLength: 512) print(" ✓ Model loaded successfully\n") print("Model parameters:") print(" Layers: \(model.numHiddenLayers)") print(" Hidden size: \(model.hiddenSize)") print(" Vocab size: \(model.vocabSize)") print(" KV shared layers: \(model.numKvShared)") // Verify 12B parameters XCTAssertEqual(model.numHiddenLayers, 48, "Should have 48 layers") XCTAssertEqual(model.hiddenSize, 3840, "Should have hidden_size=3840") XCTAssertEqual(model.numKvShared, 0, "Should have NO KV sharing") print("\n═══════════════════════════════════════") print("✓ Model initialization passed") print("═══════════════════════════════════════\n") } catch let error as E4BError { print(" ✗ Model loading failed (E4BError): \(error.localizedDescription)\n") throw error } catch let error as WeightError { print(" ✗ Model loading failed (WeightError): \(error.localizedDescription)\n") throw error } catch { print(" ✗ Model loading failed: \(error)\n") throw error } } func testForwardPassPlaceholder() throws { print("\n═══════════════════════════════════════") print(" Forward Pass Test (Placeholder)") print("═══════════════════════════════════════\n") print("This test will verify forward pass once full shard loading is implemented.\n") print("Expected steps:") print(" 1. Load all shards (model-00001-of-00002 + model-00002-of-00002)") print(" 2. Initialize 48-layer model") print(" 3. Run forward pass for position 0") print(" 4. Verify logits output [vocab_size=262144]") print(" 5. Measure performance (expected ~0.08-0.12s/token)\n") print("Status: Pending full shard implementation\n") } }