Google Code-In: An Open Source adventure

Ananya Gangavarapu
4 min readJan 24, 2020

--

I had just finished Google Code-In, an opportunity to contribute to some of the biggest open source projects and collaborate with many contributors. I had chosen to contribute to TensorFlow because of its impact on Artificial Intelligence and Deep Learning.

Looks like the mentors from TensorFlow had thought a lot about the task design and covered every aspect of TensorFlow. Kudos to all mentors 👍!! The projects (or sub-projects to be more precise) covered are BERT and optimizers, LSTM, tf.keras, Swift for TensorFlow, Firebase, Tensorflow Lite, Callbacks, Tensorboard.dev, and TensorFlow datasets. Some of these topics were very new to me, like Swift, and mentors had helped to navigate through teething issues. Overall, I had the opportunity to contribute in each of the projects mentioned above.

Some of the key learnings:

  1. TensorFlow 2.0 is significantly upgraded version of TensorFlow

TensorFlow 2.0 is a significant upgrade from earlier releases. For example, tf.keras APIs provide wide range of functionality such as callbacks and we could get many metrics at batch level or epoch level. In short time, I could build 3 types of animated progress bars (master bar for epochs and progress bar for batch level training and validation).

2. TF 2.0 interoperability with other deep learning libraries is impressive and useful

TF 2.0 interoperability with Transformers (State-of-art NLP), Pytorch (One of the most popular deep learning libraries, open sourced by Facebook), Tiramisu, and others is so smooth that I could go from 0 to highly accurate paraphrasing task in few days. I never worked in NLP before and had used three optimizers (ALBERT, DistilBERT, and RoBERTa) to build paraphrasing (using MRPC), question-and-answers (using SQuAD), and sentiment analysis. Also, I had build a background remover using Tiramisu and DeepLab with high level of efficiency.

Comparative analysis of Tiramisu and DeepLab. Images are courtesy of Beyonce, Disney, and Paramount Pictures.

3. Wide variety of programming language choices

TF 2.0 has strong support for traditional programming languages such as Python, Java as well as upcoming scripting languages like Swift. I could build image classifiers, data augmentation, and plots using Swift. For those who are interested in knowing more about Swift for TensorFlow, these are few tutorials written by other participants and me:

An introduction to Generative Adversarial Networks (in Swift for TensorFlow) by Rick Wierenga

Machine Learning with Swift for TensorFlow and SwiftPlot by William Zhang

Swift for TensorFlow: Data Augmentation by Ananya Gangavarapu

4. Tensorflow datasets make it easy to catalog and use all kinds of data

TF 2.0 datasets removes the pain associated with acquiring publicly available datasets. As of this writing, more than 75 datasets are cataloged and available for use with less than 10 lines of code. That’s pretty cool! To upload new datasets into tfds, it is very easy. I had successfully submitted three pull requests (Imagewoof, FLIC, and Food101).

5. Edge computing with TensorFlow had become lot more easier

I could take the models trained in Colab with TPUs and covert them into tfjs (for browser-based inferences) and tflite (for edge based devices like mobile phones). I had also built iOS and Android apps with model deployed in Firebase.

Some fulfilling moments during GCI ‘19

  1. Opportunity to update TensorFlow documentation: 16 API examples in Python, 10 API Tests in Swift, 2 ReadMe.md updates in Swift for TensorFlow, and one in Swiftplot.
  2. I was very thrilled to submit 3 data pull requests and got accepted.
  3. Receiving appreciation from Tensorflow regular contributors like Alexandre Passos, Anthony Platanios, and Mihai Maruseac for my contributions.
  4. I had updated 21 examples on Stack Overflow (with Tensorflow 2.0 code)
  5. I had managed to do tasks in every area of Tensorflow including tflite and tfjs.
  6. My medium article on Swift for Tensorflow was translated into three languages (Chinese, Korean, and German).

Acknowledgments

Big thanks to all the mentors who helped me do the tasks, namely Yasawi (for great encouragements and insights), Ayush Agrawal (for his help with Swift for TensorFlow related tasks), Sayak (for guidance in animated callbacks), kushthedude, iHrishi, Hunar Batra, Param Bhavsar (for accepting many of the tasks for Android applications), Rajneesh, Arun, Utkarsh Sinha, Gulshan Rana (for providing valuable insights as well as accepting tasks), Daksh Miglani (For mentoring me for BERT related tasks). Their support and insights helped me both complete a lot as well as maximally contribute to the open-source community. I would also like to thank the TensorFlow docs community on Gitter. It was a great platform to learn more about contributions to TensorFlow. Most importantly, big thanks to all of the Google Code-In participants for making this experience definitely one to remember for years to come.

Ananya “Anigasan” Gangavarapu

--

--