Skip to main content

Lean PyTorch tooling for pre-pre-training language models on synthetic upstream tasks.

Project description

pptrain

pptrain is a small PyTorch- and HuggingFace-native library for pre-pretraining language models. Pre-pretraining involves training on synthetic tasks before standard language pretraining, with recent work [1] showing gains beyond what additional natural-language pretraining alone achieves.

Use a paper-backed preset as the starting point, then override only the few values you actually need for a local run or experiment. Alternatively, define custom task families by extending a flexible task abstraction and plugging in your own model adapter.

Install

pip install pptrain
pip install "pptrain[eval]"

Built-in Task Families

  • nca: Synthetic cellular-automata rollouts. The built-in presets follow the paper's 12x12, 10-state, 2x2-patch setup and separate web-text versus code complexity bands [1].
  • dyck: Balanced-bracket sequences that emphasize nested structure. The built-in presets scale bracket-type count and sequence length together across the k=8/16/32/64 variants [2].
  • procedural: Short algorithmic text tasks such as reverse, sort, set, union, and delete. The built-in presets mirror the paper's single-task-by-length grid for identity/reverse/sort/set/union/delete programs [3].
  • simpler_tasks: Compact symbolic tasks like copy, search, set operations, and related transformations. The built-in presets cover unary-core, binary, and single-task benchmark settings rather than only one mixed sampler [4].
  • lime: Induction, deduction, and abduction tasks aimed at mathematical reasoning. The built-in presets span 100k, 1M, and mixed 5M budgets, plus single-mode induct/deduct/abduct variants [5].
  • summarization: Synthetic document-transduction tasks that teach compression and selection. The built-in presets combine STEP-style sentence/document transforms with nonsense-style copy/keyword tasks and an OurTasks-style subset [6].

Each family ships with paper-backed presets and can also serve as a template for your own additions.

Quick Start

from pptrain import PrePreTrainer, RunConfig, create_task
from pptrain.integrations import HFCausalLMAdapter, HFModelConfig
trainer = PrePreTrainer(
    task=create_task("simpler_tasks", {"preset": "paper_binary_1m", "sequence_count": 256, "eval_sequence_count": 64, "max_length": 128}),
    model_adapter=HFCausalLMAdapter(HFModelConfig(model_name_or_path="sshleifer/tiny-gpt2", config_overrides={"n_positions": 128})),
    run_config=RunConfig(output_dir="runs/smoke", max_steps=20, per_device_train_batch_size=8, per_device_eval_batch_size=8, logging_steps=5, save_steps=20, eval_steps=20),
)
bundle = trainer.fit().load_transfer_bundle()

For a full runnable version of this example, go to docs/quickstart.md.

Examples

Custom Task Families

To add a custom task family, define how tasks are sampled, executed, and serialized, then register presets around that family. pptrain handles the trainer path, tokenizer-spec plumbing, transfer-bundle export, and Hugging Face integration.

Most symbolic or transduction-style additions can start from SymbolicTaskFamily; lower-level simulators can implement Task directly. For non-Hugging-Face architectures, use CallableCausalLMAdapter when you want full control over model construction, or VocabSizeCausalLMAdapter when the upstream model only depends on the synthetic tokenizer vocab size. See docs/extending.md and examples/custom_adapter.py.

Transfer

For downstream pretraining on a compatible architecture, applying a transfer bundle is straightforward. When parameter names, tokenizer sizes, or embedding layouts differ, use an explicit transfer policy to control what is copied, reinitialized, or skipped.

from pptrain.transfer import ReinitializeEmbeddingTransferPolicy

target_model = trainer.model_adapter.load_downstream_model()
report = ReinitializeEmbeddingTransferPolicy().apply_bundle(bundle, target_model)
print(report.loaded_parameter_count)

For custom modules where embedding names do not follow the HF interface, SkipParametersTransferPolicy lets you skip explicit parameter prefixes instead.

Analytics

Assess downstream transfer, compute-matched baseline comparisons, and basic representational measures (pairwise midlayer CKA, KL-divergence of predictions) with an analytics suite that produces plots and markdown/CSV reports for the built-in synthetic tasks.

# These example config files live in the repository checkout.
pptrain fit configs/nca_minimal.yaml --eval-config configs/eval_perplexity_smoke.yaml
pptrain replicate --test

Citations

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

pptrain-0.2.0.tar.gz (106.8 kB view details)

Uploaded Source

Built Distribution

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

pptrain-0.2.0-py3-none-any.whl (112.3 kB view details)

Uploaded Python 3

File details

Details for the file pptrain-0.2.0.tar.gz.

File metadata

  • Download URL: pptrain-0.2.0.tar.gz
  • Upload date:
  • Size: 106.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pptrain-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d942126528042763d309d681e5a8055bcecf914f3f05d034f465b18bbe2e46fa
MD5 a0dcd5236d71bd74f486b2c68642663e
BLAKE2b-256 65e359ab82b524d40c5ced3d9f56ba4b18ecb42da90a241be7211276ea06339c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pptrain-0.2.0.tar.gz:

Publisher: publish.yml on Axym-Labs/pptrain

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pptrain-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: pptrain-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 112.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pptrain-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 53022ba65c152ef70cdf4b6c5c6cf8d5e258f4105db7c0538db6d80dd069b39f
MD5 05e78b274ff40c760b416389e8047de0
BLAKE2b-256 dabb645730bdc17113a58d28272c54ac5c5bd2973df74de40a35512e47bc3006

See more details on using hashes here.

Provenance

The following attestation bundles were made for pptrain-0.2.0-py3-none-any.whl:

Publisher: publish.yml on Axym-Labs/pptrain

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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