지난 6월 29일 Github와 OpenAI가 공동 개발한 새로운 AI 툴 코파일럿(Copilot)이 프라이빗 베타로 공개되었다. 코파일럿은 AI를 기반으로 코드를 자동 생성하는 인공지능인 일종의 “AI pair programmer"이다. 

Copilot이란
    지난 6월 29일 Github와 OpenAI 가 공동 개발한 새로운 AI 툴 코파일럿(Copilot)이 프라이빗 베타로 공개되었다. 코파일럿은 AI를 기반으로 코드를 자동 생성하는 인공지능이다. Github의 발표에 따르면, 코파일럿은 단순히 짧은 코드 토막을 자동 완성시키는 수준이 아닌 코드의 문맥을 분석하고 이해한 뒤 적절한 코드를 작성하는 수준이라고 한다. 즉, 이미 작성된 코드를 분석해 특정 기능을 포함한 새로운 매칭코드를 생성하는 것이다. 일종의 자동 완성이 아닌 자동 생성인 셈이다. 코파일럿의 코드를 자동으로 생성하는 방식은 OpenAI가 개발한 Codex에 기반하고 있다. Codex는 자연어를 코드로 번역하는 AI 시스템으로, GPT-3 모델에 비해 훨씬 더 많은 양의 오픈 소스 코드를 이용해 트레이닝 되었으며, 수 테라바이트(TB)의 Github 코드들이 주로 사용되었다. 물론 인공지능에 코드 작성을 학습시키는 것이 새로운 시도는 아니다. 탭나인(TabNine), 카이트(Kite) 등의 스타트업이 비슷한 프로젝트를 하고 있다. 하지만 마이크로소프트라는 빅테크 기업과 오픈AI 간의 긴밀한 협력은 코파일럿이 처음부터 강력한 시장 참여자라는 것을 의미한다. 그렇다면 Copilot의 핵심인 Codex는 무엇일까?

인공지능과 GPT-3 그리고 Codex
    먼저 인공지능이란 무엇일까? 예를 들어, 치킨을 구분하는 기계 혹은 알고리즘을 개발하고 싶다고 하자. 그렇다면 먼저 최대한 많은 수의 치킨 사진 데이터를 수집해야 한다. 그리고 이러한 데이터를 알고리즘에게 학습시킨다. 그 과정을 통해 알고리즘은 무엇이 치킨인지 아닌지를 구분하는 패턴을 학습하게 된다. 그 이후, 알고리즘에게 치킨 사진을 보여주면 알고리즘은, “이 사진이 치킨일 가능성이 85%이다”라고 결과를 제시하는 것이다. 일종의 사고과정이 아닌 매우 빠른 속도의 패턴 인식의 일종이라고 할 수 있다.  이때, GPT-3는 사진이 아닌 텍스트로 작업하는 인공지능이다. GPT-3는 어느 한 문장 다음에 어떠한 문장이 올지 예측하고, 단어 다음에 어떤 단어가 올지를 높은 확률로 예측한다. 앞서 많은 치킨 사진들로 알고리즘을 학습시킨 것처럼, 인터넷의 모든 글들을 GPT-3에게 학습시킬 수 있다. 이 모델은 4,990억개 데이터셋 중에서 가중치 샘플링해서 3,000억개로 구성된 데이터셋으로 사전 학습을 받았으며, 1,750억개 매개 변수로 딥러닝의 한계까지 추진돼 미세 조정없이 여러 자연어 처리 벤치마크에서 최첨단 성능을 달성했다. 예전에는 딥 러닝을 활용한 언어 모델의 학습은 일반적으로 2단계로 이루어졌다. 우선 일반적 목적의 데이터셋으로 언어의 개요를 파악시킨 뒤, 특정 작업(번역, 이해 등)을 위해 준비된 더 작은 규모의 데이터셋에서 한 번 더 학습이 실시되는 경우가 대부분이었다. 하지만 GPT-2는 신경망과 데이터셋이 충분히 크다면 1단계만으로도 충분히 좋은 결과물을 얻을 수 있음을 증명했다. 오픈AI가 GPT-3를 사상 최대 규모의 언어 모델로 만든 이유다. 하지만, GPT-3에도 한계가 존재한다. 단지 텍스트 예측기에 불과하다는 점이다. 즉, GPT-3가 각 단어의 뜻과 의미를 모른다. 예를 들어, “당신의 발은 몇 개의 눈을 가지고 있나요?”라고 물어보면 “당신의 발은 두개의 눈을 가지고 있어요”라고 대답할 것이다. GPT-3는 보다시피 완벽한 문장을 만든다. 하지만 사고력이 없고 기본적 논리가 없다. 단지 인간이 쓴 문장과 비슷한 문장을 구현할 수 있다는 것이다. 이것이 바로 GPT-3의 한계이기도 하다. 창의력이 있는 인간을 대체할 수는 없다는 점이다. 

    그렇다면 GPT-3의 차세대격 모델이자, 이번 코파일럿의 핵심 모델인 Codex는 어떨까? GPT-3를 사용하여 코드 생성을 할 때 잘 되는 경우도 있지만 잘 안 되는 경우가 더 많다는 것을 염두에 둘 필요가 있다. 이러한 문제들을 개선하기 위해서 기존 GPT-3 모델을 코드 생성에만 특화하여 OpenAI에서는 Codex라는 모델을 만들었다. Codex 또한 GPT-3와 마찬가지로 엄청난 양의 데이터를 통해 학습되었다. 여기서 학습된 데이터는 Github에 오픈되어 사용 가능한 모든 코드들이다. Github는 현존하는 git 호스팅 웹 서비스들 중 가장 많은 사용자를 가졌다. 현재 우리 학교 학생들뿐만 아니라 코딩을 하는 많은 개발자들이 자신도 모르게 AI를 학습시키고 있었다는 것이다.


