Request documentation on QUBO solver's spiking algorithms #236
-
Hi Lava team, I would like to ask if your team can provide some documentation on the algorithms (NEBM and SCIF) behind the QUBO solver of Lava-optimization library. The reason is that I want to gain insights into the mechanism by which each algorithm solves QUBO and how we may tune the hyperparameters to produce optimal solutions. Updated: Here is some of my understanding of the two algorithms, which I am not sure if it is correct or not.
However, I still do not understand the sentence mentioned in tutorial 2
as I thought that I would appreciate any clarifications and documentation on the two algorithms. Thank you! |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 4 replies
-
Dear Tam, Thanks for reaching out, and for your interest in our QUBO solver! Could you briefly mention whether you are a member of Intel's Neuromorphic Research Community? If so, I can provide you with a rather detailed documentation. In addition, we will share more information in a talk during our upcoming INRC workshop: https://intel-ncl.atlassian.net/wiki/spaces/INRC/blog/2023/06/08/1945239558/Register+Today+Summer+2023+Workshop We will also soon have another release. I will see if we find time to extend the QUBO tutorial with a more detailed description. In general, the QUBO solver solves the problem Each neuron represents a variable x_i. Each neuron has a state corresponding to z_i. Based on this state, the neuron determines whether to switch based on the equations described in the NEBMPyModel (for NEBM) or PyModelCspScifFixed (for SCIF). Two neurons i, j are connected by weights given by q_{i,j}. When one neuron switches its value x_i from 0 to 1, it will send a spike +1 across the weight, or -1 if it switches from 1 to 0. In addition, each neuron with x_i=1 will send its state z_i to a CostIntegrator neuron. The CostIntegrator neuron then accumulates the states z_i, which determines the overall cost of the current state. To tune hyperparameters, you can also use the SolverTuner. To see how it works, please refer to test_solver_tuner.py I hope this helps? If not, please continue asking! |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
Dear Tam,
That is correct. We are putting our full efforts into iteratively advancing the Loihi solver algorithm. For this reason, we have stopped to advance the CPU backend in October. We will update the CPU version once we have completed the development of the Loihi solver.
Due to this, the Loihi solver will provide a substantially better performance in terms of solution accuracy. Please note that we will later update the QUBO solver algorithm on CPU backend so that it acquires the same solution accuracy, but Loihi is expected to continue being substantially faster and more energy efficient.
I hope this helps.
If so, you may just close the discussion/issue.
If not, feel free to reach ou…