TLDR: It feels unbelievable to have contributed to CERN as a GSoC student. My contributions can be found at #5757 and #6273.

Can't See? Something went wrong!

Journey

Summer of 2020 has been nothing short of a roller-coaster ride filled with challenges and obstacles. I feel a sense of achievement looking back at the work I managed to complete while hitting my goals and targets in these trying times. Ever since my first pull request got merged, I have been longing to create an impact with open-source contributions. Thanks to CERN-HSF and Google Summer Of Code for providing me an opportunity to work on the ROOT TMVA framework which provides a machine learning environment for the modelling, processing, and evaluation of high-energy physics data.

Let me take you through the work I’ve carried out this summer.

During these three months, I developed a PyTorch Interface for TMVA. Hopefully, users and developers will utilize the newest addition to the TMVA family.


Pull Requests

[Major]

[Minor]


Deliverables Achieved

Source

Header MethodPyTorch

  • Implementation of MethodPyTorch.h header.

Class MethodPyTorch

  • Implementation of MethodPyTorch.cxx class.

    • Implement the DeclareOptions method
    • Implement ProcessOptions methods
    • Implement SetupTorchModel method
    • Implement train methods
      • Implement simple basic structure for training
      • Add ability to load code from users
      • Convert numpy based dataloaders in TMVA to PyTorch dataloaders
      • Use default (optional optimizer SGD)
      • Add callbacks: savebest model, scheduler etc
    • Implement GetNumValidationSamples
    • Implement Validation in train_func
    • Add model prediction function loading ability
    • Implementation of the GetMVA*
      • GetMvaValues method for Classification
      • GetRegressionValues method for Regression
      • GetMulticlassValues method for MultiClass Classification.
    • Implement helper function

Tests

  • Add testPyTorchClassification.C
    • Add generatePyTorchModelClassification.py
    • Load, Train model and test all the parameter arguments
    • Verify response after model prediction function is added.
  • Add testPyTorchMulticlass.C
    • Add generatePyTorchModelMulticlass.py
    • Load, Train model and test all the parameter arguments
    • Verify response after model prediction function is added.
  • Add testPyTorchRegression.C
    • Add generatePyTorchModelRegression.py
    • Load, Train model and test all the parameter arguments
    • Verify response after model prediction function is added.

Tutorials

Made a blog post here

Also the tutorials are implemented in #6273

  • Add TMVA ClassificationPyTorch
  • Add TMVA RegressionPyTorch
  • Add TMVA MulticlassPyTorch
  • Add TMVA ApplicationRegressionPyTorch
  • Add TMVA ApplicationClassificationPyTorch



Acknowledgements

I am grateful to my mentors for their invaluable guidance and support throughout my GSoC journey. ❤️

Thank you for believing in me. I honestly never thought I would have the chance to get in, or even be accepted, at one of the finest research organizations in the world. Hoping that my contributions may help in the next Major Physics discovery at CERN! 💥



Signing Off,

Anirudh Dagar