Skip to main content

My Summer Internship at Lablup Inc.

· 9 min read

I had the opportunity to learn valuable lessons on AI, data science, computer vision, container technologies, and CLI, as well as working with experienced professionals and new friends.

The word “summer” in my article and the cold early winter breeze outside seem to highlight the fact that this blog post has been long overdue. I started my internship on June 28 — exactly 5 months ago by the time this article is published — and finished it on August 20. I am finally paying the article debt I owed.

How It Started

Lablup is a startup based in Seoul, South Korea. Their primary product, Backend.ai, is a “streamlined, container-based computing cluster orchestrator that hosts diverse programming languages and popular computing/ML frameworks, with pluggable heterogeneous accelerator support including CUDA and ROCM”. I quoted the definition from their open-source Github repository, which can be accessed through this link.

The Lablup logo

I first heard about Lablup Inc. when one of my seniors interned there. At that time, I just finished my third semester, so I barely fulfilled any of the qualifications needed to apply for computer science internships. Last semester, I felt ready to try applying to the internship program. What interested me the most about the internship was how I would be able to practice my AI and software/web development skills at the same time. I applied through their internal application opening, as the CUop (company-university partnership program to facilitate internships for juniors and seniors) program stopped accepting international students due to visa issues. I felt a bit anxious since I didn’t have a strong background in backend, but fortunately, I got accepted :)

The First Few Days

The program is conducted mostly remotely because of the COVID-19 pandemic (ㅠㅠ), but we could still come to the office a few times a week, provided we filled in the “office attendance list” beforehand. It wasn’t required, but I moved to Seoul from Daejeon for the summer for a more immersive internship experience (+a valid excuse to spend more time in Seoul). I spent the first few days after moving in adjusting to the busy city life in Seoul, exploring the much richer mix of cultures in the capital city.

Some of my favorite pictures from my summer stay—do you recognize any of them?

On the first internship day, we were encouraged to come to the office in person for a brief orientation. There were six interns in total; everyone ended up coming to the offline meeting. Quite a lot of the full-time members came to the orientation too. Sadly, this was also going to be the last time all interns got to “assemble” together (._.) We listened to a short overview of the internship program and a presentation about the history of Lablup Inc., and then had lunch outside in groups of four. We were given instructions on how to join the Teams chat and other internal collaboration platforms, and then we were discharged early.

The orientation tasks consisted of installing Backend.ai on our local machine, launching the web version of Backend.ai, and experimenting with neural networks to solve a Fashion-MNIST classification task based on TensorFlow’s tutorial. After we were finished, we submitted screenshots of our work to Lablup’s internal platform for archive. (P.S. Backend.ai is available for free for everyone, so check their page out if you’re interested!)

As a side note, at the time this task was assigned, Backend.ai was yet to support ARM-based architectures (M1 Macs being one of them). I unknowingly tried to install Backend.ai on my M1 Mac, and the result was a disaster.. I ran into so many errors, even though the installation was supposed to work perfectly smoothly on Intel-based Macs ㅠㅠ

The orientation tasks for week 1

Research Team Tasks

Starting from the second week, we were introduced to tasks from the research team. Over the course of the internship, we attempted to analyze the data from two open-source papers on face coverings: Efficacy of masks and face coverings in controlling outward aerosol particle emission from expiratory activities by Asadi et al (Scientific Reports, 2020) and Face coverings and respiratory tract droplet dispersion by Bandiera et al (The Royal Society Open Science, 2020). It took me a week to finish the task from the first paper. The #1 lesson I learned was that data visualization is only a very small part of data analysis; much of the work is spent on structuring the dataframe and cleaning raw data. I used Jupyter notebooks on Backend.ai cloud to work on this task, with the help of Pandas, NumPy, Matplotlib, and Seaborn.

The final results I got for the first task

The second paper was much more challenging than the first one, primarily because we had to work with a large set of image data as opposed to text data. I was supposed to count the number of particles deposited using particle detection, but I still couldn’t find a good algorithm by the end of the internship period (ㅠㅠ). For this task, I experimented with an ensemble of OpenCV functions.

Two snapshots of the images that we were supposed to process

Backend.ai Issues

Aside from the research team tasks, which mostly deals with data science, we were also working on resolving issues in the Backend.ai repository — this is arguably the main part of the internship! It took me quite a long time to understand the codebase at first, as there were quite a lot of components and this is the first time I got to study an industry-level repository. As a result, I wasn’t able to work on as many issues as I had previously expected…

To prepare for my tasks, I learned more about Linux terminal commands, shell scripts, Docker containers, and client-server interaction. At that time, Backend.ai was about to have a major update: new support for ARM, and more consistent command conventions. A friend worked on the former, while I collaborated with another friend for the latter. It was such a memorable experience to be able to learn from friends and mentors; it reminds me that I have so much more to learn! By the end of the internship, I made the following merges to the Backend.ai repositories:

Company Culture

Frankly, I felt a bit apprehensive at first, since I’m not very fluent in Korean. However, everyone is friendly and English is the official language during meetings, so I felt very welcomed (🥺). Although I tried to solve tasks on my own as much as I could, I still needed help from the full-time members from time to time. Everyone was busy, so I felt a bit hesitant to ask, but they still tried their best to help amidst their schedule.

Every morning at 10AM, we joined a short 15-minute meeting where important updates and schedules were briefed to all members. Besides the daily morning meeting, we also had other company “seminars”. Every Tuesday, we had “codebase study”, where interns and new members took turns presenting a certain part of Backend.ai. It helped me understand how Backend.ai work more quickly, as there was a lot to take at once. Every Wednesday, we had “pebble seminar”, where we discussed recent trends in the AI/ML/data science field. Every Friday, we had an OKR meeting to present our progress for the week, as well as getting feedback from mentors. At the end of the fourth week, we had a midterm evaluation instead, and in the final Friday, we had a final evaluation presentation.

Aside from those, we also had a cultural day where we got to play games together. It had to be done online, unfortunately, because of the pandemic. We played in teams of “equal strengths” (aka average experience at Lablup). Also, there were a lot of prizes :D. I really enjoyed the chance to interact in a more informal setting with other members.

My workspace at Lablup, sadly this is the only picture I took in the office :(

Closing Remarks

A few days after the official end of the internship, one kind unnie took some of us for a treat (😊). We had a Western-style (?) platter and gelato. Everything was so good! At the same time, I genuinely felt sad for having to say goodbye to the friends whom I had worked closely with for the past two months.

*drools*

All in all, my summer this year has been truly exciting, thanks to Lablup’s internship and the experience it gave me. On top of the technical lessons, I also got a chance to explore Seoul, experience a taste of the working-class life, and make new friends. If there’s one thing I would have done differently, it is that I should have written this blog post earlier..