Library to serialise objects arising from scientific and Machine Learning libraries, including NetKet.
Project description
NQXPack
A library to save and load objects coming from Scientific Machine Learning libraries, with a special attention to Neural Quantum States from NetKet.
Goals:
- Simple format, possible to hand-edit and inspect manually;
- Compatibility among Python version;
- Allows to load Neural Networks with a single
loadcommand;
Usage
Install with
uv add git+https://github.com/NeuralQXLab/nqxpack.git
or (but seriously, stop using pip and start using uv)
pip install git+https://github.com/NeuralQXLab/nqxpack.git
With flax.linen
Save a dictionary containing the model and the parameters. Note that you cannot serialise jax arrays for the time-being but it could easily be added (I'd need to think about how to handle sharding...)
import nqxpack
import jax
from flax import linen as nn
import numpy as np
model = nn.Sequential((
nn.Dense(features=2),
nn.gelu,
nn.Dense(features=1),
jax.numpy.squeeze,
))
variables = model.init(jax.random.key(1), jax.numpy.ones((2,4)))
variables_np = jax.tree.map(np.asarray, variables)
# for the moment cannot serialise jax arrays.
# Could easily be implemented
nqxpack.save({'model':model, 'variables':jax.tree.map(np.asarray, variables)}, "mymodel.nk")
loaded_dict = nqxpack.load("mymodel.nk")
loaded_model, loaded_variables = loaded_dict['model'], loaded_dict['variables']
With flax.nnx (WIP, not working yet)
import nqxpack
import jax
from flax import nnx
import numpy as np
rngs = nnx.Rngs(0)
model = nnx.Sequential(
nnx.Linear(1, 4, rngs=rngs), # data
nnx.Linear(4, 2, rngs=rngs), # data
)
graphdef, variables = nnx.split(model)
variables_np = jax.tree.map(np.asarray, variables.to_pure_dict())
# for the moment cannot serialise jax arrays.
# Could easily be implemented
nqxpack.save({'graphdef':graphdef, 'variables':variables_np}, "mymodel.nk")
loaded_dict = nqxpack.load("mymodel.nk")
loaded_graphdef, loaded_variables = loaded_dict['model'], loaded_dict['variables']
loaded_model = nnx.merge(loaded_graphdef, loaded_variables)
With NetKet
import nqxpack
import netket as nk
hi = nk.hilbert.Spin(0.5, 10)
operator = nk.operator.spin.sigmax(nqs_state.hilbert, 1)
nqs_state = nk.vqs.MCState(nk.sampler.MetropolisLocal(hi), nk.models.RBM(alpha=4))
# print expectation value:
nqs_state.expect(operator)
nqxpack.save(nqs_state, "nqs_state.nk")
nqs_state_loaded = nqxpack.load("nqs_state.nk")
nqs_state_loaded.expect(operator)
The format
The format is a single zip file. You can decompress it yourself and look into it.
Feedback required
If you use this library, please let us know of any issue you might find.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nqxpack-0.1.12.tar.gz.
File metadata
- Download URL: nqxpack-0.1.12.tar.gz
- Upload date:
- Size: 1.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31ae9417b5aab29ac99b106655cd66267466df8b047470644d2d9fdff46c190d
|
|
| MD5 |
3ab8837d93ebdd149c4c464bed42147d
|
|
| BLAKE2b-256 |
f9377531de36e92caa2d18a22d8fee2dac676be252e8b28a801d73a3c15c506f
|
Provenance
The following attestation bundles were made for nqxpack-0.1.12.tar.gz:
Publisher:
release.yml on NeuralQXLab/nqxpack
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nqxpack-0.1.12.tar.gz -
Subject digest:
31ae9417b5aab29ac99b106655cd66267466df8b047470644d2d9fdff46c190d - Sigstore transparency entry: 1353333890
- Sigstore integration time:
-
Permalink:
NeuralQXLab/nqxpack@a48732d4198b9081a84a27d03eb177bf504b3c8c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/NeuralQXLab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a48732d4198b9081a84a27d03eb177bf504b3c8c -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file nqxpack-0.1.12-py3-none-any.whl.
File metadata
- Download URL: nqxpack-0.1.12-py3-none-any.whl
- Upload date:
- Size: 32.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5dba6caccebc4274aa598a7e82fe6d7f323b3b17a9c14d357a353abd792897c
|
|
| MD5 |
8ba65264ea211afa5894bb8653ce6eeb
|
|
| BLAKE2b-256 |
ad7636643c5ba79c93bc8e3c76865566056cd1e80a03c5dc4ef52337a3acff88
|
Provenance
The following attestation bundles were made for nqxpack-0.1.12-py3-none-any.whl:
Publisher:
release.yml on NeuralQXLab/nqxpack
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nqxpack-0.1.12-py3-none-any.whl -
Subject digest:
b5dba6caccebc4274aa598a7e82fe6d7f323b3b17a9c14d357a353abd792897c - Sigstore transparency entry: 1353334026
- Sigstore integration time:
-
Permalink:
NeuralQXLab/nqxpack@a48732d4198b9081a84a27d03eb177bf504b3c8c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/NeuralQXLab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a48732d4198b9081a84a27d03eb177bf504b3c8c -
Trigger Event:
workflow_dispatch
-
Statement type: