진정한 노코드(No-code)를 실현하는 OpenAI 코덱스(Codex)
인간-컴퓨터 통신 방식을 바꾸는 혁명적인 AI 시스템
API를 통해 자연어를 코드로 변환하는 GPT-3의 후예
수십억 줄의 소스 코드와 자연어로 구성된 훈련 데이터
프로그래밍과 컴퓨팅을 보다 일반적으로 변화시킬 도구

OpenAI는 일반 언어를 실행 가능한 컴퓨터 프로그래밍 코드로 바꾸는 새로운 도구의 베타 테스트를 시작했다.(사진=셔터스톡) 
OpenAI는 일반 언어를 실행 가능한 컴퓨터 프로그래밍 코드로 바꾸는 새로운 도구의 베타 테스트를 시작했다.(사진=셔터스톡) 

OpenAI가 2020년 7월 역사상 가장 뛰어난 인공지능이라는 GPT-3(Generative Pre-Training 3)를 공개한지 1년 만에 또하나의 놀라운 AI 시스템인 코덱스를 출시했다. 코덱스는 자연어를 코드로 변환하는 새로운 딥러닝 언어 모델이다. GPT-3의 명성에 가려진 측면이 있지만 세상에 미칠 영향력은 오히려 GPT-3를 능가할 전망이다.

사람들은 컴퓨터와 통신하기 위해 프로그래밍 언어를 사용한다. 사람들은 컴퓨터 언어를 배워야 했고 거기에 적응해 왔다. 컴퓨터의 언어는 우리의 생각을 코딩을 통해 컴퓨터가 이해할 수 있도록 한다. 그러나 이제부터는 컴퓨터가 우리에게 적응하게 될 것이다. 우리의 언어로 생각을 표현할 수 있고 우리가 의미하는 바를 컴퓨터가 이해할 수 있다면 누구나 자연스럽게 느끼는 방식으로 컴퓨터와 통신할 수 있게 될 것이다.

OpenAI의 강력한 언어 모델 GPT-3는 전례 없는 언어 숙달을 보여주었다. GPT-3는 당시에 만들어진 가장 큰 신경망이었다. OpenAI와 다른 사람들이 얼마나 신속하게 그들의 모범을 따랐는지 고려할 때, 사전 훈련된 대규모 언어 모델이 인간 언어의 비밀에 대한 AI의 대답이라는 것이 분명해졌다.

그러나 GPT-3에는 생각하지 못한 몇 가지 능력이 있었다. 디빌드(Debuild)의 창업자인 샤리프 샤밈(Sharif Shameem)은 GPT-3의 코딩 기술을 가장 먼저 알아 차린 사람 중 한 명이다. 샤밈은 GPT-3를 이용해 자신을 위해 코드를 작성하는 생성기를 성공적으로 만들었다. 우리 시대의 가장 중요한 AI 혁명 중 하나가 임박한 것이다.

십여 개 이상의 프로그래밍 언어를 이해할 수 있는 코덱스는 일반 영어로 작성된 명령을 해석하고 실행할 수 있으므로 기존 앱에 대한 자연어 인터페이스를 구축할 수 있다.(사진=OpenAI 데모) 
십여 개 이상의 프로그래밍 언어를 이해할 수 있는 코덱스는 일반 영어로 작성된 명령을 해석하고 실행할 수 있으므로 기존 앱에 대한 자연어 인터페이스를 구축할 수 있다.(사진=OpenAI 데모) 

GPT-3의 후예인 코덱스는 또 다른 언어 모델이다. 훈련 데이터에는 공개 깃허브(GitHub) 리포지토리의 코드를 포함하여 공개적으로 사용 가능한 수십억 줄의 소스 코드와 자연어가 모두 포함되어 있다. 코덱스는 Python, JavaScript, Go, Perl, PHP, Ruby, Swift, TypeScript 및 Shell을 포함한 12개 이상의 언어에 능통하며 자연어를 이해하고 이를 해석하여 컴퓨터가 이해할 수 있는 명확한 명령을 생성할 수 있다. 

단순히 GPT-3의 새로운 버전으로 코덱스에 대해 소개하는 것은 공평하지 않다. 코덱스는 그 자체로 AI 슈퍼 스타다. GPT-3의 양적 개선 만이 아니다. 코덱스가 세상에 영향을 미칠 수 있는 방식은 AlphaZero가 2017년에 했던 방식보다 2007년에 iPhone이 한 방식에 더 가깝다. 우리의 생활 방식은 iPhone 이전 시대와 근본적으로 다르다. 코덱스는 틀림없이 비슷한 방식으로 세상을 바꿀 것이 확실하다.

