Skip to main content

Components & Configs

Collators [source]​


NLICollator [source]​

class liqfit.collators.NLICollator

Parameters​

tokenizer​

AutoTokenizer, Callable

The tokenizer used to process input text into input IDs.


max_length​

int

Maximum length applied during tokenization of input sequences.


padding​

bool | str

Specifies whether to pad sequences during tokenization.


truncation​

bool

Specifies whether to truncate sequences during tokenization.


Examples​

from liqfit.collators import NLICollator
from liqfit.datasets import NLIDataset
from torch.utils.data import DataLoader

dataset = NLIDataset(....)
collator = NLICollator(....)
dataloader = DataLoader(dataset, collate_fn=collator)

# OR

from transformers import Trainer
trainer = Trainer(train_dataset=dataset, data_collator=collator)

Custom Collator [source]​

class liqfit.collators.NLICollator

Parameters​

tokenizer​

AutoTokenizer, Callable

The tokenizer used to process input text into input IDs.


max_length​

int

Maximum length applied during tokenization of input sequences.


padding​

bool | str

Specifies whether to pad sequences during tokenization.


truncation​

bool

Specifies whether to truncate sequences during tokenization.


Examples​

The Collator base class here just groups your batch into one dictionary instead of a list of dictionaries.

from liqfit.collators import Collator

class MyCollator(Collator):
def __init__(self, tokenizer, max_length, padding, truncation)
super().__init__(tokenizer, max_length, padding, truncation)

def collate(self, batch):
# your collate implementation.

Datasets [source]​


NLIDataset [source]​

class liqfit.datasets.NLIDataset

Parameters​

hypothesis​

List[str]

List of string sequences.


premises​

List[str]

List of string sequences.


labels​

List[int]

List of labels as integers.


load_dataset()​

liqfit.datasets.NLIDataset.load_dataset

Parameters​

dataset​

Optional[Dataset]

Dataset object to use if dataset_name is not provided.
(Defaults to None).


dataset_name​

int

Dataset name to load from Hugging Face datasets if dataset is not provided.
(Defaults to None).


classes​

Optional[List[str]]

List of classes available in the dataset.
(Defaults to None).


text_column​

Optional[str]

Name of the column containing the text data.
(Defaults to "text").


label_column​

Optional[str]

Name of the column containing the labels.
(Defaults to "label").


template​

Optional[str]

Template string used to concatenate the label.
(Defaults to "This example is {}.").


normalize_negatives​

bool

Whether to normalize negative examples.
(Defaults to False).


positives​

int

Label ID representing positive examples.
(Defaults to 1).


negatives​

int

Label ID representing negative examples.
(Defaults to -1).


multi_label​

bool

Whether each example has more than one label.
(Defaults to False).


Examples​

from liqfit.datasets import NLIDataset
from datasets import load_dataset

nli_dataset = load_dataset("your/nli_dataset")

dataset = NLIDataset(
hypothesis = nli_dataset['hypothesis'],
premises = nli_dataset['premises'],
labels = nli_dataset['labels'] # labels expected to be encoded.
)

# OR

dataset = NLIDataset.load_dataset(nli_dataset, classes=["happiness", "sadness", ...])

Losses [source]​


Focal Loss [source]​

class liqfit.losses.FocalLoss

Parameters​

ignore_index​

int

Index that will be ignored while calculating the loss.


alpha​

float, optional

Weighting factor between 0 and 1.
(Defaults to 0.5).


gamma​

float, optional

Focusing parameter where γ ≥ 0.
(Defaults to 2.0).


reduction​

str

Specifies the reduction method to apply to the output.


Examples​

from liqfit.losses import FocalLoss
import torch
# FocalLoss in liqfit supports `ignore_index`
# parameter which could be used in token classification

x = torch.randn((1, 10, 20))
y = torch.randint(0, 10, (1, 10))
focal_loss = FocalLoss()
loss = focal_loss(x.view(-1, x.shape[-1]), y.view(-1))

Binary Cross Entropy [source]​

class liqfit.losses.BinaryCrossEntropyLoss

Parameters​

multi_target​

bool, optional

Whether the labels are multi-target.


weight​

torch.Tensor, optional

Manual rescaling weight applied to the loss of each batch element.


reduction​

str, optional

