[AI 모델 탐험기] #14 코딩하는 인공지능, Copilot

AI Network
12 min readJul 30, 2021

[편집자주] 본 글은 커먼컴퓨터에서 Developer Relations Engineer를 맡고 있는 성창엽님이 오픈소스 AI모델을 정리하고 인사이트를 공유하는 글로 시리즈로 기획돼 발행되고 있습니다. 열네 번째 글은 OpenAI와 Github가 공동으로 개발한 코딩하는 인공지능 Copilot입니다.

얼마 전 AI를 사용하여 코드를 자동 생성해주는 Copilot이 공개되었습니다. Copilot의 성능이 좋아서 Copilot이 개발자를 대체할 것이라는 소문이 돌고 있는데요. Copilot를 직접 사용해보며 정말, 이 AI가 개발자를 대체할 것인지에 대해 한번 알아보겠습니다. 현재 Copilot은 초대장을 받아야 사용 가능하므로 Copilot과 비슷한 역할을 하는 Microsoft의 CodeGPT 또한 사용해보겠습니다.

CodeGPT를 바로 확인해 보시고 싶으신 분들은 다음 링크를 참조해주세요!

Demo : https://link.ainize.ai/2UUfe09

API : https://link.ainize.ai/3id4JOd

Ainize Workspace : https://ainize.ai/workspace/view?ipynb=https://raw.githubusercontent.com/scy6500/codegpt-tutorial/main/codegpt-tutorial.ipynb&imageId=HQ8gBR4qbSwEEgcoJL4G

출처 : Dare Obasanjo Twitter

최근 몇 년 사이에 AI가 크게 발전하면서 인공지능이 인간의 고유 영역이라고 여겼던 분석력과 창의력을 요구하는 직업에도 진출하고 있습니다. 인공지능을 통해 스포츠 경기 상황을 분석하여 선수들에게 작전 명령을 내리거나, 인공지능을 이용하여 소설을 쓰기도 합니다. 이처럼 인공지능이 인간의 고유 영역에 침범하는 모습을 보니 인간이 인공지능에게 일자리를 빼앗길지도 모른다는 무서움이 어느 정도 현실화 되어가고 있는 모습을 볼 수 있는 거 같습니다.

출처 : Artificial Intelligence: competition or colleague? — Brand Humanizing Institute

그렇다면 개발자는 어떨까요? 개발자 또한 일자리를 인공지능에게 빼앗길 가능성이 있을까요?

2021년 6월 29일 OpenAI와 Github가 공동으로 개발한 Copilot이 공개되었습니다. Copilot은 AI를 사용하여 코드를 자동 생성해주는 기능입니다. 다시 말해 사용자는 코드의 전체를 직접 짜는 게 아닌 일부분의 코드 혹은 주석을 입력하면 Copilot이 코드를 자동으로 완성해줍니다. Copilot은 OpenAI에서 만든 AI 시스템인 Codex로 구동됩니다.

출처 : Github Copilot

Codex

Codex는 2020년 6월에 공개된 GPT-3를 활용하여 만든 모델입니다. Codex에 대해 알아보기 전, GPT-3에 대해 간략하게 알아보고 가겠습니다.

GPT-3는 Generative Pretrained Transformer의 약자로 이름에서 볼 수 있듯이 무엇인가를 생성할 수 있는 모델입니다. GPT-3의 가장 큰 특징은 Few-Shot Learning이 사용되었다는 점입니다. 최근의 모델들은 대부분 대량의 데이터로 학습한 후 Fine-Tuning을 거쳐 특정 테스크에 대해 좋은 성능을 얻었습니다. 하지만 Fine-Tuning은 많은 데이터를 필요로 하여 시간과 비용이 많이 들 뿐만 아니라 해당 테스크 외에서 모델을 사용할 수 없다는 단점이 있습니다.

Few-Shot Learning은 이런 단점을 보완하기 위해 Fine-Tuning 과정을 삭제하고 적용하고 싶은 테스크에 대한 데이터 몇 개의 예시를 보고 문제를 푸는 학습법입니다. 이 학습법을 통해 기대할 수 있었던 것은 Few-Shot Learning을 통해 특정 task에 Fine-Tuning 된 모델만큼 성능이 나오는 것입니다.

출처 : Language Models are Few-Shot Learners

