Skip to main content

A small tool package for qq

Project description

✨qqtools✨

PyPI Downloads PyPI - Monthly Downloads Python version

A lightweight library, crafted and battle-tested daily by qq, to make PyTorch life a little easier.

I’ve gathered the repetitive parts of my day-to-day work and refined them into this slim utility library. It serves as my personal toolkit for handling data, training, and experiments, designed to keep projects moving fast with cleaner code and smoother workflows (and hopefully yours too!).

Built for me, shared for you.

Requirements

  • torch>=2.0 for full functionality
    • Some components maintain backward compatibility with torch==1.x
    • Recommended: torch>=2.4
  • pyyaml>=6.0
    • Recommended to use YAML format for all configuration files.

This provides a unified approach to drive and manage all workflow operations.

To get started quickly, install it via pip:

pip install qqtools

Install with full features:

pip install qqtools[full]

Data Format Support

Non-torch formats:

qDict : Enhanced of basic Dict.
qScalaDict : Dict[str, num]. A dict that maps str to scala;
qListData : List[dict]. A list of dicts.

Torch-related data formats

qData
qBatchList

Simple Training Loop

For jupyter users

import qqtools as qt
qt.import_common(globals())

x = np.random.rand(100, 5)
y = np.random.rand(100)

# dataset wrap
xs = [ x[i] for i in range(len(x))]
ys = [ y[i] for i in range(len(y))]
data_list = [ qt.qData({'x': x[i], 'y':y[i]})  for i in range(len(x))] 
dataset = qt.qDictDataset(data_list=data_list)
dataloader = qt.qDictDataloader()

# model
model = qt.nn.qMLP([5,5,1], activation="relu")
loss_fn = torch.nn.MSELoss()
optimizer = torch.optim.AdamW(model.parameters(), lr=1.0e-4, weight_decay=0.01)

# device
device = torch.device("cuda")
model.to(device)

# loop
for epoch in range(100):
    for batch in dataloader:
        batch.to(device)
        out = model(batch.x)
        loss = loss_fn(out, batch.y)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
    print(f"{epoch} {loss.item():4.6f}")

Individual Modules

The following modules are consumers of the core functionality provided by this package. Each is designed to be independent, allowing for sole import.

under plugins/

  • qchem
  • qpipeline
  • qhyperconnect

Test

tox

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

qqtools-1.2.2.tar.gz (131.6 kB view details)

Uploaded Source

Built Distribution

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

qqtools-1.2.2-py3-none-any.whl (164.9 kB view details)

Uploaded Python 3

File details

Details for the file qqtools-1.2.2.tar.gz.

File metadata

  • Download URL: qqtools-1.2.2.tar.gz
  • Upload date:
  • Size: 131.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for qqtools-1.2.2.tar.gz
Algorithm Hash digest
SHA256 1af0f9586faa3552031714992ec8657d2feb48a202149fb276af80f8f72dc638
MD5 f0ac25ffd1b357391b644b3784b66f51
BLAKE2b-256 2498924d7c69c61366f4c41613e415b92c0f4f7d736e82583c625d88ab71a14e

See more details on using hashes here.

File details

Details for the file qqtools-1.2.2-py3-none-any.whl.

File metadata

  • Download URL: qqtools-1.2.2-py3-none-any.whl
  • Upload date:
  • Size: 164.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for qqtools-1.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f78ae150c55e30811791bf11a902f78984a4f3fd3d29f193c86d81c206477d3c
MD5 b9f74dfb20bac2819bf74f887729f4b8
BLAKE2b-256 ce5df15b01ae13c3df5e22b158fff1cd3c19d62c2187a6a4312d2f791c814f97

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