Reduction method to apply on the loss.
(Defaults to "mean").


Examples​

Simple wrapper over PyTorch's binary_cross_entropy_with_logits loss function to support multi-target inputs

from liqfit.losses import BinaryCrossEntropyLoss
import torch

x = torch.randn((1, 10, 20))
y = torch.randint(0, 2, (1, 10))
binary_loss = BinaryCrossEntropyLoss(multi_target=True)
loss = binary_loss(x, y) # No need for reshaping.

Cross Entropy Loss [source]​

class liqfit.losses.CrossEntropyLoss

Parameters​

multi_target​

bool, optional

Whether the labels are multi-target.


weight​

torch.Tensor, optional

Manual rescaling weight applied to the loss of each batch element.


reduction​

str, optional

Reduction method to apply on the loss.
(Defaults to "mean").


ignore_index​

int

Index that will be ignored while calculating the loss.


label_smoothing​

float, optional

Value in [0.0, 1.0] specifying the amount of label smoothing.
A value of 0.0 means no smoothing. Targets become a mix of the original label and a uniform distribution, as described in Rethinking the Inception Architecture for Computer Vision.
(Defaults to 0.0).


Examples​

Simple wrapper over PyTorch's cross_entropy loss function to support multi-target inputs

from liqfit.losses import CrossEntropyLoss
import torch

x = torch.randn((1, 10, 20))
y = torch.randint(0, 2, (1, 10))
ce_loss = CrossEntropyLoss(multi_target=True)
loss = ce_loss(x, y) # No need for reshaping.

Modeling [source]​


LiqFitBackbone [source]​

classliqfit.modeling.LiqFitBackbone

Parameters​

config​

PretrainedConfig

Backbone configuration.


backbone​

nn.Module

Pretrained model (backbone).


push_backbone_only​

bool, optional

Whether to push only the backbone model or the entire wrapped model to Hugging Face.


Examples​

If you want to customize your backbone model, you wrap your model inside LiqFitBackbone

from liqfit.modeling import LiqFitBackbone
from transformers import AutoModel

class MyBackboneModel(LiqFitBackbone):
def __init__(self):
backbone_model = AutoModel.from_pretrained(...)
super.__init__(backbone_model.config, backbone_model)

def encode(self, input_ids, attention_mask):
output = self.backbone(input_ids=input_ids, attention_mask=attention_mask)
last_hidden_state = output[0]
return last_hidden_state
  • If you want to add your own pooling layer.
from liqfit.modeling.pooling import FirstTokenPooling1D

class MyBackboneModel(LiqFitBackbone):
def __init__(self):
backbone_model = AutoModel.from_pretrained(...)
super.__init__(backbone_model.config, backbone_model)
self.first_token_pooling = FirstTokenPooling1D()

def encode(self, input_ids, attention_mask):
output = self.backbone(input_ids=input_ids, attention_mask=attention_mask)
last_hidden_state = output[0]
pooled_output = self.first_token_pooling(last_hidden_state)
return pooled_output

LiqFitModel [source]​

class liqfit.modeling.Model

Parameters​

config​

PretrainedConfig

Backbone configuration.


backbone​

nn.Module

Pretrained model (backbone).


LiqFitHead

Downstream head.


loss_func​

Optional[nn.Module]

Loss function called after each forward pass if labels are provided.
(Defaults to None).


normalize_backbone_embeddings​

bool

Whether to normalize the output embeddings from the backbone using torch.nn.functional.normalize.
(Defaults to False).


labels_name​

str

Name of the labels parameter passed to the forward method.


push_backbone_only​

bool, optional

Whether to push only the backbone model or the entire wrapped model to Hugging Face.


Examples​

  • Using LiqFitModel class with transformers library.
from liqfit.modeling import LiqFitBackbone
from liqfit.modeling import LiqFitModel
from transformers import AutoModel

backbone_model = AutoModel.from_pretrained(...)
model = LiqFitModel(backbone_model.config, backbone_model)
  • Using LiqFitModel with one of the available heads.
from liqfit.modeling import LiqFitBackbone
from liqfit.modeling import LiqFitModel
from transformers import AutoModel

class MyBackboneModel(LiqFitBackbone):
def __init__(self):
backbone_model = AutoModel.from_pretrained(...)
super.__init__(backbone_model.config, backbone_model)

