Skip to main content

Lord of the Datasets - Efficient NLP dataset preprocessing

Project description

LOTD - Lord Of The Datasets

Efficient NLP dataset preprocessing library for instruction tuning and general NLP tasks.

Features

  • Chat and text tokenization
  • Length filtering
  • Padding collators
  • HuggingFace dataset utilities (splitting, caching, dataloaders)
  • Prebuilt Alpaca dataset loader

Documentation

This package provides MkDocs documentaion.

Usage examples can be found in examples directory.

Installation

pip install lotd

Example Usage

from lotd import ChatTokenizer, PadCollator, get_loaders, datasets

# Preprocess dataset
dataset = my_dataset.map(
    ChatTokenizer(my_pretrained_tokenizer),
    input_columns=["prompt", "output"],
    batched=True,
    batch_size=512,
)

# Filter by length
dataset = dataset.filter(
    LengthFilter(min_length=0, max_length=max_length),
    input_columns=["input_ids"],
    batched=True,
    batch_size=512,
)

# Create DataLoaders
train_loader, val_loader, test_loader = get_loaders(
    dataset, collate_fn=PadCollator(pad_id=0)
)

# OR use pre-configured datasets
from lotd.datasets import alpaca

train_loader, val_loader, test_loader = alpaca(tokenizer=my_tokenizer)

Build

  1. Clone this repo:
git clone https://github.com/alex-karev/lotd.git
cd lotd
  1. Install build tools:
pip install --upgrade build setuptools wheel
  1. Build package:
python -m build
  1. Install:
pip install dist/lotd-0.1.0-py3-none-any.whl

Nix

You can include LOTD in another project with Nix Flakes:

{
  description = "My NLP Project";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    lotd = {
        url = "github:alex-karev/lotd"; # LOTD flake
        inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = { self, nixpkgs, lotd }: let
    pkgs = import nixpkgs { system = "x86_64-linux"; };
    devShells.default = pkgs.mkShell {
      name = "my-nlp-project";
      packages = [
        (pkgs.python312.withPackages (python-pkgs: [
              lotd.packages.x86_64-linux.lotd
              # other python packages
        ]))
      ];
    };
  };
}

License

See LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lotd-0.1.4.tar.gz (46.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lotd-0.1.4-py3-none-any.whl (35.2 kB view details)

Uploaded Python 3

File details

Details for the file lotd-0.1.4.tar.gz.

File metadata

  • Download URL: lotd-0.1.4.tar.gz
  • Upload date:
  • Size: 46.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.12

File hashes

Hashes for lotd-0.1.4.tar.gz
Algorithm Hash digest
SHA256 b0abdb9a6facfe14b60a6ccaf205b173a03b88b395c33bf2367e8f6270c420ad
MD5 772926812c7c26aa8c63acbe0f82eef2
BLAKE2b-256 20fb388c94841486edc3bff57dda175962038bb80d984afc65c39c3667bc3c81

See more details on using hashes here.

File details

Details for the file lotd-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: lotd-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 35.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.12

File hashes

Hashes for lotd-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 130bdf61bb376b4d06a464cecadd8c2c92890d1170b522b5e6838471f94eb3db
MD5 3d02ad2e6f406d52bce2078bbe649d45
BLAKE2b-256 1394db16f1afaf8a900c27a36d1468944390024d52f3dbc3d19a5b5a8c378b38

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page