하지만 GPT-3의 학습 데이터 셋에는 명시적으로 코드가 포함된 것이 아니기 때문에 코드 생성을 기대하기는 어려웠습니다. 따라서 공개된 것이 Codex입니다. Codex는 GPT-3를 코드 데이터를 통해 Fine-Tuning 된 모델입니다. 학습에 사용된 데이터는 Github에 호스팅되어 있는 5,400만 개의 저장소에서 수집하였습니다. 이 데이터 중에서 평균 한 줄의 길이가 100보다 크거나, 최대 한 줄의 길이가 1,000보다 크거나, 문자 중 영어와 숫자의 비율이 적은 파일을 필터링하여 결과적으로 159GB의 데이터 셋으로 학습을 진행하였습니다.

학습된 모델을 정확하게 평가하기 위해 내부적으로 벤치마크 데이터 셋을 만들었다고 합니다. 해당 데이터 셋은 164개의 프로그래밍 문제로 구성되어 있으며 이는 언어 이해, 알고리즘, 간단한 수학을 평가할 수 있습니다. 벤치마크 데이터 셋으로 평가해본 결과 GPT-3(12B)는 테스트에 대해 해결하지 못하지만, Codex는 테스트의 28.8%를 해결했습니다.

출처 : Evaluating Large Language Models Trained on Code, 평가 데이터 셋의 모습

Copilot한테 코딩 시키기

이제 Copilot을 직접 사용해 보겠습니다. Copilot을 사용하려면 먼저 사용 신청을 해야 합니다. 사용 신청을 완료하면 대기자 명단에 들어가게 되고, 차례가 되면 계정이 활성화됩니다. 현재는 Visual Studio Code의 플러그인을 통해 사용할 수 있습니다.

제가 Copilot을 통해 생성해 볼 코드는 알고리즘 문제, 인공지능 학습 코드입니다. 한번 코드를 생성해보겠습니다.

  • 알고리즘 문제

LeetCode에 존재하는 문제를 입력으로 넣어 결과를 확인해보겠습니다.

문제 풀이에 성공했습니다. 하지만 많은 사람이 Github에 LeetCode 문제와 풀이를 올려놓기 때문에 아마 이 입력은 학습 데이터에 포함되어 있을 확률이 높습니다. Copilot에서 제안하는 대부분의 코드는 고유하게 생성되며 이전에 본 적이 없는 코드를 생성한다고 합니다. 하지만 이전에 본 적이 없는 코드를 생성하는 것이 아닌, 이미 존재하는 코드를 한 줄도 빠짐없이 제안하는 사례도 있어 해당 결과물이 정말 패턴을 파악하여 코드가 생성된 것인지는 알 수가 없을 거 같습니다.

  • MNIST 데이터로 AI모델 학습

이번에는 MNIST 데이터 셋을 통해 인공지능 모델을 학습하는 코드를 생성해보겠습니다. MNIST는 컴퓨터 비전 데이터 세트로, 0에서 9까지 10가지로 분류될 수 있는 손글씨 숫자 이미지입니다. 함수 이름은 train이고 주석으로 “MNIST 데이터 셋으로 모델을 학습하고 그 모델을 저장”이라고 적었습니다.

학습 코드의 형태는 띠지만 parameter로 넘기지 않은 변수도 존재하고, parameter로 넘겼지만 사용하지 않는 변수도 존재하는 것을 볼 수 있습니다. 신기하지 않나요? AI가 AI를 만들었습니다!

CodeGPT

아마 현재 Copilot을 사용할 수 없는 분들이 많을 것으로 예상이 됩니다. 그런 분들을 위해 Copilot과 비슷한 서비스를 Ainize에 배포해 놓았으니 한번 사용해보세요! 해당 서비스는 Microsoft가 HuggingFace에 배포한 CodeGPT-small-py 모델을 사용하였으며, 사용 가능한 프로그래밍 언어는 Python입니다.

  • CodeGPT Demo 사용하기

먼저 Ainize에서 제공하는 DEMO를 통해 CodeGPT를 사용해보겠습니다.

Base Code를 입력하고 생성하고 싶은 최대 길이를 슬라이드로 조정하여 Submit을 누르면 원하는 결과를 얻을 수 있습니다. 해당 Demo는 Link에서 사용할 수 있습니다.

  • CodeGPT API 사용하기

이번에는 Ainize에서 제공하는 CodeGPT API를 사용하여 CodeGPT를 사용해보겠습니다. API에 관한 내용은 Link에서 확인할 수 있습니다.

라이센스 이슈

이렇게 완벽해 보이는 Copilot에게도 논란이 있습니다. 바로 라이센스 이슈입니다. 오픈소스 프로젝트를 만들게 되면 해당 프로젝트에 대한 라이센스를 적용해야 합니다. 이 라이센스를 통해 할 수 있는 것과 하지 말아야 하는 것에 대해 정의를 합니다. 흔히 알려진 라이센스로는 MIT, GNU General Public License(GPL) 2.0등이 있습니다.

