Lessons Learned by Working for Nvidia


May 21, 2020

As the 2nd NCG(New College Graduate) Deep Learning Solution Architect in China, I worked for Nvidia from July 2018 to Dec 2019 and learned a lot from this great company and awesome colleagues&customers, hope to share what I learned in this post.

Holding the B.Eng. in Software Engineering from NWPU and M.Eng. in Computer Science(Computer Vision Specialization) from BIT, I’m not a typical tech geek and prefer spending more time on reading books, writing blogs, taking online courses, and making friends compared to preparing for exams and job interviews in my school days. As my first full-time job, the days at Nvidia are very fruitful and quite enjoyable for an NCG.

Why Nvidia?

Although I’m not a tech geek, computer graphics, robotics, computer systems, big data, and parallel computing have always been attractive to me, partially because I love physics more than math and enjoy those subjects in computer science which can take me closer to hardware-level stuff but still approachable by writing code. Nvidia is one of the best companies to work for considering such personal tech preferences.

At the beginning of 2015, I installed CUDA 5 on a personal laptop as required by some speech recognition toolkits like Kaldi. A few months later, out of curiosity, I started some CUDA programming experiments like implementing a simple neural network based MNIST digit recognizer and really enjoy it. CUDA is easy to use(like you can easily find function counterparts for GPU programming by function names, i.e. malloc vs cudaMalloc), and writing GPU programs feels like building the Ferrari in computer science. Being the guy who knows deep learning+CUDA programming and prefers accelerated computing to model training(was a skeptic of deep learning at the time), I seized the opportunity to work for Nvidia thanks to the great recruiters/managers/colleagues.

How to Work

Nvidia is relatively small considering the business depth(from chip design to high-level software development) and width(from gaming products to data center solutions), the daily work depends on one’s role and which customer to serve inside the company but the way to work is intuitive and same for most employees:

iteration(profiling-optimization-evaluation)=>scaling up

one needs to dive deep into a concrete application, business/research field and find out the most important applications/problems and top players in the field, kickstart the iteration, keep improving the product for a special case until getting satisfying results, then try to scale up, provide general solutions to customers, go from a successful story to win-win business.

In such a process, FOCUS and TEAMWORK are critical for the success of everything.

About Deep Learning Solution Architect

This is a kind of half-technology, half-business job, we work in sales org but try to sale/share technology rather than concrete products to customers, in collaboration with sales guys, product developers, and customers. It is a rare opportunity especially for new graduates to develop the business-sense which is critical for one’s success in the future career. A one-year-around program(Rotation) was designed for NCGs to work in different teams for essential training on HPC, Deep Learning Inference, Virtualization etc.

During the rotation, I had the opportunity to work with researchers in China’s top universities and engineers in most valued internet companies, developed the expertise in tools like TensorRT, and explored new stuff like BERT for natural language processing and WaveGlow as VoCoder for speech synthesis. It is an amazing experience with great support from managers/mentors. And I gradually realized that the current so-called artificial intelligence technique is actually a set of new tools for improving our capability in the digital era, it might not be 100% accurate sometimes but absolutely useful like doing math based on floating-point numbers, and as it’s the state-of-the-art way to deal with the huge amount of data, some deep learning models are located on the Strait of Malacca in our digital world thus of great research/business value. Fortunately, we are witnessing the system-level R&D for deep learning related stuff are paid more attention in recent years which can help us step further in this long journey for the pursuit of intelligence.

Currently, I go back to school for having more time to sharpening skills in algorithms(by reviewing Prof Deng’s DSA&CG courses), systems(by reviewing Nand2Tetris and finish reading CSAPP) and intelligence(by finish reading the deep learning book), taking great on-campus courses to learn the foundations of cloud computing, recommender system, optimization, and data visualization and do some research in visual tracking, VoCoder optimization and Network Embedding for MOOC community analysis. I hope taking the risk of unemployment for full-time study can help me go further in my future career.

For those interested in working for Nvidia, pls check https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite, hope could see u someday at GTC :)

Disclaimer: The above is the author’s personal opinion and is not the opinion or policy of Nvidia.