#[test]
fn test_imp_205a_tokenization_comparison() {
let result = TokenizationComparisonResult::new(
"llama.cpp",
"realizar",
"Hello, world!",
vec![1, 15043, 29892, 3186, 29991],
vec![1, 15043, 29892, 3186, 29991],
);
assert!(
result.tokens_identical,
"IMP-205a: Tokens should be identical"
);
assert!(result.meets_qa002, "IMP-205a: Should meet QA-002");
assert_eq!(result.diff_count, 0, "IMP-205a: Should have no differences");
println!("\nIMP-205a: Tokenization Comparison:");
println!(" Text: {}", result.input_text);
println!(" Reference tokens: {:?}", result.reference_tokens);
println!(" Test tokens: {:?}", result.test_tokens);
println!(" Identical: {}", result.tokens_identical);
}
#[test]
fn test_imp_205b_tokenization_differences() {
let result = TokenizationComparisonResult::new(
"llama.cpp",
"realizar",
"Hello",
vec![1, 15043],
vec![1, 15043, 2], );
assert!(
!result.tokens_identical,
"IMP-205b: Should detect difference"
);
assert!(!result.meets_qa002, "IMP-205b: Should not meet QA-002");
assert!(result.diff_count > 0, "IMP-205b: Should have differences");
println!("\nIMP-205b: Tokenization Differences:");
println!(" Diff count: {}", result.diff_count);
println!(" Meets QA-002: {}", result.meets_qa002);
}
#[test]
fn test_imp_205c_special_tokens() {
let with_special = TokenizationComparisonResult::new(
"ref",
"test",
"<s>Hello</s>",
vec![1, 15043, 2],
vec![1, 15043, 2],
);
assert!(
with_special.tokens_identical,
"IMP-205c: Special tokens should match"
);
println!("\nIMP-205c: Special Tokens:");
println!(
" BOS (1): {}",
with_special.reference_tokens.first() == Some(&1)
);
println!(
" EOS (2): {}",
with_special.reference_tokens.last() == Some(&2)
);
}
#[test]
#[ignore = "Requires running llama.cpp server"]
fn test_imp_205d_realworld_tokenization() {
let client = reqwest::blocking::Client::new();
let text = "The quick brown fox jumps over the lazy dog.";
let resp = client
.post("http://localhost:8082/tokenize")
.json(&serde_json::json!({ "content": text }))
.send()
.expect("Tokenize request failed");
let json: serde_json::Value = resp.json().expect("Invalid JSON");
let tokens: Vec<u32> = json["tokens"]
.as_array()
.map(|arr| {
arr.iter()
.filter_map(|v| v.as_u64().map(|n| n as u32))
.collect()
})
.unwrap_or_default();
let result = TokenizationComparisonResult::new(
"llama.cpp",
"realizar",
text,
tokens.clone(),
tokens, );
println!("\nIMP-205d: Real-World Tokenization:");
println!(" Text: {}", text);
println!(" Token count: {}", result.reference_tokens.len());
println!(
" QA-002: {}",
if result.meets_qa002 { "PASS" } else { "FAIL" }
);
}
#[derive(Debug, Clone)]
pub struct AttentionComparisonResult {
pub layer_idx: usize,
pub head_idx: usize,
pub reference_scores: Vec<f32>,
pub test_scores: Vec<f32>,
pub max_diff: f32,
pub mean_diff: f32,
pub tolerance: f32,
pub meets_qa003: bool,
}
impl AttentionComparisonResult {
pub fn new(
layer: usize,
head: usize,
ref_scores: Vec<f32>,
test_scores: Vec<f32>,
tolerance: f32,
) -> Self {
let diffs: Vec<f32> = ref_scores
.iter()
.zip(test_scores.iter())
.map(|(a, b)| (a - b).abs())
.collect();
let max_diff = diffs.iter().cloned().fold(0.0_f32, f32::max);
let mean_diff = if diffs.is_empty() {
0.0
} else {
diffs.iter().sum::<f32>() / diffs.len() as f32
};
let meets_qa003 = max_diff <= tolerance;
Self {
layer_idx: layer,
head_idx: head,
reference_scores: ref_scores,
test_scores,
max_diff,
mean_diff,
tolerance,
meets_qa003,
}
}
}
#[test]
fn test_imp_206a_attention_comparison() {
let ref_scores = vec![0.1, 0.2, 0.3, 0.4];
let test_scores = vec![0.1, 0.2, 0.3, 0.4];
let result = AttentionComparisonResult::new(0, 0, ref_scores, test_scores, 1e-5);
assert!(result.meets_qa003, "IMP-206a: Should meet QA-003");
assert!(
result.max_diff < 1e-5,
"IMP-206a: Max diff should be within tolerance"
);
println!("\nIMP-206a: Attention Comparison:");
println!(" Layer: {}, Head: {}", result.layer_idx, result.head_idx);
println!(" Max diff: {:.2e}", result.max_diff);
println!(" Mean diff: {:.2e}", result.mean_diff);
}
#[test]
fn test_imp_206b_attention_tolerance() {
let ref_scores = vec![0.25, 0.25, 0.25, 0.25];
let test_scores = vec![0.250001, 0.249999, 0.250001, 0.249999];
let result = AttentionComparisonResult::new(0, 0, ref_scores, test_scores, 1e-5);
assert!(result.meets_qa003, "IMP-206b: Should be within tolerance");
println!("\nIMP-206b: Attention Tolerance:");
println!(" Tolerance: {:.0e}", result.tolerance);
println!(" Max diff: {:.2e}", result.max_diff);
println!(" Within tolerance: {}", result.meets_qa003);
}
#[test]
fn test_imp_206c_attention_out_of_tolerance() {
let ref_scores = vec![0.25, 0.25, 0.25, 0.25];
let test_scores = vec![0.26, 0.24, 0.26, 0.24];
let result = AttentionComparisonResult::new(0, 0, ref_scores, test_scores, 1e-5);
assert!(!result.meets_qa003, "IMP-206c: Should not meet QA-003");
println!("\nIMP-206c: Attention Out of Tolerance:");
println!(" Max diff: {:.2e}", result.max_diff);
println!(" Tolerance: {:.0e}", result.tolerance);
}
#[test]
#[ignore = "Requires attention score extraction from inference"]
fn test_imp_206d_realworld_attention() {
let ref_scores = vec![0.1, 0.15, 0.2, 0.25, 0.3];
let test_scores = vec![0.1, 0.15, 0.2, 0.25, 0.3];
let result = AttentionComparisonResult::new(0, 0, ref_scores, test_scores, 1e-5);
println!("\nIMP-206d: Real-World Attention Comparison:");
println!(" Layer 0, Head 0");
println!(" Max diff: {:.2e}", result.max_diff);
println!(
" QA-003: {}",
if result.meets_qa003 { "PASS" } else { "FAIL" }
);
}
#[derive(Debug, Clone)]
pub struct RoPEComparisonResult {
pub position: usize,
pub dim: usize,
pub reference_embedding: Vec<f32>,
pub test_embedding: Vec<f32>,
pub max_diff: f32,
pub tolerance: f32,
pub meets_qa004: bool,
}
impl RoPEComparisonResult {
pub fn new(
pos: usize,
dim: usize,
ref_emb: Vec<f32>,
test_emb: Vec<f32>,
tolerance: f32,
) -> Self {
let max_diff = ref_emb
.iter()
.zip(test_emb.iter())
.map(|(a, b)| (a - b).abs())
.fold(0.0_f32, f32::max);
let meets_qa004 = max_diff <= tolerance;
Self {
position: pos,
dim,
reference_embedding: ref_emb,
test_embedding: test_emb,
max_diff,
tolerance,
meets_qa004,
}
}
}
#[test]
fn test_imp_207a_rope_comparison() {
let ref_emb = vec![0.841_470_96, 0.540_302_3, 0.909_297_4, -0.416_146_84];
let test_emb = vec![0.841_470_96, 0.540_302_3, 0.909_297_4, -0.416_146_84];
let result = RoPEComparisonResult::new(0, 4, ref_emb, test_emb, 1e-6);
assert!(result.meets_qa004, "IMP-207a: Should meet QA-004");
println!("\nIMP-207a: RoPE Comparison:");
println!(" Position: {}", result.position);
println!(" Dimension: {}", result.dim);
println!(" Max diff: {:.2e}", result.max_diff);
}
#[test]
fn test_imp_207b_rope_tolerance() {
let ref_emb = vec![0.841_470_96];
let test_emb = vec![0.841_470_96];
let result = RoPEComparisonResult::new(0, 1, ref_emb, test_emb, 1e-6);
assert!(
result.meets_qa004,
"IMP-207b: Should be within 1e-6 tolerance"
);
println!("\nIMP-207b: RoPE Tolerance:");
println!(" Max diff: {:.2e}", result.max_diff);
println!(" Tolerance: {:.0e}", result.tolerance);
}
#[test]
fn test_imp_207c_rope_positions() {
let pos0 = RoPEComparisonResult::new(0, 2, vec![1.0, 0.0], vec![1.0, 0.0], 1e-6);
let pos100 = RoPEComparisonResult::new(100, 2, vec![0.5, 0.866], vec![0.5, 0.866], 1e-6);
assert!(pos0.meets_qa004, "IMP-207c: Position 0 should match");
assert!(pos100.meets_qa004, "IMP-207c: Position 100 should match");
println!("\nIMP-207c: RoPE at Positions:");
println!(" Position 0: meets QA-004 = {}", pos0.meets_qa004);
println!(" Position 100: meets QA-004 = {}", pos100.meets_qa004);
}
#[test]
#[ignore = "Requires RoPE extraction from model"]
fn test_imp_207d_realworld_rope() {
let ref_emb = vec![0.841_470_96, 0.540_302_3];
let test_emb = vec![0.841_470_96, 0.540_302_3];
let result = RoPEComparisonResult::new(1, 2, ref_emb, test_emb, 1e-6);
println!("\nIMP-207d: Real-World RoPE:");
println!(" Position: {}", result.position);
println!(" Max diff: {:.2e}", result.max_diff);
println!(
" QA-004: {}",
if result.meets_qa004 { "PASS" } else { "FAIL" }
);
}