Copilot, 과연 완벽할까?
    OpenAI의 CEO인 샘 알트만에 따르면, “AI는 컴퓨터 앞의 노동 가격을 육체 노동 가격보다 훨씬 더 빠른 속도로 값싸게 만들어 버릴 것이다”라고 예측하였다. 즉, 개발자나 디자이너와 같은 컴퓨터 앞에서 노동하는 사람들이 운전사 혹은 농부보다 더 빠르게 대체될 수 있다는 말이다. 그렇지만 Copilot이 실질적으로 개발자의 작업을 대체하려면 아직 갈 길이 멀다. Copilot 또한 개발자들의 수없이 방대한 코드를 보며 학습한 것이기 때문에 완벽하지 않고 실수가 있다. 그렇기에 개발자들 또한 그 실수를 잡아내고 고쳐야 한다. 미국 서비스형 플랫폼(PaaS) 제공업체 ‘네트리파이(Netlify)’의 개발자 경험 디렉터 캐시디 윌리엄스는 “더 복잡한 프로젝트에선 개발자를 대신해 코드를 작성할 수 없다고 본다”라면서, “원하는 것과 달리 상당히 일반적인 것을 제안하는 등 약간의 미묘한 차이가 있었다. 하지만 이를 통해 지루한 코드 작성에서 해방돼 비즈니스 로직을 제대로 수행할 수 있다면 전적으로 찬성이다”라고 말했다. 결국, GPT-3에서와 비슷한 문제점으로 귀결된다. AI가 코딩을 아는 것은 결코 아니다. 단지 코드가 어떻게 생겼는지 그 패턴을 아는 것뿐이다. 이미 Github의 FAQ를 통해 “Github Copilot이 제시한 코드는 테스트된 코드는 아니다. 따라서 코드는 컴파일이 안되거나, 작동이 안될 수도 있다”라고 명시되어 있다. 

Copilot의 활용
    오픈소스 메인테이너 겸 소프트웨어 개발 컨설턴트 알렉시 골럽은 “굉장히 스마트한 자동 완성 도구다. 매우 잘 작동한다. 코드에서 컨텍스트를 추론하여 대부분의 경우 (사용자가) 입력하고 있던 라인을 정확하게 완성할 수 있다. 블로그 게시글, 대화 요약, 댓글, 문서 작성 등 코딩 외의 시나리오에서도 도움이 된다. 때로는 적절한 단어가 생각나지 않을 때 코파일럿이 이를 제안한다”라고 설명했다. 결국 Copilot이 개발자를 대체할 만큼 완벽하진 않지만 좋은 출발점을 제공한다는 것에 큰 의의가 있다. 때로는 컴퓨터가 제안하는 코드를 통해 솔루션을 어떻게 접근할지 생각해보는 등 개발자에게 다양한 접근법을 제시한다. 프로그래밍은 궁극적으로 창의적인 문제해결에 관한 것이다. Copilot은 그저 솔루션 이행을 빠르게 할 뿐, 개발자가 창의적인 해결방법을 생각해내야 한다. 캠브리지 대학교가 조사한 바에 따르면 개발자들은 50%의 시간을 프로그래밍이 아닌 디버깅에 투자한다. 이 인공지능을 잘 활용하면 수천 명의 개발자들이 더 멋지고 창의적인 일에 집중할 수 있지 않을까?
 

저작권자 © 카이스트신문 무단전재 및 재배포 금지