code: def _annotate_embedding_ops(self, graph: torch.fx.Graph) -> None:
      embedding_config: OperatorConfig = (
          get_embedding_operators_config()
      )
      for node in graph.nodes:
          # Keep node parsing based annotations instead of module partitioners
          # just as an example of alternate ways of annotating
          if (
              node.op == "call_function"
              and node.target == torch.ops.aten.embedding.default
          ):
              if embedding_config.config.weight is None:
                  raise ValueError(
                      "Embedding config must have a valid weight quantization spec."
                  )
              node.meta[
                  "quantization_annotation"
              ] = QuantizationAnnotation(
                  input_qspec_map={
                      node.args[0]: embedding_config.config.weight,
                  }
              )
  
file_path: pytorch/torch/ao/quantization/quantizer/embedding_quantizer.py
imports: from __future__ import annotations
  import copy
  from typing import List, Set
  import torch
  import torch.nn.functional
  from torch.ao.quantization.observer import PerChannelMinMaxObserver
  from torch.ao.quantization.quantizer.quantizer import QuantizationAnnotation, QuantizationSpec, Quantizer
  from torch.ao.quantization.quantizer.xnnpack_quantizer_utils import OperatorConfig, OperatorPatternType, QuantizationConfig
label_desc: Use image node_id 5 for calling the EmbeddingQuantizer obj's underlying member method code with example usage: obj._annotate_embedding_ops(graph) without return types