MIT 라이센스의 경우 결과물을 오픈소스로 해야 할 필요도 없고 소스 코드의 공개 의무도 없습니다. GPL 라이센스의 경우 MIT 라이센스와 달리 의무사항이 엄격한 편입니다. 해당 프로젝트로 나온 결과물은 모두 오픈 소스로 공개해야 하고, GPL 라이센스를 적용해야 합니다. 따로 라이센스을 적용하지 않은 경우에는 기본 저작권법이 적용되어 허락 없이 재생산, 배포, 다른 파생 상품을 만들 수 없습니다.

하지만 Copilot을 학습하기 위해 Github에서 코드를 가져올 때, 이러한 라이센스를 확인하지 않고 가져온 것으로 확인되었습니다. Github 약관에 Github에 올라온 코드들은 데이터베이스에 저장하고 서버에서 분석할 수 있다고 명시되어 있지만, Github 코드를 학습 데이터로 사용한 행위를 단지 코드 분석했다고 볼 수 있을까요? 또한 이러한 코드들의 결과물로 나온 Copilot을 사용하기 위해서는 금액을 지불하여 사용해야 합니다. 이건 라이센스 세탁이 아닐까요?

그래서 개발자들은 AI에 의해 대체될까?

지금까지 Copilot에 대해 살펴보았습니다. 그렇다면 진짜 이 AI가 개발자를 대체할 수 있을까요? 제 생각에는 “NO”입니다. Copilot은 코드를 이해하는 것이 아닌 코드의 패턴을 분석하여 결과를 내기 때문에 Copilot은 아직 불안전하다고 생각합니다. 그렇기에 개발자가 개입하여 불안전한 부분을 고쳐야 하고 어떤 자료 구조를 사용할지 등 문제를 풀 수 있는 구체적인 방법을 직접 제시해야 합니다. Copilot은 이름 그대로 부조종사일 뿐 조종사의 역할은 사람이 해야 한다고 생각합니다.

조금 다르게 생각해보면 Copilot이 개발자를 대체할 수는 없지만, 개발자들의 생산성을 높이고 개발 속도를 더욱 가속화 할 것으로 생각합니다. 제가 생각하기에 개발자는 무언가를 어떻게 해야 할지 계획을 세우고 그것을 구현하는 사람이라고 생각합니다. 하지만 Copilot을 이용하면 개발자는 단지 계획만 세우면 되고 구현하는 일은 Copilot에게 맡기면 됩니다. 또한 Copilot을 통해 개발자들은 누군가가 이미 작성한 코드를 다시 작성할 필요가 없어졌고, 또한 개발하다 막히는 부분이 있을 때 docs를 살펴보지 않고 Copilot을 통해 코드를 생성하면 됩니다.

이렇게 해서 Copilot에 대한 제 개인적인 생각을 정리해보았습니다. Copilot이 개발자를 대체할 것이라는 여론이 있지만 저는 아직은 시기상조라고 생각합니다. 하지만 이렇게 점점 기술이 발전하여 언젠가는 정말 AI가 개발자를 대신 할 수 있을 거 같다는 생각이 듭니다. 글 읽어주셔서 감사합니다. 다음에는 다른 모델을 들고 찾아오겠습니다!

Reference

  1. Github Copilot
  2. Language Models are Few-Shot Learners
  3. Evaluating Large Language Models Trained on Code
  4. Github Licensing a repository
  5. GitHub Terms of Service
  6. LeetCode Two Sum

AI 네트워크는 블록체인 기반 플랫폼으로 인공지능 개발 환경의 혁신을 목표로 하고 있습니다. 수백만 개의 오픈 소스 프로젝트가 라이브로 구현되는 글로벌 백엔드 인프라를 표방합니다.

최신 소식이 궁금하시다면 아래 커뮤니케이션 채널을 참고해주시기 바랍니다. 다시 한 번 감사합니다.

AI네트워크 공식 홈페이지: https://ainetwork.ai/

공식 텔레그램: telegram.com/ainetwork_kr

아이나이즈(Ainize): https://ainize.ai

유튜브: https://www.youtube.com/channel/UCnyBeZ5iEdlKrAcfNbZ-wog

페이스북: https://www.facebook.com/ainetworkofficial/

포럼: https://forum.ainetwork.ai/

AIN Price chart: https://coinmarketcap.com/currencies/ai-network/onchain-analysis/

--

--

AI Network

A decentralized AI development ecosystem built on its own blockchain, AI Network seeks to become the “Internet for AI” in the Web3 era.