요즘IT
위시켓
최근 검색어
전체 삭제
최근 검색어가 없습니다.

본문은 요즘IT와 번역가 Chase가 함께 만든 해외 번역 콘텐츠입니다. 필자인 그렉 브록먼(Greg Brockman)은 ChatGPT를 만든 OpenAI의 공동 설립자이자 CTO입니다. 이 글은 2019년 7월 30일 그렉 브록먼이 개인 블로그에 올린 글로 그가 OpenAI에서 어떻게 일해왔고, 머신러닝을 어떻게 학습하게 되었는지에 대해 이야기합니다.

회원가입을 하면 원하는 문장을
저장할 수 있어요!

다음

회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!

확인

개발

OpenAI 그렉 브록먼 "나는 어떻게 머신러닝 전문가가 됐나"

년차,
어떤 스킬
,
어떤 직무
독자들이 봤을까요?
어떤 독자들이 봤는지 궁금하다면?
로그인

본문은 요즘IT와 번역가 Chase가 함께 만든 해외 번역 콘텐츠입니다. 필자인 그렉 브록먼(Greg Brockman)은 ChatGPT를 만든 OpenAI의 공동 설립자이자 CTO입니다. 이 글은 2019년 7월 30일 그렉 브록먼이 개인 블로그에 올린 글로 그가 OpenAI에서 어떻게 일해왔고, 머신러닝을 어떻게 학습하게 되었는지에 대해 이야기합니다.

 

OpenAI에서 일하기 시작한 첫 3년 동안 저는 머신러닝 전문가가 되기를 꿈꿨지만, 목표를 향한 진전을 거의 이루지 못했습니다. 그리고 지난 9개월 동안의 노력 끝에 마침내 머신러닝 전문가로 거듭났습니다. 과정이 쉽지는 않았지만 결코 불가능하지는 않았고, 수학적인 지식을 이미 갖췄거나 배우려는 의지가 있는 유능한 프로그래머라면 누구나 할 수 있는 일이라고 생각합니다.

 

머신러닝의 기술적인 측면은 독학할 수 있는 온라인 강좌가 많아 크게 문제되지 않았습니다. 오히려 가장 큰 걸림돌은 어떤 분야에 있어 다시 초보자가 되는 것에 대한 불안감이었습니다.

 

2018년 휴가 기간에 머신러닝을 공부하는 모습

 

입사 초기 시절

OpenAI의 설립 원칙은 연구와 엔지니어링을 동등하게 중요시한다는 것입니다. 우리의 목표는 이전에는 불가능했던 작업을 해결하는 작업 시스템을 구축하는 것이었기에 연구와 엔지니어링이 모두 필요했습니다. 실제로 우리 팀의 인력은 소프트웨어 기술을 주로 사용하는 사람이 25%, 머신러닝 기술을 주로 사용하는 사람이 25%, 이 두 가지를 혼합하여 사용하는 나머지 50%의 팀원으로 구성되어 있습니다. 그래서 OpenAI에 입사한 첫날부터 저의 소프트웨어 기술을 사용해야 하는 상황이 많았고, 자연스레 머신러닝 기술을 익히는 일은 계속 미루게 되었습니다.

 

저는 OpenAI Gym 구축에 참여한 이후, 회사로부터 Universe에 참여해 달라는 요청을 받았습니다. 그리고 유니버스 개발이 마무리 단계에 접어들면서 도타 프로젝트에 착수하게 되었습니다. 머신러닝을 도입하기에 앞서 게임을 강화 학습 환경으로 전환할 사람이 필요했던 것이죠.

 

 

도타(Dota) 프로젝트

소스 코드에 접근할 수 없는 환경에서 도타와 같이 복잡한 게임을 연구 환경으로 바꾸는 것은 정말 멋진 작업이었습니다. 또한 새로운 장애물을 극복할 때마다 팀원들이 기뻐하는 모습을 보며 큰 보람을 느꼈습니다.

 