def encode(self, input_ids, attention_mask):
output = self.backbone(input_ids=input_ids, attention_mask=attention_mask)
last_hidden_state = output[0]
return last_hidden_state

backbone = MyBackboneModel()
head = ClassClassificationHead(backbone.config.hidden_size, 3, multi_target=True)

model = LiqFitModel(backbone.config, backbone, head)

x = torch.randint(0, 20, (1, 20))
out = model(x)

LiqFitHead [source]​

class liqfit.modeling.LiqFitHead

Examples​

Creating custom Downstream head

from liqfit.modeling.heads import LiqFitHead
from liqfit.modeling.heads import HeadOutput
from torch import nn

class MyOwnDownstreamHead(LiqFitHead):
def __init__(in_features, out_features):
self.linear = nn.Linear(in_features, out_features)

def compute_loss(self, logits, labels):
# your loss function implementation

def forward(self, embeddings, labels=None):
# your forward implementation.
return HeadOutput(...)

LabelClassificationHead [source]​

class liqfit.modeling.LabelClassificationHead

Parameters​

in_features​

int

Number of input features.


out_features​

int

Number of output features.


multi_target​

bool

Whether the output is multi-target (used for loss calculation).


bias​

bool

Whether to use bias in the nn.Linear layer.


temperature​

int

Temperature used to calibrate the output by dividing the linear layer output.
(Defaults to 1.0).


eps​

float

Epsilon added to the temperature for numerical stability.
(Defaults to 1e-5).


Examples​

from liqfit.modeling.heads import LabelClassificationHead
import torch

head = LabelClassificationHead(512, 20, multi_target=True)
embeddings = torch.randn((1, 10, 512))
output = head(embeddings)

ClassClassificationHead [source]​

class liqfit.modeling.ClassClassificationHead

Parameters​

in_features​

int

Number of input features.


out_features​

int

Number of output features.


multi_target​

bool

Whether the output is multi-target (used for loss calculation).


bias​

bool

Whether to use bias in the nn.Linear layer.


temperature​

int

Temperature used to calibrate the output by dividing the linear layer output.
(Defaults to 1.0).


eps​

float

Epsilon added to the temperature for numerical stability.
(Defaults to 1e-5).


ignore_index​

int

Index that will be ignored during loss calculation.
(Defaults to -100).


Examples​

from liqfit.modeling.heads import ClassClassificationHead
import torch

head = ClassClassificationHead(512, 20, multi_target=True)
embeddings = torch.randn((1, 10, 512))
output = head(embeddings)

ClassificationHead [source]​

class liqfit.modeling.ClassificationHead

Parameters​

in_features​

int

Number of input features.


out_features​

int

Number of output features.


pooler​

nn.Module

Pooling function to use if the input is not multi-target.


loss_func​

nn.Module

Loss function called if labels are provided.


bias​

bool

Whether to use bias in the nn.Linear layer.


temperature​

int

Temperature used to calibrate the output by dividing the linear layer output.
(Defaults to 1.0).


eps​

float

Epsilon added to the temperature for numerical stability.
(Defaults to 1e-5).


Examples​

For more flexibility in passing your loss function and your pooling method.

from liqfit.modeling.heads import ClassClassificationHead
import torch

head = ClassClassificationHead(512, 20, multi_target=True)
embeddings = torch.randn((1, 10, 512))
output = head(embeddings)

Pooling Functions [source]​


GlobalMaxPooling1D [source]​

class liqfit.modeling.pooling.GlobalMaxPooling1D
Applies global max pooling over the temporal dimension.

Parameters​

x​

torch.Tensor
Input tensor of shape (B, T, E).


Example​

from liqfit.modeling.pooling import GlobalMaxPooling1D
import torch

x = torch.randn((1, 10, 20))
pooler = GlobalMaxPooling1D()
out = pooler(x)

GlobalAbsAvgPooling1D [source]​

class liqfit.modeling.pooling.GlobalAbsAvgPooling1D
Applies global average pooling on the absolute values over the temporal dimension.

Parameters​

x​

torch.Tensor
Input tensor of shape (B, T, E).

attention_mask​

torch.Tensor
Mask tensor of shape (B, T) to mask out padding tokens during pooling.


Example​

