danielhn commited on
Commit
24f5a4b
1 Parent(s): 2093a1b

More reliable graphs

Browse files
Files changed (1) hide show
  1. graphs.py +42 -35
graphs.py CHANGED
@@ -629,6 +629,23 @@ def results_table(df: pd.DataFrame):
629
  st.dataframe(df, height=min((len(df) + 1) * 35, 35 * 21))
630
 
631
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
632
  def device_funnel(df: pd.DataFrame) -> None:
633
  """
634
  Show count of how many models compile, assemble, etc
@@ -650,26 +667,26 @@ def device_funnel(df: pd.DataFrame) -> None:
650
 
651
  # Show Sankey graph with percentages
652
  sk_val = {
653
- "All models": f"{summ.all_models} models - 100%",
654
- "Converts to ONNX": f"{summ.base_onnx} models - "
655
- + str(int(100 * summ.base_onnx / summ.all_models))
656
- + "%",
657
- "Optimizes ONNX file": f"{summ.optimized_onnx} models - "
658
- + str(int(100 * summ.optimized_onnx / summ.all_models))
659
- + "%",
660
- "Converts to FP16": f"{summ.fp16_onnx} models - "
661
- + str(int(100 * summ.fp16_onnx / summ.all_models))
662
- + "%",
663
- "Acquires Nvidia Perf": f"{summ.nvidia} models - "
664
- + str(int(100 * summ.nvidia / summ.all_models))
665
- + "% (Nvidia)",
666
- "Acquires Groq Perf": f"{summ.groq} models - "
667
- + str(int(100 * summ.groq / summ.all_models))
668
- + "% (Groq)",
669
- "Acquires x86 Perf": f"{summ.x86} models - "
670
- + str(int(100 * summ.x86 / summ.all_models))
671
- + "% (x86)",
672
  }
 
 
 
 
 
 
 
673
  option = {
674
  "series": {
675
  "type": "sankey",
@@ -745,42 +762,32 @@ def device_funnel(df: pd.DataFrame) -> None:
745
  {
746
  "source": "All models",
747
  "target": "Converts to ONNX",
748
- "value": summ.all_models,
749
  },
750
  {
751
  "source": "Converts to ONNX",
752
  "target": "Optimizes ONNX file",
753
- "value": summ.optimized_onnx,
754
  },
755
  {
756
  "source": "Optimizes ONNX file",
757
  "target": "Converts to FP16",
758
- "value": summ.fp16_onnx,
759
  },
760
  {
761
  "source": "Converts to FP16",
762
  "target": "Acquires Nvidia Perf",
763
- "value": int(
764
- summ.nvidia
765
- * summ.fp16_onnx
766
- / (summ.x86 + summ.nvidia + summ.groq)
767
- ),
768
  },
769
  {
770
  "source": "Converts to FP16",
771
  "target": "Acquires Groq Perf",
772
- "value": int(
773
- summ.groq
774
- * summ.fp16_onnx
775
- / (summ.x86 + summ.nvidia + summ.groq)
776
- ),
777
  },
778
  {
779
  "source": "Converts to FP16",
780
  "target": "Acquires x86 Perf",
781
- "value": int(
782
- summ.x86 * summ.fp16_onnx / (summ.x86 + summ.nvidia + summ.groq)
783
- ),
784
  },
785
  ],
786
  }
 
629
  st.dataframe(df, height=min((len(df) + 1) * 35, 35 * 21))
630
 
631
 
632
+ def device_funnel_metrics(num_models: int, num_total_models: int) -> str:
633
+ """
634
+ Calculates the percentage between models and total_models
635
+ Avoids ZeroDivisionError when dividend is zero
636
+ """
637
+ models_message = f"{num_models} model"
638
+ models_message = models_message + "s" if num_models != 1 else models_message
639
+ percentage_message = ""
640
+ if num_total_models > 0:
641
+ model_ratio = num_models / num_total_models
642
+ if model_ratio < 0.01 and model_ratio != 0:
643
+ percentage_message = " - < 1%"
644
+ else:
645
+ percentage_message = f" - {int(100*num_models / num_total_models)}%"
646
+ return f"{models_message}{percentage_message}"
647
+
648
+
649
  def device_funnel(df: pd.DataFrame) -> None:
650
  """
651
  Show count of how many models compile, assemble, etc
 
667
 
668
  # Show Sankey graph with percentages
669
  sk_val = {
670
+ "All models": device_funnel_metrics(summ.all_models, summ.all_models),
671
+ "Converts to ONNX": device_funnel_metrics(summ.base_onnx, summ.all_models),
672
+ "Optimizes ONNX file": device_funnel_metrics(
673
+ summ.optimized_onnx, summ.all_models
674
+ ),
675
+ "Converts to FP16": device_funnel_metrics(summ.fp16_onnx, summ.all_models),
676
+ "Acquires Nvidia Perf": device_funnel_metrics(summ.nvidia, summ.all_models)
677
+ + " (Nvidia)",
678
+ "Acquires Groq Perf": device_funnel_metrics(summ.groq, summ.all_models)
679
+ + " (Groq)",
680
+ "Acquires x86 Perf": device_funnel_metrics(summ.x86, summ.all_models)
681
+ + " (x86)",
 
 
 
 
 
 
 
682
  }
683
+
684
+ # Calculate bar heights for each of the devices
685
+ # Bar height is proportional to the number of models benchmarked by each device
686
+ default_bar_size = 1
687
+ target_combined_height = max(default_bar_size, summ.fp16_onnx)
688
+ device_bar_size = target_combined_height / 3
689
+
690
  option = {
691
  "series": {
692
  "type": "sankey",
 
762
  {
763
  "source": "All models",
764
  "target": "Converts to ONNX",
765
+ "value": max(default_bar_size, summ.all_models),
766
  },
767
  {
768
  "source": "Converts to ONNX",
769
  "target": "Optimizes ONNX file",
770
+ "value": max(default_bar_size, summ.optimized_onnx),
771
  },
772
  {
773
  "source": "Optimizes ONNX file",
774
  "target": "Converts to FP16",
775
+ "value": max(default_bar_size, summ.fp16_onnx),
776
  },
777
  {
778
  "source": "Converts to FP16",
779
  "target": "Acquires Nvidia Perf",
780
+ "value": device_bar_size,
 
 
 
 
781
  },
782
  {
783
  "source": "Converts to FP16",
784
  "target": "Acquires Groq Perf",
785
+ "value": device_bar_size,
 
 
 
 
786
  },
787
  {
788
  "source": "Converts to FP16",
789
  "target": "Acquires x86 Perf",
790
+ "value": device_bar_size,
 
 
791
  },
792
  ],
793
  }