NetKet 3.12.4__tar.gz → 3.14.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {netket-3.12.4 → netket-3.14.0}/.gitignore +2 -0
- {netket-3.12.4 → netket-3.14.0}/PKG-INFO +9 -13
- netket-3.14.0/hatch.toml +84 -0
- {netket-3.12.4 → netket-3.14.0}/netket/_version.py +2 -2
- {netket-3.12.4 → netket-3.14.0}/netket/callbacks/earlystopping.py +4 -5
- {netket-3.12.4 → netket-3.14.0}/netket/callbacks/invalidlossstopping.py +14 -9
- {netket-3.12.4 → netket-3.14.0}/netket/callbacks/timeout.py +1 -2
- {netket-3.12.4 → netket-3.14.0}/netket/driver/abstract_variational_driver.py +21 -16
- {netket-3.12.4 → netket-3.14.0}/netket/driver/steady_state.py +1 -8
- {netket-3.12.4 → netket-3.14.0}/netket/driver/vmc.py +1 -7
- {netket-3.12.4 → netket-3.14.0}/netket/errors.py +379 -3
- {netket-3.12.4 → netket-3.14.0}/netket/exact.py +1 -2
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/driver/tdvp.py +3 -3
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/driver/tdvp_common.py +7 -6
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/driver/tdvp_schmitt.py +4 -4
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/driver/vmc_srt.py +3 -3
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/dynamics/_rk_solver.py +14 -1
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/dynamics/_rk_solver_structures.py +9 -9
- netket-3.14.0/netket/experimental/dynamics/_rk_tableau.py +193 -0
- netket-3.12.4/netket/experimental/dynamics/_rk_tableau.py → netket-3.14.0/netket/experimental/dynamics/_rk_tableau_definitions.py +3 -175
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/hilbert/spin_orbital_fermions.py +49 -90
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/models/fast_rnn.py +5 -6
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/models/rnn.py +5 -6
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/nn/rnn/layers.py +3 -4
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/nn/rnn/layers_fast.py +1 -2
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/nn/rnn/ordering.py +6 -7
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/observable/__init__.py +2 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/observable/renyi2/expect.py +1 -4
- netket-3.14.0/netket/experimental/observable/variance/__init__.py +18 -0
- netket-3.14.0/netket/experimental/observable/variance/exact.py +94 -0
- netket-3.14.0/netket/experimental/observable/variance/expect.py +141 -0
- netket-3.14.0/netket/experimental/observable/variance/variance_operator.py +83 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/operator/_fermion_operator_2nd_base.py +5 -6
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/operator/_fermion_operator_2nd_jax.py +2 -3
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/operator/_fermion_operator_2nd_numba.py +0 -29
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/operator/_fermion_operator_2nd_utils.py +1 -3
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/operator/fermion.py +9 -12
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/operator/pyscf.py +1 -2
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/qsr/dataset.py +6 -8
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/qsr/driver.py +14 -19
- netket-3.14.0/netket/experimental/sampler/__init__.py +54 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/sampler/metropolis_pmap.py +2 -2
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/sampler/rules/fermion_2nd.py +2 -55
- {netket-3.12.4 → netket-3.14.0}/netket/graph/abstract_graph.py +2 -2
- {netket-3.12.4 → netket-3.14.0}/netket/graph/common_lattices.py +76 -24
- {netket-3.12.4 → netket-3.14.0}/netket/graph/graph.py +22 -7
- {netket-3.12.4 → netket-3.14.0}/netket/graph/lattice.py +16 -19
- {netket-3.12.4 → netket-3.14.0}/netket/graph/space_group.py +2 -3
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/__init__.py +22 -1
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/abstract_hilbert.py +3 -4
- netket-3.14.0/netket/hilbert/constraint/__init__.py +23 -0
- netket-3.14.0/netket/hilbert/constraint/base.py +128 -0
- netket-3.14.0/netket/hilbert/constraint/multiple.py +117 -0
- netket-3.14.0/netket/hilbert/constraint/sum.py +52 -0
- netket-3.14.0/netket/hilbert/constraint/sum_partition.py +71 -0
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/continuous_hilbert.py +1 -2
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/custom_hilbert.py +19 -5
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/discrete_hilbert.py +67 -5
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/doubled_hilbert.py +11 -0
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/fock.py +34 -27
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/homogeneous.py +107 -20
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/index/__init__.py +8 -1
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/index/base.py +1 -2
- netket-3.12.4/netket/hilbert/index/constraints/base.py → netket-3.14.0/netket/hilbert/index/constrained_generic.py +32 -14
- netket-3.12.4/netket/hilbert/index/constraints/sum.py → netket-3.14.0/netket/hilbert/index/constrained_sum.py +6 -21
- netket-3.14.0/netket/hilbert/index/constrained_sum_partitions.py +117 -0
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/particle.py +4 -5
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/qubit.py +3 -3
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/random/__init__.py +1 -1
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/random/fock.py +11 -43
- netket-3.14.0/netket/hilbert/random/homogeneous.py +170 -0
- netket-3.14.0/netket/hilbert/spin.py +289 -0
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/tensor_hilbert.py +2 -3
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/tensor_hilbert_discrete.py +15 -1
- {netket-3.12.4 → netket-3.14.0}/netket/jax/__init__.py +4 -2
- {netket-3.12.4 → netket-3.14.0}/netket/jax/_chunk_utils.py +2 -0
- netket-3.14.0/netket/jax/_expect.py +250 -0
- {netket-3.12.4 → netket-3.14.0}/netket/jax/_grad.py +5 -4
- {netket-3.12.4 → netket-3.14.0}/netket/jax/_jacobian/default_mode.py +10 -5
- {netket-3.12.4 → netket-3.14.0}/netket/jax/_jacobian/jacobian_pytree.py +3 -0
- {netket-3.12.4 → netket-3.14.0}/netket/jax/_jacobian/logic.py +4 -8
- {netket-3.12.4 → netket-3.14.0}/netket/jax/_math.py +4 -3
- {netket-3.12.4 → netket-3.14.0}/netket/jax/_scanmap.py +1 -4
- {netket-3.12.4 → netket-3.14.0}/netket/jax/_utils_random.py +30 -13
- {netket-3.12.4 → netket-3.14.0}/netket/jax/_utils_tree.py +51 -8
- {netket-3.12.4 → netket-3.14.0}/netket/jax/_vjp.py +31 -5
- {netket-3.12.4 → netket-3.14.0}/netket/jax/_vjp_chunked.py +7 -11
- {netket-3.12.4 → netket-3.14.0}/netket/jax/_vmap_chunked.py +6 -6
- {netket-3.12.4 → netket-3.14.0}/netket/jax/sharding.py +12 -7
- {netket-3.12.4 → netket-3.14.0}/netket/logging/base.py +3 -3
- {netket-3.12.4 → netket-3.14.0}/netket/logging/runtime_log.py +14 -6
- {netket-3.12.4 → netket-3.14.0}/netket/logging/state_log.py +21 -4
- {netket-3.12.4 → netket-3.14.0}/netket/logging/tensorboard.py +16 -5
- {netket-3.12.4 → netket-3.14.0}/netket/models/autoreg.py +5 -4
- {netket-3.12.4 → netket-3.14.0}/netket/models/deepset.py +11 -11
- {netket-3.12.4 → netket-3.14.0}/netket/models/fast_autoreg.py +5 -4
- {netket-3.12.4 → netket-3.14.0}/netket/models/mlp.py +6 -6
- {netket-3.12.4 → netket-3.14.0}/netket/models/ndm.py +5 -5
- {netket-3.12.4 → netket-3.14.0}/netket/models/rbm.py +6 -6
- {netket-3.12.4 → netket-3.14.0}/netket/models/slater.py +5 -1
- {netket-3.12.4 → netket-3.14.0}/netket/models/tensor_networks/mpdo.py +1 -2
- {netket-3.12.4 → netket-3.14.0}/netket/models/tensor_networks/mps.py +1 -2
- netket-3.14.0/netket/nn/__init__.py +58 -0
- {netket-3.12.4 → netket-3.14.0}/netket/nn/activation.py +1 -1
- {netket-3.12.4 → netket-3.14.0}/netket/nn/blocks/deepset.py +7 -7
- {netket-3.12.4 → netket-3.14.0}/netket/nn/blocks/mlp.py +8 -7
- {netket-3.12.4 → netket-3.14.0}/netket/nn/blocks/symmetry_sum.py +3 -4
- {netket-3.12.4 → netket-3.14.0}/netket/nn/fast_masked_linear.py +7 -9
- {netket-3.12.4 → netket-3.14.0}/netket/nn/masked_linear.py +4 -3
- {netket-3.12.4 → netket-3.14.0}/netket/nn/symmetric_linear.py +28 -24
- {netket-3.12.4 → netket-3.14.0}/netket/nn/utils.py +25 -50
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_bose_hubbard/base.py +2 -3
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_bose_hubbard/jax.py +7 -4
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_bose_hubbard/numba.py +21 -46
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_continuous_operator.py +4 -4
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_discrete_operator.py +0 -11
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_discrete_operator_jax.py +13 -9
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_graph_operator.py +3 -4
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_heisenberg.py +4 -5
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_ising/base.py +3 -4
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_ising/jax.py +15 -23
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_ising/numba.py +12 -16
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_kinetic.py +5 -5
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_local_liouvillian.py +1 -2
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_local_operator/base.py +5 -17
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_local_operator/compile_helpers.py +3 -27
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_local_operator/convert.py +18 -10
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_local_operator/jax.py +19 -23
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_local_operator/numba.py +17 -60
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_pauli_strings/base.py +7 -7
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_pauli_strings/jax.py +22 -21
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_pauli_strings/numba.py +14 -48
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_potential.py +3 -3
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_sumoperators.py +4 -6
- {netket-3.12.4 → netket-3.14.0}/netket/operator/spin.py +7 -1
- {netket-3.12.4 → netket-3.14.0}/netket/optimizer/__init__.py +0 -1
- {netket-3.12.4 → netket-3.14.0}/netket/optimizer/linear_operator.py +4 -3
- {netket-3.12.4 → netket-3.14.0}/netket/optimizer/preconditioner.py +27 -50
- {netket-3.12.4 → netket-3.14.0}/netket/optimizer/qgt/__init__.py +1 -2
- {netket-3.12.4 → netket-3.14.0}/netket/optimizer/qgt/default.py +22 -10
- netket-3.14.0/netket/optimizer/qgt/qgt_jacobian.py +283 -0
- {netket-3.12.4 → netket-3.14.0}/netket/optimizer/qgt/qgt_jacobian_common.py +8 -40
- netket-3.14.0/netket/optimizer/qgt/qgt_jacobian_dense.py +290 -0
- netket-3.14.0/netket/optimizer/qgt/qgt_jacobian_pytree.py +362 -0
- {netket-3.12.4 → netket-3.14.0}/netket/optimizer/qgt/qgt_onthefly.py +62 -32
- {netket-3.12.4 → netket-3.14.0}/netket/optimizer/solver/solvers.py +109 -24
- {netket-3.12.4 → netket-3.14.0}/netket/optimizer/sr.py +5 -5
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/__init__.py +7 -0
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/autoreg.py +3 -1
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/base.py +28 -19
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/exact.py +2 -2
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/metropolis.py +65 -66
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/metropolis_numpy.py +59 -8
- {netket-3.12.4/netket/experimental → netket-3.14.0/netket}/sampler/metropolis_pt.py +40 -24
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/base.py +4 -4
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/exchange.py +45 -15
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/hamiltonian.py +32 -31
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/langevin.py +2 -3
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/local_numpy.py +4 -1
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/multiple.py +4 -4
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/tensor.py +4 -4
- {netket-3.12.4 → netket-3.14.0}/netket/stats/mc_stats.py +1 -2
- {netket-3.12.4 → netket-3.14.0}/netket/utils/__init__.py +0 -1
- {netket-3.12.4 → netket-3.14.0}/netket/utils/_dependencies_check.py +6 -7
- netket-3.14.0/netket/utils/api_utils.py +107 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/array.py +2 -3
- {netket-3.12.4 → netket-3.14.0}/netket/utils/config_flags.py +48 -3
- {netket-3.12.4 → netket-3.14.0}/netket/utils/deprecation.py +13 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/dispatch.py +1 -1
- {netket-3.12.4 → netket-3.14.0}/netket/utils/group/_group.py +2 -2
- {netket-3.12.4 → netket-3.14.0}/netket/utils/group/_permutation_group.py +1 -2
- {netket-3.12.4 → netket-3.14.0}/netket/utils/group/_point_group.py +4 -5
- {netket-3.12.4 → netket-3.14.0}/netket/utils/history.py +33 -11
- {netket-3.12.4 → netket-3.14.0}/netket/utils/holomorphic.py +2 -2
- {netket-3.12.4 → netket-3.14.0}/netket/utils/jax.py +5 -3
- {netket-3.12.4 → netket-3.14.0}/netket/utils/model_frameworks/__init__.py +1 -1
- {netket-3.12.4 → netket-3.14.0}/netket/utils/model_frameworks/base.py +5 -18
- netket-3.14.0/netket/utils/model_frameworks/equinox.py +92 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/model_frameworks/flax.py +1 -9
- {netket-3.12.4 → netket-3.14.0}/netket/utils/model_frameworks/haiku.py +1 -9
- {netket-3.12.4 → netket-3.14.0}/netket/utils/model_frameworks/jax.py +1 -9
- {netket-3.12.4 → netket-3.14.0}/netket/utils/mpi/__init__.py +1 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/mpi/gpu_autorank_util.py +28 -7
- {netket-3.12.4 → netket-3.14.0}/netket/utils/mpi/mpi.py +8 -6
- {netket-3.12.4 → netket-3.14.0}/netket/utils/mpi/primitives.py +127 -26
- {netket-3.12.4 → netket-3.14.0}/netket/utils/static_range.py +2 -2
- {netket-3.12.4 → netket-3.14.0}/netket/utils/struct/dataclass.py +2 -2
- {netket-3.12.4 → netket-3.14.0}/netket/utils/struct/fields.py +17 -2
- {netket-3.12.4 → netket-3.14.0}/netket/utils/struct/pytree.py +120 -49
- netket-3.14.0/netket/utils/struct/pytree_serialization_sharding.py +202 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/struct/utils.py +1 -3
- {netket-3.12.4 → netket-3.14.0}/netket/utils/timing.py +7 -3
- {netket-3.12.4 → netket-3.14.0}/netket/utils/types.py +3 -2
- {netket-3.12.4 → netket-3.14.0}/netket/utils/version_check.py +8 -4
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/__init__.py +10 -6
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/base.py +39 -19
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/full_summ/expect.py +2 -2
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/full_summ/state.py +41 -27
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/kernels.py +6 -6
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_mixed_state/state.py +15 -11
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_state/expect.py +1 -1
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_state/expect_chunked.py +2 -2
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_state/expect_forces.py +4 -2
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_state/expect_forces_chunked.py +5 -3
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_state/expect_grad.py +10 -9
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_state/expect_grad_chunked.py +2 -2
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_state/state.py +86 -73
- {netket-3.12.4 → netket-3.14.0}/pyproject.toml +30 -26
- netket-3.12.4/netket/experimental/sampler/__init__.py +0 -29
- netket-3.12.4/netket/hilbert/index/constraints/__init__.py +0 -2
- netket-3.12.4/netket/hilbert/random/spin.py +0 -87
- netket-3.12.4/netket/hilbert/spin.py +0 -141
- netket-3.12.4/netket/jax/_expect.py +0 -101
- netket-3.12.4/netket/nn/__init__.py +0 -104
- netket-3.12.4/netket/nn/deprecation.py +0 -122
- netket-3.12.4/netket/nn/initializers.py +0 -40
- netket-3.12.4/netket/optimizer/qgt/qgt_jacobian_dense.py +0 -305
- netket-3.12.4/netket/optimizer/qgt/qgt_jacobian_pytree.py +0 -325
- netket-3.12.4/netket/optimizer/qgt/qgt_jacobian_pytree_logic.py +0 -70
- netket-3.12.4/netket/utils/plum/__init__.py +0 -61
- netket-3.12.4/netket/utils/plum/_version.py +0 -17
- netket-3.12.4/netket/utils/plum/alias.py +0 -166
- netket-3.12.4/netket/utils/plum/autoreload.py +0 -77
- netket-3.12.4/netket/utils/plum/dispatcher.py +0 -128
- netket-3.12.4/netket/utils/plum/function.py +0 -487
- netket-3.12.4/netket/utils/plum/method.py +0 -232
- netket-3.12.4/netket/utils/plum/overload.py +0 -9
- netket-3.12.4/netket/utils/plum/parametric.py +0 -421
- netket-3.12.4/netket/utils/plum/promotion.py +0 -169
- netket-3.12.4/netket/utils/plum/py.typed +0 -0
- netket-3.12.4/netket/utils/plum/repr.py +0 -179
- netket-3.12.4/netket/utils/plum/resolver.py +0 -307
- netket-3.12.4/netket/utils/plum/signature.py +0 -424
- netket-3.12.4/netket/utils/plum/type.py +0 -296
- netket-3.12.4/netket/utils/plum/util.py +0 -170
- netket-3.12.4/netket/vqs/deprecated.py +0 -13
- netket-3.12.4/netket/vqs/experimental.py +0 -39
- {netket-3.12.4 → netket-3.14.0}/LICENSE +0 -0
- {netket-3.12.4 → netket-3.14.0}/README.md +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/callbacks/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/callbacks/convergence_stopping.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/driver/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/driver/vmc_common.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/driver/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/dynamics/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/hilbert/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/logging/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/logging/hdf5_log.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/models/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/nn/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/nn/rnn/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/nn/rnn/cells.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/observable/renyi2/S2_operator.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/observable/renyi2/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/observable/renyi2/exact.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/operator/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/qsr/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/qsr/logic_helpers.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/sampler/metropolis.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/sampler/rules/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/vqs/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/experimental/vqs/io.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/graph/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/graph/_lattice_edge_logic.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/index/unconstrained.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/index/uniform_tensor.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/random/base.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/random/custom.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/random/doubled.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/random/particle.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/random/qubit.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/hilbert/random/tensor_hilbert.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/jax/_jacobian/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/jax/_jacobian/jacobian_dense.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/jax/_sort.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/jax/_utils_dtype.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/logging/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/logging/json_log.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/models/README.md +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/models/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/models/equivariant.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/models/full_space.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/models/gaussian.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/models/jastrow.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/models/tensor_networks/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/models/utils.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/nn/blocks/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/operator/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_abstract_observable.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_abstract_operator.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_abstract_super_operator.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_bose_hubbard/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_hamiltonian.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_ising/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_lazy.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_local_operator/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_local_operator/helpers.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/operator/_pauli_strings/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/operator/boson.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/optimizer/qgt/common.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/optimizer/qgt/qgt_onthefly_logic.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/optimizer/solver/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/continuous_gaussian.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/custom_numpy.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/fixed.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/hamiltonian_numpy.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/sampler/rules/local.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/stats/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/stats/_autocorr.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/stats/mc_stats_old.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/stats/mpi_stats.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/tools/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/tools/_common.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/tools/_cpu_info.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/tools/_mpi_info.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/tools/check_mpi.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/tools/info.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/display/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/display/repr.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/float.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/group/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/group/_semigroup.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/group/axial.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/group/cubic.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/group/icosa.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/group/planar.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/moduletools.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/numbers.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/optional_deps.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/partial.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/seed.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/static_number.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/struct/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/utils/summation.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/full_summ/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/common.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_mixed_state/__init__.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_mixed_state/expect.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_mixed_state/expect_chunked.py +0 -0
- {netket-3.12.4 → netket-3.14.0}/netket/vqs/mc/mc_state/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: NetKet
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.14.0
|
|
4
4
|
Summary: Netket : Machine Learning toolbox for many-body quantum systems.
|
|
5
5
|
Project-URL: homepage, https://www.netket.org
|
|
6
6
|
Project-URL: documentation, https://netket.readthedocs.io/en/latest/#
|
|
@@ -17,27 +17,23 @@ Classifier: Operating System :: POSIX :: Linux
|
|
|
17
17
|
Classifier: Operating System :: Unix
|
|
18
18
|
Classifier: Programming Language :: Python :: 3
|
|
19
19
|
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
20
|
-
Requires-Python: >=3.
|
|
21
|
-
Requires-Dist: beartype>=0.16.2
|
|
20
|
+
Requires-Python: >=3.10
|
|
22
21
|
Requires-Dist: equinox<0.12,>=0.11.3
|
|
23
|
-
Requires-Dist: flax<0.
|
|
22
|
+
Requires-Dist: flax<0.10,>=0.7.1
|
|
24
23
|
Requires-Dist: igraph<0.12.0,>=0.10.0
|
|
25
24
|
Requires-Dist: jax<0.5,>=0.4.16
|
|
26
|
-
Requires-Dist: jaxlib<0.5,>=0.4.16
|
|
27
|
-
Requires-Dist: numba4jax<0.1,>=0.0.10.post1
|
|
28
25
|
Requires-Dist: numba<0.61,>=0.52
|
|
29
|
-
Requires-Dist: numpy
|
|
26
|
+
Requires-Dist: numpy<3.0,>=1.20
|
|
30
27
|
Requires-Dist: optax<0.3,>=0.1.3
|
|
31
28
|
Requires-Dist: orjson<4,>=3.4
|
|
29
|
+
Requires-Dist: plum-dispatch<3,>=2.4
|
|
32
30
|
Requires-Dist: rich>=10.0
|
|
33
31
|
Requires-Dist: scipy<2,>=1.5.3
|
|
34
32
|
Requires-Dist: tqdm<5,>=4.60
|
|
35
|
-
Requires-Dist: typing-extensions; python_version <= '3.10'
|
|
36
33
|
Provides-Extra: dev
|
|
37
34
|
Requires-Dist: black==23.9.1; extra == 'dev'
|
|
38
35
|
Requires-Dist: build; extra == 'dev'
|
|
39
36
|
Requires-Dist: coverage>=5; extra == 'dev'
|
|
40
|
-
Requires-Dist: ipython; extra == 'dev'
|
|
41
37
|
Requires-Dist: matplotlib>=3; extra == 'dev'
|
|
42
38
|
Requires-Dist: networkx<4,>=2.4; extra == 'dev'
|
|
43
39
|
Requires-Dist: pre-commit>=2.7; extra == 'dev'
|
|
@@ -46,15 +42,15 @@ Requires-Dist: pytest-json-report>=1.3; extra == 'dev'
|
|
|
46
42
|
Requires-Dist: pytest-xdist[psutil]>=2; extra == 'dev'
|
|
47
43
|
Requires-Dist: pytest>=6; extra == 'dev'
|
|
48
44
|
Requires-Dist: qutip>=5; extra == 'dev'
|
|
49
|
-
Requires-Dist: ruff==0.
|
|
45
|
+
Requires-Dist: ruff==0.6.2; extra == 'dev'
|
|
50
46
|
Requires-Dist: wheel; extra == 'dev'
|
|
51
47
|
Provides-Extra: docs
|
|
52
48
|
Requires-Dist: myst-nb<1.2,>=1.0; extra == 'docs'
|
|
53
|
-
Requires-Dist: myst-parser<
|
|
49
|
+
Requires-Dist: myst-parser<4.1.0,>=2.0.0; extra == 'docs'
|
|
54
50
|
Requires-Dist: sphinx-autodoc-typehints<3.0,>=1.22; extra == 'docs'
|
|
55
51
|
Requires-Dist: sphinx-book-theme~=1.1.0; extra == 'docs'
|
|
56
52
|
Requires-Dist: sphinx-design>=0.4.0; extra == 'docs'
|
|
57
|
-
Requires-Dist: sphinx<
|
|
53
|
+
Requires-Dist: sphinx<8.1,>=7.0; extra == 'docs'
|
|
58
54
|
Requires-Dist: sphinxcontrib-fulltoc~=1.2.0; extra == 'docs'
|
|
59
55
|
Requires-Dist: sphinxcontrib-jsmath~=1.0.1; extra == 'docs'
|
|
60
56
|
Provides-Extra: extra
|
|
@@ -64,7 +60,7 @@ Requires-Dist: qutip>=4; extra == 'extra'
|
|
|
64
60
|
Requires-Dist: tensorboardx>=2.0.0; extra == 'extra'
|
|
65
61
|
Provides-Extra: mpi
|
|
66
62
|
Requires-Dist: mpi4jax<0.6,>=0.3.9; extra == 'mpi'
|
|
67
|
-
Requires-Dist: mpi4py<
|
|
63
|
+
Requires-Dist: mpi4py<5,>=3.0.1; extra == 'mpi'
|
|
68
64
|
Provides-Extra: pyscf
|
|
69
65
|
Requires-Dist: pyscf>=2.0; extra == 'pyscf'
|
|
70
66
|
Requires-Dist: sparse>=0.12.0; extra == 'pyscf'
|
netket-3.14.0/hatch.toml
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
|
|
2
|
+
[envs.hatch-test]
|
|
3
|
+
default-args = ["test"]
|
|
4
|
+
features = [
|
|
5
|
+
"dev",
|
|
6
|
+
"extra",
|
|
7
|
+
]
|
|
8
|
+
extra-dependencies = [
|
|
9
|
+
]
|
|
10
|
+
randomize = false
|
|
11
|
+
parallel = false
|
|
12
|
+
|
|
13
|
+
[[envs.hatch-test.matrix]]
|
|
14
|
+
distributed = ['nompi', 'mpi', 'sharding']
|
|
15
|
+
|
|
16
|
+
[envs.hatch-test.overrides]
|
|
17
|
+
matrix.distributed.extra-dependencies = [
|
|
18
|
+
{ value = "mpi4py", if = ["mpi", "sharding"] },
|
|
19
|
+
{ value = "mpi4jax", if = ["mpi"] },
|
|
20
|
+
]
|
|
21
|
+
matrix.distributed.scripts = [
|
|
22
|
+
{ key = "run", value = "mpirun -np 2 pytest -n 0 {env:HATCH_TEST_ARGS:} {args}", if = ["mpi"] },
|
|
23
|
+
{ key = "run-cov", value = "mpirun -np 2 coverage run -m pytest -n 0 {env:HATCH_TEST_ARGS:} {args}", if = ["mpi"] },
|
|
24
|
+
{ key = "cov-combine", value = "coverage combine --append", if = ["mpi"] },
|
|
25
|
+
|
|
26
|
+
{ key = "run", value = "MPITRAMPOLINE_LIB=\"{env:VIRTUAL_ENV}/MPIWrapper/build/libmpiwrapper.so\" \"{env:VIRTUAL_ENV}/MPIWrapper/build/bin/mpiwrapperexec\" -np 2 pytest -n 0 --jax-distributed-mpi {env:HATCH_TEST_ARGS:} {args}", if = ["sharding"] },
|
|
27
|
+
]
|
|
28
|
+
matrix.distributed.env-vars = [
|
|
29
|
+
{ key = "NETKET_MPI", value = "0", if = ["nompi", "sharding"] },
|
|
30
|
+
{ key = "NETKET_MPI", value = "1", if = ["mpi"] },
|
|
31
|
+
{ key = "NETKET_EXPERIMENTAL_SHARDING", value = "1", if = ["sharding"] },
|
|
32
|
+
{ key = "NETKET_MPI_WARNING", value = "0", if = ["sharding"] },
|
|
33
|
+
]
|
|
34
|
+
matrix.distributed.parallel = { value = true, if = ["nompi"] }
|
|
35
|
+
matrix.distributed.set-default-args = { value = ["test_sharding/test_sharding_distributed.py"], if = ["sharding"] }
|
|
36
|
+
matrix.distributed.post-install-commands = [
|
|
37
|
+
{ value = "mkdir \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper\"", if = ["sharding"] },
|
|
38
|
+
{ value = "git clone https://github.com/eschnett/MPIwrapper.git \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper\"", if = ["sharding"] },
|
|
39
|
+
{ value = "mkdir \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper/build\"",if = ["sharding"] },
|
|
40
|
+
{ value = "cd \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper/build\" && cmake ..",if = ["sharding"] },
|
|
41
|
+
{ value = "cd \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper/build\" && make",if = ["sharding"] },
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
[envs.docs]
|
|
45
|
+
features = [
|
|
46
|
+
"docs",
|
|
47
|
+
]
|
|
48
|
+
extra-dependencies = [
|
|
49
|
+
"sphinx-autobuild"
|
|
50
|
+
]
|
|
51
|
+
[envs.docs.scripts]
|
|
52
|
+
clean = "cd {root}/docs && make clean"
|
|
53
|
+
build = "sphinx-build -M html docs docs/_build"
|
|
54
|
+
serve = "sphinx-autobuild docs docs/_build/html"
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
[envs.sharding]
|
|
58
|
+
features = [
|
|
59
|
+
"dev",
|
|
60
|
+
"extra",
|
|
61
|
+
]
|
|
62
|
+
extra-dependencies = [
|
|
63
|
+
"mpi4py"
|
|
64
|
+
]
|
|
65
|
+
post-install-commands = [
|
|
66
|
+
"mkdir \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper\"",
|
|
67
|
+
"git clone https://github.com/eschnett/MPIwrapper.git \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper\"",
|
|
68
|
+
"mkdir \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper/build\"",
|
|
69
|
+
"cd \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper/build\" && cmake ..",
|
|
70
|
+
"cd \"{env:VIRTUAL_ENV:DEFAULT}/MPIWrapper/build\" && make",
|
|
71
|
+
]
|
|
72
|
+
[envs.sharding.env-vars]
|
|
73
|
+
NETKET_EXPERIMENTAL_SHARDING = "1"
|
|
74
|
+
|
|
75
|
+
[envs.sharding.scripts]
|
|
76
|
+
run = [
|
|
77
|
+
"MPITRAMPOLINE_LIB=\"{env:VIRTUAL_ENV}/MPIWrapper/build/libmpiwrapper.so\" \"{env:VIRTUAL_ENV}/MPIWrapper/build/bin/mpiwrapperexec\" -np 2 python {args}"
|
|
78
|
+
]
|
|
79
|
+
run3 = [
|
|
80
|
+
"MPITRAMPOLINE_LIB=\"{env:VIRTUAL_ENV}/MPIWrapper/build/libmpiwrapper.so\" \"{env:VIRTUAL_ENV}/MPIWrapper/build/bin/mpiwrapperexec\" -np 3 python {args}"
|
|
81
|
+
]
|
|
82
|
+
run4 = [
|
|
83
|
+
"MPITRAMPOLINE_LIB=\"{env:VIRTUAL_ENV}/MPIWrapper/build/libmpiwrapper.so\" \"{env:VIRTUAL_ENV}/MPIWrapper/build/bin/mpiwrapperexec\" -np 4 python {args}"
|
|
84
|
+
]
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import Optional, Union
|
|
16
15
|
|
|
17
16
|
import numpy as np
|
|
18
17
|
|
|
@@ -32,9 +31,9 @@ class EarlyStopping(struct.Pytree, mutable=True):
|
|
|
32
31
|
This behaves similarly to `min_delta` but is more useful for intensive quantities that
|
|
33
32
|
converge to 0, where absolute tolerances might not be effective.
|
|
34
33
|
"""
|
|
35
|
-
patience:
|
|
34
|
+
patience: int | float
|
|
36
35
|
"""Number of epochs with no improvement after which training will be stopped."""
|
|
37
|
-
baseline:
|
|
36
|
+
baseline: float | None
|
|
38
37
|
"""Baseline value for the monitored quantity. Training will stop if the driver hits the baseline."""
|
|
39
38
|
monitor: str
|
|
40
39
|
"""Loss statistic to monitor. Should be one of 'mean', 'variance', 'sigma'."""
|
|
@@ -53,8 +52,8 @@ class EarlyStopping(struct.Pytree, mutable=True):
|
|
|
53
52
|
self,
|
|
54
53
|
min_delta: float = 0.0,
|
|
55
54
|
min_reldelta: float = 0.0,
|
|
56
|
-
patience:
|
|
57
|
-
baseline:
|
|
55
|
+
patience: int | float = 0,
|
|
56
|
+
baseline: float | None = None,
|
|
58
57
|
monitor: str = "mean",
|
|
59
58
|
):
|
|
60
59
|
"""
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import Union
|
|
16
15
|
import numpy as np
|
|
17
16
|
|
|
18
17
|
from netket.utils import struct
|
|
@@ -25,14 +24,14 @@ class InvalidLossStopping(struct.Pytree, mutable=True):
|
|
|
25
24
|
|
|
26
25
|
monitor: str
|
|
27
26
|
"""Loss statistic to monitor. Should be one of 'mean', 'variance', 'sigma'."""
|
|
28
|
-
patience:
|
|
27
|
+
patience: int | float
|
|
29
28
|
"""Number of epochs with invalid loss after which training will be stopped."""
|
|
30
29
|
|
|
31
30
|
# caches
|
|
32
31
|
_last_valid_iter: int
|
|
33
32
|
"""Last valid iteration, to check against patience"""
|
|
34
33
|
|
|
35
|
-
def __init__(self, monitor: str = "mean", patience:
|
|
34
|
+
def __init__(self, monitor: str = "mean", patience: int | float = 0):
|
|
36
35
|
"""
|
|
37
36
|
Construct a callback stopping theoptimisation when the monitored quantity
|
|
38
37
|
becaomes invalid for at least `patience` steps.
|
|
@@ -63,10 +62,16 @@ class InvalidLossStopping(struct.Pytree, mutable=True):
|
|
|
63
62
|
Returns:
|
|
64
63
|
A boolean. If True, training continues, else, it does not.
|
|
65
64
|
"""
|
|
66
|
-
|
|
67
|
-
if
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
65
|
+
# clears the _last_valid_iter in case the driver was reset
|
|
66
|
+
if driver.step_count < self._last_valid_iter:
|
|
67
|
+
self._last_valid_iter = 0
|
|
68
|
+
|
|
69
|
+
if driver._loss_stats is not None:
|
|
70
|
+
loss = np.real(getattr(driver._loss_stats, self.monitor))
|
|
71
|
+
|
|
72
|
+
if not np.isfinite(loss):
|
|
73
|
+
if driver.step_count - self._last_valid_iter >= self.patience:
|
|
74
|
+
return False
|
|
75
|
+
else:
|
|
76
|
+
self._last_valid_iter = driver.step_count
|
|
72
77
|
return True
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import Optional
|
|
16
15
|
import time
|
|
17
16
|
|
|
18
17
|
from netket.utils import struct
|
|
@@ -29,7 +28,7 @@ class Timeout(struct.Pytree, mutable=True):
|
|
|
29
28
|
"""Number of seconds to wait before the training will be stopped."""
|
|
30
29
|
|
|
31
30
|
# caches
|
|
32
|
-
_init_time:
|
|
31
|
+
_init_time: float | None
|
|
33
32
|
"""
|
|
34
33
|
Internal field storing the time at which the first iteration has been
|
|
35
34
|
performed.
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import
|
|
16
|
-
from collections.abc import Iterable
|
|
15
|
+
from typing import TypeVar
|
|
16
|
+
from collections.abc import Callable, Iterable
|
|
17
17
|
|
|
18
18
|
import abc
|
|
19
19
|
import numbers
|
|
@@ -29,19 +29,21 @@ from netket.utils import mpi, timing
|
|
|
29
29
|
from netket.utils.types import Optimizer, PyTree
|
|
30
30
|
from netket.vqs import VariationalState
|
|
31
31
|
|
|
32
|
+
CallbackT = Callable[[int, dict, "AbstractVariationalDriver"], bool]
|
|
32
33
|
|
|
33
|
-
|
|
34
|
+
T = TypeVar("T")
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def _to_iterable(maybe_iterable: T | Iterable[T]) -> tuple[T, ...]:
|
|
34
38
|
"""
|
|
35
39
|
_to_iterable(maybe_iterable)
|
|
36
40
|
|
|
37
41
|
Ensure the result is iterable. If the input is not iterable, it is wrapped into a tuple.
|
|
38
42
|
"""
|
|
39
|
-
if
|
|
40
|
-
|
|
41
|
-
else:
|
|
42
|
-
surely_iterable = (maybe_iterable,)
|
|
43
|
+
if not isinstance(maybe_iterable, Iterable):
|
|
44
|
+
maybe_iterable = (maybe_iterable,)
|
|
43
45
|
|
|
44
|
-
return
|
|
46
|
+
return tuple(maybe_iterable)
|
|
45
47
|
|
|
46
48
|
|
|
47
49
|
class AbstractVariationalDriver(abc.ABC):
|
|
@@ -161,6 +163,11 @@ class AbstractVariationalDriver(abc.ABC):
|
|
|
161
163
|
**modified in-place** adding new keys.
|
|
162
164
|
step: the current step number.
|
|
163
165
|
"""
|
|
166
|
+
# Always log the acceptance.
|
|
167
|
+
if hasattr(self.state, "sampler_state"):
|
|
168
|
+
acceptance = getattr(self.state.sampler_state, "acceptance", None) # type: ignore
|
|
169
|
+
if acceptance is not None:
|
|
170
|
+
log_dict["acceptance"] = acceptance
|
|
164
171
|
|
|
165
172
|
def reset(self):
|
|
166
173
|
"""
|
|
@@ -216,12 +223,12 @@ class AbstractVariationalDriver(abc.ABC):
|
|
|
216
223
|
"""
|
|
217
224
|
for _ in range(0, n_steps, step):
|
|
218
225
|
for i in range(0, step):
|
|
219
|
-
|
|
226
|
+
self._dp = self._forward_and_backward()
|
|
220
227
|
if i == 0:
|
|
221
228
|
yield self.step_count
|
|
222
229
|
|
|
223
230
|
self._step_count += 1
|
|
224
|
-
self.update_parameters(
|
|
231
|
+
self.update_parameters(self._dp)
|
|
225
232
|
|
|
226
233
|
def advance(self, steps: int = 1):
|
|
227
234
|
"""
|
|
@@ -237,15 +244,13 @@ class AbstractVariationalDriver(abc.ABC):
|
|
|
237
244
|
def run(
|
|
238
245
|
self,
|
|
239
246
|
n_iter: int,
|
|
240
|
-
out:
|
|
241
|
-
obs:
|
|
247
|
+
out: AbstractLog | Iterable[AbstractLog] | str | None = (),
|
|
248
|
+
obs: dict[str, AbstractObservable] | None = None,
|
|
242
249
|
step_size: int = 1,
|
|
243
250
|
show_progress: bool = True,
|
|
244
251
|
save_params_every: int = 50, # for default logger
|
|
245
252
|
write_every: int = 50, # for default logger
|
|
246
|
-
callback:
|
|
247
|
-
[int, dict, "AbstractVariationalDriver"], bool
|
|
248
|
-
] = lambda *x: True,
|
|
253
|
+
callback: CallbackT | Iterable[CallbackT] = lambda *x: True,
|
|
249
254
|
timeit: bool = False,
|
|
250
255
|
):
|
|
251
256
|
"""
|
|
@@ -310,7 +315,7 @@ class AbstractVariationalDriver(abc.ABC):
|
|
|
310
315
|
if self._is_root:
|
|
311
316
|
loggers = _to_iterable(out)
|
|
312
317
|
else:
|
|
313
|
-
loggers = tuple()
|
|
318
|
+
loggers: tuple[AbstractLog, ...] = tuple()
|
|
314
319
|
show_progress = False
|
|
315
320
|
|
|
316
321
|
callbacks = _to_iterable(callback)
|
|
@@ -12,16 +12,12 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import Optional
|
|
16
|
-
|
|
17
|
-
from inspect import signature
|
|
18
15
|
|
|
19
16
|
from netket.operator import Squared, AbstractSuperOperator
|
|
20
17
|
from netket.vqs import MCMixedState
|
|
21
18
|
from netket.optimizer import (
|
|
22
19
|
identity_preconditioner,
|
|
23
20
|
PreconditionerT,
|
|
24
|
-
_DeprecatedPreconditionerSignature,
|
|
25
21
|
)
|
|
26
22
|
from netket.jax import tree_cast
|
|
27
23
|
from netket.utils.types import Optimizer
|
|
@@ -115,13 +111,10 @@ class SteadyState(AbstractVariationalDriver):
|
|
|
115
111
|
return self._preconditioner
|
|
116
112
|
|
|
117
113
|
@preconditioner.setter
|
|
118
|
-
def preconditioner(self, val:
|
|
114
|
+
def preconditioner(self, val: PreconditionerT | None):
|
|
119
115
|
if val is None:
|
|
120
116
|
val = identity_preconditioner
|
|
121
117
|
|
|
122
|
-
if len(signature(val).parameters) == 2:
|
|
123
|
-
val = _DeprecatedPreconditionerSignature(val)
|
|
124
|
-
|
|
125
118
|
self._preconditioner = val
|
|
126
119
|
|
|
127
120
|
@property
|
|
@@ -12,10 +12,8 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import Optional
|
|
16
15
|
|
|
17
16
|
from textwrap import dedent
|
|
18
|
-
from inspect import signature
|
|
19
17
|
|
|
20
18
|
from netket.utils.types import PyTree, Optimizer
|
|
21
19
|
from netket.operator import AbstractOperator
|
|
@@ -23,7 +21,6 @@ from netket.stats import Stats
|
|
|
23
21
|
from netket.optimizer import (
|
|
24
22
|
identity_preconditioner,
|
|
25
23
|
PreconditionerT,
|
|
26
|
-
_DeprecatedPreconditionerSignature,
|
|
27
24
|
)
|
|
28
25
|
from netket.vqs import VariationalState
|
|
29
26
|
from netket.jax import tree_cast
|
|
@@ -103,13 +100,10 @@ class VMC(AbstractVariationalDriver):
|
|
|
103
100
|
return self._preconditioner
|
|
104
101
|
|
|
105
102
|
@preconditioner.setter
|
|
106
|
-
def preconditioner(self, val:
|
|
103
|
+
def preconditioner(self, val: PreconditionerT | None):
|
|
107
104
|
if val is None:
|
|
108
105
|
val = identity_preconditioner
|
|
109
106
|
|
|
110
|
-
if len(signature(val).parameters) == 2:
|
|
111
|
-
val = _DeprecatedPreconditionerSignature(val)
|
|
112
|
-
|
|
113
107
|
self._preconditioner = val
|
|
114
108
|
|
|
115
109
|
def _forward_and_backward(self):
|