def METHOD_NAME(model, graph):
    # state_dict helps us to get parameter sizes
    state_dict = model.state_dict()
    # Function Parameter Usage
    node_param_sizes = {}
    for node in graph.nodes:
        if node.op == "get_attr":  # a parameter node
            param_name = node.target
            assert param_name in state_dict
            param = state_dict[param_name]
            # Find use site of this parameter
            for user in node.users:
                func_param_sizes = node_param_sizes.setdefault(user, {})
                func_param_sizes.setdefault(param_name, param.numel())
    # Module Parameter Usage
    for node in graph.nodes:
        # We calcuate size of a user-defined submodule as a whole
        if node.op == "call_module":
            mod_param_sizes = {}
            submod: torch.nn.Module = model.get_submodule(node.target)
            for param_name, param in submod.named_parameters():
                mod_param_sizes.setdefault(param_name, param.numel())
            if mod_param_sizes:
                node_param_sizes.setdefault(node, mod_param_sizes)
    for node, param_sizes in node_param_sizes.items():
        logger.debug(f"{node} has params: {param_sizes}")
    return node_param_sizes