File size: 2,857 Bytes
3e0ec22 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | # SPDX-FileCopyrightText: © 2026 Tenstorrent USA, Inc.
# SPDX-License-Identifier: Apache-2.0
"""Llama 3.2 90B decoder JSON must match ModelOptimizations baseline except LI_QKV_DECODE (issue #36378)."""
from pathlib import Path
import pytest
from models.tt_transformers.tt.model_config import (
DecodersPrecision,
MathFidelitySetting,
ModelOptimizations,
OpGroup,
TensorGroup,
parse_decoder_json,
)
_MN = "Llama-3.2-90B-Instruct"
_TT_ROOT = Path(__file__).resolve().parents[1]
_ACC = _TT_ROOT / "model_params" / _MN / "accuracy_decoder_config.json"
_PERF = _TT_ROOT / "model_params" / _MN / "performance_decoder_config.json"
def _tensor_map(m: ModelOptimizations):
return {
k.name: m.tensor_dtype_settings[k].name
for k in TensorGroup
if k in m.tensor_dtype_settings and m.tensor_dtype_settings[k] is not None
}
def _op_map(m: ModelOptimizations):
return {k.name: m.op_fidelity_settings[k].name for k in OpGroup if k in m.op_fidelity_settings}
def _assert_json_matches_baseline_except_qkv_decode(json_path: Path, opt_fn):
baseline = opt_fn(_MN)
b_tensor = _tensor_map(baseline)
b_op = _op_map(baseline)
loaded = parse_decoder_json(json_path, default_optimization=opt_fn)
n = len(loaded.decoder_optimizations)
assert n == 80
for di in range(n):
j = loaded.decoder_optimizations[di]
j_tensor = _tensor_map(j)
j_op = _op_map(j)
assert j_tensor == b_tensor, f"decoder {di} tensor_dtype mismatch"
for ok, vb in b_op.items():
jv = j_op.get(ok)
if ok == OpGroup.LI_QKV_DECODE.name:
assert (
vb == MathFidelitySetting.HIFI2.name and jv == MathFidelitySetting.HIFI2_NOL1ACC.name
), f"decoder {di} LI_QKV_DECODE expected HIFI2->HIFI2_NOL1ACC, got {vb}->{jv}"
else:
assert jv == vb, f"decoder {di} op {ok} baseline={vb} json={jv}"
@pytest.mark.skipif(not _ACC.is_file(), reason="accuracy_decoder_config.json not present")
def test_llama90b_accuracy_decoder_json_matches_baseline_except_qkv_decode():
_assert_json_matches_baseline_except_qkv_decode(_ACC, ModelOptimizations.accuracy)
@pytest.mark.skipif(not _PERF.is_file(), reason="performance_decoder_config.json not present")
def test_llama90b_performance_decoder_json_matches_baseline_except_qkv_decode():
_assert_json_matches_baseline_except_qkv_decode(_PERF, ModelOptimizations.performance)
def test_llama90b_decoders_precision_without_json_layers_match_accuracy_baseline():
"""When no JSON is used, DecodersPrecision repeats optimization_level(model_name) per layer."""
base = ModelOptimizations.accuracy(_MN)
dp = DecodersPrecision(80, _MN, base)
for i in range(80):
assert dp.decoder_optimizations[i]._full_name == base._full_name
|