태그 : 래블업
래블업의 파이콘 한국 2024 후기: lambda submit: Starbucks if submit == "duck" else None
By 허진호안녕하세요, 래블업에서 Technical Writer로 일하고 있는 허진호입니다. 저희 래블업은 지난 10월 26일부터 10월 27일까지 수원 컨벤션센터에서 개최된 파이콘 한국 2024에 플래티넘 스폰서로 참여했습니다.
래블업의 창업 이념은 오픈소스와 큰 연관이 있습니다. 래블업의 피에는 오픈소스가 흐르고 있다고 해도 과언이 아니죠. 다양한 오픈소스들이 있지만, 그중에서 래블업은 특히나 파이썬과 인연이 깊습니다. 래블업은 asyncio를 이용하여 개발된 aiohttp와 같은 오픈소스에도 적극적으로 기여하고 있고, 파이썬 그 자체에도 기여하고 있습니다. 파이썬뿐만이 아니라 파이콘과도 인연이 깊죠. 래블업의 구성원들은 그동안 전세계 파이콘에서 다양한 주제의 발표를 해 왔고, 파이콘 한국에는 총 다섯 번 후원사로 참여하며 그 인연을 이어오고 있습니다.
이번 파이콘은 래블업에게도 뜻깊은 행사였습니다. 래블업의 신정규 대표와 김준기 CTO가 파이콘 양일 기조연설자로 나섰기 때문인데요, 신정규 대표는 'Python과 PyCon과 공룡시대와 닭들의 행성'이라는 주제로 발표를 진행했습니다. 언뜻 보면 혼란스러운 제목이지만, 진화에서 1차적으로 승리했던 공룡에 두 가지 파이썬의 성질을 비유한 것입니다. 하나는 파이썬의 급격한 성장과 1위 언어로의 등극, 그리고 엄청난 연산으로 혁신을 만들어내는 대 AI 시대의 핵심 언어라는 성질입니다. 이는 현대에서 가장 많이 소비되는 육류인 '닭'으로 연결되는데요, 특유의 접근성과 범용성으로 누구나 쉽게 배운 후에 활용할 수 있는 성질이 닭과도 같다는 뜻이었다고 하네요. 특유의 재치있는 제목과 말솜씨, 다양한 AI 생성 그림으로 청중을 휘어잡은 신정규 대표의 발표는 청중의 많은 호응을 받았습니다.
김준기 CTO는 '파이콘과 나의 10년 돌아보기'라는 주제로 발표를 진행했습니다. 총 4개의 챕터로 구성된 이번 발표는 세계 각지에서 파이콘과 함께했던 발표를 돌아보며 asyncio와 함께 했던 성장으로 시작해 확장되는 회사의 규모, 그리고 코드의 확장에 대응해나가는 과정, 어떻게 하면 다른 파이써니스타들에게 영감을 줄 수 있을지에 대해 다뤘습니다. 개발자라면 마주했던, 혹은 마주할 수 있는 문제를 쉽게 풀어내 대중의 많은 박수를 받았습니다.
래블업 조규진 선임 소프트웨어 엔지니어, 세르게이 렉시코브 리서처, 김준기 CTO
또한 조규진 래블업 선임 소프트웨어 엔지니어와 세르게이 렉시코브 리서처, 김준기 CTO가 각각 세션 발표를 진행했는데요, 조규진 선임 소프트웨어 엔지니어는 '자동화된 파이썬 웹 프레임워크 API Schema 제작기: The long way around'를 주제로 aiohttp를 사용하며 겪었던 API 문서 자동 생성의 어려움을 극복하기 위해 거쳤던 일련의 삽질기를 청중과 공유했습니다. 세르게이 렉시코브 리서처는 'Automating CLI commands execution with LLM and LangGraph: A new frontier in Python automation'이라는 주제로, 복잡한 CLI를 LLM과 LangGraph 프레임워크를 사용하여 사용자 친화적인 도구로 변환하여 사용자 경험과 운영 효율성을 향상시키는 방법에 대해 발표했습니다. 두 발표 모두 많은 청중을 모으며 뜨거운 관심을 받았습니다. 김준기 CTO 역시 세션 발표를 통해 '엔터프라이즈 공급을 위한 파이썬 엔지니어링'이라는 주제로 파이썬 앱 공급을 위한 패키징/인스톨러 개발 사례를 나눴습니다.
👨🏫 허진호: 파이콘 세션 발표 후기가 궁금합니다.
👨💻 세르게이 렉시코브: 발표를 영어로 진행했음에도 파이콘 한국 측에서 실시간 통번역 시스템을 지원해주었기 때문에 문제 없이 발표를 마칠 수 있었습니다. 세션이 끝나고 나서 몇몇 열성적인 청중들이 다가와 발표 주제에 대한 질문을 했던 점이 가장 기억에 남습니다.
'AI 그림 판독기' 이벤트 (오리와 백조 그리기)
래블업은 이번 파이콘 한국 2024의 부스 이벤트로 'AI 그림 판독기' 이벤트를 개최했습니다. 파이콘 한국 2024에 참여한 참가자들은 QR코드를 통해 개개인의 휴대전화 혹은 태블릿, 노트북에서 이벤트 페이지에 접속해 '오리와 백조'를 그려 경품에 도전할 수 있었습니다. 참여만 해도 래블업 폴딩 파우치를 받을 수 있었고, 종합 1등을 한 참가자는 스타벅스 기프트카드를 받아갈 수 있는 아주 멋진 이벤트였죠.
래블업이 행사마다 들고 다니는 스티커
왜 하필 오리와 백조냐고요? 저희가 행사에 항상 가져다니는 스티커에는 귀여운 오리와 백조가 그려져 있습니다. 이 친구들은 물 위에서는 도도하게 떠 있지만, 수면 밑에서는 물위에 떠 있기 위해 열심히 발을 휘젓고 있는 것으로 알려져 있는데요, 우리 스티커 역시 고객이 도도하게 수면 위에서 AI 서비스를 하는 동안 Backend.AI가 그 밑의 일을 담당하겠다는 비유적인 의미를 가지고 있죠.
이벤트의 내용은 간단합니다. 텍스트를 입력하면 그림을 생성해 주는 생성형 AI를 이용하여, 주어진 그림과 가장 가까운 그림을 그려내는 이벤트죠. 아마 Stable Diffusion이나 Dall-E 같은 생성형 AI 솔루션을 이용해 그림을 그려본 분들이라면 아시는 내용이겠지만, 생성형 AI는 입력에 따라 출력이 결정되는 매우 민감한 구조를 가지고 있습니다. 같은 입력값을 활용해도 매 번 출력값이 달라지기도 하고, 약간만 입력을 변형해도 전혀 다른 결과가 나오기도 하죠. 이처럼 원하는 결과물을 생성해내기 위해 생성형 AI를 가르치는 (안내하는) 과정을 우리는 '프롬프트 엔지니어링'이라고 부릅니다. 저희 부스에서 이벤트를 참여하신 모든 분들은 '나만의 작은 프롬프트 엔지니어링' 과정을 체험해 보신 셈입니다.
우리의 'AI 그림 판독기' 이벤트 백엔드 개발을 담당했던 조규진 선임 소프트웨어 엔지니어에게 개략적인 설명을 부탁드렸습니다.
👨🏫 허진호: 'AI 그림 판독기' 이벤트 페이지가 어떻게 만들어졌는지 설명 부탁드립니다.
👨💻 조규진: 'AI 그림 판독기' 이벤트 페이지 백엔드는 총 세 가지의 마이크로서비스로 구성되었습니다. 첫 번째는 WAS (Web Application Server), 두 번째는 이미지 생성 파이프라인, 세 번째는 이미지 유사도 판별 파이프라인입니다. WAS는 사용자 데이터베이스와 이미지 생성 요청 처리 API로 구성되어 있습니다. 이 모든 마이크로서비스는 Backend.AI에서 'Model Service' 기능을 통해 배포되었습니다. 저희 리서치 팀의 세르게이님이 만드신 Visutale 데모처럼, 저희 Backend.AI에서 AI 서비스 개발의 모든 것이 가능하다는 데모의 성격으로 봐 주셔도 좋을 것 같습니다.
👨🏫 허진호: 구체적으로 어떤 프로세스를 통해 사용자의 그림과 주어진 그림과 유사도가 나오게 되는 것인가요?
👨💻 조규진: 사용자가 QR 코드를 통해 접속한 페이지에서 프롬프트를 입력, 이미지 생성을 요청하면 WAS가 이미지 생성 서비스에 텍스트를 전달하고, 생성된 이미지를 반환받습니다. WAS는 생성된 이미지를 다시 유사도 판별기에 전달하고, 유사도 판별기로부터 퍼센트로 계산된 유사도를 돌려받아 사용자에게 생성된 그림과 함께 전달합니다.
👨🏫 허진호: 어떤 기준으로 그림을 그려야 높은 점수를 받을 수 있나요?
👨💻 조규진: 이미지 유사도 판별 파이프라인이 무슨 기준으로 유사도를 판별하는지는 저도 알 수 없습니다. 아마 AI에게 직접 물어보는 것이 답변을 얻는 더 좋은 길일지도 모릅니다.
어마어마한 참여도
사실 모든 서비스를 만들어낸 당사자들이 그렇듯이 저희 구성원들은 이 이벤트를 '소소한 이벤트'라고 생각했습니다. 그러나 그 생각이 깨지는 데는 한 시간이 채 걸리지 않았습니다.
래블업 부스에는 사람들이 몰리기 시작했고, 부스 앞에는 본인의 순위를 확인하고 상위권을 사수하기 위한 사람들이 리더보드를 목빠져라 쳐다보고 있는 진풍경이 연출되었습니다.
심지어 라운지에 앉아 있는 사람들이 휴대전화 화면을 뚫어져라 쳐다보며 백조를 그리고 있었다는 증언도 있었죠.
통계를 살펴볼까요?
10월 26일, 27일 양일간 이벤트에 참가하신 분은 총 428분이었습니다. 해당 기간 제출된 이미지 생성 요청은 '11639'건에 달했습니다. 이 중에서 한 사람이 제출한 최대 응답은 1000여건을 훌쩍 뛰어넘어 모두를 경악하게 했답니다. (비밀은 뒤에...)
의도치 않은 부작용도...
부스에 앉아 리더보드를 살펴보고 있는 와중에 익숙한 두 개의 닉네임이 눈에 띄었습니다. 'cloudshin' 과 'achimnol' 각각 신정규 대표와 김준기 CTO가 갑자기 불이 붙어서 90% 이상의 유사도 점수를 내고 계신 겁니다. 두 분은 점심을 드시러 이동하는 와중에도 계속해서 끝없이 오리를 그려내고 계셨답니다.
보다못한 유우영 DevRel Lead님이 이를 말리고 나섰으나, 두 사람의 열정은 쉽게 말릴 수 없었다는 후문이 전해집니다. (P.S.1: 물론 점수를 집계할 때 두 분의 데이터는 강제로 지웠답니다.) (P.S.2: 사실 참가자 분들이 워낙에 훌륭하셔서 이 두 분의 점수를 손쉽게 넘어서는 압도적인 포디움을 만들어 내셨답니다...)
내부적인 부작용(?) 이외에 외부에서의 문제도 발생했습니다. 1일차 부스를 운영하던 중, 어디선가 개발자의 외마디 비명이 들립니다.
"누가 매크로를 돌리고 있는 것 같은데요?"
확인해보니 1~5초 간격으로 계속해서 동일한 프롬프트로의 중복 제출 요청이 들어오고 있었습니다. 같은 프롬프트를 넣어도 매 번 결과물이 조금씩 달라지는 생성형 AI의 특징을 이용한 매크로였죠. 그러나 문제가 식별된 당시에 서비스를 수정하기는 어려웠고, 백엔드를 담당한 개발자는 2일차 파이콘 발표가 예정되어 있었기에 즉각 대응이 어려웠죠. 상황은 점점 나빠져만 갔습니다.
"제출이 안돼요" "버튼이 안 눌려요" "이미지가 대신 회색 빈 칸만 나와요"
개발자들의 축제인 파이콘답게, 누군가는 노트북으로 우리 사이트를 열고, 개발자도구를 보여주며 요청이 들어가고 있지 않은 것 같다고 이야기해주기까지 했습니다. 발표준비를 하러 구석에 숨어있는 개발자를 찾아갔고, 아까의 매크로가 우리의 H100을 향해 엄청난 양의 리퀘스트를 쏟아내고 있었습니다. 그렇게 매우 느린 속도로 이미지를 제출하고 있는 사람들을 뒤로 하고 1일차 행사가 끝났습니다. 부스를 정리하며 1일차 Recap을 진행했고, 2일차 행사에는 이런 문제를 원천적으로 막아야 한다는 결론이 도출되었습니다.
불쌍한 개발자는 2일차 행사를 위해 밤을 새워가며 발표 준비도 미루고 두 가지의 새로운 기능을 추가해 이런 사태를 미연에 방지하고자 했답니다.
첫째, 동일 프롬프트 제출 방지 기능 추가
서버단에서 제출한 프롬프트를 검증하는 기능을 추가했습니다. 동일한 프롬프트가 제출된 이력이 있는 경우, 새로운 이미지를 그리지 않고 최초 생성된 이미지와 해당 이미지의 유사도 점수를 그대로 응답하도록 변경했습니다.
둘째, 이미지 제출 시 캡챠 추가
매크로를 방지하기 위해 응답 제출 시 캡챠를 누르도록 변경했습니다. 참가자들이 약간 더 귀찮아지긴 했겠지만, 캡챠를 추가한 것으로 행사 2일차에는 무작위 매크로가 발생하지 않았답니다.
그 외 소소한 개선 사항들
참여자의 등수 계산을 위해 꽤 자세한 소숫점 단위까지 받아오고 있었지만, 사용자 편의상 GUI상에서는 소숫점 첫째 자리에서 잘라 보여주고 있었습니다. 그러나 경쟁이 과열되며 소수점 첫째 자리까지 똑같은 점수를 받은 사람들이 나타나기 시작했죠. 이에 따라 사용자들의 혼란을 줄이기 위해 소숫점 둘째 자리까지 GUI상에 보여주는 패치를 진행하기도 했습니다.
성공적인 이벤트를 위해 불철주야 백엔드를 담당해준 조규진 선임 엔지니어와 김수진 프론트엔드 엔지니어에게 감사의 말씀을 전합니다 🙂
파이콘 한국 2024를 마무리하며
수많은 파이써니스타 분들이 파이콘 한국 2024를 찾아주셨고, 래블업도 수많은 파이써니스타 분들을 만나러 현장에 함께했습니다. 래블업은 앞으로도 끊임없이 오픈소스 커뮤니티에 기여하고, 함께 성장해나갈 것입니다. 최근에 큰 인기를 끌었던 <흑백요리사>라는 프로그램에서 정지선 셰프가 이런 말을 합니다. "저는 레시피를 오픈해요. 레시피를 오픈하면 그만큼 레시피가 또 생겨요. 사람들이 아이디어를 많이 제공하거든요. 큰 그림을 그리는 거죠."
래블업도 언제나 우리를 이루고 있는 근간인 오픈소스 정신을 잊지 않고 계속해서 큰 그림을 그려나가겠습니다.
20 November 2024
Uncharted AI: 대 AI 시대
By 래블업 주식회사해당 글은 2024년 9월 24일, lab | up > /conf/4에서의 신정규 대표 기조 연설을 요약한 글입니다.
2024년 9월 24일, 래블업의 4번째 컨퍼런스, lab | up > /conf/4가 열렸습니다. 래블업의 직원들 뿐만 아니라 다양한 외부 연사 분들이 참여하여 자리를 빛내 주셨는데요, 해당 행사의 기조연설은 래블업의 CEO, 신정규 대표가 맡아 주었습니다.
Photo by 'iT dongA'
이번 글을 통해 신정규 대표가 기조 연설을 통해 소개한 AI 시대의 발전, 앞으로의 래블업의 방향성, 그리고 래블업이 개발하고 있는 제품들에 대한 업데이트와 몇가지 새로운 제품들에 대해 소개하고자 합니다.
Uncharted Waters
이번 기조연설의 제목인 <Uncharted AI - 대 AI시대'는 많은 분들이 추억하는 명작 게임, '대항해시대 - Uncharted Waters'에서 가져왔습니다. 대항해시대는 단순한 게임이 아닙니다. 이 시대는 실제 존재했던 우리 지구촌의 역사이기도 하며, 중요한 의미를 가지는 시대입니다.
대략 15세기 이후, 대항해시대에는 수많은 사람들이 향신료를 찾아 먼 바다 너머로 여행을 떠났습니다. 지금은 어디서나 구할 수 있는 '후추'를 찾기 위해서였죠. 우리는 그 시대에 태어나진 않았으니, 저는 후추를 찾기 위해 열심히 게임을 했죠. 지금 생각하면 그깟 향신료가 뭐라고 싶지만, 당시 수많은 모험가들은 자신들의 목숨을 걸어가며 향신료를 찾아 떠났습니다.
Uncharted AI
그 시절 향신료를 찾아 바다 건너 목숨을 걸고 모험을 떠났던 수많은 사람들처럼, 지금 우리는 인공지능(AI)이라는 새로운 시대를 맞이하여, 인공지능을 발전시키기 위해 목숨을 걸고, 다양한 파트너들과 함께 노력해 나가고 있습니다. 왜 이런 노력이 필요하느냐, 그것은 바로 '접근성' 때문입니다. 후추를 내 집 앞마당에서 수확할 수 있다면, 굳이 바다를 건너야 할 필요가 없겠죠. 새로운 시대가 시작되었을 때, 이런 접근성의 차이가 누군가에게는 기술격차를 만들어내기도 하고, 누군가에게는 도전의 기회를 만들어내기도 하는 것입니다. 새로운 기술로 인해 생겨난 기술 격차는 래블업이 새로운 시대를 열어젖히는 원동력이 되었습니다.
래블업의 모토는 2015년 창립 초기부터 명확했습니다. 우리는 Make AI Accessible을 목표로 기술의 접근성을 높이고, 장벽은 낮추는 것을 핵심 미션으로 삼았습니다. AI 기술을 단순히 API 형태로만 사용하는 것이 아니라, 사용하는 사람이 인프라스트럭처에 대한 기술 자체를 이해하고 사용할 수 있도록 하자. 이를 통해 수많은 사람들이 AI에 접근하는 장벽을 낮추자는 것을 목표로 삼았습니다.
AI 분야가 발전하며 새로운 도전이 나타났습니다. 바로 스케일의 문제입니다. AI 기술이 다루는 데이터의 규모가 커지고, 연산의 규모가 커지며 과거에는 싱글 노드로 감당했던 수준을 넘어 멀티 노드가 되고, 수십 수천대, 몇 만대의 GPU를 다루는 시대가 되었죠. 동시에, AI는 작아지고 있기도 합니다. 올해 초 삼성이 공개한 Galaxy AI, 애플이 얼마 전 공개한 Apple Intelligence처럼 여러분의 손 안에서 온디바이스로 동작하는 AI도 있고, IoT 센서와 같은 온도계에도 AI가 돌아가고 있습니다.
그러니까, 더 높은 전력과 많은 리소스를 사용하여 AI를 돌리려는 시도가 이어짐과 동시에, 더 낮은 전력과 적은 리소스를 사용해서 AI를 돌리려는 시도들도 꽃을 피우고 있는 것입니다. 기존에 우리가 AI라고 생각했던 어떠한 범위가 있다면, 그 범위가 위로 (크게) 확장되는 동시에 아래로 (작게) 축소되고 있기도 한 것입니다. 그리고 양 쪽 방향으로 스케일 밴드를 이동시키는데 필요한 기술은 완전히 다르죠.
래블업이 사업을 시작했던 2015년만 해도 지포스 GTX970만으로도 모델을 만들 수 있었지만 지금은 워크로드의 규모가 너무나도 빨리 커지고 있기 때문에, 이 워크로드의 증가가 무어의법칙이라 부르는 반도체의 성능발전을 넘어서게 된 지가 벌써 4~5년이 지났습니다. 그렇기에 이젠 수직으로 칩의 성능이 증가하는 것이 아니라, 여러개의 칩을 묶어 수평으로 활용하는 시대가 된 것이죠.
Make AI "Scalable"
최근 4년 사이 AI 분야에서의 분산 컴퓨팅 패러다임이 급격히 진화하고 있습니다. 패러렐 프로세싱을 넘어 이제는 다양한 종류의 연산이 동시다발적으로 일어나고 있습니다. 데이터를 처리하고, 모델을 학습시키고, 서비스를 제공하는 등 이질적인 작업들이 한데 어우러집니다. Heterogeneous computation resource가 동시에 요구되고 일부는 데이터베이스, 일부는 트레이닝, 일부는 데이터 가공, 일부는 플릿 관리 및 RAS… 더 많은 부분이 서비스 스택에 가까워졌습니다.
게다가 이 모든 작업에 GPU와 같은 가속기가 필수불가결해졌습니다. 이제 우리는 단순히 CPU와 GPU를 분리해서 사용하는 게 아니라, 두 자원을 더욱 긴밀하게 연동해야 합니다. 기존의 GPU 기반 서비스 + CPU 서비스로 나누는 대신, 두 종류의 리소스가 더 강하게 결합되기 시작한 것이죠. 이같은 변화의 근본 원인은 모든 서비스에 GPU가 필요해졌기 때문입니다. 이런 상황에서는 전력, 네트워크, 데이터 등 물리적인 제약 뿐 아니라, 하드웨어 불안정, 플랫폼 관리, 소프트웨어 결함 등 비물리적인 제약들까지도 모두 병목으로 작용하게 됩니다. 래블업은 이런 스케일링의 장벽을 걷어내는 데 주력하고 있습니다.
이것이 바로 래블업이 올 해 새로 내건 목표, Make AI Scalable입니다. 우리는 가속장치부터 싱글 노드를 거쳐 하이퍼스케일에 이르는 모든 범위에서 AI 워크로드의 확장성을 추구합니다. 스케일링에 방해되는 모든 요소를 없애고, 스케일링에 필요한 모든 요소를 더합니다. 그리고 그 과정에서 AI 기술에 대한 접근 장벽을 계속 허물고 있기 때문에, 우리의 새로운 목표는 "Make AI Accessible"이라는 기존 목표에서 이어지죠.
그동안 래블업은 AI를 Accessible하고, Scalable하게 만들기 위한 다양한 노력을 이어왔고, 이는 다양한 혁신으로 이어졌습니다. 이러한 결과로, Backend.AI로 운영되는 엔터프라이즈 GPU 유닛의 숫자는 13,000개에 육박하며, 단일 사이트 기준 1,500개 이상의 GPU를 관리하고 있는 경우도 있습니다. 래블업의 제품을 사용하는 팀(고객사)도 100여개 이상으로 확장되었죠. 클라우드 서비스, AI 가속기 테스트베드, 자율주행 등 다양한 분야에서 Backend.AI는 AI의 핵심 인프라로 자리잡았습니다.
이러한 대규모 확장은 기술적 난이도를 크게 높였습니다. 우리는 한 대의 서버부터 수천 대의 클러스터까지, 모든 스펙트럼을 아우르는 기술을 개발해야만 했습니다. 그 기술은 앞에서 말씀드렸듯, "스케일링에 방해되는 모든 요소를 없애고, 스케일링에 필요한 모든 요소를 더하는" 것입니다. 이번 기회를 통해 래블업이 지금까지 이뤄낸 혁신과 앞으로 이뤄낼 혁신, 우리가 그리고 있는 미래에 대해 공유드리겠습니다.
Open Source
먼저, 래블업은 오픈소스 생태계에 깊이 관여하고 있는 오픈소스 기업입니다. Backend.AI, Callosum, aiodocker, aiomonitor(, aiotools), Raftify등 다양한 프로젝트를 개발하고 공개하고 있습니다. 오픈소스는 우리의 DNA에 새겨져 있습니다. 우리가 만들어 공개하거나 기여하는 오픈소스들의 배포 이식성은 적은 노력으로도 다양한 온프레미스 환경을 커버하는 래블업의 핵심 경쟁력이기도 합니다. Backend.AI의 온프레미스 환경에 대한 지원, 클라우드 환경과의 호환성 등은 모두 오픈소스 경험으로부터 래블업이 확보한 역량이라 할 수 있습니다.
Backend.AI CLI Installer: TUI로 경험하는 쉬운 설치 경험
Backend.AI CLI Installer는 Backend.AI에 대한 접근성을 높이기 위한 새로운 오픈소스입니다. TUI (Text-based User Interface)를 도입하여 쉽게 Backend.AI를 설치할 수 있고, 패키지 기반 설치를 자동화하며, 자동 설치용 메타 설정을 지원합니다.
bndev: 나만의 AI 인프라를 손쉽게
단순 패키지 기반 설치가 아니라, 내가 직접 뜯어 고치며 해킹하고 싶은 분들을 위해 bndev라는 개발도구를 공개했습니다. bndev를 통하면 복잡한 Backend.AI 개발 환경을 손쉽게 구축하고 관리할 수 있습니다. 모두가 자신만의 AI 인프라를 가질 수 있고 고칠 수 있게 되는 것이죠.
Backend.AI Core
Backend.AI는 매 년 3월과 9월에 메이저 버전 릴리즈를 진행합니다. 2024년 3월에는 24.03 버전을 릴리즈했고, 곧 24.09 버전의 릴리즈를 눈앞에 두고 있습니다. 24.09 버전과 그 이후의 버전에도 영향을 미칠 요소로, Backend.AI Core에 큰 변화가 있습니다. 해당 내용을 소개드리겠습니다.
Key Updates
- NVIDIA NGC(NVIDIA GPU Cloud) NIM(Nemo Infrerence Microservice) 실행 지원: 라이선스 기반 컨테이너 이미지 적재 등 NGC의 주요 기능을 Backend.AI에서 활용할 수 있습니다.
- Intel Gaudi2, Rebellions ATOM+, Furiosa RNGD 등 신규 가속기 지원 대폭 확대: Backend.AI 내에서 고객의 워크로드 특성에 맞는 최적의 AI 가속기를 유연하게 선택할 수 있습니다.
- Backend.AI 모델 스토어, 브라우저, 서빙 기능 정식 출시(GA): MLOps의 핵심 기능을 아우르는 원스톱 솔루션으로, 고객이 손쉽게 AI 모델을 검색하고, 자신의 워크로드에 바로 배포할 수 있습니다.
- 작업 스케줄링 체계 강화: 새로운 Priority Scheduler를 통해 작업의 우선순위를 스케줄러와 독립적으로 지정할 수 있으며, 중요도가 높은 작업을 빠르고 안정적으로 처리할 수 있습니다.
- Agent Selector 개념 도입: Agent Selector는 스케줄러가 선택한 작업을 실제로 어떤 노드에서 실행할지를 결정하는 역할을 합니다. 이제 이 부분도 독립된 플러그인 형태로 쉽게 사용자 정의할 수 있습니다. 이를 활용하면 작업을 각 노드의 전력 사용량이나 온도 등 다양한 기준에 따라 분산 배치할 수 있습니다. 노드 간 부하를 균등하게 맞추고, 전력 효율을 높이는 등 인프라 운영을 최적화하는 데 큰 도움이 될 것으로 기대합니다.
- 자체 Docker 네트워크 플러그인 개발: 대규모 데이터 처리를 위한 GPUDirect Storage 지원 범위를 넓혀, 단일 노드 안에서의 데이터 이동 병목을 최소화하였습니다.
- 컨테이너 간 통신을 위한 Cilium 기반의 네트워킹 스택 도입: 대규모 분산 학습에 도움이 되는 기능으로, 해당 스택을 통해 기존 대비 30%의 네트워크 성능 향상을 확인했습니다.
- OIDC(OpenID Connect) 기반의 통합 인증 체계 확보: 단일 계정으로 Backend.AI를 포함한 다양한 인프라 서비스에 접근, 계정 관리가 대폭 간소화됩니다.
- 엔터프라이즈 환경 지원 대폭 확대: GitLab, GitHub Enterprise, AWS ECR 등 다양한 PrivateContainer Registry와의 연동이 가능하며, 기업 내부 레거시 자원과 클라우드를 모두 아우르는 하이브리드 구성도 쉽게 구성할 수 있습니다.
위와 같은 업데이트를 기반으로, Backend.AI는 고성능 컴퓨팅(HPC)을 위한 기능과 엔터프라이즈를 위한 기능을 모두 갖춘 차세대 AI 인프라스트럭처로서의 면모를 확장해 나가고 있습니다. 향후 자세한 업데이트 내용은 Backend.AI 24.09 출시와 함께 확인할 수 있습니다.
Next-gen Sokovan
래블업은 내년 초 출시를 목표로 차세대 Sokovan에 대한 작업도 이어나가고 있습니다. 차세대 Sokovan에 대한 내용을 간략하게 공개합니다.
- 쿠버네티스를 지원하는 듀얼 엔진 아키텍처: 기존의 독자적인 클러스터 관리 체계와 함께, 쿠버네티스 네이티브 서비스로도 동작하게 됩니다. 이를 위해 쿠버네티스 오퍼레이터 프록시를 통한 가속기 관리 기능을 탑재할 예정입니다. NVIDIA와 AMD의 각종 디바이스 플러그인, 인텔 GPU 플러그인 등을 매끄럽게 연동, 업계 표준을 지원하게 되는 것이죠.
- HA 구성 시 Raftify를 활용한 DB 부하 분산 기술 적용: 메타데이터 서비스에 대한 병목 현상을 최소화하고, 수만 대 규모 클러스터에서도 안정적인 운영이 가능해집니다.
- 거대언어모델 서빙을 위한 자동 스케일링 강화: 단순 리소스 사용량뿐 아니라, 요청 패턴과 레이턴시 등 API 메트릭을 종합적으로 분석해 최적의 스케일링을 수행합니다.
- 프로젝트 단위 강화: 데이터 세트와 모델, 파이프라인 등을 하나의 단위로 묶어 관리할 수 있게 됩니다. 이를 통해 세밀한 **RBAC(Role-Based Access Control)**를 적용해 다양한 협업 시나리오를 지원하는 것이 목표입니다.
- 엔터프라이즈 고객을 위한 관리 기능 강화: 통합 로깅과 모니터링은 물론, 규제 준수를 위한 감사 로그 추적 기능을 갖추게 됩니다.
이 모든 변화는 한 가지 목표를 염두하고 만들어지고 있습니다. 바로 고객의 AI 프로젝트를 가속화하는 것이죠. 래블업의 개발팀은 신규 AI 가속기를 비롯해 각종 쿠버네티스 기반 솔루션과의 연계를 통해 Backend.AI Core 및 MLOps 기능의 성숙도를 한 층 더 높여갈 수 있을 것으로 기대하고 있습니다. 더욱 폭넓은 역할을 수행하게 될 차세대 Sokovan의 여정을 기대해 주시기 바랍니다.
Backend.AI WebUI
빠른 시일 안에, Backend.AI WebUI는 새 옷을 입습니다. 사용자 관점에서 Backend.AI의 첫인상을 결정짓는 가장 중요한 요소는 바로 사용자 인터페이스일 것입니다. 우리는 그동안 WebUI의 중요성을 깊이 인식하고, 꾸준하게 혁신을 거듭해 왔습니다. 다양한 사용자 경험 테스트를 위해 작년에는 ML Desktop을, 올해 초에는 GenAI Desktop을 출시하기도 했죠. 최근에는 Neo Session Launcher를 통해 사용자 친화적인 UI를 제품에 적용하기도 했습니다.
WebUI의 세 번째 새로운 변화, WebUI Neo를 소개합니다. Vice Versa Design Studio와의 긴밀한 협업을 통해 풍부한 사용자 경험을 제공하는 것을 목표로 설계되었죠. 이 새로운 디자인 언어는 처음부터 끝까지 사용자를 고려하고 설계되었습니다. Backend.AI 리뉴얼에 맞춰 UI/UX 전반을 재설계하여 한 층 세련되고, 미래지향적인 분위기를 느낄 수 있을 것입니다.
WebUI Neo는 '인지 부하의 감소'와 '시각적 은유의 일관성 유지'를 콘셉트로 설계되었습니다. '인지 부하의 감소' 측면에서, 우리는 사용자가 복잡한 정보를 입력하거나, 탐색해야 하는 상황을 최소화하고자 하였습니다. 예를 들어, 대규모의 실험을 설정하는 경우 수십가지의 옵션을 한 번에 늘어놓는 것 보다는 순차적으로 정보를 노출하여 단계별로 확인 가능한 정보의 양을 제한했습니다.
'시각적 은유의 일관성 유지' 측면에서는, 실험과 모델, 데이터 세트 등 유사한 개념에 대해 화면 구성, 아이콘, 색상에 이르기까지 UI/UX 요소를 유사하거나 동일한 디자인 패턴으로 구성하여 사용자가 한 번 익힌 사용법을 유사 기능을 사용하며 재학습할 필요 없이 재사용할 수 있도록 하였습니다. WebUI Neo는 Core 및 엔터프라이즈에 걸쳐 모두 적용됩니다.
이러한 혁신성을 인정받아, WebUI Neo는 이번 달 서울특별시와 서울디자인재단에서 주관한 중소기업 산업디자인개발 지원사업에서 총 4개의 컨소시엄에게만 주어지는 우수상을 수상했습니다.
WebUI Neo는 Backend.AI 24.09 업데이트에 바로 포함되지는 않으며, 올해 연말 정식 출시를 목표로 개발과 테스트가 진행되고 있습니다. WebUI의 첫 버전부터 사용되었던 코드베이스인 웹 컴포넌트 기반에서 리액트 기반으로 이전하는 작업도 한창 마무리 중에 있습니다. WebUI Neo는 단순히 과거의 기능을 재포장하는 선에서 그치지 않습니다. 머신러닝 워크플로와 긴밀하게 연계된 새로운 기능들이 지속적으로 추가될 예정이고, Backend.AI가 추구하는 고도의 자동화와 사용 편의성을 구현하기 위한 기반이 될 것입니다. AI 인프라스트럭처의 복잡성을 넘어 모두가 AI 인프라스트럭처를 쉽게 이해하고 그 혜택을 누리는 세상, 래블업이 WebUI Neo를 통해 그려가는 미래입니다.
Lablup Enterprise
Backend.AI Enterprise 를 중심으로 하는 Lablup Enterprise 의 핵심은 ___ made easy 로 표현할 수 있습니다. Lablup Enterprise는 디바이스 드라이버 레벨부터 AIOps까지 엔드 투 엔드 기술로 깊은 단계에서의 AI 기술 혁신을 쉽게 제공하는 것을 목표로 합니다. 저희는 총 3개의 ___ made easy 콘셉트를 잡고 있는데요, 첫번째는 "Scaling made easy", 두번째는 "Acceleration made easy", 마지막은 "Inference made easy" 입니다.
Scaling made easy: FastTrack 2, Finetun.ing, Cluster Designer
FastTrack 2
래블업이 24.09와 함께 릴리즈하는 FastTrack 2는 대규모의 AI 프로젝트를 위한 자동화 솔루션입니다. 프로젝트 그룹 기반의 파이프라인 관리 기능을 제공해, 복잡한 워크플로를 손쉽게 정의하고 실행할 수 있습니다. 다양하고, 재사용 가능한 템플릿을 제공하여 반복적인 작업을 최소화시키는 것을 큰 특징으로 가지고 있습니다. 또한, FastTrack 2에서는 외부 파트너와의 연계를 통해 자원을 더욱 유용하게 활용할 수 있게 됩니다. 파트너사의 모델 압축 노드와 모델 서빙 서비스를 파이프라인에 추가할 수 있습니다.
Finetun.ing
Finetun.ing은 FastTrack으로 개발된 클라우드 파인튜닝 서비스이며, 일반적으로 제공되는 파인튜닝 서비스와 다르게 데이터를 직접 준비할 필요가 없다는 큰 특징이 있습니다. 보통은 기반이 되는 데이터를 업로드해서 모델을 파인튜닝하는 시나리오를 많이 생각하는데, Finetun.ing은 사용자가 인터랙티브 프롬프트를 입력하는 것으로 모델 튜닝을 완료할 수 있습니다. 사용자가 플랫폼에게 거는 대화를 기반으로 플랫폼이 자동으로 합성 데이터를 생성하고, 이를 이용하여 모델 튜닝이 이루어지게 됩니다. 파인튠 완료된 모델은 자동 테스트를 거쳐 모델 카드와 함께 사용자에게 다운로드 가능한 형태로 제공됩니다. Finetun.ing은 NVIDIA NemoTron 을 기반으로 구축되어 있으며 Llama 3.1과 Gemma 2부터 지원을 시작할 예정입니다. 현재 다양한 최신 모델의 파인튜닝을 지원하기 위해 테스트를 진행하고 있고, 앞으로 더 많은 모델을 이용할 수 있도록 추가할 예정입니다.
현재 Finetun.ing은 최종 공개를 앞두고 있고, 이번 행사에서 최초로 Waitlist를 받기로 결정했습니다. https://finetun.ing 에서 Waitlist에 등록하실 수 있습니다.
Cluster Designer
Backend.AI Cluster Designer는 GUI 기반의 클러스터 설계 도구입니다. 고객이 원하는 규모와 성능에 맞춰 해당 클러스터의 실효 성능과 함께 필요한 하드웨어 구성과 예상 비용을 자동으로 산출해 줍니다. 실제 구축에 앞서 최적의 아키텍처를 검증하고 싶은 분들께 안성맞춤입니다.
Helmsman
Backend.AI Helmsman은 대화형 클러스터 관리 인터페이스입니다. 터미널에서의 채팅만으로 복잡한 클러스터 운용이 가능해집니다. 내부적으로는 Gemma 기반의 파인튠 모델을 활용해, 사용자의 의도를 정확히 파악합니다. TorchTune, LangGraph, LangChain 등의 패키지들을 결합해 온프레미스 환경에서의 대화형 파인튜닝 파이프라인 구축도 지원합니다. Helmsman CLI 및 WebUI를 통한 UI 패키지 및 모델은 Backend.AI 24.09 릴리즈 이후, 연말까지 릴리즈할 예정입니다.
Acceleration made easy
두 번째는 "Acceleration made easy"입니다. 우리는 AI 워크로드를 위해 다양한 가속기를 지원하고 있습니다. 현존하는 AI 인프라스트럭처 플랫폼 중 가장 많은 가속기를 지원하고 있습니다.
CPU 아키텍처 기준으로는 x86은 물론 Arm, RISC-V 등 이종 아키텍처까지 아우릅니다. NVIDIA의 Grace Hopper, AMD의 MI 시리즈, 인텔 Gaudi, GraphCore BOW, GroqCard, Rebellions ATOM+, Furiosa RNGD 등 최신 가속기와의 긴밀한 협업을 통해 Backend.AI 에서 동일한 사용자 경험 및 최고의 성능을 달성할 수 있도록 노력하고 있습니다.
Inference made easy
마지막으로 "Inference made easy" 입니다.
저희는 통합 모델 스토어를 통해 사전학습 모델의 공유와 배포를 간소화했습니다. Hugging Face를 비롯해 자체 레지스트리, 레시피 기반 모델 빌드 등 다양한 방식을 제공하죠. 윈도우의 Choco, macOS의 Homebrew 등의 패키지매니저에서 영감을 얻은 Lablup ION 모델 레시피는 GitHub을 통해 커뮤니티가 기여한 모델 및 서비스들을 명령어 한 줄로 설치할 수 있게 합니다.
PALI, PALI PALI (PALI2), PALANG
모델 서비스 운영 측면에서도 새로 소개드릴 내용이 있습니다. 바로 PALI (빨리), PALI2 (빨리 빨리), PALANG (빨랑)입니다.
PALI(Performant AI Launcher for Inference) 는 Backend.AI 모델 플레이어와 큐레이트 된 모델 카탈로그, 미리 정의된 모델을 조합한 고성능 추론 런타임입니다. 유연한 확장성과 뛰어난 성능이 장점입니다. 누구든지 쉽게 설치하고, NVIDIA NIM, Hugging Face 모델 및 Lablup ION 레시피를 바로 실행하여 모델 서비스를 운영할 수 있습니다.
PALI2 는 PALI를 위한 전용 하드웨어 인프라 어플라이언스입니다. PALI가 탑재된 어플라이언스 여러 개를 연결해 손쉽게 확장할 수 있습니다. PALI2는 AI 워크로드에 최적화된 아키텍처로, 높은 성능과 낮은 지연 시간을 자랑합니다. 설치 환경에 따라 다양한 아키텍처 및 칩 환경에 맞춘 모델들을 제공하고 업데이트 할 수 있죠.
NVIDIA 레퍼런스 플랫폼인 GH200을 통합한 PALI2 어플라이언스도 준비하고 있고, 일본 교세라 미라이 엔비전에서 10월 1일에 PALI2의 첫번째 레퍼런스 플랫폼으로 Instant.AI라는 플랫폼을 런칭, 여러분들이 구입할 수 있게 됩니다.
한국 시장에서의 레퍼런스 플랫폼은 10월 중 예약, 4분기부터 판매 예정에 있습니다. 미국 및 유럽 시장을 대상으로 하는 PALI2 어플라이언스들은 빠르면 올해 4분기부터 만나볼 수 있을 것입니다.
PALANG은 PALI와 FastTrack, Talkativot, Helmsman 등을 아우르는 언어 모델 추론 플랫폼입니다. 즉시 사용 가능한 추론 및 파인튜닝 세팅을 제공, 대규모 언어 모델의 배포와 운영을 크게 단순화했습니다. Talkativot을 통해서는 맞춤형 챗봇 인터페이스를 쉽게 만들 수 있으며, 개발 과정에서의 모델 비교 및 인터페이스 빌딩을 위한 소프트웨어 컴포넌트들도 제공합니다. 인퍼런스만 필요한 경우 PALI 및 PALI2를 사용하면 되고, 언어모델 파인튜닝과 추론이 모두 필요한 경우 PALANG을 사용할 수 있습니다.
G
마지막으로 원 모어 씽... 현재 개발 중인 신규 프로젝트 하나를 살짝 공개하겠습니다. Gemma2 기반의 언어 모델, G입니다. Finetun.ing으로 간편하게 커스터마이징할 수 있는 것이 특징입니다. Helmsman 의 백엔드 모델 및 기업용 에이전트 등의 다양한 용도로 사용될 예정이며 구체적인 내용은 추후에 소개드리도록 하겠습니다.
From Uncharted AI to Industrial Revolution
대항해시대, 무수히 많은 모험가들은 후추를 찾아 전세계를 누볐습니다. 그들의 도전은 결과적으로 미지로 남았던 세계의 다양한 영역을 발견했고, 결과적으로 그들이 개척해낸 항로를 통해 세상은 더욱 연결되었습니다. 조선술과 항해술이 발전했고, 새로운 교역로가 열렸고, 의학과 군사기술을 비롯한 다양한 분야에서 혁신이 일어났습니다. 그 뿐만이 아닙니다. 대항해시대가 축발시킨 또 다른 중요한 이벤트, 산업혁명을 빼놓을 수는 없겠죠.
지금 우리가 마주하고 있는 이 시대를 저희는 대 AI시대라고 부릅니다. 대 AI 시대는 마치 대항해시대 초기와 같이 그 가능성의 문이 이제 막 열리기 시작한 단계에 불과합니다. 누군가는 이제 막 겨우 후추를 들고 돌아오고 있으며, 누군가는 지구가 둥글다는 것을 증명하기 위해 더 큰 배를 건조하고 띄우려 하고 있죠. 이제 AI 분야에도 대항해시대가 산업 혁명에 가져온 변화가 막 일어나고 있습니다.
Engine of AI Infrastructure
산업혁명은 제임스 와트의 증기 엔진으로부터 시작되었습니다. 증기 엔진이 발명되면서 대량 생산과 기계화의 시대가 열렸습니다. 이제 우리는 또 다른 혁명의 한가운데 서 있습니다. 거대한 물결 앞에서, 래블업은 새로운 엔진을 만들고 있습니다.
래블업은 AI 인프라 분야의 엔진입니다. 우리의 기술은 산업 전반에 혁신의 동력을 제공합니다. 증기기관이 석탄의 힘을 이용했다면, 래블업의 엔진은 데이터를 연료로 삼습니다. 마치 자동차 엔진이 휘발유의 에너지를 움직임으로 전환하듯, 래블업은 데이터라는 연료를 인공지능과 인공지능이 주는 가치로 전환하는 효율적이고 강력한 엔진을 제공합니다.
내연기관이 자동차 산업을 태동시켰듯, AI 엔진은 데이터 기반의 IT산업을 재편할 것입니다. 단순히 데이터를 저장하고 관리하는 수준을 넘어 모든 사람과 기업이 각자 보유한 데이터로부터 통찰과 가치를 이끌어내는 시대, 래블업은 그 시대를 준비하고 있습니다. 래블업의 AI 엔진은 규모와 속도 면에서 타의 추종을 불허합니다. 작게는 IoT, 크게는 수십에서 수만 대에 이르는 GPU를 동시에 가동하고, 페타바이트급 데이터를 실시간으로 처리하는 스케일을 지원합니다. 엔진의 성능이 자동차의 속도를 결정하듯, 우리의 인프라는 AI 생태계에서의 성패를 좌우할 것입니다.
지금까지 래블업이 만들어온 엔진들을 보셨습니다. 우리는 이 엔진들로 대AI시대를 넘어 AI 산업혁명 시대를 견인해보려 합니다. 여러분 모두가 각자 모두 운전석에 앉을 수 있도록, 우리는 엔진을 설계하고 개선하는 일에 매진하겠습니다. 래블업과 함께 대AI시대의 가속페달을 밟아 주시기 바랍니다.
27 September 2024
[특집] Scale entanglement
By 신정규이 글은 2023년 5월 Crossroads 에 기고된 글입니다.
원래 글 순서는 2023 > 2015 > 2020 > 2017 > 2018 > 2019 > 2021 > 2022 > 2023
으로 쓰인 글입니다. 감정적 흐름은 그 순서를 따라가지만, 독자의 이해를 위해 시간순으로 재편집했습니다.2023년이 지나면 3월 14일은 파이의 날이 아니라 챗봇의 날이라고 불릴지도 모른다.
그동안 창고에 있었던 모든 언어모델 들이 세상에 동시에 뛰쳐나온 날이었다. 구글의 PaLM 파인 튜닝 + 생성 모델의 Vertex AI 공개부터 시작하여 OpenAI의 GPT-4 발표, 마이크로소프트의 Bing이 이미 GPT-4를 사용 중임을 공식화, Anthropic의 claude 봇 정식 공개까지 모두 12시간 안에 일어난 날이었다.
그날 오전 OpenAI에서 공개한 GPT-4 테크 리포트를 리뷰한 후, 기술적으로 인상적이었던 점에 대한 글을 페이스북[1] 글에 남겼다. 댓글이 달렸다. "내 생전에 이게 될까 하던 것들이 현실화하는 걸 보는 기쁨과 아픔이 있습니다.." 답글을 남겼다. "이젠 아무도 튜링 테스트에 관심이 없죠. 1년 사이에 와우포인트 없이 당연히 넘는 거 아니야? 가 되었어요."
막상 키보드를 마주하니 지식을 정리하는 일은 이미 사람의 손을 떠난 것 같다. 기록의 의미를 찾아 사람의 이야기를 두드려본다.
외계어가 안 되도록 인공 신경망에 대하여 이 글을 이해하는데 필요한 내용만 짚고 가자.
신경세포(뉴런) 사이의 연결을 모사한 프로그램을 인공 신경망이라고 부른다. 뉴런 들을 층으로 묶고, 이를 겹치면서 앞뒤 층의 뉴런들과 연결을 만드는 식으로 설계한다. 딥 러닝은 인공 신경망 내의 층 개수가 많을 때 붙이는 표현이다. 다양한 인공 신경망 결과물 들을 딥 러닝 모델이라고 하며, 좀 있어 보이도록 그냥 AI 모델이라고도 한다.
뉴런 간의 연결 강도들을 파라미터라고 한다.[2] 연결 강도의 개수를 파라미터 수라고 한다. 파라미터 수가 많을 수록 차지하는 메모리가 늘어나므로 모델이 커진다는 표현을 쓴다. 인공 뉴런들을 연결하고 입력 데이터에 대한 출력이 원하는 형태가 나오도록 뉴런 사이의 연결 강도를 조정하는 것을 모델 훈련이라고 부른다. 훈련이 끝난 인공 신경망은 엄청나게 높은 차원의 불연속 상태 공간을 흉내 낼 수 있게 된다.
여기 까지가 기본 용어이다. 그럼 언제 이야기부터 떠올려 볼까.
2015년.
래블업을 창업했다. "랩 을 업" 이자 "lab | up" 을 이용해 중의적 표현으로 지은 이름이다.
박사 과정 내내 고생을 사서 하던 사람들이, 다른 사람들은 고생을 덜 할 수 있도록 계산과학 분야의 연구 자동화 플랫폼을 만들자는 목표로 모였다. 베어 메탈[3]에 작업 관리자[4] 얹어 어설프게 클러스터를 돌리는 대신 재현성과 이식성이 보장되는 연산 환경이 필요하다고 생각했다. 시작은 용감했으나 연구 플랫폼은 수요가 없었다. 창업 2개월만에 대학도, 연구 기관도, 장비는 쉽게 사지만 소프트웨어엔 돈 쓰는게 인색하다는 것을 배웠다. 학교엔 돈이 없고 시키면 알아서 해오는 대학원생은 많았다. 업계엔 아직 대규모 과학 연산 수요가 없었다. 동시에 우리처럼 학교에만 있다가 밖에 나온 박사들은 사람처럼 말하기 위해 재사회화 과정을 거쳐야 함도 힘들게 배웠다.
재사회화가 덜 된 우리의 말재간만 문제가 아니었다. 말하는 내용이 문제였다. 기술 기반의 과학 발전 이야기나 연산 기반의 혁신 가속 이야기는 어디를 가도 SF 이야깃거리였다. 지쳐가고 있었다. 그래도 사람은 보는 것만 보인다고 했던가. 딥 러닝 모델의 가능성이 분명 태동하고 있었다. 심지어 딥 러닝 기술과 결과물이 자본에 종속 되는 것을 막자는 여러 움직임이 시작되었다. 그 중 대표적인 기관이 OpenAI[5] 였다. 그러한 변화들은 우리가 맞는 방향을 가고 있다는 증거로 보였다. 일 년만 하면 방향이 조금 더 뚜렷해 질 것 같았다.
창업 만 일 년을 목전에 둔 시점에 딥 러닝에 대해 사회적으로 큰 관심이 생겼다. 2015년 연말 즈음 TensorFlow[6]가 세상에 나왔다. 플랫폼 프로토타입으로 만든 코딩 플랫폼의 첫 강의 자료로 TensorFlow 메뉴얼을 통째로 번역해서 올렸다. 알파고의 2016년 3월 대국[7]때 처음 서비스가 다운될 정도로 사람들이 몰려왔다. 그 때 그 대국이 아니었다면 아마 이 뒷이야기는 없었을 지도 모른다. 그 덕에 다행히 회사는 살아남았다.
거대 규모 연산을 수행하는 연구 플랫폼 데모가 필요했다. 연산 자원을 엄청나게 필요로 하며, 박사과정부터 취미로 잡고 있어 바로 다뤄볼 수 있던 주제가 언어 모델이었다. 2016년 우리가 만들던 플랫폼 위에 언어 모델을 올려 만든 챗봇을 발표했다. 많은 사람들의 관심을 끌었다.[8][9] 챗봇은 금방 사내 프로젝트로 자리 잡았다. 하지만 일 년이 조금 넘은 시점에 챗봇 프로젝트는 창고로 들어갔다.
2017년.
그 해 가을 래블업은 사이드 프로젝트로 병행하던 언어 모델 개발을 접고 AI 클러스터 운영 플랫폼인 Backend.AI 에만 전념하기로 결정했다.
구글 초청으로 방문한 폴란드 크라쿠프에서 본 구글 어시스턴트 데모의 충격이 컸다. 열 분 남짓한 분들과 함께한 그 미팅의 주제는 언어 모델이 이제 자원 전쟁의 일부가 되었으며, 대규모 투자 없이는 이후의 변화를 따라갈 수 없음을 너무 확실하게 보여주었다. 구글 개발자 서밋에 함께 참석한 곽동현님과, 같은 시기 같은 장소에서 열린 학회 참석차 크라쿠프에 방문하셨던 이상훈님과 함께 저녁식사를 함께 하며 이야기를 나누었다. "여기서도 물리학 분야에서 봤던 그 미래가 시작될 것 같아요."
맨해튼 프로젝트는 팔십 여년 전 기술이 힘이 됨을 핵무기를 통해 전인류를 대상으로 강렬하게 어필했다. 물리학은 더이상 낭만의 대상이 아니라 투자의 대상이었다. 그렇게 시작된 생계형 물리학자의 시대는 우주 계획과 입자물리학으로 연결되는 거대 과학 분야로의 변화로 이어졌다. 그 날 밤 숙소로 귀가하며 함께하는 멤버들에게 메세지를 보냈다. "우리 이제 언어 모델 개발은 하지 말죠. 이제부턴 따라가려면 돈이 부족할 겁니다."
역사는 항상 반복된다. 그렇다면 앞으로 어떤 변화가 있을지 예상하는 것도 어렵지 않다. 단지 시점이 문제일 뿐이다. ‘아마도 변곡점은 2020년일것 같다’는[10] 의견을 동료들과 나누었다. 그 때 즈음이면 흑자가 가능하지 않을까? 회사의 목표가 되었다. 언어 모델은 LSTM 기반의 기계 번역을 넘어 한 걸음 발전하고 있었다. 알파고 쇼크는 사람들이 AI에 대해 지어내는 수많은 농담들의 아이디어가 되었다. 엄청나게 많은 "AI 기업" 들이 생겼다. 하지만 그 대부분은 2년 후 코인회사나 메타버스 회사가 되었다.
2018년.
트랜스포머[11]구조는 온갖 언어 모델의 다양한 부분에 적용되기 시작했다. ‘무엇’ 에 집중할지 알려준다는 점에서 트랜스포머는 모델의 컨텍스트 기억과 유지, 강조에 대한 많은 부분을 해결해주었다. 정보를 상태공간에 넣는 인코딩에 쓸 수도, 상태공간에서 정보를 추출하는 디코딩에 쓸 수도 있었다. 구글은 BERT[12]를, OpenAI는 GPT를 내 놓았다. 두 모델 모두 트랜스포머 기반의 언어 모델이었으나, 집중하는 포인트는 각각 인코더와 디코더로 달랐다. BERT은 인코더 부분에 집중하였으나 GPT는 디코더를 통해 출력을 입력으로 연계하는 식으로 인과 관계에 대한 메모리를 만드는 아키텍처를 구현하여, BERT와 구조적인 차이가 있다. BERT와 GPT, 이후 등장하는 T5는 더이상 라벨링된 말뭉치를 쓰지 않았다. 트랜스포머를 이용하여 말뭉치 자체에서 언어의 구조를 학습시킨 후, 이후 미세 조정하는 방식으로 언어모델을 만들 수 있었다. 데이터에 인간의 개입이 없는 AI 모델 개발 철학인 End-to-end 훈련과는 여전히 거리가 있었다. 하지만 데이터 확보에 대한 개념이 그 시점부터 달라졌다. 라벨링보다 양이 중요하다. 범용 언어 모델의 시작이었다.
BERT는 엄청나게 빠른 속도로 기존에 존재했던 대부분의 언어 모델을 대체할 수 있을 것으로 보였다. 압도적인 성능은 문서 작성, 챗봇, 문서 분석 등의 다양한 언어 작업들에 적용하여 큰 개선을 만드는 것에 대한 기대를 품게 했다. 하지만 BERT는 2018년 당시에는 훈련 과정을 상상할 수 없을 만큼 큰 모델이었다. 구글 밖에서는 아무도 못 만들 것 같은 모델 크기에 벽 구경하는 느낌을 받았다. 그것도 찰나였다. 페이스북이 BERT 논문을 바탕으로 사이즈를 더 키운 RoBERTa를 순식간에 발표했다.[13] TPU가 꼭 필요한 것이 아님을 알림과 동시에, 이 레이스엔 자본이 있는 누구나 참여가 가능함을 알리는 상징적인 행동이었다.
GPU를 사용해 모델 크기를 키우는 첫 병목은 GPU의 메모리에서 등장했다. 모델은 더이상 GPU 기기 한 장에 담거나, 한 장으로 시간 내에 훈련시킬 수 없었다. 경우에 따라 여러 대의 GPU에 모델을 나눠 담거나 여러 컴퓨팅 노드를 사용해 모델을 분산 훈련하는 것이 일반적이 되었다. Horovod, Distributed TensorFlow들이 빛을 발하기 시작했다.
기술은 계속 발전하고, 동일 연산 자원에 들어가는 비용은 계속 감소한다. 이런 발전이 지속된다면 결국 AI의 대중화가 진행 될 것이고, 그 시점에서 가장 중요한 포인트는 다른 모든 시장에서도 동일한 가격 경쟁력이 될 것이었다. "AI도 가격 경쟁력 시대가 올 것이다" 써 붙였다. 그 때 까지 망하지 않기를 기원하면서.
- BERT, 3억 4천만 파라미터
- GPT, 1억 1천만 파라미터
2019년.
몇 년 간 분산 처리 및 분산 훈련 플랫폼을 만들면서 가끔 ‘우리가 아무런 수요가 없는 플랫폼을 만들고 있는 것이 아닐까’ 하는 생각을 종종 했었다. 2019년 이후로는 그런 생각이 들지 않았다. 2020년부터는 그런 생각을 할 시간이 없었다.
연초가 되자마자 OpenAI는 GPT-2[14]를 발표했다. 위상공간에서 정보를 추출하는 디코딩 과정에 집중한 GPT 모델은 굉장히 안정적인 텍스트 생성 기능을 보여주었다. GPT-2는 누구나 언어모델을 만들어 볼 수 있는 기초 코드가 되었다. PyTorch, horovod와 Distributed TensorFlow 등과 함께 코드 접근의 어려움은 엄청난 속도로 줄어들고 있었다. 2019년 Google의 XLNet과 T5 (Text-To-Text Transfer Transformer) 언어 모델은 인류가 넘을 수 없다고 생각했던 모델 크기의 강을 (자본을 써서) 넘은 것처럼 보였다. 구글은 T5를 훈련하려면 TPU 급의 엄청난 연산 자원이 있어야 함을 강하게 어필하며, 시중에서 노력하면 살 수 있는 NVIDIA의 V100으로는 몇 백장이 필요함을 강조했다. (V100 한 장에 1500만원 정도의 비용이 들었다.) T5 또한 BERT처럼 논문만 공개하고 모델은 공개하지 않았다. 2017년 BERT 공개 때 (훈련이 덜 끝나서) 바로 모델을 함께 공개하지 않았는데 그 틈에 페이스북이 동일한 모델로 규모를 키워 훈련한 RoBERTa를 선제적으로 발표했던 아픈 경험이 있다. 그런데도 공개를 하지 않은 것에 비추어 보면, 구글에겐 구글 밖에서 그 모델 훈련을 재현하기 어려우리라는 자신감이 있었을 것이다.
2019년 말 우린 오랜 떠돌이 생활을 마치고 단독 사무실을 장만하여 거처를 옮겼다. 거대 딥 러닝 모델의 시대가 올 것이고 그러려면 우리도 그에 대응하여 더 많은 사람들과 함께해야 할 것이었다. 언어 모델의 크기는 해마다 열 배 씩 커지고 있었다. 그렇게 많지도 않은 짐들을 박스에 실어 나르며 스스로에게 반문해보았다. 이대로는 3년이면 모델 크기가 천 배가 커지는 것인데, 우리는 천 배의 워크로드를 감당할 준비가 되어 있을까?
- RoBERTA, 3억 5천만 파라미터
- Transfer ELMo, 4억 6천만 파라미터
- GPT-2, 15억 파라미터
- T5, 110억 파라미터
2020년.
사무실을 이전한지 두 달이 흘렀다. 겨울은 길었다.
2월이 끝나가도록 이사를 마친 새 사무실의 인테리어를 마무리하지 못했다. 2월 말에 온다던 사무실 벽체 마감재는 중국에서 끝내 건너오지 않았다. 회사의 모든 로드맵이 바뀌었다. 미국 출장은 전부 취소되었다. 인테리어가 덜 끝난 사무실은 그 후 2년동안 덜 끝난 채로 빈 공간을 지켰다.
COVID-19는 회사의 미래 뿐 아니라 사람들도 갈라놓았다. 첫째 아이는 마루에 비스듬히 기대 누워 EBS 방송 텔레비전에 나오는 호랑이 선생님을 보면서 초등학교 생활을 시작했다. 방바닥에서 굴러다니는 어린이 옆에서 함께 굴러다녔다. 그동안 얼마나 바빴던 걸까? 남매를 키우는데도 코로나로 한 집에 갇히고 나서야 아빠라는 실감을 했다. 슬프면서도 이상하게 안정되는 그 시간이 얼마나 갈 지 궁금했다.
그 해 OpenAI에서는 GPT-3를 공개했다. GPT-2와 이론적 토대는 크게 달라지지 않았다. 하나 크게 달라진 것이 있었으니, 크기였다. 1750억 파라미터의 크기를 가진 엄청난 규모의 모델이었다. 모델 훈련 뿐 아니라 단순히 GPU 위에 적재하는 것 만으로도 NVIDIA의 슈퍼컴퓨팅 노드인 DGX-2 한 대를 차지할 것으로 예상되었다. GPT-2와 달리 이번에는 언어 모델의 코드도, 훈련이 끝난 언어 모델도 공개하지 않았다. 와우. 딥 러닝 분야에 비공개라니. 무엇인가가 달라지고 있었다.
모델 크기 지상주의에 반발하는 움직임이 있었다. 딥 러닝 모델의 크기가 커질수록 성능이 따라서 커지는가? 구글의 연구진들과 메타의 연구진들 간의 논쟁이 시작되었다. 한 쪽에서는 그렇다, 다른 한 쪽에서는 아니다 로 나뉘어 논문의 형식을 빌린 말싸움이 벌어졌다. 그러나 2019년부터 2021년까지 이어진 이 논쟁은 오래가지 못했다. 언어 모델 크기를 키우면서 재미있는 현상들이 발견되었다. 딥 러닝 모델에는 스케일 법칙이 존재했다.[15] 1000억 파라미터를 전후하여 무엇인가가 일어났다. 모델의 구조와는 상관없이, 1천억 파라미터를 넘기는 어떤 시점부터 언어 모델은 말을 이어 지어내는 것을 넘어 기대하지 않았던 일을 하기 시작했다. 충분히 큰 모델들은 컨텍스트를 유지한채로 복잡한 일들을 처리할 수 있었다. 컨텍스트 내 학습 (in-context learning)이라고 부르는 현상은 모델 훈련 없이도 여러 지식을 즉석에서 학습하고, 논리적인 결론을 유도할 수 있었다. 거대 언어 모델 (Large Language Model) 과 이를 둘러싼 레이스의 시작이었다.
언어 모델이 크기 문제를 둘러싼 논쟁과 발견에 동시에 빠져 있는 동안, 의학 응용 분야의 딥 러닝 도입은 엄청난 속도로 시작되었다. 딥 마인드의 알파폴드2는 몬테카를로 시뮬레이션 없이 예측만으로 구조 예측을 높은 정확도로 해 냈다. 프로테오믹스 분야의 주요 난제였던 필요 계산 량을 거의 천분의 일 수준으로 줄였다. 코로나 바이러스의 변이 예측, 합성물질 중 백신 후보 물질 필터링, 새로운 합성 구조 예측 등의 미시적인 단계부터 전파 경로 예측과 감염자수 예상까지 AI 모델의 응용은 다양한 분야로 확장되었다. 모두가 이전 같으면 두들겨볼 돌다리들을 일단 밟고 건너기 시작했다. 자원 규모의 눈덩이는 엄청난 속도로 굴러갔다.
하반기가 되자 모델 훈련 속도를 올리기 위한 연산 자원 규모의 이야기가 오갔다. 연구 목표 달성을 위한 기존의 딥 러닝 연산 자원 확보 경쟁과는 달랐다. 규모는 운영과 최적화 수요를 낳았고, 그 덕에 우리는 2017년 예상했던 ‘2020년부터 흑자 달성’ 을 이룰 수 있었다. 플랫폼 수요가 늘었지만 동시에 강제로 재택 근무에 들어가야 했고, 대부분의 의사소통은 문자가 되었다. 이후 많은 사람들이 함께 하게 되었지만 그 중 몇몇은 2023년 초 워크샵 때 까지 서로 한 번도 만난 적이 없는 동료가 될 운명이었다.
연산 자원 규모가 커지고 있었고 모두 GPU에 주목했지만, 모델이 커지고 GPU 대수가 늘어나자 GPU가 발목을 잡는 부분이 적어졌다. 가장 발목을 잡는 부분은 데이터 저장소, 스토리지였다. 훈련시에는 몇 백대의 기기에 데이터를 공급해야 한다. 스토리지의 절대 속도가 GPU 개수의 증가를 충분히 따라잡지 못했다. 2020년 우리가 풀어야 했던 문제의 대부분은 스토리지에서 발생하는 병목에서 나왔다.
딥 러닝 분야의 속도전보다는 느릿했지만 더 깊은 다른 종류의 변화가 찾아왔다. 온라인에서만 만들어진 인간관계를 보통 인간관계와 같게 받아들이는 것이 세대를 불문하고 모든 사람들에게 자연스럽게 되었다. 그러다 보면 문득 생각이 드는 순간이 찾아온다. ‘반대쪽에 있는 것이 사람이든 아니든, 말만 잘하면 나에게 큰 차이가 있는 존재인가?’
- T-NLG, 170억 파라미터
- GPT-3, 1750억 파라미터
- Gshard, 6000억 파라미터
2021년.
T5에 이어 GPT-3가 불러온 거대 언어 모델 개발의 레이스는 점입가경이었다. 크기가 커져도 성능향상이 계속되는지 알아보려면 더 크게 만들어 보는게 가장 간단하기 때문이다. 거대 언어 모델이 왜 특이한 결과를 만들어내는가에 대한 다양한 이론들이 등장했지만 여전히 답은 오리무중이었다. 상태 공간이 충분히 크면 정보를 다루는 과정에 일종의 상전이가 생긴다는 가설이 등장했다. 트랜스포머가 어째서 이러한 작업을 잘 처리하는가에 대한 답의 후보로는, 트랜스포머 구조가 그래프 신경망 (Graph Neural Network)의 특수해이기 때문이라는 설명이 있었다.[16] 2018년부터 주목받은 그래프 신경망은 대상의 관계를 학습하는 신경망이고, 그래프 신경망이 시맨틱스나 텍소노미 처리에 매우 강력할 수 있음이 알려져 있다.
분산 모델 훈련을 위해 속도를 희생하는 대신 더 큰 모델을 훈련할 수 있게 하는 마이크로소프트의 DeepSpeed 프레임워크가[17] 점점 널리 쓰이기 시작했다. DeepSpeed의 특징인 ZeRo 최적화기는 CPU부터 GPU까지 다양한 하드웨어에 워크로드를 분배하고, 모델 상태를 분할 처리함으로써 이를 통해 GPU의 메모리 사용량을 줄이는 과정에 집중했다. 오픈소스 언어 모델들도 여럿 등장했다. OpenAI는 더이상 모델을 공개하지 않고, 모델 사용의 독점권을 팔고 있었다. 접근성이 낮아져 다양한 언어 모델들이 등장했지만, 규모의 면에서 거대 언어 모델에 미치지 못했기에 높은 기대치를 만족시킬 수 없었다.
사용자들이 다루는 GPU의 규모가 쉽게 세 자릿수를 넘기 시작했다. 기관에서 실제로 돌리는 워크로드에 맞는 거대 규모의 테스트가 다양하게 필요해졌다. 2017년 말 취미의 영역으로 보냈던 언어 모델을 시스템 테스트 용도로 다시 돌려보기 시작했다. 플랫폼 위에서 전세계에서 가장 큰 포르투갈어 언어 모델이 태어났고, NVIDIA GTC 컨퍼런스의 키노트에서 잠시 지나가며 소개되었다. 같은 컨퍼런스에서 "BERT를 60초만에 파인튜닝하기"라는 튜토리얼 세션이 열렸다. BERT는 더이상 거대 모델이 아닌 연습 대상이었다.
모델 크기가 급속도로 커지면서 풀어야 하는 문제도 바뀌었다. 여러 대의 GPU들에 모델을 나눠 적재해야 하는 상황이 되자 GPU간의 통신이 엄청나게 중요해졌다. GPU들은 한 노드 안에서 메모리 접근을 공유하는 것을 넘어 여러 노드에 걸쳐 통신하는 경우가 늘어났다. 초당 200Gb를 전송하는 인피니밴드를 GPU마다 하나씩 붙인 GPU 네트워크가 당연하게 쓰이기 시작했다.
복잡하고 정신 없는 변화속에 살며 생각거리가 하나 생겼다. 거대 언어 모델이 ‘언어’ 를 배우는 과정은 분류되지 않은 말뭉치를 대상으로 한다. 그 과정에서 거대 언어 모델이 ‘학습’ 하는 것은 무엇인가? 언어의 구조를 학습하기 위한 용도로 말뭉치를 쓰지만, 언어는 정보와 떼 놓을 수가 없다. 실제로 지식을 가르치지 않은 언어 모델들도 질문에 곧잘 대답하지 않는가? 애초에 언어는 인간이 정보를 서로 간에 전달하기 위한 프로토콜이다. 프로토콜로 전달된 데이터에 대한 답을 연산하여 다시 데이터로 답을 하는 것이 대화 과정이다. 그렇다면 우리가 ‘대화를 잘하는 AI’를 개발해 냈다고 느끼는 것은 정말 언어를 잘 만드는 AI 모델을 개발한 것일까, 그렇지 않으면 그 너머의 무언가를 만든 것인가?
내년은 기존의 서비스들을 AI로 개선한 서비스들이 아닌, AI로만 가능한 서비스들의 원년이 될 것이었다. 하지만 거대 언어 모델의 결과물들을 서비스하려는 생각은 아직 아무도 하지 않고 있었다. 그건 미래의 누군가가 할 일이었다.
- GPT-J, 60억 파라미터
- LaMDA, 1600억 파라미터
- PanGU-alpha, 2000억 파라미터
- Gopher, 2800억 파라미터
- Pathways, 5300억 파라미터
- Switch-C, 1.6조 파라미터
- Wudao 2, 1.75조 파라미터
2022년.
COVID-19 엔데믹은 엄청난 후폭풍을 만들어내고 있었다. 코로나로 인한 특수로 성장한 수많은 IT기업들과, 오프라인을 온라인으로 전사하려고 노력하던 수많은 회사들은 갑자기 신기루처럼 사라진 메타버스 수요에 망연자실했다. 딥 러닝 분야는 별다른 수익원을 만들어내지 못하고 있었다. 수없이 많은 회사에서 AI 팀의 크기를 줄이기 시작했다. 많은 연구자들이 밖으로 나왔다.
AI에 대한 기술적 발전이 필요가 없어진 것은 아니었다. AI 개발의 저변에 깔린 거대한 규모의 영향력이 다른 모든 발전을 압도했기 때문이었다. 거대 과학의 시대에는 장비가 가장 비쌌듯 말이다. 혁신이 규모에서 나오기 시작한지 3년이 흐른 결과였다. 거대 언어 모델에서 발생하는 특이점이 창발 현상의 일종으로 간주되기 시작했다.[18] 소규모의 연구들은 더이상 매력적이지 않았다. 딥 러닝 분야의 연구자들은 불안해했다. 줄어든 관심이 문제가 아니었다. GPU 달랑 몇 대로 어떤 연구를 할 수 있을지에 대한 가벼운 절망감 한 스푼이 더 문제였으리라.
그럼에도 불구하고 연초부터 등장한 여러 혁신들이 있었다. 잘 정의된 데이터로 훈련하는 것에 더해서, 답변들을 사람이 실제로 평가하여 더 나은 답변에 가중치를 주는 모델 튜닝 방식이다. 사람을 중간에 넣는 방식으로 강화학습을 언어 모델 훈련에 적용한 RLHF (Reinforcement Learning by Human Feedback) 방식은 2022년에 InstructGPT에 와서 같은 크기의 언어 모델 성능을 엄청나게 개선하는 결과를 보였다. 수많은 모델들이 RLHF를 적용하기 시작했다. 모델 크기에 스케일 법칙이 있다면 그걸 응용하지 못할 이유가 없을 것이었다. 3월에는 모델 훈련에 들어가는 비용을 엄청나게 줄일 수 있는 µ-Parametrization[19]이 발표되었다. 작은 모델에서 미리 큰 모델의 하이퍼파라미터를 예측하는 것이 가능하다는 연구의 결론은, 거대 모델을 만들 때 드는 파라미터 탐색 수고를 상대적으로 엄청나게 줄였다. 이 연구는 GPT-4 훈련의 기반이 되었다.
미국-중국 무역 갈등의 여파로 미국은 중국을 대상으로 한 엔비디아의 AI 훈련용 GPU 수출을 금지시켰다. 며칠 지나지 않아 중국은 자체 반도체만으로 훈련했다는 거대 언어 모델을 공개했다.[20] 얼마 후 엔비디아는 GPU 네트워킹 기능을 제거한 같은 GPU를 이름만 살짝 바꾸어 수출을 재시작 했다. DALL-E2와 Stable Diffusion 모델로 인해 AI 서비스 분야로의 관심사는 갈수록 커졌고, 이미지 등의 생성 AI 모델 시장은 격변하기 시작했다.
11월 말 OpenAI는 대중을 대상으로 챗봇 서비스를 열었다. GPT-3의 개선 버전인 GPT-3.5를 기반으로 한 모델이었다. 특이한 점은 인간 언어 모델에 프로그래밍 코드를 훈련시키는 방식으로 프로그래밍을 잘 하는 언어 모델을 만드는 대신, 프로그래밍 언어 데이터로 훈련된 모델에 인간 언어를 훈련시키는 방식으로 만들어진 모델이라는 점이었다. 거대 언어 모델의 논리 구조 훈련에 프로그래밍 코드 훈련이 어떤 식으로 영향을 주는 것이 분명해 보였다. 12월 초, ChatGPT로 이름 붙여진 서비스는[21] 대중 모두에게 열려 있는 엄청난 접근성을 바탕으로 거대 언어 모델에 대한 관심을 불러일으켰다.
연말이 되자 직장을 잃을 것 같던 AI 분야의 지인들이 실시간으로 갑자기 좋아지는 지원에 당황해 했다. 엔데믹의 감원 열풍을 타고 AI 조직 사이즈를 줄여 나가던 회사들의 움직임이 멎었다. 한 주 전까지 연구 조직 축소와 결과물 평가를 압박하던 수장들이 AI를 외쳤다. 모델 서비스 프레임웍에 필요한 요구조건들이 갑자기 바뀌기 시작했다. 거대 언어 모델들의 목표가 상용화가 되었다. 모델 크기가 너무 커서 더이상 훈련과 서비스용 연산 자원을 구분하는 의미가 없어졌다. 원래 서로 다른 영역에 있던 AI 모델 훈련과 서비스가 갑자기 하나로 합쳐졌다.
더 큰 규모의 문제들이 기다리고 있다. 거대 언어 모델은 엄청난 전력을 소모한다. GPU는 어마어마한 전력을 소모한다. CPU에 비하면 전력 대 성능비가 엄청나게 좋은 기기이지만, 절대 전력 소모량이 너무 크다. NVIDIA A100 8대가 내장된 노드[22]는 약 7kW를, 2023년 기준 가장 성능이 높은 H100 GPU 8대가 내장된 노드는 약 12kW를 소모한다.[23] 기기를 설치하려면 이제 건물부터 지어야 한다는 말이 2019년 이후로 농담이 아니게 되었다. 2021년 브라질에 위치한 슈퍼컴퓨팅 클러스터에서 전력 문제를 겪은 후, 우리는 플랫폼을 통째로 Arm기반으로 이식했다. 몇 년 후 전력 문제가 이슈가 될 것이란 생각에서 였다. 마이크로소프트의 경우 전력 비용을 고려하여 아예 GPU 센터를 수력발전소 옆에 지은 경험을 공유하기도 했다.[24]
주말이 줄어들었다. 할 일이 너무 많아졌다. 시간이 없었다. 우리만 그런 것이 아니었다.
이제 모두에게 시간이 없었다.
- Flan-T5, 1100억 파라미터
- GLM-130B, 1300억 파라미터
- OPT-175B, 1750억 파라미터
- BLOOM, 1760억 파라미터
- PaLM, 5400억 파라미터
2023년.
2월 8일, 17시간 간격으로 마이크로소프트와 구글이 각각 거대 언어 모델 기반의 서비스에 대한 발표를 진행했다. 마이크로소프트는 자사의 검색엔진인 Bing에도, 오피스 스위트에도, 윈도우 11에도 전부 GPT 모델을 도입하겠다는 계획을 발표했다. 구글은 LaMDA 기반의 Bard를 발표했다. 바이두는 어니봇을 공개했다. 두 회사는 만져지는 서비스 대신 미래를 먼저 홍보했다, 써 볼 수 없는 도구는 상대적으로 흥미를 끌지 못했다.
언젠가 올 것이라고 생각했던 "AI 가격 경쟁력 시대"가 왔다. 그런데 가격 자체의 허들이 너무 높았다. ChatGPT나 Bard는 경제논리로는 설명할 수 없을 정도로 고가의 서비스 비용을 소모한다.[25] 경쟁이 불러온 너무 빨리 당겨온 미래에 해당된다. 모든 사람들이 그 미래를 손으로 만져본 후였다. 기대치가 엄청나게 올라간 것이 문제였다.
갑자기 다가온 거대 언어 모델 서비스는 또 다른 병목을 만들고 있다. CPU 기반으로 인퍼런스하는 서비스는 CPU 코어당 램 대역폭이 크게 줄어든 여파를 받았다. 하나의 CPU에 올라가는 코어 개수가 급격하게 늘어났기 때문이다. GPU 기반으로 인퍼런스하는 서비스는 모델이 담기는 GPU 메모리의 용량과 속도가 모두 부족해졌다. 언젠가 올 것이라 여겨졌던 램의 병목이 거대 언어 모델 서비스의 상용화로 갑작스럽게 직접적인 문제가 되었다. 2021년부터 예상된 병목이었다. 인텔, AMD, 엔비디아 등의 CPU, GPU 개발사들은 이 상황을 미리 준비했다. 인텔의 Xeon Max, AMD의 MI200과 NVIDIA GraceHopper 등, 2022년말부터 2023년 초에 걸쳐 다양한 하드웨어를 발표했다.
AI 모델이 엄청 크면 연산 능력이 상대적으로 덜 중요해진다. NVIDIA A100은 첫 발표 때 40GB 모델을 공개했지만, 1년이 되는 시점에 80GB 메모리 모델을 다시 발표했다. 훈련 과정이든 인퍼런스 과정이든, 모델을 메모리에 올렸다 내렸다 하기엔 크기가 너무 컸다. 또한 거대 언어 모델을 "인퍼런스" 하는 과정은 GPU나 NPU에 대한 사고의 역전을 불러왔다. 끊임없이 가중치 행렬을 갱신해야 하는 훈련 과정과 달리, 인퍼런스 과정은 메모리에 올린 고정된 모델 구조를 따라 입력 데이터를 흘려 결과를 보는 식으로 동작한다. 따라서 연산의 비중이 엄청나게 줄어들고 메모리의 속도가 엄청나게 중요해지고 있다. NVIDIA는 2022년 하반기 80GB의 메모리 용량으로 H100을 발표했다. 그러나 반 년도 지나지 않아 실제 H100을 수령한 사람도 거의 없는 시점에 188GB 용량의 H100 NVL을 내놓았다.[26]
메타는 개인용 서버에서도 무리하면 돌려볼 수 있는 언어 모델인 LLaMA[27]를 내놓았다. LLaMA는 온갖 라이선스 제약이 붙어있음에도 불법 유출본으로 퍼졌고, 스탠포드에서 파인 튜닝한 Alpaca-LLaMA는 (상대적으로) 작은 모델로도 상당한 성능을 발휘할 수 있는 가능성을 보였다. 이후 라이선스 문제 없는 다양한 언어 모델들이 계속 공개되며[28] 오픈 언어 모델들의 가능성의 불을 지피고 있는 동시에 어느 정도 파라미터 크기의 모델이면 만족할 수 있는가에 대한 새로운 물음을 불러 일으켰다. 모델이 작으면 창발 현상이 발견되지 않고 멀티 모달 모델로 쓸 수가 없다. 모델이 크면 실제 운영에 너무 큰 돈이 든다.
거대 언어 모델은 어디까지 커질 수 있을까. 더 큰 모델에 대한 준비의 흔적은 사방에서 보인다. 분산 모델 훈련에서 가장 자주 쓰이는 마이크로소프트의 DeepSpeed 프레임워크는 2021년 NVMe SSD를 활용하여 1조~10조 파라미터를 훈련할 수 있는 확장인 ZeRO Infinity[29]를 추가했다. 그러나 이렇게 많은 파라미터를 가진 모델들은 실제 서비스가 불가능하다. 실질적으로는 서비스 가능한 모델 크기의 한계를 정해 두고 그 안에서 파인 튜닝하는 방식의 접근이 진행된다. ZeRO 등의 기술은 초거대 스케일의 모델을 훈련하기 위해 개발되었지만, 매우 적은 자원으로 파인 튜닝을 할 수 있게 하므로 다양하게 응용되고 있다.
- PaLM-e, 5600억 파라미터
- Pythia, 12억 파라미터
- LLaMA, 65억 파라미터
그 외 수많은 ~ 120억 파라미터의 모델들
20억~120억 파라미터 정도의 다양한 ‘말을 잘하는’ 모델들에 대한 다양한 시도들이 하루에 몇 개씩 등장하고 있다. LLaMA는 의도치 않게 개인이 만져볼 수 있는 파운데이션 모델을 널리 퍼뜨렸다. 보통 사람들이 만족할 만한 대화를 만들어내는 "말 잘하는 모델"의 수준은 예전에 달성했음을 수많은 사람들이 깨닫게 되었다. 어느정도 컴퓨터에 지식이 있고 돈을 쓸 수 있는 개인이나 조직, 단체들이 언어 모델 파인 튜닝을 다양한 방법으로 시도할 수 있는 용기가 생겼다.
동시에 말을 잘하는 정도를 넘어선 모델들의 연산 자원 요구량은 차원이 다르게 크다는 것도 함께 알려지는 중이다. 약 반 년 가까이 새로 등장하는 거대 언어 모델의 크기는 6000억 파라미터 미만으로 유지되고 있다. 더 이상의 크기 확장에 천착할 만큼의 결과가 등장 하지 않는 것일 수도 있고, 현재의 하드웨어 및 비용이 만들어낸 기술 장벽이 가로막고 있을 수도 있다. 또는 그 크기가 상용화가 불가능한 영역에 걸쳐 있기에 이제 적절한 크기 이하로 유지하려는 움직임일수도 있다.
2015년 GPU 4대를 운영하는 오픈소스로 시작한 Backend.AI는 2023년엔 몇 천 대 규모의 GPU를 다루며 곧 만 대를 바라본다. 우리를 포함한 모든 환경이 엄청나게 변했다. 문제들을 캐면 캘수록 마치 감자 줄기처럼 끝없이 다음 문제가 이어 나온다. 거대 언어 모델의 크기에 얽혀 수많은 문제들을 풀며 살아가다가, 이 문제의 끝은 어디에 다다를까 가끔 생각한다.
생각이 많은 밤이면, 모르는 사이에 관심에서 멀어져버린 튜링 테스트 마냥 우리 모두가 어떤 지점을 지나버렸을지도 모른다는 생각이 종종 든다. 풀어야 했던 문제를 풀었거나, 아직 풀면 안되는 문제를 풀어버렸을 것 같다. 설렘이 현기증이 되고 기대가 우울함이 되는 복잡한 감정이 오간다.
- [1] 페이스북 글
- [2] 뉴런 사이의 연결 뿐 아니라 다양한 파라미터들이 있으나 모델 크기가 크면 상대적으로 작으므로 편의상 엄청나게 단순화하였다.
- [3] 가상 머신 등이 아닌 날 것 그대로의 물리적 컴퓨터. 클라우드에서는 관리 소요 감소 및 유연한 자원 관리를 위해 베어 메탈에 하이퍼바이저를 올려 가상 머신을 운영하거나, 컨테이너 기반으로 관리하는 것이 일반적이다. 비용 문제로 인하여 소규모 연구소 및 대학 등에는 아직 대중화되지 않았다.
- [4] Job Scheduler. 프로세스들을 실행하고 관리하는 과정을 돕는 소프트웨어. Slurm 등이 보편적으로 쓰인다.
- [5] https://www.openai.com (2015). 2020년 이후 OpenAI는 구현체를 공개하지 않았으며, 2023년 이후에는 논문 대신 테크 리포트 정도만 제공하고 있다. OpenAI가 아직 Openness를 추구하는 AI 개발 조직인지에 대해서는 2023년 현재 여러 의견이 있다.
- [6] https://www.tensorflow.org, Google (2015)
- [7] "AlphaGo - The Movie" 당시 분위기를 느끼지 못한 분들은 다큐멘터리를 참고 (2018)
- [8] J.Shin "Creating AI chat bot with Python 3 and Tensorflow" PyCon APAC 2016 (Korean) / (English) (2016) 여러 나라에서 소개할 기회가 있어 동일 주제로 다양한 발표 영상이 있으나 이 두가지가 최초의 발표이다.
- [9] J.Shin "전자양의 꿈을 꾸는 안드로이드: Python과 NLTK, TensorFlow를 이용한 챗봇 감정모형 구현" PyCon KR 2017 (2017)
- [10] 구글 스타트업 캠퍼스에서 인터뷰한 기록이 유튜브에 남았다.
- [11] "Transformer (machine learning model)"
- [12] J. Devlin et al., "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding" Arxiv:1810.04805 (2018)
- [13] Y. Liu et al., "RoBERTa: A Robustly Optimized BERT Pretraining Approach" Arxiv:1907.11692 (2019)
- [14] A. Radford et al., "Language Models are Unsupervised Multitask Learners", (2019)
- [15] J. Kaplan et al., "Scaling laws for neural language mod- els" Arxiv:2001.08361 (2020)
- [16] C K. Joshi, "Transformers are Graph Neural Networks", The Gradient (2020)
- [17] Microsoft, "DeepSpeed: Extreme Speed and Scale for DL Training and Inference", (2019)
- [18] J. Wei et al., "Emergent abilities of large language models" Arxiv:2206.07682 (2022)
- [19] E.Hu, G. Yang, J.Gao, "Tensor Programs V: Tuning Large Neural Networks via Zero-Shot Hyperparameter Transfer" Arxiv:203.03466 (2022)
- [20] A Zeng et al., "GLM-130B: An Open Bilingual Pre-trained Model" Arxiv:2210.02414 (2022)
- [21] OpenAI, "Introducing ChatGPT" (2023)
- [22] 랙 이라는 데이터센터용 가구에 설치하는 컴퓨터 한 대를 노드 하나로 간주하면 된다. A100 GPU 8대가 설치된 노드 하나는 보통 랙 안에서 6칸에서 8칸을 차지하며, 랙 하나에는 40칸 내외의 노드를 설치할 수 있다.
- [23] 일반적인 대학 건물의 한 개 층 전력이 100kW 내외이다.
- [24] "NVIDIA Teams With Microsoft to Build Massive Cloud AI Computer" (2022)
- [25] 개인적인 추산에 따르면 ChatGPT의 경우 GPT-3.5기준 원가는 월 42달러 이상이다. 계산 과정은 링크 참조. 페이스북 글
- [26] "NVIDIA H100 NVL for High-End AI Inference Launched" (2023)
- [27] H Touvron et al., "LLaMA: Open and Efficient Foundation Language Models" Arxiv:2302.13971 (2023)
- [28] 대표적으로는 ElutherAI의 Pythia-12B 모델에 자체 데이터를 결합한 Dolly 2 (2023) 등이 있다.
- [29] S. Rajbhandari et al, "ZeRO-Infinity: Breaking the GPU Memory Wall for Extreme Scale Deep Learning", Arxiv:2104.07857 (2021) 1조 파라미터 모델을 훈련을 위해 메모리 오프로드 없이 GPU에 올리려면 NVIDIA A100 GPU (80기가) 모델 기준으로 320장이 필요하다.
25 March 2024
래블업에서의 2022 여름 인턴십 후기
By 강시온서론
내가 처음 이 회사를 알게 된 건 2019년 여름이었다. 당시 GDG Seoul '모두의 Toy Story'라는 행사에서 지인이 발표를 한다고 해서 행사를 참관했는데, 그 자리에서 래블업의 '머신러닝에 활용하는 GPU 가상화 도구'를 주제로 한 세션을 듣고 굉장한 흥미를 느꼈다. 이 때는 내가 한창 머신러닝에 관심을 가지던 시기였는데, 래블업의 발표는 기술적으로 깊이가 있었고, 이런 일을 하는 회사도 있구나 하며 이 회사에 대해 처음으로 알게 되었다.
그 후, 다시 한번 이 회사와 연이 닿게 되었는데, 42 Seoul에서 진행한 오픈소스 해커톤에서였다. 특정 오픈소스를 활용한 제품을 단기간에 만드는 대회였는데, 이때 나는 Backend.AI 팀에 참여하게 되었다. 이 때는 앞서 언급한 GDG Seoul에서의 발표 이후 3년이 지난 시점이었지만, 그 때의 발표가 매우 인상깊었기 때문에 이름을 보자마자 곧바로 회사를 떠올릴 수 있었다. 대회를 진행하는 동안 정규님의 멘토링을 통해 많은 도움을 받았고, 덕분에 대회에서 2위를 수상하는 쾌거를 이루었다.
2022년 5월, 나는 쎄트랙아이라는 회사에서 학교 연계 인턴십을 진행하고 있었다. 인턴십 종료 이후 어떤 일을 해야 할까 알아보던 중, 페이스북에서 래블업의 여름 인턴십 공고를 보게 되었다. 대회를 진행하며 정규님에게 받은 멘토링이 큰 도움이 되었기에 좋은 기억이 있었고, 개발자 커뮤니티와 오픈소스에도 지대한 관심을 가지고 있었기에 나의 다음 목적지를 래블업으로 정하게 되었다.
그 무렵, 나는 42 world라는 프로젝트를 진행하고 있었는데, 이 시기가 내가 많은 것들을 배우고 성장할 수 있었던 시기라고 생각한다. 래블업의 면접을 보며 내가 진행하던 42 world 프로젝트를 소상히 설명할 기회가 있었고, 프로젝트에 모노레포를 적용하며 어려웠던 경험을 나누자 래블업도 Backend.AI에 모노레포를 적용하며 어려움을 겪었다는 이야기를 해주어 면접 동안 개발자끼리의 소소한 공감을 주고받을 수 있었다.
그렇게 래블업 인턴십에 합격한 후, 총 4분의 다른 인턴분들과 인턴십 생활을 시작하게 되었다. 나는 기존의 인턴십을 마무리하고 이사할 기간을 가지기 위해 다른 분들보다 일주일 정도 늦게 회사에 입사하게 된 케이스다. 일주일 동안은 Backend.AI를 파악하고 회사에 적응하는 Orientation 주간을 가졌다. 온보딩 문서화가 잘 되어있어 신규 입사자가 쉽게 회사에 적응하기 좋은 환경이 갖추어져 있는 회사라는 생각이 들었다. Orientation 기간 대부분은 Backend.AI를 설치하고 세팅하는데 대부분의 시간을 보낸 것 같다. 나는 다른 인턴분들보다 일주일 정도 늦게 입사한 덕분에 다른 인턴분들에게 도움을 많이 받았고, 상대적으로 수월하게 Orientation 기간을 마무리할 수 있었다.
업무 시작
2주 차부터 이제 본격적인 task 들을 할당받아 일하기 시작했다. DevOps, Frontend, Research 팀 중에 본인이 하고 싶은 일을 선택하여 각 챕터 담당자분에게 good-first-issue를 할당받아 시작하였는데, 나는 DevOps 팀을 선택하여 업무를 시작했다. 처음으로 할당받은 이슈는 세션을 실행하고 원하는 코드를 실행하기까지 하는 run 커맨드를 세션을 실행하는 start와 코드를 실행하는 exec 명령어를 조합하여 구현하도록 하여 코드의 중복 구현을 줄이도록 refactoring 하는 작업이었다.
나에게 할당된 첫 이슈를 진행하며 꽤나 어려움을 겪었는데, 해당 이슈의 구현 난이도와는 상관 없이 Backend.AI의 레포 구조를 이해해야 했기 때문이다. 이슈가 왜 생겼는지 파악하는 것도 중요하지만, 그 전에 Backend.AI가 목표로 하는 것이 무엇인지 정확하게 알고, 이 이슈가 어떤 목적을 달성하기 위해 해결되어야 하는 것인지 이해해야 문제를 정확하게 해결할 수 있다는 사실을 알게 되었다.
첫 번째 이슈를 해결하고 난 후에는 vfolder clone이라는, 당시 개발 중인 기능을 테스트하는 업무를 맡게 되었다. 해당 업무를 하면서 DevOps 업무만을 담당하다가 Frontend 챕터의 프로젝트인 Backend.ai-webui를 처음으로 사용해보게 되었다. vfolder clone 테스트뿐만 아니라 직접 실행하면서 개선할 수 있는 사항이나 버그들을 찾아서 이슈로 등록했는데, 뭔가 다른 팀에 계속 task를 만드는 느낌이라 좀 죄송한 마음도 들었지만, 프론트엔드 챕터에서는 굉장히 좋은 기여라고 독려해 주셨다. 오픈소스는 코드 기여 뿐만 아니라 다른 방면으로도 많이 기여를 할 수 있음을 다시 한번 깨닫게 되었다.
CI/CD 개선
평소 CI/CD에 관심이 많았던 나는 Backend.AI에서 활용되는 actions에 흥미를 갖고 관심깊게 살펴보았다. 당시 Backend.AI에는
skip:ci
태그를 이용하여 CI를 skip 할 수 있는 기능이 있었는데,skip:ci
나skip:changlog
태그가 PR 생성 당시가 아닌, 나중에 라벨을 다는 경우에는 적용되지 않는다는 것을 알게 되었다. 이를 위해 의미 없는 commit을 추가해야 했고, 외부 기여자의 경우 label에 대한 권한이 없기 때문에 Backend.AI가 오픈소스인 만큼 중요하게 해결되어야 하는 문제라고 생각했다. 그래서 GitHub Actions와 관련된 내용을 조사했고, action trigger에 labeled와 관련된 trigger가 있다는 것을 알게 되어 해당 문제를 해결할 수 있었다. 할당받은 이슈가 아닌 직접 개선할 수 있는 사항을 찾고 개선한 것이라 해당 작업을 회사에서도 매우 좋게 봐주셨다. 해당 문제를 해결하면서 actions에 더 흥미가 생겨 몇 가지 개선사항을 좀 더 제시해보았다. 누락된 assign 들이 꽤 보여 이를 자동화하여 해결하면 실수도 방지하고 assign 하는 귀찮음도 줄일 수 있다고 생각해 기존에 사용해 본 적이 있는 auto-auth-assign action 도입을 제안했다. 그다음으로는 labeling도 자동화를 하면 좋을 것 같았다. 해당 문제도 labeler라는 action이 존재하여 사용해 본 적은 없지만, test repository에서 여러 번 테스트를 거쳐 Backend.AI에 적용했고 모노레포로 합쳐진 여러 시스템을 구분하는 labeling 작업을 자동화할 수 있었다. 이 작업을 하면서 느낀 것은 PR에 연결된 issue에 할당되어있는 label을 그대로 붙여주면 좋을 것 같다는 생각이 들었는데, 해당 기능을 하는 action을 찾을 수가 없었다. 그래서 직접 제작해보기로 결심했고, GitHub API와 action을 학습, auto-label-in-issue라는 actions를 직접 제작하여 배포했다.인턴십을 마치며
이번 인턴십을 통해 많은 것을 느끼고 많은 것을 배워간다. 이번 인턴십이 두 번째 경험이긴 하지만, 이전 회사는 IT 회사가 아니었던 만큼 IT 회사에서의 첫 인턴십 경험이었다. 나에게 래블업의 제품은 오픈소스로 관리되고, 회사 차원에서 커뮤니티에 꾸준히 기여한다는 점이 매력적으로 다가왔다. 회사가 정말 이렇게까지 수평적일 수 있나? 라는 생각이 들 정도로 편안한 분위기에서 자유롭게 의견을 제시할 수 있었다. 강제로 일을 하는 것이 아닌 주도적으로 하고 싶은 일을 할 수 있는 것이 래블업의 가장 큰 장점이라고 생각한다.
이제야 프로젝트에 대해 어느정도 파악 한 느낌인데 인턴십을 종료할 때가 다가와 아쉬움이 컸다. 감사하게도 래블업에서 인턴십을 연장해보지 않겠냐고 먼저 제안을 주셔서 인턴십을 연장, actions 이슈들을 주로 맡아 개발하게 되었다. 최근에 내가 계속 actions를 다루고 있고, 필드에 actions를 다루는 개발자가 많이 없기 때문에 이를 주제로 GDG Daejeon에서 발표도 하게 되었다. 덕분에 주변에서 액션가면이라는 별명으로 불리고 있는 것은 소소한 웃음거리다.
이후 인턴십에서의 경험을 오픈소스 컨트리뷰션 아카데미에서 나누기도 하고, 이를 바탕으로 컨트리뷰션 아카데미에서 좋은 성적을 거두게 되었는데, 회사에서의 경험이 이를 위한 밑바탕이 되었다고 생각한다.
19 December 2022
래블업에서의 소프트웨어 엔지니어: 만 2년간의 회고록
By 강지현안녕하시렵니까? 🙇🏻♀️ 저는 현재 래블업에서 웹 프론트엔드를 주력으로 개발하고 있는 강지현입니다.
“누구나 언제, 어디에서나 AI를 개발하고 사용할 수 있는 세상을 만들자!“ 라는 모토로 설립 8년 차에 접어든 래블업에서 지낸 지는 햇수로 약 3년 정도가 되었는데요. 3개월의 인턴 생활 → 잡오퍼(Job offering)를 받고 풀타임으로 근무한 지 만 2년이 조금 넘은 지금, 그동안 성장한 것과 느낀 점 등을 허심탄회하게 털어놓아보려 합니다.
Table of Contents
- 래블업의 첫인상
- 내가 배운 기술 스택과 소프트 스킬
- 그 외 또 이룬 것
- 앞으로 성취하고 싶은 것
- 마치며
- 번외: 래블업은 일만 하는 스타트업이 아닙니다.
래블업의 첫인상과 적응기
조소과🗿⛏ → 컴퓨터공학 💻으로 전공을 바꾸고 방황과 무한 삽질의 터널을 지난 뒤, 래블업 사무실의 첫 문을 들어서자, 그곳은 신세계 그 자체였다.
첫 날 오리엔테이션에서 아직도 기억나는 세 가지 안내사항이 있습니다.
- 직급을 막론하고 존대는 필수이며, “(성함)님” 으로만 부르고 직급을 붙이지 않는다. (외부인에게 소개할 때는 다름)
- 휴가는 물어보는 것이 아니라 선언하는 것이다.
- 근무시간은 오전 10시~오후 7시이지만 재택도 가능하며, 유연 근무제이다.
그리고 무엇보다 보통의 회사에서 으레 궁금해하는 학점, (전공)성적표, 나이, 출신 학교 등과 같이 항상 저를 따라다니는 꼬리표는 전혀 궁금해하지 않는다는 점이었습니다. 공공기관에서 잠깐 계약직으로 일했던 경험이 있던 제게는 자유롭고, 어떻게 보면 일 자체에만 집중하는 래블업의 문화가 신기했습니다. 한편으로는 과연 어떻게 업무가 분배되고 진행이 되는지 궁금했습니다. 그 궁금증은 한 달여간 근무를 하면서 해소되었습니다.
한동안 인터넷에서 회자하던 직장생활 밸런스게임 문항이 있습니다.
제게 래블업은 완벽한 전자였습니다. 매일매일 늘 짜릿하고 새로운 기술용어들, 매일 진행되는 올-핸즈(All-hands) 미팅에서 도대체 무슨 맥락으로 얘기가 오가는 것인지, 프로젝트를 설치하려고 하면 왜 내 로컬 환경에서만 희한한 에러가 발생하는 것인지…🤯 그리고 이슈 생성, 커밋을 비롯해 모든 내용이 “영문” 으로 공유되어야 하는 압박 덕분에 첫 달은 정말 마음속으로 울며(?) 출근했습니다.
그렇다고 해서 좌절만 할 순 없었습니다. 여느 인턴들의 바람처럼 회사에 큰 도움은 못되더라도 짐이 되고 싶진 않았으니까요. 일주일 간 엄청난 삽질과 마주하며, 질문이 반복되지 않도록 뭐든 적어야겠다는 생각을 했고, TIL까지는 아니더라도 알게 된 용어나 맥락을 적기 시작했습니다. 아래는 제가 인턴 기간, 그리고 이후에도 꾸준히 업데이트한 적자✍️생존의 일부 내용을 캡처한 것입니다.
오가는 쓰레드 중에 당장은 모르겠지만 도움이 될 만하다고 생각되는 것들도 모두 읽어보고, 남길만한 것은 정리했습니다. 그러고 나서 겨우 첫 이슈에 대한 PR을 작성하며 코드 리뷰를 요청하고, 신랄한(!) 코멘트를 받으며 래블업의 개발 문화에 조금씩 익숙해지기 시작했습니다. 그리고 조금씩 자신감이 붙기 시작하면서 나중에는 고객사 요청에 대응하는 이슈에도 자원하는 대담함도 생겼습니다.
지나고 보니 이런 대담함은 저를 제외한 래블업의 모든 멤버들이 가진 패시브 스킬이었습니다. 결국, 래블업은 철저한 탑-다운의 구조라기보다는 탑-다운과 바텀-업이 적절히 섞인 구조였고, 모든 멤버가 하나의 유기체처럼 움직이는 형태였습니다. 그 때문에 자율출근, 유연 근무라는 한국 사회 기준으로서는 엄청난 자유를 주더라도 멤버 한 명, 한 명이 책임감을 갖고 목표를 향해 움직여서 인원 대비 많은 성취를 이뤄낼 수 있었지 않았을까 생각합니다.
내가 배운 기술 스택과 소프트 스킬
래블업은 제가 인턴 생활을 시작한 곳이며, 풀타임 소프트웨어 엔지니어로서는 첫 직장이기도 합니다. 이 때문에 직장생활에서 필요로 하는 거의 모든 것을 래블업에서 배웠다고 해도 과언이 아닙니다. 래블업의 주력 제품 중 하나인 Backend.AI(백엔드 닷 에이아이)에서 아래와 같은 기술 스택을 사용해 개발을 진행하며, 이에 대한 이해를 높일 수 있었습니다.
Web Component(이하 웹 컴포넌트)
웹 표준으로 현재 모던 웹 브라우저에서는 모두 기본으로 지원합니다. 브라우저 엔진에서 웹 컴포넌트를 렌더링 할 때에 ShadowDOM이라는 HTML 도큐먼트로 각 컴포넌트의 style이 의도치 않게 서로에게 영향을 주는 것을 막고 독립적으로 적용될 수 있도록 하는 구조입니다. 또한 Javascript 코드 내에서 접근할 때에는 shadowRoot가 open된 상태여야 하며 “shadowRoot” 라는 키를 통해서만 접근할 수 있습니다.
이는 React의 VirtualDOM과 비슷한 면이 있지만, 목적이 다릅니다. Virtual DOM은 최적화를 위한 것이라면 ShadowDOM은 style이나 로직이 컴포넌트 별로 독립적으로 적용되기 위한 것입니다. (더 읽어보기: ShadowDOM vs VirtualDOM)
Lit (Lit-Element)
Lit이란 웹 컴포넌트를 빠르고 쉽게 만들 수 있는 웹 컴포넌트 전용 라이브러리입니다. 쉽고 빠르게 만든다 함은, shadowDOM을 선언하고, document에 붙이고, 설정하는 일련의 과정을 라이브러리 상에서 추상화 해주는 것을 의미합니다. 가령 소프트웨어 엔지니어에게는 익숙한 OOP 구조 형태(Class 지원)로 사용할 수 있도록 하며, 렌더 중, 렌더 직후, 명시적으로 렌더 요청을 하는 등 라이프사이클 별로 호출할 수 있는 함수를 제공하여 사용자가 좀더 직관적으로 컴포넌트를 구현할 수 있도록 돕습니다. (더 읽어보기: Lit Documentation (v2))
Modern Javascript & Typescript
ES6 이후의 Javascript로 for-each, for-of, while 과 같은 반복문 외에 Array 타입에 특화된 map, filter, reduce 같은 함수를 지원합니다. API 호출 시 외부 라이브러리(jQuery)가 아닌 기본 함수(fetch)로 비동기 처리가 가능합니다. 다양한 데이터를 불러올 때에 Type을 지정해 어떤 타입일지 예측하고, 그에 맞는 함수를 호출하거나 대응이 가능하게 합니다. Type을 지정해서 잘못된 접근을 할 경우 컴파일러 상에서 명시적으로 에러를 호출해줍니다.
물론 프론트엔드 뿐만 아니라, 백엔드(Backend.AI Core) 쪽에도 조금씩 기여하면서 파이썬 비동기 라이브러리인 Python Asyncio 도 찍먹(!)해볼 수 있었습니다. 아래는 백엔드 쪽 기여와 동시에 저에게 Backend.AI 구조 파악에 많은 도움이 되었던 이슈에 대한 발표 내용입니다.
https://www.youtube.com/watch?v=itCEkuO2DtE
래블업은 오픈소스에서 잔뼈가 굵은 분들께서 멤버로 있는 꽤나 희귀한 개발 조직으로 이뤄져 있습니다. 덕분에 개발 문화 역시 진취적이고 리버럴합니다. 이 때문에 위에서 언급한 바와 같이 업무가 바텀-업으로 진행되는 때도 있습니다. 이 경우, 직위에 상관 없이 자유롭게 제안하거나 또는 제안에 앞서 그 제안이 타당한지에 대해 내부 세미나를 열어 발표하고 피드백을 얻기도 합니다.
아래는 제가 배운 업무상의 소프트 스킬들 중 많은 도움이 되었던 부분을 세 가지로 추린 것입니다.
- 궁금한 것이 있으면 하루가 지나기 전 물어보기. 단, 내가 그때까지 아는 부분까지도 함께 언급하기
- 당장 나와 관련이 없는 것 일지라도 발 담가보고 삽질해보기, 그리고 그 내용을 짧게라도 기록하기
- 내가 알게 된 내용을 가능한 한 자주 공유하기
그 외 또 이룬 것
저는 개발만 하진 않았습니다. 아래 기술된 다양한 경험을 통해 개발 업무 외적으로 성장할 수 있었습니다. 혹자는 개발만 하기에도 바쁠 텐데 너무 잡다하게 하는 것이 아니냐, 대체 너의 전문성은 무엇? 🤷🏻♀️ 이라고 묻기도 합니다. 하지만 저는 개발뿐만 아니라 개발 외적으로 회사가 어떻게 돌아가는지, 그리고 다른 부서와 어떻게 협업하는지 배우는 것 역시 개발자가 가져야 할 기본소양이라고 생각합니다.
- Backend.AI GS(Good Software) 인증에 기여
- Backend.AI 문서화 기여 가이드 작성
- 회사 메인페이지 및 주요 제품 페이지 웹 퍼블리싱 및 반응형 페이지 적용
- Backend.AI 튜토리얼 영상 제작
- 2021년 오픈소스 컨트리뷰션 아카데미 멘토 활동
- 2021년 7월 회사의 연간 미팅 계획 및 진행
- 2022년 5월 (주니어) 개발자 → 시니어 개발자로 승진! ✨
- 인프콘 2022 토크 콘서트: 주니어 개발자들의 대나무숲 패널 참여
앞으로 더 성취하고 싶은 것
아래는 당장은 아니더라도 앞으로 래블업에서 해내고 싶은 것들을 나열한 것입니다.
- 디자인 시스템 구축
- Backend.AI의 MSA 서비스에 웹 컴포넌트와 React 병용
- 회사 사이트 및 주요 제품 사이트에 GA4 (Google Analytics 4) 적용
- 래블업 기술 블로그(docusaurus) 항목 별 카테고리 생성
- 주요 저장소에 BDD 또는 테스트 환경 적용
마치며
처음엔 그동안 정신없이 달려온(?) 연유로 어떤 내용을 적어야 할지 막막했습니다. 하지만 천천히 작성해나가며 돌이켜보니 정말 많은 일을 래블업에서 시작했기에 이뤄낼 수 있었습니다. 특히, 페이스가 올라올 수 있도록 기다려주시고 너른 마음으로 이해해주신 동료와 사수님이 없었다면, 위의 모든 일은 불가능했다는 생각이 들었어요. 이 글을 빌어 래블업의 모든 멤버 분들께 다시 한 번 감사하다는 말씀을 드리고 싶습니다.
또 지속해서 래블업에 기여할 수 있는 개발자 강지현이 되겠다는 다짐💪을 해봅니다.
번외: 래블업은 일만 하는 스타트업이 아닙니다.
코로나 시국에 래블업에 조인하게 되어, 비교적 래블업의 많은 워크샵과 탐방을 경험하지는 못했지만 🥲(GTC 참여, Google I/O 참여라던가...), 일에 파묻히기보다는 다양한 외부 경험을 쌓을 수 있었습니다. 특히 최근에 다녀온 워케이션이 기억에 남는데요. 래블업을 "일만 하는 스타트업"이라고 오해를 하시는 분들께 이 글을 통해 제 생생한 기록 📸 중 극히(!) 일부를 공유합니다😎.
Things we done
-
강릉 워크샵 (2020.11)
-
양양 워케이션 (2022.07) (2020.11)
-
문화의 날 (2022.08)
On-going
- 제주도 워케이션 (2022.10)
Future-plan
- Google I/O 2023?
29 September 2022