저는 Go GRPC 서버 안에서 게임의 Lua 샌드박스인 LD_PRELOAD를 벗어나 프로그래밍 방식으로 게임을 제어하고, 점진적으로 전체 게임 상태를 프로토버프(Protobuf)로 덤프하며, 향후 사용할 수 있는 다양한 멀티에이전트 구성에 호환되는 파이썬 라이브러리와 추상화를 구축하는 방법을 알아냈습니다.

 

물론 과정이 쉽지는 않았습니다. 제가 CTO로 재직했던 Stripe에서 저는 인프라 솔루션에 집중한 편이었습니다. 하지만 제품 코드를 잘 알고 있었기 때문에 필요에 따라 스택을 변경할 수 있었습니다. 하지만 도타 프로젝트를 진행할 때는 소스 코드를 파악하지 못하는 제약을 안고, 오직 소프트웨어적인 관점으로 모든 문제를 살펴봐야 했기 때문입니다. 머신러닝을 조금만 다르게 수행하면 쉽게 피할 수도 있는 문제를 어렵게 해결하려고 노력할 때가 많았습니다.

 

저는 도타 봇을 구동하는 핵심적인 돌파구를 마련한 팀원 야쿱 파쵸키(Jakub Pachocki)와 시몬 시도르(Szymon Sidor)처럼 되고 싶었습니다. 이들은 강화 알고리즘은 스케일 될 수 없다는 OpenAI 내부의 통념에 의문을 제기했습니다. 그들은 Rapid라는 분산 강화 학습 프레임워크를 개발하여 강화 알고리즘을 2주 간격으로 기하급수적으로 확장해냈습니다. 저는 이들이 한 것과 같이 소프트웨어와 머신러닝 기술을 결합해서 중요한 성과를 내기를 바랐습니다.

 

순서대로 시몬 시도르, 그렉 브록만, 야쿱 파쵸키

 

2017년 7월, 제게 기회가 찾아올 것 같은 예감이 들었습니다. 소프트웨어 인프라는 안정적이었고 저는 머신러닝 프로젝트에 착수했습니다. 제 목표는 인간의 훈련 데이터를 사용해서 행동을 복제하며 신경망을 학습시키는 것이었습니다. 하지만 저는 새로운 분야의 초심자로 돌아갈 마음의 준비가 되어있지 않았습니다.

 

특정 실험에 어떤 코드가 사용되었는지 확실하지 않거나, 실험 결과를 제대로 아카이빙 하지 않고 지난 주의 결과와 비교해야 한다는 사실을 뒤늦게 깨닫곤 했습니다. 이러한 워크플로 세부 사항으로 인해 프로젝트의 진행 상황을 파악하는 것이 불확실해져 계속 좌절했습니다. 설상가상으로 작은 버그들이 계속 발견되어 실험 결과도 손상되고 있었습니다.

 

저를 더불어 팀원들 또한 작업물에 자신감을 잃고 있었습니다. 팀원들은 인간의 데이터로부터 행동을 복제하는 게 얼마나 어려운지 종종 언급하곤 했는데, 저는 항상 제가 아직 이 분야의 초보자라는 점을 강조하곤 했습니다. 나중에 돌아보니 문제 자체보다는 제 능력에 대해 변명하려고 했던 것 같습니다.

 

제 코드가 봇에 적용되었을 때 잠시 보람을 느꼈는데, 지에 탱(Jie Tang)이 이 코드를 크립 블로킹의 출발점으로 삼아 강화 학습으로 미세 조정했기 때문입니다. 그러나 곧 지에 탱은 제 코드를 사용하지 않고도 더 나은 결과를 얻을 수 있는 방법을 알아냈고, 더 이상 제 노력에 대해 보여줄 것이 없었습니다.

 

그리고 저는 도타 프로젝트에서 다시 머신러닝을 시도하지 않았습니다.

 

 

타임아웃

