Skip to content
forked from netket/netket

Machine learning algorithms for many-body quantum systems

License

Notifications You must be signed in to change notification settings

ermalrrapaj/netket

 
 

Repository files navigation

logo

NetKet

Release Anaconda-Server Badge Build Status GitHub Issues Paper License Binder Code style: black

NetKet is an open-source project delivering cutting-edge methods for the study of many-body quantum systems with artificial neural networks and machine learning techniques. It is a Python library built on JAX.

Installation and Usage

Netket supports MacOS and Linux. The reccomended way to install it in a non-conda python environment is:

pip install netket[mpi]

The [mpi] after netket will install mpi related dependencies of netket. We reccomend to install netket with all it's extra dependencies, which are documented below. However, if you do not have a working MPI compiler in your PATH this installation will most likely fail because it will attempt to install mpi4py, which enables MPI support in netket. If you are only starting to discover netket and won't be running extended simulations, you can forego MPI by installing netket with the command

pip install netket 

Netket is also available on conda-forge. To install netket in a conda-environment you can use:

conda install conda-forge::netket

The conda library is linked to anaconda's mpi4py, therefore we do not reccomend to use this installation method on computer clusters with a custom MPI distribution. We don't reccomend to install from conda as the jaxlib there is not very performant.

Extra dependencies

When installing netket with pip, you can pass the following extra variants as square brakets. You can install several of them by separating them with a comma.

  • '[dev]': installs development-related dependencies such as black, pytest and testing dependencies
  • '[mpi]': Installs mpi4py to enable multi-process parallelism. Requires a working MPI compiler in your path
  • '[tensorboard]': Installs tensorboardx to enable logging to tensorboard.
  • '[all]': Installs all extra dependencies

MPI Support

To enable MPI support you must install mpi4jax. Please note that we advise to install mpi4jax with the same tool (conda or pip) with which you install it's dependency mpi4py.

To check whever MPI support is enabled, check the flags

>>> netket.utils.mpi_available
True

Major Features

  • Graphs

    • Built-in Graphs
      • Hypercube
      • General Lattice with arbitrary number of atoms per unit cell
    • Custom Graphs
      • Any Graph With Given Adjacency Matrix
      • Any Graph With Given Edges
    • Symmetries
      • Automorphisms: pre-computed in built-in graphs, available through iGraph for custom graphs
  • Quantum Operators

    • Built-in Hamiltonians
      • Transverse-field Ising
      • Heisenberg
      • Bose-Hubbard
    • Custom Operators
      • Any k-local Hamiltonian
      • General k-local Operator defined on Graphs
  • Variational Monte Carlo

    • Stochastic Learning Methods for Ground-State Problems
      • Gradient Descent
      • Stochastic Reconfiguration Method
        • Direct Solver
        • Iterative Solver for Large Number of Parameters
  • Exact Diagonalization

    • Full Solver
    • Lanczos Solver
    • Imaginary-Time Dynamics
  • Supervised Learning

    • Supervised overlap optimization from given data
  • Neural-Network Quantum State Tomography

    • Using arbitrary k-local measurement basis
  • Optimizers

    • Stochastic Gradient Descent
    • AdaMax, AdaDelta, AdaGrad, AMSGrad
    • RMSProp
    • Momentum
  • Models

    • Restricted Boltzmann Machines
      • Standard
      • For Custom Local Hilbert Spaces
      • With Permutation Symmetry Using Graph Isomorphisms
    • Feed-Forward Networks
      • For Custom Local Hilbert Spaces
    • Jastrow States
      • Standard
      • With Permutation Symmetry Using Graph Isomorphisms
    • Matrix Product States
      • MPS
      • Periodic MPS
    • Custom Models
  • Observables

    • Custom Observables
      • Any k-local Operator
  • Sampling

    • Local Metropolis Moves
      • Local Hilbert Space Sampling
    • Hamiltonian Moves
      • Automatic Moves with Hamiltonian Symmetry
    • Custom Sampling
      • Any k-local Stochastic Operator can be used to do Metropolis Sampling
    • Exact Sampler for small systems
  • Statistics

    • Automatic Estimate of Correlation Times
  • Interface

    • Python module
    • JSON output

License

Apache License 2.0

About

Machine learning algorithms for many-body quantum systems

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 75.7%
  • Jupyter Notebook 24.0%
  • Shell 0.3%