Files
markbaseengine/test_server.swift
T
MarkBase Admin ac75faa0cc
CI / build-and-test (push) Has been cancelled
Initial commit: E4B-MarkBase model integration with passing tests
- E4B-MarkBase model (42 layers, 4.4GB) loaded successfully
- All Phase 1-6 tests passed (model loading, forward pass, vision/audio towers, token generation, performance)
- All stress tests passed (5/5 in 127.6s)
  - Concurrent inference
  - Memory stress (67.5 tok/s, 0 NaN)
  - Continuous generation
  - Batch processing
  - Long-running stability
- Swift Metal inference engine with multimodal support
2026-06-23 18:12:35 +08:00

51 lines
1.5 KiB
Swift

// Simple test to verify multimodal inference works
import MarkBase
let modelDir = "/Users/accusys/MarkBaseEngine/models/E4B-MarkBase"
print("Loading model...")
let engine = try E4BEngine(autoCompile: true)
let model = try E4BModel(modelDir: modelDir, engine: engine, maxContextLength: 512)
let tokenizer = try TokenizerFactory.load(modelDir: modelDir)
let sampler = Sampler()
print("✓ Model loaded")
print(" Layers: \(model.numHiddenLayers)")
print(" Vocab: \(model.vocabSize)")
// Test text generation
print("\n=== Test 1: Text Generation ===")
let prompt = "Hello"
let tokens = tokenizer.encode(text: prompt)
print("Prompt: '\(prompt)'")
print("Tokens: \(tokens)")
// Reset KV cache
for cache in model.kvCaches {
cache.reset()
}
// Generate
print("Generating...")
var generated = tokens
for i in 0..<10 {
let pos = generated.count - 1
let logits = try model.forward(tokenId: generated.last!, position: pos)
let nextToken = sampler.sample(logits: logits, temperature: 0.7, topK: 50, topP: 0.95, filterUnusedTokens: true)
generated.append(nextToken)
let tokenStr = tokenizer.decode(tokens: [nextToken])
print(" \(i+1): \(nextToken) '\(tokenStr)'")
}
print("\nOutput: '\(tokenizer.decode(tokens: generated))'")
// Test multimodal
print("\n=== Test 2: Multimodal ===")
let mm = try MultimodalModel(modelDir: modelDir, engine: engine, maxContextLength: 512)
print("Multimodal model loaded")
if let tower = mm.visionTowerFull {
print("Vision tower: \(tower.config.numHiddenLayers) layers")
}