본문으로 건너뛰기

My Summer Internship at Lablup Inc.

· 약 16분

저는 새로운 친구들과 함께 실력 있는 전문가들로부터 인공지능, 데이터 사이언스, 컴퓨터 비전, 컨테이너 가상화 및 CLI를 배우는 소중한 기회를 얻게 되었습니다.

이 게시물의 “여름”이라는 단어와 바깥의 초겨울 바람은 이 글을 작성하는 것이 많이 늦었다는 것을 보여줍니다. 저는 이 글이 작성되기 5개월 전인 6월 28일에 인턴십을 시작하여 8월 20일까지 진행하였고, 이제야 게시물을 작성하는 것을 마쳤습니다.

어떻게 시작하게 되었나

래블업(Lablup)은 대한민국 서울특별시에 본사를 둔 스타트업입니다. 래블업의 주요 제품인 Backend.ai는 “CUDA와 ROCM을 포함한 확장 가능한 이기종 가속기 지원을 통해, 다양한 프로그래밍 언어 및 인기 있는 컴퓨팅/머신러닝 프레임워크를 호스팅 하는 능률적인 컨테이너 기반의 컴퓨팅 클러스터 오케스트레이터”입니다. 위의 인용은 link를 통해 방문할 수 있는 Backend.AI 오픈소스 GitHub 저장소에서 따왔습니다.

The Lablup logo

저는 제 선배 중 한 명이 래블업에서 인턴을 했을 때 래블업에 대해 처음 듣게 되었습니다. 당시 저는 막 3학기를 마쳤기 때문에 컴퓨터 공학 관련 인턴십을 지원하는 데 필요한 자격 요건을 거의 다 채우지 못했지만, 지난 학기를 마치고서는 인턴십 프로그램에 지원할 준비가 되었다고 느꼈습니다. 인턴십에 관해 가장 관심을 끌었던 부분은 인공지능 관련 스킬과 소프트웨어 및 웹 개발 스킬을 어떻게 동시에 훈련할 수 있을까 하는 것이었습니다. 주니어/시니어 인턴십 활성화를 위한 기업-대학 파트너십 프로그램인 CUop이 비자 문제로 유학생 접수를 중단했기 때문에, 래블업에 별도의 신청을 통해 지원하였습니다. 저는 백엔드에 대한 배경지식이 부족해서 조금 불안했지만 다행히 합격을 했습니다:)

처음 며칠 동안

인턴십 프로그램은 Covid-19 대유행(ㅠㅠ)으로 인해 대부분 원격으로 진행되지만, 사전에 “사무실 출근 목록”을 작성한다면 일주일에 몇 번 사무실에 출근할 수 있었습니다. 꼭 그래야 할 필요는 없었지만, 좀 더 프로그램에 몰입하기 위해 여름 동안 대전에서 서울로 이사했습니다. 서울로 옮긴 후 며칠 동안, 저는 바쁜 도시 생활에 적응하며 수도에서의 풍부한 문화의 혼합을 탐험하며 보냈습니다.

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

첫 인턴십 날, 간단한 오리엔테이션을 위해 직접 사무실로 오라는 권유를 받았습니다. 총 여섯 명의 인턴이 있었는데 모두 사무실로 와서 참석하였습니다. 오리엔테이션에는 정직원 분들도 많이 참석하였습니다. 아쉽게도 이 오리엔테이션은 모든 인턴이 함께 모인 마지막 일정이 되었습니다(._.) 여기에서 인턴십 프로그램에 대한 간략한 개요 및 회사의 역사에 대한 발표를 들은 뒤 4인 1조로 밖에서 점심을 먹었습니다. 또한 Teams 채팅 및 기타 내부 협업 플랫폼에 참여하는 방법에 대한 지침을 들은 뒤 일찍 퇴근하였습니다.

오리엔테이션 과업은, 로컬 컴퓨터에 Backend.AI 설치, 웹으로 접속 및 TensorFlow의 튜토리얼을 기반으로 하는 fashion-MNIST 분류 과제를 해결하는 것으로 구성되었습니다. 과업을 마친 후, 래블업의 내부 플랫폼에 작업 결과를 스크린샷으로 제출하였습니다.(P.S. Backend.AI는 누구나 무료로 이용할 수 있으므로 관심이 있다면 그들의 페이지를 확인하십시오.)

참고로 이 작업을 시작할 당시 Backend.AI는 아직 M1 맥과 같이 ARM 기반의 아키텍처를 지원하지 않았습니다. 인텔 맥에서는 설치 및 실행이 완벽하게 작동했겠지만, 제 M1 맥에서는 계속되는 설치 시도에도 불구하고 결과가 좋지 못했습니다ㅠㅠ(역주: 인턴십 기간이 끝난 후인 2021년 9월 릴리스부터 Backend.AI 에서도 Apple Silicon을 포함한 ARM 기반 아키텍처를 지원합니다)

The orientation tasks for week 1

Research team 업무

