Repository: tenstorrent/tt-forge-fe
Pull request #1614: Re-enable skipped tests into CI
Author: login: meenakshiramanathan1
Created: 2025-04-01T13:39:08Z | Merged: 2025-04-02T13:55:38Z

This PR enables the following skipped test cases

```
pt_codegen_salesforce_codegen_350m_multi_clm_hf
pt_codegen_salesforce_codegen_350m_nl_clm_hf
pt_efficientnet_efficientnet_b4_img_cls_timm
pt_efficientnet_efficientnet_b4_img_cls_torchvision
pt_nbeats_generic_basis_clm_hf
pt_nbeats_trend_basis_clm_hf
pt_regnet_facebook_regnet_y_040_img_cls_hf
pt_regnet_regnet_x_1_6gf_img_cls_torchvision
pt_regnet_regnet_x_3_2gf_img_cls_torchvision
pt_regnet_regnet_x_400mf_img_cls_torchvision
pt_regnet_regnet_x_800mf_img_cls_torchvision
pt_regnet_regnet_y_1_6gf_img_cls_torchvision
pt_regnet_regnet_y_400mf_img_cls_torchvision
pt_regnet_regnet_y_800mf_img_cls_torchvision
pt_swin_swin_b_img_cls_torchvision
pt_swin_swin_s_img_cls_torchvision
pt_swin_swin_t_img_cls_torchvision
pt_vilt_dandelin_vilt_b32_mlm_mlm_hf
pt_whisper_openai_whisper_large_v3_turbo_speech_translate_hf
```


Diff:
diff --git a/forge/test/models/pytorch/audio/whisper/test_whisper_large_v3.py b/forge/test/models/pytorch/audio/whisper/test_whisper_large_v3.py
index 81797088c8..35c09ef2d5 100644
--- a/forge/test/models/pytorch/audio/whisper/test_whisper_large_v3.py
+++ b/forge/test/models/pytorch/audio/whisper/test_whisper_large_v3.py
@@ -38,9 +38,9 @@ def forward(self, decoder_input_ids, encoder_hidden_states):
 
 
 @pytest.mark.nightly
+@pytest.mark.xfail
 @pytest.mark.parametrize("variant", ["openai/whisper-large-v3-turbo"])
 def test_whisper_large_v3_speech_translation(forge_property_recorder, variant):