GPT-3의 주요 단점 중 하나는 메모리 부족이었다. 컨텍스트 창은 작았고 시스템 커밋 오류를 만들었다. 긴 에세이로 논제에서 벗어나거나, 끝없는 루프에 들어가거나, 일치하지 않는 주장을 펼치기도 한다. 코덱스는 4KB에서 14KB로 확장된 메모리로 이 문제를 해결한다. 이는 GPT-3 크기의 3배 이상이다. 이를 통해 당면한 작업을 더 잘 이해하고 더 폭넓게 이해할 수 있게 된다.

GPT-3는 인상적이기는 하지만 인식할 수 없는 1과 0이라는 현실의 경계에 영원히 갇혀 있는 가상 세계에 살고 있다. OpenAI의 CTO 그렉 브록만(Greg Brockman)이 말했듯이 GPT-3은 "독자의 마음을 통해" 간접적인 방식으로만 세상에 영향을 미칠 수 있다. 이와 대조적으로 코덱스는 컴퓨터가 무언가를 하도록 하는 프롬프트에서 명령을 생성함으로써 세상에 직접적인 영향을 미칠 수 있다. 코덱스는 현실 세계에서 유익한 결과를 가져오는 조치를 취할 수 있다.

코덱스는 기존 프로그램의 주석과 유사한 영어 프롬프트를 입력으로 받은 다음 코드를 작성하여 화면에 결과를 출력하는 컴퓨터로 보낸다. 프로그래머가 컴퓨터에 특정 작업을 수행하도록 요청해야 한다. 작업은 파이썬에서 'Hello World'와 같은 간단한 메시지를 표시하는 것부터 JavaScript에서 웹 게임과 같은 복잡한 코드를 작성하는 것까지 다양하다. 프로그래머가 무엇을 빌드해야 하는지 알게 되면 코드를 작성하는 행위는 먼저 문제를 더 간단한 문제로 분해하고 그런 다음에  이러한 간단한 문제를 이미 존재하는 라이브러리, API 또는 함수와 같은 기존 코드에 매핑하는 것으로 생각할 수 있다. 후자의 활동은 아마도 프로그래밍의 가장 재미없는 부분이지만 코덱스가 가장 뛰어난 부분이다. 

예를 들어, 코덱스를 이용해 간단한 게임을 만들수 있다. 주인공은 화면에서 좌우로 움직여 떨어지는 바위를 피해야 하는 사람이다. 먼저 사람의 이미지를 가져와서 화면에 맞게 크기를 조정하고 화면 하단에 배치했다. 사람이 키를 사용하여 오른쪽과 왼쪽으로 움직이기를 원했기 때문에 코덱스에 "이제 왼쪽 및 오른쪽 화살표 키로 제어할 수 있게 만들라"라는 메시지를 표시했다. 코덱스는 이 명령을 어떻게 올바르게 해석할 수 있을까? "그것을 제어 가능하게 만들라"는 무슨 뜻인가? “왼쪽/오른쪽 키를 눌렀을 때 X픽셀을 왼쪽/오른쪽으로 움직인다”는 표현은 매우 애매모호하다.

코덱스는 다소 모호한 명령을 올바르게 해석한다.(사진=OpenAI 데모)
코덱스는 다소 모호한 명령을 올바르게 해석한다.(사진=OpenAI 데모)

그래도 코덱스는 명령을 해석하고 키를 눌렀을 때 이미지를 좌우로 10픽셀 이동하는 코드를 생성했다. 이와 같이 애매한 명령을 처리하는 것은 코덱스의 가장 놀라운 기능 중 하나다. JavaScript 코드를 작성하는 방법은 많은 사람들이 가지고 있지 않은 기술이지만 키로 사람을 좌우로 움직이는 것이 무엇을 의미하는지는 누구나 알고 있다. 코덱스는 우리가 종종 자연어로도 정확하게 표현할 수 없는 부분을 이해하고 구체화한다.

코덱스는 피해야할 바위를 포함시킨다. (사진=OpenAI 데모)
코덱스는 피해야할 바위를 포함시킨다. (사진=OpenAI 데모)

그런 다음, 피해야 하는 바위의 이미지를 포함시켰다. 하지만 너무 커서 코덱스에 "작게 해달라"고 요구한다. 시스템은 "작은"의 의미를 이해해야 할 뿐만 아니라 이 형용사의 상대적인 성격에 대한 적절한 감각을 가져야 한다. 개미는 우리에게 작지만 원자(atom)에게는 작지 않다. 집은 지구에 비해 작지만 우리에게는 크다. 그러나 코덱스는 해당 작업에 적합한 크기로 바위를 변환했다.

코덱스는 바위의 크기를 변경하여 상대적으로 작게 만든다. (사진=OpenAI 데모)
코덱스는 바위의 크기를 변경하여 상대적으로 작게 만든다. (사진=OpenAI 데모)