2018년 도타2 챔피언십 e스포츠 대회 인터내셔널에서 두 경기째 패한 것을 본 대부분의 사람들은 우리의 접근 방식이 한계에 다다랐다고 생각했습니다. 하지만 우리는 지표를 통해 우리가 성공에 가까워지고 있으며, 그저 더 많은 트레이닝이 필요하다는 것을 알았습니다. 이는 제게 약간의 유휴 시간이 생겼다는 것을 의미했고, 2018년 11월 저는 다시 머신러닝을 배우는데 3개월의 시간을 사용할 수 있게 되었습니다.

 

인터내셔널 첫 경기에서 패배한 후 기분이 좋아진 팀원들

 

저는 구축할 구체적인 목표가 있을 때 가장 집중할 수 있어 챗봇을 만들어보기로 결심했습니다. 먼저 펠로우 프로그램을 위해 개발한 커리큘럼 중 NLP 관련 모듈만 골라 독학으로 공부하기 시작했습니다. 예를 들어, LSTM 언어 모델을 작성하고, 학습한 다음 Transformer 기반 모델을 학습했습니다. 또한 시각 정보 이론과 같은 주제를 공부하고, 많은 논문을 읽었으며 완전히 이해할 때까지 정독했습니다.

 

덕분에 느리게 진행됐지만 이번에는 시간이 오래 걸릴 것을 예상했기 때문에 흔들리지 않았습니다. 프로그래밍을 막 시작했을 때의 기분이 떠올랐고, 당시 숙달되기까지 몇 년이 걸렸는지 생각하며 스스로를 재촉하지 않았습니다. 솔직히 머신러닝을 잘할 수 있을 거라는 확신은 없었습니다. 하지만 계속 밀어붙인 이유는 프로젝트의 한 부분만 이해하는 데에서 그치지 않고, 전체 그림까지 명확하게 보고 싶었기 때문입니다.

 

한편 개인적인 삶이 안정을 되찾게 되어 버틸 수 있었습니다. 실패하더라도 괜찮다고 느끼게 해주는 사람과 만남을 시작했기 때문입니다. 그 사람과 첫 휴가를 함께 보내면서도 머신러닝의 벽에 부딪혔지만, 그녀는 함께 하기로 약속한 것들을 몇 번이나 건너뛰었어도 제 곁에 있어 줬습니다.

 

또한 도타 프로젝트에서 제가 소극적이었던 탓에 극복하지 못한 장벽을 뛰어넘는 것도 중요했습니다. 바로 다른 개발자가 작성한 머신러닝 코드를 적극적으로 수정할 용기를 내는 것이었죠. 저는 제가 찾은 채팅 데이터 세트를 기반으로 GPT-1을 미세 조정하고, 저만의 샘플링 코드를 추가하기 위해 약간 변경했습니다. 하지만 더 긴 메시지를 생성하려고 시도할수록 속도가 너무 느려져 좌절감이 들었지만, 결국 전체 모델에 영향을 미치는 GPU 캐싱을 구현했습니다.

 

때론 감당할 수 없을 만큼 복잡한 변경 사항을 몇 번이나 시도하고 버려야 했습니다. 며칠 후 작동을 시작했을 때 이전에는 불가능하다고 생각했던 것을 배웠음을 깨달았습니다. 코드베이스가 TensorFlow 변수 범위를 우아하게 처리하는 방법과 같은 작은 스타일 세부 사항까지, 전체 모델이 어떻게 구성되어 있는지 이해하게 된 것입니다.

 

 

리툴링

이러한 3개월간의 독학 끝에 저는 실제 프로젝트에 참여할 준비가 되었다고 느꼈습니다. 이 시점이 바로 OpenAI의 많은 전문가로부터 도움을 받을 수 있는 첫 번째 시점이라고 생각했는데요. 야쿱과 공동 창립자인 일리야 수츠케버(Ilya Sutskever)가 저에게 조언을 해주기로 했을 때 무척 기뻤습니다.

 