-    pytest.skip("Skipping due to the current CI/CD pipeline limitations")
 
     # Build Module Name
     module_name = build_module_name(
diff --git a/forge/test/models/pytorch/multimodal/vilt/test_vilt.py b/forge/test/models/pytorch/multimodal/vilt/test_vilt.py
index 56887a6c26..b6e58a6a9e 100644
--- a/forge/test/models/pytorch/multimodal/vilt/test_vilt.py
+++ b/forge/test/models/pytorch/multimodal/vilt/test_vilt.py
@@ -115,9 +115,9 @@ def generate_model_vilt_maskedlm_hf_pytorch(variant):
 
 
 @pytest.mark.nightly
+@pytest.mark.xfail
 @pytest.mark.parametrize("variant", variants, ids=variants)
 def test_vilt_maskedlm_hf_pytorch(forge_property_recorder, variant):
-    pytest.skip("Skipping due to the current CI/CD pipeline limitations")
 
     # Build Module Name
     module_name = build_module_name(
diff --git a/forge/test/models/pytorch/text/codegen/test_codegen.py b/forge/test/models/pytorch/text/codegen/test_codegen.py
index a29a8dcb4e..0876c5fd4d 100644
--- a/forge/test/models/pytorch/text/codegen/test_codegen.py
+++ b/forge/test/models/pytorch/text/codegen/test_codegen.py
@@ -14,20 +14,16 @@
 from test.utils import download_model
 
 variants = [
-    pytest.param(
-        "Salesforce/codegen-350M-mono",
-        marks=[pytest.mark.xfail],
-    ),
+    "Salesforce/codegen-350M-mono",
     "Salesforce/codegen-350M-multi",
     "Salesforce/codegen-350M-nl",
 ]
 
 
 @pytest.mark.nightly
+@pytest.mark.xfail
 @pytest.mark.parametrize("variant", variants)
 def test_codegen(forge_property_recorder, variant):
-    if variant != "Salesforce/codegen-350M-mono":
-        pytest.skip("Skipping due to the current CI/CD pipeline limitations")
 
     # Build Module Name
     module_name = build_module_name(
diff --git a/forge/test/models/pytorch/timeseries/nbeats/test_nbeats.py b/forge/test/models/pytorch/timeseries/nbeats/test_nbeats.py
index 79170fb2d3..b6682bd3aa 100644
--- a/forge/test/models/pytorch/timeseries/nbeats/test_nbeats.py
+++ b/forge/test/models/pytorch/timeseries/nbeats/test_nbeats.py
@@ -18,15 +18,8 @@
 
 
 @pytest.mark.nightly
-@pytest.mark.parametrize(
-    "variant",
-    [
-        pytest.param(
-            "seasionality_basis",
-            marks=[pytest.mark.xfail],
-        ),
-    ],
-)
+@pytest.mark.xfail
+@pytest.mark.parametrize("variant", ["seasionality_basis"])
 def test_nbeats_with_seasonality_basis(forge_property_recorder, variant):
     # Build Module Name
     module_name = build_module_name(
@@ -61,9 +54,9 @@ def test_nbeats_with_seasonality_basis(forge_property_recorder, variant):
 
 
 @pytest.mark.nightly
+@pytest.mark.xfail
 @pytest.mark.parametrize("variant", ["generic_basis"])
 def test_nbeats_with_generic_basis(forge_property_recorder, variant):
-    pytest.skip("Skipping due to the current CI/CD pipeline limitations")
 
     # Build Module Name
     module_name = build_module_name(
@@ -91,9 +84,9 @@ def test_nbeats_with_generic_basis(forge_property_recorder, variant):
 
 
 @pytest.mark.nightly
+@pytest.mark.xfail
 @pytest.mark.parametrize("variant", ["trend_basis"])
 def test_nbeats_with_trend_basis(forge_property_recorder, variant):
-    pytest.skip("Skipping due to the current CI/CD pipeline limitations")
 
     # Build Module Name
     module_name = build_module_name(
diff --git a/forge/test/models/pytorch/vision/efficientnet/test_efficientnet.py b/forge/test/models/pytorch/vision/efficientnet/test_efficientnet.py
index cb2b0644f2..85fe9ce704 100644
--- a/forge/test/models/pytorch/vision/efficientnet/test_efficientnet.py
+++ b/forge/test/models/pytorch/vision/efficientnet/test_efficientnet.py
@@ -22,7 +22,13 @@
 import forge
 from forge.verify.verify import verify
 
-from test.models.utils import Framework, Source, Task, build_module_name
+from test.models.utils import (
+    Framework,
+    Source,
+    Task,
+    build_module_name,
+    print_cls_results,
+)
 from test.utils import download_model
 
 ## https://huggingface.co/docs/timm/models/efficientnet
@@ -49,8 +55,6 @@
 @pytest.mark.nightly
 @pytest.mark.parametrize("variant", variants)
 def test_efficientnet_timm(forge_property_recorder, variant):
-    if variant != "efficientnet_b0":
-        pytest.skip("Skipping due to the current CI/CD pipeline limitations")
 
     # Build Module Name
     module_name = build_module_name(
@@ -97,7 +101,10 @@ def test_efficientnet_timm(forge_property_recorder, variant):
     )
 
     # Model Verification
-    verify(inputs, framework_model, compiled_model, forge_property_handler=forge_property_recorder)
+    fw_out, co_out = verify(inputs, framework_model, compiled_model, forge_property_handler=forge_property_recorder)
+
+    # Run model on sample data and print results
+    print_cls_results(fw_out[0], co_out[0])
 
 
 def get_state_dict(self, *args, **kwargs):
@@ -122,8 +129,6 @@ def get_state_dict(self, *args, **kwargs):
 @pytest.mark.nightly
 @pytest.mark.parametrize("variant", variants)
 def test_efficientnet_torchvision(forge_property_recorder, variant):
-    if variant != "efficientnet_b0":
-        pytest.skip("Skipping due to the current CI/CD pipeline limitations")
 
     # Build Module Name
     module_name = build_module_name(
@@ -145,6 +150,7 @@ def test_efficientnet_torchvision(forge_property_recorder, variant):
         framework_model = efficientnet_b4(weights=EfficientNet_B4_Weights.IMAGENET1K_V1)
 
     framework_model.eval()
+
     # Load and pre-process image
     try:
         url, filename = (
@@ -170,4 +176,7 @@ def test_efficientnet_torchvision(forge_property_recorder, variant):
     )
 
     # Model Verification
-    verify(inputs, framework_model, compiled_model, forge_property_handler=forge_property_recorder)
+    fw_out, co_out = verify(inputs, framework_model, compiled_model, forge_property_handler=forge_property_recorder)
+
+    # Run model on sample data and print results
+    print_cls_results(fw_out[0], co_out[0])
diff --git a/forge/test/models/pytorch/vision/regnet/test_regnet.py b/forge/test/models/pytorch/vision/regnet/test_regnet.py
index 833384bca5..a7cc504f34 100644
--- a/forge/test/models/pytorch/vision/regnet/test_regnet.py
+++ b/forge/test/models/pytorch/vision/regnet/test_regnet.py
@@ -45,9 +45,9 @@ def test_regnet(forge_property_recorder, variant):
 
 
 @pytest.mark.nightly
+@pytest.mark.xfail
 @pytest.mark.parametrize("variant", ["facebook/regnet-y-040"])
 def test_regnet_img_classification(forge_property_recorder, variant):
-    pytest.skip("Skipping due to the current CI/CD pipeline limitations")
 
     # Build Module Name
     module_name = build_module_name(
@@ -97,10 +97,7 @@ def test_regnet_img_classification(forge_property_recorder, variant):
 }
 
 variants = [
-    pytest.param(
-        "regnet_y_400mf",
-        marks=[pytest.mark.xfail],
-    ),
+    "regnet_y_400mf",
     "regnet_y_800mf",
     "regnet_y_1_6gf",
     "regnet_y_3_2gf",
@@ -119,12 +116,10 @@ def test_regnet_img_classification(forge_property_recorder, variant):
 
 
 @pytest.mark.nightly
+@pytest.mark.xfail
 @pytest.mark.parametrize("variant", variants)
 def test_regnet_torchvision(forge_property_recorder, variant):
 
-    if variant != "regnet_y_400mf":
-        pytest.skip("Skipping this variant; only testing the small variant(regnet_y_400mf) for now.")
-
     # Build Module Name
     module_name = build_module_name(
         framework=Framework.PYTORCH,
diff --git a/forge/test/models/pytorch/vision/swin/test_swin.py b/forge/test/models/pytorch/vision/swin/test_swin.py
index 3745155e80..0f484f00a8 100644
--- a/forge/test/models/pytorch/vision/swin/test_swin.py
+++ b/forge/test/models/pytorch/vision/swin/test_swin.py
@@ -179,28 +179,20 @@ def test_swin_v2_tiny_masked(forge_property_recorder, variant):
 }
 
 variants = [
-    pytest.param(
-        "swin_t",
-        marks=[pytest.mark.xfail],
-    ),
+    "swin_t",
     "swin_s",
     "swin_b",
-    pytest.param(
-        "swin_v2_t",
-        marks=[pytest.mark.xfail],
-    ),
+    "swin_v2_t",
     "swin_v2_s",
     "swin_v2_b",
 ]
 
 
 @pytest.mark.nightly
+@pytest.mark.xfail
 @pytest.mark.parametrize("variant", variants)
 def test_swin_torchvision(forge_property_recorder, variant):
 
-    if variant not in ["swin_t", "swin_v2_t"]:
-        pytest.skip("Skipping this variant; only testing the small variants(swin_t,swin_v2_t) for now.")
-
     # Build Module Name
     module_name = build_module_name(
         framework=Framework.PYTORCH,
diff --git a/forge/test/models/utils.py b/forge/test/models/utils.py
index fc5451204e..d3739dc690 100644
--- a/forge/test/models/utils.py
+++ b/forge/test/models/utils.py
@@ -3,6 +3,10 @@
 # SPDX-License-Identifier: Apache-2.0
 import re
 from enum import Enum
+import torch
+import requests
+from tabulate import tabulate
+import json
 
 
 class StrEnum(str, Enum):
@@ -75,3 +79,32 @@ def build_module_name(
     module_name = re.sub(r"_+", "_", module_name)
     module_name = module_name.lower()
     return module_name
+
+
+def print_cls_results(fw_out, compiled_model_out):
+    fw_top1_probabilities, fw_top1_class_indices = torch.topk(fw_out.softmax(dim=1) * 100, k=1)
+    compiled_model_top1_probabilities, compiled_model_top1_class_indices = torch.topk(
+        compiled_model_out.softmax(dim=1) * 100, k=1
+    )
+
+    # Directly get the top 1 predicted class and its probability for both models
+    fw_top1_class_idx = fw_top1_class_indices[0, 0].item()
+    compiled_model_top1_class_idx = compiled_model_top1_class_indices[0, 0].item()
+    fw_top1_class_prob = fw_top1_probabilities[0, 0].item()
+    compiled_model_top1_class_prob = compiled_model_top1_probabilities[0, 0].item()
+
+    # Directly load ImageNet class labels inside post-process
+    class_labels_url = "https://storage.googleapis.com/download.tensorflow.org/data/imagenet_class_index.json"
+    response = requests.get(class_labels_url)
+    class_idx = response.json()
+    class_labels = [class_idx[str(i)][1] for i in range(len(class_idx))]
+    fw_top1_class_label = class_labels[fw_top1_class_idx]
+    compiled_model_top1_class_label = class_labels[compiled_model_top1_class_idx]
+
+    # Prepare the results for displaying
+    table = [
+        ["Metric", "Framework Model", "Compiled Model"],
+        ["Top 1 Predicted Class Label", fw_top1_class_label, compiled_model_top1_class_label],
+        ["Top 1 Predicted Class Probability", fw_top1_class_prob, compiled_model_top1_class_prob],
+    ]
+    print(tabulate(table, headers="firstrow", tablefmt="grid"))


Reviews:
user: login: nvukobratTT
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-01T14:56:33Z
user: login: meenakshiramanathan1
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-02T02:07:54Z
user: login: nvukobratTT
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-04-02T09:03:43Z
user: login: vkovinicTT
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-02T09:40:20Z
user: login: vkovinicTT
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-02T09:42:25Z
user: login: meenakshiramanathan1
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-02T09:46:37Z
user: login: meenakshiramanathan1
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-02T09:57:22Z
user: login: vkovinicTT
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-02T10:04:14Z
user: login: vkovinicTT
body: One minor comment :))
state: APPROVED
author_association: MEMBER
submitted_at: 2025-04-02T10:04:32Z
user: login: meenakshiramanathan1
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-02T10:07:00Z
user: login: mstojkovicTT
body: Looks good, just one nit :)
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-02T12:50:20Z
user: login: meenakshiramanathan1
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-02T13:17:42Z

Review comments:
diff_hunk: @@ -18,7 +18,6 @@
 @pytest.mark.nightly
 @pytest.mark.parametrize("variant", ["deepseek-coder-1.3b-instruct"])
 def test_deepseek_inference_no_cache(forge_property_recorder, variant):
-    pytest.skip("Insufficient host DRAM to run this model (requires a bit more than 32 GB during compile time)")
path: forge/test/models/pytorch/multimodal/deepseek_coder/test_deepseek_coder.py
user: login: nvukobratTT
body: Did you check how much memory this one is using on latest main? 
created_at: 2025-04-01T14:54:17Z
author_association: COLLABORATOR
diff_hunk: @@ -63,23 +63,21 @@ def generate_model_hrnet_imgcls_osmr_pytorch(variant):
 
 
 variants = [
-    "hrnet_w18_small_v1",
-    "hrnet_w18_small_v2",
-    "hrnetv2_w18",
-    "hrnetv2_w30",
-    "hrnetv2_w32",
-    "hrnetv2_w40",
-    "hrnetv2_w44",
-    "hrnetv2_w48",
-    "hrnetv2_w64",
+    pytest.param("hrnet_w18_small_v1", marks=pytest.mark.push),
path: forge/test/models/pytorch/vision/hrnet/test_hrnet.py
user: login: nvukobratTT
body: Let's keep only a single one in a push (the smallest one)
created_at: 2025-04-01T14:55:45Z
author_association: COLLABORATOR
diff_hunk: @@ -46,11 +45,10 @@
 ]
 
 
+@pytest.mark.push
path: forge/test/models/pytorch/vision/efficientnet/test_efficientnet.py
user: login: nvukobratTT
body: Let's keep only single efficient net in the push CI. 
created_at: 2025-04-01T14:56:06Z
author_association: COLLABORATOR
diff_hunk: @@ -18,7 +18,6 @@
 @pytest.mark.nightly
 @pytest.mark.parametrize("variant", ["deepseek-coder-1.3b-instruct"])
 def test_deepseek_inference_no_cache(forge_property_recorder, variant):
-    pytest.skip("Insufficient host DRAM to run this model (requires a bit more than 32 GB during compile time)")
path: forge/test/models/pytorch/multimodal/deepseek_coder/test_deepseek_coder.py
user: login: meenakshiramanathan1
body: 21 GB
created_at: 2025-04-02T02:07:54Z
author_association: CONTRIBUTOR
diff_hunk: @@ -108,7 +115,7 @@ def get_state_dict(self, *args, **kwargs):
 WeightsEnum.get_state_dict = get_state_dict
 
 variants = [
-    "efficientnet_b0",
+    pytest.param("efficientnet_b0", marks=[pytest.mark.push]),
     # models.efficientnet_b1,
     # models.efficientnet_b2,
     # models.efficientnet_b3,
path: forge/test/models/pytorch/vision/efficientnet/test_efficientnet.py
user: login: vkovinicTT
body: Should we uncomment those?
created_at: 2025-04-02T09:40:20Z
author_association: MEMBER
diff_hunk: @@ -108,7 +115,7 @@ def get_state_dict(self, *args, **kwargs):
 WeightsEnum.get_state_dict = get_state_dict
 
 variants = [
-    "efficientnet_b0",
+    pytest.param("efficientnet_b0", marks=[pytest.mark.push]),
path: forge/test/models/pytorch/vision/efficientnet/test_efficientnet.py
user: login: vkovinicTT
body: Why is this model marked with `pytest.mark.push`?
created_at: 2025-04-02T09:42:25Z
author_association: MEMBER
diff_hunk: @@ -108,7 +115,7 @@ def get_state_dict(self, *args, **kwargs):
 WeightsEnum.get_state_dict = get_state_dict
 
 variants = [
-    "efficientnet_b0",
+    pytest.param("efficientnet_b0", marks=[pytest.mark.push]),
     # models.efficientnet_b1,
     # models.efficientnet_b2,
     # models.efficientnet_b3,
path: forge/test/models/pytorch/vision/efficientnet/test_efficientnet.py
user: login: meenakshiramanathan1
body: Those tests will be tested and enabled in forthcoming PRs.
created_at: 2025-04-02T09:46:37Z
author_association: CONTRIBUTOR
diff_hunk: @@ -108,7 +115,7 @@ def get_state_dict(self, *args, **kwargs):
 WeightsEnum.get_state_dict = get_state_dict
 
 variants = [
-    "efficientnet_b0",
+    pytest.param("efficientnet_b0", marks=[pytest.mark.push]),
path: forge/test/models/pytorch/vision/efficientnet/test_efficientnet.py
user: login: meenakshiramanathan1
body: Modified now
created_at: 2025-04-02T09:57:22Z
author_association: CONTRIBUTOR
diff_hunk: @@ -108,7 +115,7 @@ def get_state_dict(self, *args, **kwargs):
 WeightsEnum.get_state_dict = get_state_dict
 
 variants = [
-    "efficientnet_b0",
+    pytest.param("efficientnet_b0", marks=[pytest.mark.push]),
path: forge/test/models/pytorch/vision/efficientnet/test_efficientnet.py
user: login: vkovinicTT
body: Can we just set to `efficientnet_b0` instead of `pytest.param("efficientnet_b0")`.
created_at: 2025-04-02T10:04:14Z
author_association: MEMBER
diff_hunk: @@ -108,7 +115,7 @@ def get_state_dict(self, *args, **kwargs):
 WeightsEnum.get_state_dict = get_state_dict
 
 variants = [
-    "efficientnet_b0",
+    pytest.param("efficientnet_b0", marks=[pytest.mark.push]),
path: forge/test/models/pytorch/vision/efficientnet/test_efficientnet.py
user: login: meenakshiramanathan1
body: Just changed that now
created_at: 2025-04-02T10:06:59Z
author_association: CONTRIBUTOR
diff_hunk: @@ -75,3 +77,32 @@ def build_module_name(
     module_name = re.sub(r"_+", "_", module_name)
     module_name = module_name.lower()
     return module_name
+
+
+def print_cls_results(fw_out, compiled_model_out):
+    fw_top1_probabilities, fw_top1_class_indices = torch.topk(fw_out.softmax(dim=1) * 100, k=1)
+    compiled_model_top1_probabilities, compiled_model_top1_class_indices = torch.topk(
+        compiled_model_out.softmax(dim=1) * 100, k=1
+    )
+
+    # Directly get the top 1 predicted class and its probability for both models
+    fw_top1_class_idx = fw_top1_class_indices[0, 0].item()
+    compiled_model_top1_class_idx = compiled_model_top1_class_indices[0, 0].item()
+    fw_top1_class_prob = fw_top1_probabilities[0, 0].item()
+    compiled_model_top1_class_prob = compiled_model_top1_probabilities[0, 0].item()
+
+    # Directly load ImageNet class labels inside post-process
+    class_labels_url = "https://storage.googleapis.com/download.tensorflow.org/data/imagenet_class_index.json"
path: forge/test/models/utils.py
user: login: mstojkovicTT
body: Is there a reason to allways download this .json file, can we download it and place it in utils folder?
created_at: 2025-04-02T12:47:20Z
author_association: CONTRIBUTOR
diff_hunk: @@ -75,3 +77,32 @@ def build_module_name(
     module_name = re.sub(r"_+", "_", module_name)
     module_name = module_name.lower()
     return module_name
+
+
+def print_cls_results(fw_out, compiled_model_out):
+    fw_top1_probabilities, fw_top1_class_indices = torch.topk(fw_out.softmax(dim=1) * 100, k=1)
+    compiled_model_top1_probabilities, compiled_model_top1_class_indices = torch.topk(
+        compiled_model_out.softmax(dim=1) * 100, k=1
+    )
+
+    # Directly get the top 1 predicted class and its probability for both models
+    fw_top1_class_idx = fw_top1_class_indices[0, 0].item()
+    compiled_model_top1_class_idx = compiled_model_top1_class_indices[0, 0].item()
+    fw_top1_class_prob = fw_top1_probabilities[0, 0].item()
+    compiled_model_top1_class_prob = compiled_model_top1_probabilities[0, 0].item()
+
+    # Directly load ImageNet class labels inside post-process
+    class_labels_url = "https://storage.googleapis.com/download.tensorflow.org/data/imagenet_class_index.json"
path: forge/test/models/utils.py
user: login: meenakshiramanathan1
body: Yeah that can be executed, I will probably make that change in next enabling models PR.
created_at: 2025-04-02T13:17:41Z
author_association: CONTRIBUTOR

PR comments:
user: login: codecov-commenter
created_at: 2025-04-01T13:46:14Z
body: ## [Codecov](https://app.codecov.io/gh/tenstorrent/tt-forge-fe/pull/1614?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=tenstorrent) Report
All modified and coverable lines are covered by tests :white_check_mark:
> Project coverage is 42.62%. Comparing base [(`f37ab93`)](https://app.codecov.io/gh/tenstorrent/tt-forge-fe/commit/f37ab93d6fb689242ca2eec52a9b127f42d7c1ac?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=tenstorrent) to head [(`2ba4624`)](https://app.codecov.io/gh/tenstorrent/tt-forge-fe/commit/2ba46244a0156f4d3d417cf590fe26a9595d15ad?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=tenstorrent).
> Report is 1 commits behind head on main.

<details><summary>Additional details and impacted files</summary>


```diff
@@           Coverage Diff           @@
##             main    #1614   +/-   ##
=======================================
  Coverage   42.62%   42.62%           
=======================================
  Files          52       52           
  Lines        8078     8078           
=======================================
  Hits         3443     3443           
  Misses       4635     4635           
```

</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/tenstorrent/tt-forge-fe/pull/1614?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=tenstorrent).   
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=tenstorrent).

author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-01T13:51:45Z
body: <table><tr><th><th>Tests</th><th>Passed ❌️</th><th>Skipped</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>0 ran</td><td>0 passed</td><td>0 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-01T14:07:00Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>646 ran</td><td>498 passed</td><td>148 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-01T14:17:18Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>646 ran</td><td>498 passed</td><td>148 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-01T14:28:16Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>705 ran</td><td>561 passed</td><td>144 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-01T15:45:29Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>646 ran</td><td>499 passed</td><td>147 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-01T15:48:17Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>705 ran</td><td>560 passed</td><td>145 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-01T15:54:10Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>646 ran</td><td>499 passed</td><td>147 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-01T15:59:40Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>705 ran</td><td>560 passed</td><td>145 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T02:46:35Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>647 ran</td><td>496 passed</td><td>151 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T02:49:39Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>647 ran</td><td>496 passed</td><td>151 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T03:00:21Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>706 ran</td><td>565 passed</td><td>141 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T03:02:53Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>706 ran</td><td>565 passed</td><td>141 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T05:27:28Z
body: <table><tr><th><th>Tests</th><th>Passed ❌️</th><th>Skipped</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>0 ran</td><td>0 passed</td><td>0 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T05:53:13Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>647 ran</td><td>496 passed</td><td>151 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T05:57:45Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>706 ran</td><td>565 passed</td><td>141 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T06:00:53Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>706 ran</td><td>565 passed</td><td>141 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T06:36:56Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>647 ran</td><td>496 passed</td><td>151 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T07:33:24Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>647 ran</td><td>496 passed</td><td>151 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T07:42:31Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>647 ran</td><td>496 passed</td><td>151 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T07:44:42Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>705 ran</td><td>564 passed</td><td>141 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T07:46:53Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>705 ran</td><td>564 passed</td><td>141 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T09:10:21Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>704 ran</td><td>562 passed</td><td>142 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T09:10:53Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>646 ran</td><td>496 passed</td><td>150 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T09:16:43Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>646 ran</td><td>496 passed</td><td>150 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T09:19:39Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>704 ran</td><td>562 passed</td><td>142 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T10:59:36Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>645 ran</td><td>494 passed</td><td>151 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T11:06:39Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>704 ran</td><td>563 passed</td><td>141 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T11:08:34Z
body: <table><tr><th><th>Tests</th><th>Passed ☑️</th><th>Skipped ⚠️</th><th>Failed ❌️</th></tr><tr><td>TT-Forge-FE Tests</td><td>704 ran</td><td>562 passed</td><td>141 skipped</td><td>1 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2"><strong>TT-Forge-FE Tests</strong></td></tr><tr><td colspan="2"><em>pytest</em></td></tr><tr><td>test_llama_lm_head.test_llama_lm_head[openlm-research/open_llama_3b]</td><td>❌ failure</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T12:26:20Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>645 ran</td><td>494 passed</td><td>151 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T12:28:59Z
body: <table><tr><th><th>Tests</th><th>Passed ☑️</th><th>Skipped ⚠️</th><th>Failed ❌️</th></tr><tr><td>TT-Forge-FE Tests</td><td>704 ran</td><td>562 passed</td><td>141 skipped</td><td>1 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2"><strong>TT-Forge-FE Tests</strong></td></tr><tr><td colspan="2"><em>pytest</em></td></tr><tr><td>test_efficientnet.test_efficientnet_timm[efficientnet_b0]</td><td>❌ failure</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T12:32:47Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>645 ran</td><td>494 passed</td><td>151 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T12:38:28Z
body: <table><tr><th><th>Tests</th><th>Passed ☑️</th><th>Skipped ⚠️</th><th>Failed ❌️</th></tr><tr><td>TT-Forge-FE Tests</td><td>704 ran</td><td>562 passed</td><td>141 skipped</td><td>1 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2"><strong>TT-Forge-FE Tests</strong></td></tr><tr><td colspan="2"><em>pytest</em></td></tr><tr><td>test_efficientnet.test_efficientnet_timm[efficientnet_b0]</td><td>❌ failure</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T13:36:51Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>645 ran</td><td>494 passed</td><td>151 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T13:39:01Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>704 ran</td><td>563 passed</td><td>141 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T13:43:31Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>645 ran</td><td>494 passed</td><td>151 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-02T13:48:40Z
body: <table><tr><th><th>Tests</th><th>Passed ✅</th><th>Skipped ⚠️</th><th>Failed</th></tr><tr><td>TT-Forge-FE Tests</td><td>704 ran</td><td>563 passed</td><td>141 skipped</td><td>0 failed</td></tr></table>

<table><tr><th>Test</th><th>Result</th></tr><tr><td colspan="2">No test annotations available</td></tr></table>

<!-- Summary comment for ["TT-Forge-FE Tests"] by mikepenz/action-junit-report -->
author_association: NONE