Scaling GP Regression up
OSC GPUS
OSC’s Website lists the all the available GPUs. The default node is an Owens P100 which has 1 GPU per node and 16GB of memory per GPU. One way I can improve my results is by using better GPUs. The Pitzer Quad V100 has 4 GPUs per GPU node of each 32 GB memory and the newest Ascend A100 nodes have 4 GPUs per node with 300GB GPU memory per node. A guide on requesting resources is found here.
Finding Theoretical MSE and MAPE
I modified the Fuchs data generation code to include columns for the noiseless max/total/avg energy. This way, I can compute a reference value for the MSE and Percent Error which would be exactly what the testing error should converge to.
Above is an example with using GP on 1,000 data points where I have both the estimate in green (which is what I computed in last week’s post for the 20,000 point dataset) and the “Ideal” value in blue which is just the error between the noiseless and the noisy energies. We see that these are very close, but I think it might be more sensible to use the “Ideal” value.
Trying to run 100000 data points in under 100 seconds
On my CPU, I can run 8000 data points in under 100 seconds using the settings I have been using with good accuracy
Running this same code on 2 GPUs of each 32GB, I can run a maximum of around 40,000 data points in less than 26 seconds with good accuracy. However, the GP seems to limited in the amount of memory we can utilize. I had to use 2 GPUs just so that I wouldn’t run out of memory.
Things to Do
- Figure out how to extract noise information from the Gaussian Process regression and if that is related to the amount of gasussian noise we are using.
- Find out how noise is extracted from the neural network or svr models. Stick to lower number of data points like 20,000
- Find out how would I update any of these models with new data, say 10,000 at a time.