초거대 인공지능(AI)이 인간 소프트웨어(SW) 개발자의 '프로그래밍'을 넘본다. 미국의 '오픈AI(OpenAI)'가 대화체로 입력받은 문장을 해석해 알맞은 코드를 만들어내는 AI 시스템 '코덱스(Codex)'를 내놨다. 오픈AI는 앞서 'GPT-3'를 공개해, 지금의 초거대 AI 유행을 촉발한 민간 AI연구소다. 지난해 등장한 GPT-3는 사람 뺨치는 작문 실력을 선보였다. 창의성이 인간의 고유영역으로 남을 수 있겠느냐는 물음을 불러일으켰다. 이번에 등장한 코덱스는 인간 SW개발자의 근본 역할에도 화두를 던졌다.
21일 주요 외신들은 오픈AI가 코덱스라는 새 머신러닝 SW를 사용해 영어를 코드로 '번역(translate)'할 수 있게 했다고 보도했다. 실제로 코덱스는 사람의 말(영어)을 입력받아 해석한 다음, 프로그램 코드를 출력하는 AI 모델이다. 사용자가 프로그래밍을 몰라도 이 AI를 상대로 채팅하듯 코딩을 지시할 수 있다는 뜻이다. 지난달 깃허브(GitHub)를 통해 공개된 '코파일럿(Copilot)' 서비스를 구축하는 데에 오픈AI 코덱스의 초기 버전이 사용됐다. 깃허브와 그 코파일럿을 통해 코덱스의 특징을 짐작해 볼 수 있다.
앞서 작성된 코드 맥락 읽고 뒷부분 이어서…GPT-3의 SW개발자 버전 '코파일럿'
깃허브는 버전관리시스템(VCS) '깃(Git)'을 중심으로 개인이나 팀 단위의 SW 개발 프로젝트를 관리하고 소스코드를 배포할 수 있는 SW개발자용 호스팅 서비스다. 협업을 위한 소통 기능을 제공해 국내외 유명 기업의 상업적 제품부터 비영리단체·오픈소스커뮤니티의 SW까지 폭넓게 이 서비스를 활용한다. 수많은 SW개발자들이 하나의 프로젝트 안에서 한 벌의 소스코드를 개선하고 있고, 개선을 위한 개발자 간 소통과 그 전후 시점의 소스코드 변경 이력이 모두 저장돼 있다.
깃허브의 코파일럿은 깃허브를 활용해 협업하는 SW개발자가 작성하고 있는 소스코드의 일부분을 AI로 인식하고, 나머지 부분을 자동으로 완성한다. 사실 '코드 자동완성' 기능은 기존 SW개발자들의 통합개발환경(IDE)에 포함된 코드편집기(code editor)에 과거부터 포함돼 있었다. 프로그래밍할 때 코드가 입력되고 있는 커서의 위치와 그 앞에 작성된 변수, 구문, 부호 등을 보고 문법적으로 맞는 함수나 클래스 등 코드의 일부분을 추천해 준 것이다.
깃허브 측은 "코파일럿은 대부분의 '코딩 비서(code assistants)'보다 맥락(context)을 더 잘 이해한다"고 주장했다. 코파일럿에 대해 "문서화문자열(docstring), 주석(comments), 함수명, 또는 코드 그 자체, 이 가운데 뭐가 됐든, 깃허브 코파일럿은 여러분이 코드를 작성하면서 제공해 온, 코드가 일치되게 하려는 문맥을 사용한다"라며 "우리는 오픈AI와 함께 깃허브 코파일럿을 SW개발자가 쓸수록 안전하고 효과적인 코드를 만들어내는 데에 더 똑똑해지게끔 설계했다"라고 설명했다.
변수형 선언하고 주석 썼더니 코드가 뚝딱…깃허브 "개발의 번거로움 줄여줘"
코파일럿 소개 웹페이지에 구글 프로그래밍 언어 '고(Go)'의 코드를 작성할 때 코파일럿이 작동하는 모습을 직접 보여 주는 애니메이션이 올라와 있다. 먼저 '인간' SW개발자가 코드의 첫 줄에 기본함수를 선언('package main')하고 정수·문자열·논리형 등 세 유형의 변수('Time', 'Results', 'Failed')를 사용하는 구조체('Run')를 다섯 줄에 걸쳐 선언한다. 이어 "성공적으로 (함수를) 실행하는 데 걸린 평균 시간을 초 단위로 구하라"라는 영어 주석문을 한 줄 쓰고, 그 함수의 이름('averageRuntimeInSeconds')까지 짓는다.애니메이션 속에 이어지는 장면에서, 코파일럿의 AI는 함수의 이름 뒤에 이어질 모든 내용을 만들어낸다. 먼저 작성된 코드는 열 줄인데 코파일럿의 AI가 추가한 코드는 열두 줄로, 더 길다. 코파일럿의 AI는 바로 앞줄의 주석 내용을 읽고, 조건문과 반복문을 조합해 그 주석에서 의도한 대로 작동하는 함수의 기능을 작성한다. 코드의 앞부분에 인간 SW개발자가 선언해 놓은 변수와 구조체를 참조하면서, 계산 결과를 기록하기 위한 새로운 변수명('totalTime', 'failedRuns' 등)까지 선언한다.
즉 깃허브 코파일럿은 코드를 작성하는 인간 SW개발자가 의도를 적절하게 전달하면, 실제로 작동하는 코드를 써 주는 역할을 한다. 깃허브 측은 이 기능이 인간의 개발 행위 자체를 대체하는 것이 아니라 SW개발자의 번거로운 과정을 줄여 주는 것이라고 소개했다. 일반적인 개발 환경에서 SW개발자는 매끄럽게 작동하는 코드를 만들기 위해 인터넷에 공개된 다른 사람의 코드, 또는 프로그래밍 언어를 개발한 곳에서 제공하는 공식문서의 해설에 포함된 예제 코드를 참조하는데, 이 과정은 썩 효율적이지 않다.
깃허브 측은 "공식문서(참조)를 건너뛰고 예시 찾기도 그만하라"라면서 "깃허브 코파일럿은 여러분이 편집기에 안에서 계속 (코드 작성에) 집중할 수 있게 도와준다"라고 주장했다. 원하는 논리를 담아 주석을 쓰면 깃허브 코파일럿이 그 코드를 조합해 준다는 설명이다. 깃허브는 이외에도 코파일럿이 구문의 형태가 여러 차례 단순반복되는 코드를 자동완성하거나, 작성된 코드에 단위테스트(unit test) 기능을 보태거나, 아예 다른 관점으로 작성된 코드로 같은 기능을 구현한 대안을 제시할 수 있다고 강조했다.
글 쓰는 AI 'GPT-3'의 후예 코덱스…10여개 프로그래밍 언어 코드 생성
깃허브가 코파일럿을 선보이고 한 달쯤 지나, 오픈AI가 코덱스를 '비공개 시험판(private beta)'으로 출시했다. AI 모델 자체를 공개한 것은 아니다. 외부 개발자들의 신청을 받아 API로 사용해볼 수 있게 했다. 오픈AI가 지난해 GPT-3를 소개한 뒤 유료로 출시하면서 밟은 과정과 비슷하다. 오픈AI의 설명에 따르면 코덱스는 GPT-3의 후속 기술이다. GPT-3만큼 뛰어난 자연어이해(NLU) 능력과 GPT-3보다 3배 이상 큰 메모리(14KB)를 활용해 맥락을 인식하고 반응한다.GPT-3는 사람의 말을 이해해 그에 어울리는 새로운 글과 문장을 자연스럽게 지어내지만, 코덱스는 사람의 말을 이해하고 컴퓨터가 실제로 처리할 수 있는 프로그래밍 언어 코드를 생성한다. 두 AI가 전혀 다른 데이터를 학습한 결과다. GPT-3가 인터넷에 공개된 수많은 뉴스와 블로그 등 웹페이지의 영어를 학습해 이런 작문 실력을 갖춘 것처럼, 코덱스는 깃허브 서비스 저장소의 코드를 포함해 인터넷에 공개된 수십억 줄의 코드를 코덱스의 AI 학습에 활용했다.
코덱스는 파이썬(Python), 자바스크립트(JavaScript), 고, 펄(Perl), PHP, 루비(Ruby), 스위프트(Swift), 타입스크립트(TypeScript) 등 10여개의 프로그래밍 언어로 코드를 써낼 수 있다. 특정한 언어가 아니라 운영체제(OS)에서 구동되는 셸(Shell) 스크립트도 짤 수 있다. 오픈AI는 "여러분은 API를 사용해 영어로 모든 SW에 명령을 내릴 수 있다"라며 "오픈AI 코덱스는 컴퓨터가 사람들의 의도를 더 잘 이해하도록 만들어 모든 사람이 컴퓨터로 더 많은 일을 할 수 있게 한다"라고 밝혔다.
오픈AI는 "코덱스는 범용 목적의 프로그래밍 모델로, 기본적으로 어떤 프로그래밍 작업에든 적용될 수 있다"라고 밝혔다. 일단 이 기술을 '트랜스파일(transpilation, 특정 프로그래밍 언어로 작성된 소스코드를 다른 언어 소스코드로 바꾸기)', 코드 설명하기, 코드 리팩터링 등에 사용했고, 향후 더 많은 분야에 활용할 수 있다고 내다봤다. 오픈AI는 출시 초기인 코덱스 비공개 시험판 API를 무료로 제공할 방침이다. 기존 GPT-3처럼 외부 개발자들의 활용 사례를 보면서 서비스를 점진적으로 확장할 계획이다.
오픈AI, 코딩 문제 푸는 '코덱스 챌린지' 개최…인간 SW개발자와 경쟁·협력
오픈AI는 코덱스 출시 후 며칠간 파이썬으로 코드를 작성하는 문제 5개를 최단시간에 푸는 기록으로 순위를 매기는 '오픈AI 코덱스 챌린지'라는 대회도 진행했다. 참가자 5500여명 가운데 100위권의 기록이 공개돼 있다. 코덱스는 풀이 소요시간 88분 37초로 96위에 올랐다. 동시에 코덱스의 AI는 이 대회에 참가한 인간 SW개발자의 코드 작성 도우미 역할도 맡았다. 100위권 참가자들 가운데 코덱스의 도움을 전혀 받지 않은 이도 있지만, 대부분 한 번 이상 도움을 받았고, 일부는 코덱스 AI를 수십 번 활용했다.코덱스가 인간 SW개발자의 역할을 대신한다고 단정할 수는 없다. 오히려 SW개발자의 능력을 배가시키는 수단이 될 수 있다. IT매체 더버지 보도에 따르면 그렉 브록먼 오픈AI 최고기술책임자(CTO) 겸 공동설립자는 "프로그래밍은 '문제를 깊이 고민하고 이해하려는 노력'과 '(이해한 문제를) 작게 나눈 부분을 라이브러리, 함수, API 등 기존 코드에 매핑하는 것', 두 부분이 있다"라며 "이 뒷부분은 지루하지만 코덱스가 잘하는 부분이고, 이미 프로그래머가 된 이들의 단조로운 일을 없애 준다"라고 말했다.
브록먼 CTO와 또 다른 오픈AI 공동설립자인 보이치에흐 자렘바(Wojciech Zaremba)는 코덱스로 간단한 웹사이트를 개설하고 단순한 게임을 제작하는 과정까지 온라인으로 시연했다. 구글 검색으로 사람의 실루엣 이미지를 찾아, 그 URL을 직접 붙여넣은 게 아니라 코덱스에 "이 페이지의 사람 이미지를 추가하라"고 명령했다. 그러자 화면에 사람 이미지가 나타났다. 이후 브록먼 CTO는 "사람을 좀 더 크게 만들라"고 한 뒤 "좌우 화살표 키로 움직일 수 있게 해"라고 명령했고, 원하는 결과물을 얻었다.
이 점으로 오픈AI가 직접 선보인 코덱스의 수준은 먼저 등장한 깃허브 코파일럿에 적용된 코드 자동완성 AI보다 훨씬 더 발전돼 있음을 짐작할 수 있다. 코덱스는 웹을 통해 접근할 수 있는 '오픈소스 라이선스' 기반 소스코드 저장소의 코드로 학습해 이같이 향상된 능력을 얻었다. 오픈AI가 이익을 얻기 위해 오픈소스 라이선스로 공개된 소스코드를 무단 사용함에 따라 개발자들의 비판을 불러일으키기도 했다. 오픈AI 측은 코덱스의 개발이 저작권법상의 '공정이용(fair use)'이라고 주장하지만, 논쟁의 여지가 많다.