from liqfit.modeling.pooling import GlobalAbsAvgPooling1D
import torch

x = torch.randn((1, 10, 20))
attention_mask = torch.ones((1, 10))
pooler = GlobalAbsAvgPooling1D()
out = pooler(x, attention_mask)

GlobalAbsMaxPooling1D [source]​

class liqfit.modeling.pooling.GlobalAbsMaxPooling1D
Applies global max pooling on the absolute values over the temporal dimension.

Parameters​

x​

torch.Tensor
Input tensor of shape (B, T, E).

attention_mask​

torch.Tensor
Mask tensor of shape (B, T) to mask out padding tokens during pooling.


Example​

from liqfit.modeling.pooling import GlobalAbsMaxPooling1D
import torch

x = torch.randn((1, 10, 20))
attention_mask = torch.ones((1, 10))
pooler = GlobalAbsMaxPooling1D()
out = pooler(x, attention_mask)

GlobalRMSPooling1D [source]​

class liqfit.modeling.pooling.GlobalRMSPooling1D
Applies global root mean square pooling over the temporal dimension.

Parameters​

x​

torch.Tensor
Input tensor of shape (B, T, E).

attention_mask​

torch.Tensor
Mask tensor of shape (B, T) to mask out padding tokens during pooling.


Example​

from liqfit.modeling.pooling import GlobalRMSPooling1D
import torch

x = torch.randn((1, 10, 20))
attention_mask = torch.ones((1, 10))
pooler = GlobalRMSPooling1D()
out = pooler(x, attention_mask)

GlobalSumPooling1D [source]​

class liqfit.modeling.pooling.GlobalSumPooling1D
Applies global sum pooling over the temporal dimension.

Parameters​

x​

torch.Tensor
Input tensor of shape (B, T, E).

attention_mask​

torch.Tensor
Mask tensor of shape (B, T) to mask out padding tokens during pooling.


Example​

from liqfit.modeling.pooling import GlobalSumPooling1D
import torch

x = torch.randn((1, 10, 20))
attention_mask = torch.ones((1, 10))
pooler = GlobalSumPooling1D()
out = pooler(x, attention_mask)

GlobalAvgPooling1D [source]​

class liqfit.modeling.pooling.GlobalAvgPooling1D
Applies global average pooling over the temporal dimension.

Parameters​

x​

torch.Tensor
Input tensor of shape (B, T, E).

attention_mask​

torch.Tensor
Mask tensor of shape (B, T) to mask out padding tokens during pooling.


Example​

from liqfit.modeling.pooling import GlobalAvgPooling1D
import torch

x = torch.randn((1, 10, 20))
attention_mask = torch.ones((1, 10))
pooler = GlobalAvgPooling1D()
out = pooler(x, attention_mask)

FirstTokenPooling1D [source]​

class liqfit.modeling.pooling.FirstTokenPooling1D
Selects the first token's embedding from the sequence.

Parameters​

x​

torch.Tensor
Input tensor of shape (B, T, E).


Example​

from liqfit.modeling.pooling import FirstTokenPooling1D
import torch

x = torch.randn((1, 10, 20))
pooler = FirstTokenPooling1D()
out = pooler(x)

LastTokenPooling1D [source]​

class liqfit.modeling.pooling.LastTokenPooling1D
Selects the first token's embedding from the sequence.

Parameters​

x​

torch.Tensor
Input tensor of shape (B, T, E).


Example​

from liqfit.modeling.pooling import LastTokenPooling1D
import torch

x = torch.randn((1, 10, 20))
pooler = LastTokenPooling1D()
out = pooler(x)

Models [source]​


DebertaConfigWithLoss [source]​

class liqfit.models.deberta.DebertaConfigWithLoss
Extends the DeBERTa configuration to include loss-specific parameters.

Parameters​

loss_type​

str
Specifies the loss function to be used when labels are provided.

focal_loss_alpha​

float, optional
Weighting factor between 0 and 1.
(Defaults to 0.5).

focal_loss_gamma​

float, optional
Focusing parameter where γ ≥ 0.
(Defaults to 2.0).

**kwargs​

Additional keyword arguments for the DeBERTa model configuration.


Example​

from liqfit.models.deberta import DebertaConfigWithLoss

