MCPcopy Create free account
hub / github.com/cli99/llm-analysis / LLMAnalysis

Class LLMAnalysis

llm_analysis/analysis.py:78–2248  ·  view source on GitHub ↗

Given the specified model, GPU, data type, parallelism configuration/implementation, LLMAnalysis estimates the latency and memory usage of LLMs for training or inference. Refer to the `train` and `infer` entry functions for usage details.

Source from the content-addressed store, hash-verified

76
77
78class LLMAnalysis:
79 """Given the specified model, GPU, data type, parallelism
80 configuration/implementation, LLMAnalysis estimates the latency and memory usage of
81 LLMs for training or inference.
82
83 Refer to the `train` and `infer` entry functions for usage details.
84 """
85
86 def __init__(
87 self,
88 model_config: ModelConfig,
89 gpu_config: GPUConfig,
90 dtype_config: DtypeConfig = DtypeConfig(),
91 parallelism_config: ParallelismConfig = ParallelismConfig(),
92 achieved_tflops: float = None,
93 achieved_memory_bandwidth_GBs: float = None,
94 flops_efficiency: float = None,
95 hbm_memory_efficiency: float = None,
96 intra_node_memory_efficiency: float = INTRA_NODE_MEMORY_EFFICIENCY,
97 inter_node_memory_efficiency: float = INTER_NODE_MEMORY_EFFICIENCY,
98 ) -> None:
99 """LLMAnalysis constructor.
100
101 Args:
102 model_config (ModelConfig): model configuration
103 gpu_config (GPUConfig): GPU configuration
104 dtype_config (DtypeConfig, optional): data type configuration. Defaults to DtypeConfig().
105 parallelism_config (ParallelismConfig, optional): parallelism configuration. Defaults to ParallelismConfig().
106 achieved_tflops (float, optional): achieved TFLOPS per GPU. If specified, will override the flops_efficiency passed in. Defaults to None.
107 achieved_memory_bandwidth_GBs (float, optional): achieved GPU memory bandwidth in GB/s. If specified, will override the hbm_memory_efficiency passed in. Defaults to None.
108 flops_efficiency (float, optional): flops efficiency, ranging from 0 to 1. Defaults to None.
109 hbm_memory_efficiency (float, optional): GPU HBM memory efficiency, ranging from 0 to 1. Defaults to None.
110 intra_node_memory_efficiency (float, optional): intra-node memory efficiency, ranging from 0 to 1. Defaults to INTRA_NODE_MEMORY_EFFICIENCY.
111 inter_node_memory_efficiency (float, optional): inter-node memory efficiency, ranging from 0 to 1. Defaults to INTER_NODE_MEMORY_EFFICIENCY.
112 """
113 self.model_config = model_config
114 self.gpu_config = gpu_config
115 self.parallelism_config = parallelism_config
116 self.dtype_config = dtype_config
117 self.intra_node_memory_efficiency = intra_node_memory_efficiency
118 self.inter_node_memory_efficiency = inter_node_memory_efficiency
119
120 if achieved_memory_bandwidth_GBs and hbm_memory_efficiency:
121 logger.info(
122 "both achieved_memory_bandwidth_GBs and hbm_memory_efficiency are set, using achieved_memory_bandwidth_GBs({achieved_memory_bandwidth_GBs} GB/s) to calculate hbm_memory_efficiency"
123 )
124 self.hbm_memory_efficiency = (
125 achieved_memory_bandwidth_GBs /
126 gpu_config.hbm_bandwidth_in_GB_per_sec)
127 elif hbm_memory_efficiency:
128 self.hbm_memory_efficiency = hbm_memory_efficiency
129 elif achieved_memory_bandwidth_GBs:
130 self.hbm_memory_efficiency = (
131 achieved_memory_bandwidth_GBs /
132 gpu_config.hbm_bandwidth_in_GB_per_sec)
133 else:
134 self.hbm_memory_efficiency = HBM_MEMORY_EFFICIENCY
135

Callers 12

test_training_zero3_1Function · 0.90
test_training_zero3_2Function · 0.90
test_training_mt_nlg_1Function · 0.90
test_training_mt_nlg_2Function · 0.90
test_llama2_70bFunction · 0.90
inferFunction · 0.85
trainFunction · 0.85

Calls

no outgoing calls

Tested by 9

test_training_zero3_1Function · 0.72
test_training_zero3_2Function · 0.72
test_training_mt_nlg_1Function · 0.72
test_training_mt_nlg_2Function · 0.72
test_llama2_70bFunction · 0.72