일리야가 회사 밖 노래방에서 노래를 부르고 있는 모습

 

우리는 매우 흥미로운 결과를 얻기 시작했고, 야쿱과 시몬은 프로젝트에 풀타임으로 합류했습니다. 제가 시작한 머신러닝 코드베이스에서 두 사람의 커밋을 볼 때마다 뿌듯함을 느꼈습니다.

 

아직 숙달되지는 않았지만 유능하다는 느낌이 들기 시작했습니다. 머신러닝 작업에 집중할 수 있는 시간도 늘어났고, 코딩 시간도 과거에 비해 75% 정도 줄었습니다.

 

저는 처음으로 제 스스로가 궤도에 올랐다고 느꼈습니다. 처음에는 끝없이 쏟아져 나오는 새로운 머신러닝 개념에 압도당했지만, 6개월이 지나자 완전히 새로운 기본 개념을 계속 배우지 않아도 발전할 수 있다는 것을 깨달았습니다. 아직 네트워크 초기화나 학습 속도 일정 설정과 같은 기술에 대해 더 많은 경험을 쌓아야 하지만, 이제는 이러한 작업들조차 불가능해 보이기보다는 배우면 할 수 있는 일로 느껴집니다.

 

저는 Open AI의 펠로우(Fellows), 스칼라(Scholars) 프로그램을 지켜보며 대수학(Algebra)와 확률에 대한 탄탄한 기초를 갖춘 소프트웨어 엔지니어라면, 몇 달만 독학해도 머신러닝 엔지니어가 될 수 있다는 사실을 알고 있었습니다. 하지만 왠지 제 스스로는 독학으로 머신러닝을 배울 수 없을 거라고 생각해왔는데 제가 틀렸습니다. 저는 그저 한 분야의 전문가에서 다른 분야의 초보자로 내려오고 싶지 않아서 선뜻 전향하지 못했습니다.

 

여러분도 예외는 아닐 것입니다. 딥러닝 전문가가 되고 싶다면 그렇게 할 수 있습니다. 다만 실패할 수 있는 시간과 여유를 가져야 합니다. 충분한 실패를 통해 배우면 성공할 수 있으며, 예상보다 훨씬 짧은 시간 안에 성공할 수 있습니다.

 

그리고 어느 순간부터는 기존 전문가들의 도움을 받는 것이 중요한데, 이전부터 많은 머신러닝 전문가를 알고 있던 저는 운이 좋았다고 볼 수 있습니다. 만약 여러분이 이 단계에 도달한 소프트웨어 엔지니어라면, 머신러닝 전문가들과 함께 일할 수 있는 방법을 찾아보세요.

 

<원문>

How I became a machine learning practitioner

 

위 번역글의 원 저작권은 Greg Brockman에게 있으며, 요즘IT는 해당 글로 수익을 창출하지 않습니다. 글의 내용에 대한 책임은 원작자에게 있습니다.

좋아요

댓글

공유

공유

댓글 0
작가
400
명 알림 받는 중

작가 홈

작가
400
명 알림 받는 중
요즘 해외 개발자들은 어떻게 일할까요? 기획자나 디자이너는요? 그래서 준비했습니다. 읽어볼만한 해외 소식들을 번역해 전합니다. We are the world.

좋아요

댓글

스크랩

공유

공유

지금 회원가입하고,
요즘IT가 PICK한 뉴스레터를 받아보세요!

회원가입하기
요즘IT의 멤버가 되어주세요! 요즘IT의 멤버가 되어주세요!
요즘IT의 멤버가 되어주세요!
모든 콘텐츠를 편하게 보고 스크랩해요.
모든 콘텐츠를 편하게 보고 스크랩 하기
매주 PICK한 콘텐츠를 뉴스레터로 받아요.
매주 PICK한 콘텐츠를 뉴스레터로 받기
로그인하고 무료로 사용하기