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.3.tar.gz (46.4 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.3-py3-none-any.whl (34.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: lotd-0.1.3.tar.gz
  • Upload date:
  • Size: 46.4 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.3.tar.gz
Algorithm Hash digest
SHA256 9327370e0c99193f8b815af0b15fa771eabfff1603244fe10a452d5d61b9e7a2
MD5 d65718b5073b49166e8ae9bd3125f02d
BLAKE2b-256 6b13a6f0661e2d925e10a61d5daf56500c3995c2e584a7d65a9f86dc2bbe2c7a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lotd-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 34.7 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c379a77ab655e07b638d896fe7d0a1df5494a234ec655fe4ee5f4e25adb5d411
MD5 c47b0d26b5f1eaf8d18dc93a6926ce6f
BLAKE2b-256 b1b9179e923e4c64561a62ed79256b9862555ecf749a1832ea3876f71e758b81

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