마지막으로 바위의 크기를 조정한 후 하늘에서 떨어져 화면 하단에 부딪힌 후 임의의 위치에 나타나길 원했다. 코덱스에 "임의의 수평 위치에서 화면 상단에 위치하라. 이제 하늘에서 떨어지게 하고 다시 원래 자리에 위치하라.”고 요구한다. 바위가 바닥에 닿을 때까지 아래쪽으로 돌의 이미지를 보낸 다음 다시 위쪽에 나타난다.

"하늘에서 떨어지다"라는 문장은 은유적이라는 점에 주목해야 한다. 하늘도 없고 실제로 떨어지는 일도 없다. 코덱스는 "떨어짐"이 이미지를 특정 방향(아래로)으로 지속적으로 이동하는 것을 의미한다는 것을 이해해야 했다. 그리고 "하늘"이 화면 상단을 의미한다는 것을 이해해야 했다.

펀치 카드에서 파이썬에 이르기까지 인간-컴퓨터 통신의 역사는 결코 우리에게 유리한 적이 없었다. 우리는 항상 기계에 적응해야 했다. 이러한 이유로 컴퓨터 통신 직업에 밀접하게 관련된 사람들은 고급 기술, 고가치 근로자로 간주되었다. 프로그래밍이 필수 기술로 간주되는 오늘날에도 대부분의 사람들은 컴퓨터가 작업을 수행하도록 하는 프로그램을 만드는 방법을 모른다.

그러나 이것은 코덱스와 같은 시스템 덕분에 앞으로 몇 년 내에 바뀔 가능성이 높다. 프로그래머를 대체할 수는 없지만 프로그래밍의 세계에 들어가 컴퓨터와 건전한 관계를 발전시킬 수 있는 촉매제가 될 것이다.

신경망에 대한 비판 중 하나는 책임감과 해석 가능성이 부족하다는 것이다. 이러한 시스템은 놀라운 일을 하지만 또한 치명적으로 실패한다. 실패 자체가 문제가 아니다. 문제는 신경망이 블랙박스라는 것이다. 안에 들어가는 것은 무엇이든지 안에 머무른다. 우리가 살짝 들여다보고 무슨 일이 일어나고 있는지 더 잘 이해할 수 있는 방법은 없다. 디버깅은 매우 어렵다.

여기서 코덱스는 GPT-3과 대조된다. 두 시스템 모두 블랙박스로 훈련되지만 테스트할 때 코덱스는 프롬프트에서 작성한 코드를 볼 수 있다. 우리는 컴퓨터의 출력뿐만 아니라 코덱스가 해석한 내용도 얻을 수 있다. 이를 통해 코드를 확인하거나 삭제하거나 필요한 경우 시스템에서 다시 작성할 수도 있다. 

코덱스는 프로그래머를 직장에서 없애기 위한 것이 아니라 수행해야 하는 지루한 작업을 줄이고 더 높은 수준의 인지 노력이 필요한 작업에 집중할 수 있도록 한다. 컴퓨터가 이해할 수 있는 구문에 문제를 적용하는 것은 지루하다. 풀리지 않는 것처럼 보이는 문제에 직면하고, 그것을 조금씩 이해하고, 해결책을 향해 조금씩 나아가는 것이 프로그래밍을 즐겁게 만드는 것이다.

코덱스는 우리의 삶을 크게 변화시킬 것이다. 한 가지는 AI를 혁신하는 것이다. 또 다른 점은 우리가 개별적으로 하는 일상의 작은 일들이 변할 정도로 세상을 혁명적으로 변화시키는 것이다.

코덱스는 대부분의 사람들이 알지도 못하는 AI에서 일어나고 있는 일이 아니다. 성공하면 결국 우리 모두가 컴퓨터와 상호 작용하는 방식을 수정할 것이다. iPhone이 우리가 전화와 상호 작용하는 방식에 혁명을 일으킨 것과 같은 방식으로.

AI타임스 박찬 위원 cpark@aitimes.com

[관련기사]깃허브-오픈AI, 자체 코드 생성하는 AI 도구 '코파일럿' 출시

[관련기사]오픈AI, GPT-3 API 사용 위한 대기자 명단 삭제...모든 개발자 즉시 사용 가능

키워드 관련기사
  • 네이버 "한국어 음성 인식 기술은 클로바가 1등...활용도 계속 높일 것"
  • AI가 쓴 문장과 인간이 쓴 문장, 가려낼 수 있을까
  • 페이스북, GPT-3 능가하는 챗봇 선보였다 ...최신 정보로 대화 가능한 AI 챗봇 블렌더봇 2.0 공개