config = DebertaConfigWithLoss(
loss_type="focal_loss",
focal_loss_alpha=0.5,
focal_loss_gamma=2.0,
hidden_size=768,
num_attention_heads=12,
num_hidden_layers=12
)

DebertaV2ForZeroShotClassification [source]​

class liqfit.models.deberta.DebertaV2ForZeroShotClassification
DeBERTa model tailored for zero-shot classification tasks.

Parameters​

config​

DebertaConfigWithLoss
Configuration object specifying model and loss parameters.


Example​

from liqfit.models.deberta import DebertaConfigWithLoss, DebertaV2ForZeroShotClassification

config = DebertaConfigWithLoss(loss_type="focal_loss")
model = DebertaV2ForZeroShotClassification(config)

T5ConfigWithLoss [source]​

class liqfit.models.t5.T5ConfigWithLoss
Extends the T5 configuration to include loss-specific parameters.

Parameters​

loss_type​

str
Specifies the loss function to be used when labels are provided.

focal_loss_alpha​

float, optional
Weighting factor between 0 and 1.
(Defaults to 0.5).

focal_loss_gamma​

float, optional
Focusing parameter where γ ≥ 0.
(Defaults to 2.0).

**kwargs​

Additional keyword arguments for the T5 model configuration.


Example​

from liqfit.models.t5 import T5ConfigWithLoss

config = T5ConfigWithLoss(
loss_type="focal_loss",
focal_loss_alpha=0.5,
focal_loss_gamma=2.0,
d_model=512,
num_layers=6,
num_heads=8
)

T5ForZeroShotClassification [source]​

class liqfit.models.t5.T5ForZeroShotClassification
T5 model tailored for zero-shot classification tasks.

Parameters​

config​

T5ConfigWithLoss
Configuration object specifying model and loss parameters.


Example​

from liqfit.models.t5 import T5ConfigWithLoss, T5ForZeroShotClassification

config = T5ConfigWithLoss(loss_type="focal_loss")
model = T5ForZeroShotClassification(config)

Pipelines [source]​


ZeroShotClassificationPipeline [source]​

class liqfit.pipeline.ZeroShotClassificationPipeline
Facilitates zero-shot text classification using fine-tuned cross-encoder models.

Parameters​

model​

AutoModelForSequenceClassification | CrossFitModel | torch.nn.Module
Specifies the fine-tuned model to be used in the pipeline.

tokenizer​

AutoTokenizer
Tokenizer responsible for converting input text into tokens.

hypothesis_template​

str, optional
Template for generating hypotheses.
(Defaults to '{}').

hypothesis_first​

bool, optional
Determines whether to place the hypothesis before the premise.
(Defaults to False).

encoder_decoder​

bool, optional
Indicates if the model operates as an encoder-decoder architecture.
(Defaults to True).


Example​

from transformers import AutoTokenizer, AutoModelForSequenceClassification
from liqfit.pipeline import ZeroShotClassificationPipeline

sequence_to_classify = "one day I will see the world"
candidate_labels = ['travel', 'cooking', 'dancing']
template = 'This example is {}.'

model_path = 'knowledgator/comprehend_it-base'
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForSequenceClassification.from_pretrained(model_path)

classifier = ZeroShotClassificationPipeline(
model=model,
tokenizer=tokenizer,
hypothesis_template=template
)

results = classifier(sequence_to_classify, candidate_labels, multi_label=True)
print(results)

Binary Reranking Example​

model_path = 'BAAI/bge-reranker-base'
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForSequenceClassification.from_pretrained(model_path)

classifier = ZeroShotClassificationPipeline(
model=model,
tokenizer=tokenizer,
hypothesis_template=template,
hypothesis_first=False
)

results = classifier(sequence_to_classify, candidate_labels, multi_label=True)
print(results)

Encoder-Decoder Example​

from liqfit.pipeline import ZeroShotClassificationPipeline
from liqfit.models import T5ForZeroShotClassification
from transformers import T5Tokenizer

model = T5ForZeroShotClassification.from_pretrained('knowledgator/comprehend_it-multilingual-t5-base')
tokenizer = T5Tokenizer.from_pretrained('knowledgator/comprehend_it-multilingual-t5-base')

classifier = ZeroShotClassificationPipeline(
model=model,
tokenizer=tokenizer,
hypothesis_template='{}',
encoder_decoder=True
)