Career

Discover how professionals are growing with Lablup

Sep 23, 2021

2021 Summer Lablup Internship Review

  • Taewan Park
    Taewan ParkIntern
Internship

Sep 23, 2021

Career

2021 Summer Lablup Internship Review

  • Taewan Park
    Taewan ParkIntern
Internship

Internship Application Process

The first semester of my junior year was coming to an end, and it was time to start preparing for my graduation project for the upcoming semester. While contemplating meaningful activities for the summer vacation, I came across a public internship recruitment post from Lablup on Facebook.

After reading the job posting, I thought it was an opportunity I couldn't miss. It was one of the startups I was already familiar with, and I felt their internship program was much more substantial compared to the work-study programs offered in collaboration with my university. I immediately began filling out the application. The application contained many questions, mainly focused on my programming and project experience.

Some time after submitting my application, I received an email for an interview. I was happy to have passed the initial screening, but I was also very nervous since it was my first technical interview. After agonizing over what to prepare, I ended up not preparing much for the technical aspects and instead focused on reviewing the programming and project experiences I had written about in my application before joining the video conference.

Fortunately, the interviewers asked extensively about my programming and project experience. They did ask some computer science technical questions, but I couldn't answer many of them. To be honest, I was so flustered at the time that my head was spinning, and I honestly thought I was going to faint. (Looking back now, I wonder how I even passed.)

A few weeks after the interview, as I was finishing up the semester and making plans for summer vacation, I received an acceptance email, which made me ecstatic!! I chose to start my internship a week later and spent that week having fun.

Internship Tasks and Daily Life

The Lablup internship started with a one-week bootcamp assignment where we tackled basic tasks from various fields within the company. For the remaining weeks, we were assigned tasks and issues in areas we wanted to explore further or were particularly interested in.

Lablup's core platform is open source! Therefore, the internship assignments were also carried out publicly on GitHub.

Bootcamp Assignment

The bootcamp assignments can be summarized as follows:

  • Learn how to use Backend.AI
  • Train machine learning and deep learning models using Backend.AI
  • Install Backend.AI in a local development environment

Backend.AI is Lablup's core product. Since I was scheduled to work on actual Backend.AI development tasks after the bootcamp, I had to complete these assignments thoroughly before moving on.

Note: Clicking on each image will take you to the corresponding PR.

Backend.AI Webserver

Webserver ping API PR

After the bootcamp, this was the first "good first issue" I tackled while diligently studying the Backend.AI source code. The task was to add a ping API to check if the web server was running correctly. Since Backend.AI's web server uses aiohttp, I wrote the code as follows, and my pull request was approved without any additional revisions.

Backend.AI Agent

PR review

Next, I took on an issue with the agent. The Backend.AI agent is installed on computation nodes and is responsible for managing and controlling containers. This task required ensuring that the ~/.local/bin path was always included in the container's PATH environment variable when a container is created by the Backend.AI agent. I was initially overwhelmed by the vast amount of code in the agent and didn't know where to start, but our CTO, Jun-ki Kim, gave me a hint to examine the code that executes when the ai.backend.kernel's BaseRunner object is created, which helped me solve it successfully!

P.S. While working on this task, I learned that the ~/.local folder, like the /usr/local folder, is used for installing local or third-party packages. However, while /usr/local is for all users, ~/.local is for a single user. Notably, pip uses it...! (And of course, bin contains the executables).

Backend.AI Manager

## Backend.AI Manager

The next task arose while I was reviewing this pull request. The PR was for adding a feature to the web UI that allowed creating sessions by setting an alias for a virtual folder. During the review, I discovered a bug that allowed duplicate alias names to be entered. If a duplicate alias name is entered in the web UI, an error occurs when the Backend.AI agent actually creates the session because you can't have two folders with the same name in the same directory, preventing it from working correctly. Although this issue was patched and the PR was successfully merged, there was consensus that it would be beneficial to implement safe coding practices in the Backend.AI manager as well, so I took on this task. While working on it, I not only implemented the folder name duplication check but also cleaned up some duplicated code from backporting, submitted the PR, and it was successfully merged.

Backend.AI Test

add_new_cli_based_test

The final task was special because I collaborated with another intern. The other intern refactored the Backend.AI CLI commands, and my role was to write integration tests using the refactored CLI commands. I wrote test cases by executing commands that included CRUD operations (Create-Read-Update-Delete) for each command and verifying that the correct values or results were returned. It took longer than expected because there were more commands than I anticipated, but it was the most rewarding task. It was a unique experience to write different code concurrently based on code committed by another person.

OKR Meeting

OKR Meeting
OKR Tracker

Lablup interns are required to attend an OKR meeting once a week. An OKR meeting is where we present a summary of what we accomplished that week, what challenges we faced, and how we resolved them. After the presentation, the Lablup team members provide feedback on each task. Receiving feedback helped me fill gaps in my knowledge, and listening to the other interns' presentations was beneficial as I could learn about other areas I wasn't directly involved in.

Internship Review

The company is located a 5-minute walk from Seonjeongneung Station. The office isn't very large, but it has various amenities. There's an Xbox and an electronic piano for stress relief. (The Xbox has an Ultimate Game Pass subscription!) You can come and play whenever you can't focus on work or need a break.

The company has a very relaxed atmosphere and promotes horizontal communication. Everyone is very kind and answers questions well. Thanks to this culture, I think I was able to adapt well without being too shy initially.

Every morning at 10 AM, Lablup has an all-hands meeting to briefly track others' work and achievements and share our plans for the day. Also, anyone can participate in any meeting held at Lablup. I think this is a great culture because interns can also participate in various meetings and build practical knowledge.

As I performed various tasks during the internship, I felt that I was getting closer to real-world work. Although I still have a long way to go, I was proud to have contributed to the company's product in various areas, starting with simple issues. I encountered many problems while solving practical tasks, but I think I learned a lot through the process of trial and error. Also, the Backend.AI codebase was the largest and most complex project I had ever worked on, and figuring out how it worked by analyzing it step-by-step gave me a great sense of accomplishment.

I wanted to gain diverse experience by going to the office and working alongside my mentor, but unfortunately, as soon as the internship started, the social distancing level was raised to Level 4, so I was disappointed that I couldn't visit the office much.

Lablup
  • sns
  • sns
  • sns
  • sns

© Lablup Inc. All rights reserved.

KR Office: 8F, 577, Seolleung-ro, Gangnam-gu, Seoul, Republic of Korea US Office: 3003 N First st, Suite 221, San Jose, CA 95134
KR Office: 8F, 577, Seolleung-ro, Gangnam-gu, Seoul, Republic of Korea US Office: 3003 N First st, Suite 221, San Jose, CA 95134