    def run_node_with_xl_weights(self, n: torch.fx.Node) -> Any:
        """
        EmbeddingBag with XL Weights of shape (num_embeddings, embedding_dim)
        are replaced with smaller proxies of shape
        (acc_ops.PROXY_EMBEDDING_SIZE, embedding_dim) during tracing. This can
        cause index out of bounds issues when sample inputs lead to the
        embedding bag op indexing into the first dimension of the weight tensor
        which it expects to be bigger than it is during tracing.

        For these ops, return a zeros tensor of the correct shape and dtype.
        """

        op = n.target.__module__ + "." + n.target.__name__

        if op.endswith("acc_ops.int_nbit_split_embedding_codegen_lookup_function"):
            output_dtype_int = n.kwargs["output_dtype"]
            assert output_dtype_int < 2, "only support float16 and float32"
            output_dtype = torch.float if output_dtype_int == 0 else torch.float16
            total_D = n.kwargs["total_D"]

            D_offsets_shape = self.env[n.kwargs["D_offsets"]].shape
            offsets_shape = self.env[n.kwargs["offsets"]].shape
            batches = (offsets_shape[0] - 1) // (D_offsets_shape[0] - 1)
            result = torch.zeros((batches, total_D), dtype=output_dtype)

        elif op.find("acc_ops.embedding_bag"):
            weight = self.env[n.kwargs["weight"]]
            offsets_shape = self.env[n.kwargs["offsets"]].shape
            batches = offsets_shape[0] - int(n.kwargs["include_last_offset"])
            output_dtype = weight.dtype

            embedding_size = weight.shape[1]
            if op.endswith("acc_ops.embedding_bag_byte_rowwise_offsets"):
                embedding_size -= 8
                output_dtype = torch.float32
            elif op.endswith("acc_ops.embedding_bag_4bit_rowwise_offsets"):
                embedding_size = (embedding_size - 4) * 2
                output_dtype = torch.float32

            result = torch.zeros((batches, embedding_size), dtype=output_dtype)

        else:
            raise NotImplementedError(
                f"The op {op} cannot be run with xl_weight(s) inputs"
            )

        return result
EmbeddingBag with XL Weights of shape (num_embeddings, embedding_dim)
are replaced with smaller proxies of shape
(acc_ops.PROXY_EMBEDDING_SIZE, embedding_dim) during tracing. This can
cause index out of bounds issues when sample inputs lead to the
embedding bag op indexing into the first dimension of the weight tensor
which it expects to be bigger than it is during tracing.

For these ops, return a zeros tensor of the correct shape and dtype.
fx2ait/fx2ait/acc_tracer/acc_shape_prop.py