2주 차에는 우리는 research team으로부터 과제를 할당받았습니다. 인턴십 기간 동안, 우리는 마스크의 효용에 대한 두개의 오픈소스 논문(2020년 Scientific Reports 지에 게시된 Efficacy of masks and face coverings in controlling outward aerosol particle emission from expiratory activities by Asadi et al. 및 2020년 The Royal Society Open Science 지에 게시된Face coverings and respiratory tract droplet dispersion by Bandiera et al. 에서 사용된 데이터를 분석하였습니다. 2020년에 의 데이터를 분석하였습니다. 첫 번째 논문에 관련된 업무를 끝내는 데는 일주일이 걸렸는데, 이를 통해 배운 가장 큰 교훈은 데이터 시각화는 데이터 분석에서 매우 작은 부분에 불과하다는 것이고 대부분의 작업은 데이터 프레임을 구성하고 원시 데이터를 정리하는데 소요된다는 것입니다. 저는 해당 작업을 위해 Backend.AI Cloud의 주피터 노트북을 사용하여 Pandas, NumPy, Matplotlib 및 Seaborn 라이브러리를 사용하였습니다.

The final results I got for the first task

두 번째 논문은 첫 번째 논문보다 훨씬 어려웠는데, 그 이유는 첫 번째 논문의 데이터와 달리 텍스트 데이터가 아닌 이미지 데이터로 작업해야 했기 때문입니다. 입자 검출을 이용하여 입자의 수를 세어야 하는데 인턴십 프로그램이 끝날 때까지 좋은 알고리즘을 찾지는 못했습니다(ㅠㅠ)이 과제를 해결하기 위해 OpenCV 라이브러리의 앙상블 기능을 활용했습니다.

Two snapshots of the images that we were supposed to process

Backend.ai Issues

데이터 사이언스가 주 업무인 Research team의 업무 외에도, 인턴십의 주요 부분이라 할 수 있는 Backend.AI 저장소의 이슈들을 해결하기 위해 노력하였습니다. 구성 요소가 꽤 많고 업계에서 사용되는 코드를 다루는 것은 이번이 처음이기 때문에, 코드베이스를 이해하는데 꽤 오랜 시간이 걸렸습니다. 결과적으로 제가 처음에 기대했던 것만큼 많은 이슈를 다룰 수는 없었습니다…

업무를 준비하기 위해 저는 리눅스 명령어, 쉘스크립트, 도커 컨테이너 및 클라이언트와 서버 간의 상호 작용에 대해 많이 배웠습니다. 그 당시 Backend.AI는 ARM 지원 및 일관된 명령 규약과 같은 변경 사항을 포함하는 새로운 업데이트를 앞두고 있었습니다. 전자는 한 친구가 작업했고 후자는 다른 친구와 제가 협업하여 진행했습니다. 친구들과 멘토들로부터 배울 수 있었던 것은 매우 기억에 남는 경험이었고 그것은 내가 배울 것이 많음을 알려주었습니다! 인턴십이 끝날 무렵 저는 Backend.AI 저장소에 다음과 같이 코드 기여를 할 수 있었습니다.

사내 문화

솔직히 말해서, 저는 한국말을 잘하지 못해서 처음에는 조금 불안했습니다. 하지만 모두 친절하고 회의할 때는 영어를 공용으로 쓰기 때문에 매우 환영받는 느낌이었습니다.(🥺) 할 수 있는 한 스스로 과제를 해결하려고 노력했지만 여전히 정직원들의 도움이 수시로 필요했습니다. 다들 바빠서 질문을 하는 것이 조금 망설여졌지만 그래도 바쁜 일정 속에서도 스케줄 중에 최선을 다해 도와주려고 노력하셨습니다.

매일 아침 10시에는 모든 구성원들에게 중요한 업데이트와 일정을 브리핑하는 15분 정도의 짧은 회의에 참여했습니다.이외에도 회사의 “세미나”와 매주 화요일에 인턴과 신입 직원들이 돌아가면서 Backend.AI의 특정 부분을 발표하는 “코드베이스 스터디”가 있었습니다. 들을 때마다 얻어 가는 것이 많았기 때문에 Backend.AI가 어떻게 작동하는지 빠르게 이해하는데 많은 도움이 되었습니다. 또한 매주 수요일에는 인공지능, 머신러닝 및 데이터 사이언스 분야의 최근 동향에 대해 토론하는 “패블 세미나(pebble seminar)”가 있었고, 매주 금요일에는 OKR 미팅을 통해 한 주간의 진행 상황을 발표하고 멘토들의 피드백을 받는 시간을 가졌습니다. 4주 차 금요일에는 중간 평가가 있었고, 마지막 주 금요일에는 최종 평가 발표가 있었습니다.

회의나 세미나 외에도, 우리는 함께 게임을 할 수 있는 문화의 날도 가졌습니다. 불행하게도 판데믹으로 인해 이는 온라인으로 진행되었습니다. 우리는 동등한 실력을 가진 팀으로 나누어 경기를 했고, 많은 상품이 준비되어 있었습니다:D. 이는 다른 분들과 좀 더 격의 없이 교류할 수 있는 기회가 되어 정말 즐거웠습니다.

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

마치며

인턴십이 공식적으로 종료된 지 며칠 후, 한 친절한 ‘언니’가 우리 중 일부에게 밥을 사주었습니다(😊). 우리는 서양식(?) 플래터와 젤라또를 먹었는데 다 맛있었습니다. 동시에 지난 두 달 동안 친하게 지냈던 친구들과 헤어져야 하는 것이 정말 아쉬웠습니다.

*drools*

전반적으로, 올해 나의 여름은 래블업의 인턴십과 그것이 나에게 준 경험 덕분에 정말 흥미진진했습니다. 기술적인 학습 외에도 서울 답사, 회사 근무 체험 및 새로운 친구 사귀기 등의 기회도 얻을 수 있었습니다. 이 블로그 글을 좀 더 일찍 작성했어야 했지만 말입니다...