(args, verbose=False)
| 20 | return wrapper |
| 21 | |
| 22 | def compute_weight_and_optimizer_memory(args, verbose=False): |
| 23 | # Attention projection size. |
| 24 | query_projection_size = args.kv_channels * args.num_attention_heads |
| 25 | query_projection_to_hidden_size_ratio = query_projection_size / args.hidden_size |
| 26 | # Group Query Attention. |
| 27 | if not args.group_query_attention: |
| 28 | args.num_query_groups = args.num_attention_heads |
| 29 | # MoE. |
| 30 | num_experts = 1 if args.num_experts is None else args.num_experts |
| 31 | gated_linear_multiplier = 3 / 2 if args.swiglu else 1 |
| 32 | |
| 33 | # Fine-grained Experts + Shared Experts |
| 34 | if args.moe_ffn_hidden_size is not None: |
| 35 | intermediate_hidden_size = args.moe_ffn_hidden_size |
| 36 | else: |
| 37 | intermediate_hidden_size = args.ffn_hidden_size |
| 38 | |
| 39 | shared_moe_ffn_hidden_size = args.shared_moe_ffn_hidden_size if args.shared_moe_ffn_hidden_size else 0 |
| 40 | |
| 41 | num_parameters_in_transformer_layers = ( |
| 42 | 2 |
| 43 | * args.num_layers |
| 44 | * args.hidden_size |
| 45 | * args.hidden_size |
| 46 | * ( |
| 47 | # Attention. |
| 48 | ( |
| 49 | (1 + (args.num_query_groups / args.num_attention_heads)) |
| 50 | * query_projection_to_hidden_size_ratio |
| 51 | ) |
| 52 | # MLP. |
| 53 | + ((intermediate_hidden_size / args.hidden_size) * num_experts * gated_linear_multiplier + (shared_moe_ffn_hidden_size / args.hidden_size) * gated_linear_multiplier) |
| 54 | # Transformer layernorms. |
| 55 | + (2 / args.hidden_size) |
| 56 | # Final layernorm. |
| 57 | + (1 / (args.num_layers * args.hidden_size)) |
| 58 | ) |
| 59 | ) |
| 60 | num_parameters_in_transformer_moe_act_layers = ( |
| 61 | 2 |
| 62 | * args.num_layers |
| 63 | * args.hidden_size |
| 64 | * args.hidden_size |
| 65 | * ( |
| 66 | # Attention. |
| 67 | ( |
| 68 | (1 + (args.num_query_groups / args.num_attention_heads)) |
| 69 | * query_projection_to_hidden_size_ratio |
| 70 | ) |
| 71 | # MLP. |
| 72 | + ((intermediate_hidden_size / args.hidden_size) * args.moe_router_topk * gated_linear_multiplier + (shared_moe_ffn_hidden_size / args.hidden_size) * gated_linear_multiplier) |
| 73 | # Transformer layernorms. |
| 74 | + (2 / args.hidden_size) |
| 75 | # Final layernorm. |
| 76 | + (1 / (args.num_layers * args.hidden_size)) |
| 77 | ) |
| 78 | ) |
| 79 |
no outgoing calls
no test coverage detected