class_docstr: BatchAllTripletLoss takes a batch with (label, sentence) pairs and computes the loss for all possible, valid
  triplets, i.e., anchor and positive must have the same label, anchor and negative a different label. The labels
  must be integers, with same label indicating sentences from the same class. You train dataset
  must contain at least 2 examples per label class.
  
  | Source: https://github.com/NegatioN/OnlineMiningTripletLoss/blob/master/online_triplet_loss/losses.py
  | Paper: In Defense of the Triplet Loss for Person Re-Identification, https://arxiv.org/abs/1703.07737
  | Blog post: https://omoindrot.github.io/triplet-loss
  
  :param model: SentenceTransformer model
  :param distance_metric: Function that returns a distance between two emeddings. The class SiameseDistanceMetric contains pre-defined metrices that can be used
  :param margin: Negative samples should be at least margin further apart from the anchor than the positive.
  
  Example::
  
      from sentence_transformers import SentenceTransformer, SentencesDataset, losses
      from sentence_transformers.readers import InputExample
  
      model = SentenceTransformer('distilbert-base-nli-mean-tokens')
      train_examples = [InputExample(texts=['Sentence from class 0'], label=0), InputExample(texts=['Another sentence from class 0'], label=0),
          InputExample(texts=['Sentence from class 1'], label=1), InputExample(texts=['Sentence from class 2'], label=2)]
      train_dataset = SentencesDataset(train_examples, model)
      train_dataloader = DataLoader(train_dataset, shuffle=True, batch_size=train_batch_size)
      train_loss = losses.BatchAllTripletLoss(model=model)
code: def __init__(
      self,
      model: SentenceTransformer,
      distance_metric=BatchHardTripletLossDistanceFunction.eucledian_distance,
      margin: float = 5,
  ):
      super(BatchAllTripletLoss, self).__init__()
      self.sentence_embedder = model
      self.triplet_margin = margin
      self.distance_metric = distance_metric
  
file_path: sentence-transformers/sentence_transformers/losses/BatchAllTripletLoss.py
imports: from torch import nn, Tensor
  from typing import Iterable, Dict
  from .BatchHardTripletLoss import BatchHardTripletLoss, BatchHardTripletLossDistanceFunction
  from sentence_transformers.SentenceTransformer import SentenceTransformer
label_desc: Use image node_id 1 to create a new BatchAllTripletLoss object from inherited base classes: nn with example: obj = BatchAllTripletLoss(model, distance_metric, margin)