GDSC Sookmyung 활동/10 min Seminar

AI코딩

우주호 2023. 3. 13. 15:50

AI 코딩이란 말을 들어보셨나요? AI 코딩은 쉽게 말해 AI가 코딩을 해주는 것을 의미합니다. 최근 들어, AI 코딩 프로그램이 많이 생겨나고 있는데요. AI 코딩이 만들어지게 된 배경은 무엇일까요?

첫 번째, 개발자를 양성하기 위한 시간과 어떤 서비스를 출시할 때 그것을 개발하고 테스트하고 검증하는 시간을 단축하기 위해서입니다. 두 번째로는 비개발자도 코딩할 필요성의 증가 때문입니다. 이때 개발자가 존재하지 않아도 AI코딩을 이용하면 개발자의 업무까지 대체할 수 있기 때문입니다. 즉, 반복적인 작업은 컴퓨터에게 맡기고 인간은 추상적인 검토와 판단 및 명령만 내리면 되게 끔 하기 위해서입니다.

이렇게 많은 도움을 주는 AI코딩은 현재 어떠한 것들이 있을까요? AI코딩의 대표적인 예시는 다음과 같습니다.

  • 깃허브 코파일럿(Github Copilot)
  • 딥데브(Deepdev)
  • 인텔리코드(Intellicode)
  • 코덱스(Codex)
  • 알파코드(AlphaCode)

다양한 AI코딩 프로그램들에 대해서 한번 알아보겠습니다.

깃허브 코파일럿(Github Copilot)

GitHub Copilot은 GitHub가 2021년 출시한 자동 코드 완성 인공지능이다. OpenAI의 GPT-3 모델을 이용하여 깃허브의 수많은 레포지토리들을 학습시키는 방식으로 개발되었다.

  • 장점/특징
    • 주석이나 함수 이름에 담긴 의미를 파악하여 코드를 자동 완성해, 단순하고 번거로운 작업을 자동화
    • 코드 편집기와 함께 작동하면서 다음 단계를 제안하는 서비스를 구축하고 학습시킨 것
    • 퍼블릭 리포지터리 코드를 학습, 비주얼 스튜디오 코드(Visual Studio Code) 확장 프로그램으로 설치해 사용 가능
  • 단점/한계
    • 정확성↓
      • 많이 사용되지 않는 기능들은 학습 데이터가 적어서 원하는 결과를 얻기 어렵다
    • 저작권 침해 논란
      • 학습 데이터로 사용한 원본 소스 중에 저작권에 저촉되는 자료가 정말 하나도 없을까?

 

인텔리코드(Intellicode)

Microsoft가 .NET Framework (닷넷 프레임워크)기반의 프로그래밍을 돕는 AI를 개발했는데 이것이 바로 인텔리코드이다. 인텔리코드는 비주얼스튜디오 IDE (통합 개발 환경)에 확장 기능 형태로 설치해 사용할 수 있다.

  • 장점/특징
    • GitHub에 공개된 약 2천여개 프로젝트의 중심이 되는 코드들을 기반으로 IntelliCode AI를 학습 및 습득
    • 각 프로젝트들은 Github에서 star를 100개 이상 받은 것들로만 구성
    • 소스코드를 이해하고 사용하는 데 중점을 둠, 여러 오픈소스 코드와 일반적인 문서를 혼합하여 학습
    • 코드 자동 완성, 코드 작성 시 코드를 디버그

 

딥데브(Deepdev) - 프리뷰 상태

마이크로소프트가 애플리케이션 개발자를 지원하기 위해 개발 중인 자체적인 머신러닝 모델이다.

  • 장점/특징
    • 소스코드를 이해하고 사용하는 데 중점을 둠, 여러 오픈소스 코드와 일반적인 문서를 혼합하여 학습
    • 딥데브에 액세스하려면 적절한 API 키가 있어야 함.
    • 도구를 사용해 코드를 빌드하기 전에 시험해 볼 수 있는 기능 제공

 

코덱스(Codex)

OpenAI가 공개한 GPT-3의 후속 기술로 코드로 변환하는 새로운 딥러닝 언어 모델이다.

OpenAI 데모 영상

  • 장점/특징
    • Python, JavaScript, Go, Ruby, Swift, TypeScript 및 Shell을 포함한 12개 이상의 언어에 능통하며 자연어를 이해하고 이를 해석하여 컴퓨터가 이해할 수 있는 명확한 명령을 생성 가능
    • 사람의 말을 이해하고 컴퓨터가 실제로 처리할 수 있는 프로그래밍 언어로 코드 생성
    • 깃허브의 코드를 포함해 인터넷에 공개된 수십억 줄의 코드로 AI 학습

 

알파코드(Alpha Code)

바둑하는 AI 알파고와 단백질 구조를 예측하는 알파폴드를 개발한 것으로 유명한 딥마인드가 출시한 코딩하는 인공지능이다. 알파코드가 대상으로 하는 것은 Competitive Programming이라는 분야의 대회 문제들로, 정의된 문제를 주고, 주어진 Input에 대해 정해진 Output이 나오도록 코딩하는 것이다.

  • 장점/특징
    • GPT-3과 같은 Transformer기반의 생성 모델
    • 하나의 답을 바로 도출하는 것은 아니고, 조건을 바꾸어 가면서 수천~수백만에 이르는 크기의 잠재 답안(샘플)을 얻은 후 이 중에서 문제의 테스트를 pass할 수 있는 것만을 필터링
    • 문제를 입력으로 넣으면, 코드가 자동으로 출력
    • 코딩 대회에 참가해 상위 54% 내에 드는 코드를 작성
  • 단점/한계
    • 최종 코드가 길어지면 그만큼 예측해야 하는 token의 수가 늘어나고, 정확도를 맞추기 위해서는 필요한 샘플군의 크기가 증가할 수밖에 없기 때문에 긴 코드 작성에 어려움이 있다 ⇒ 실무에 적용하기 너무 비효율적

 

🤔 앞으로 우리는 어떻게 해야 할까?

이렇게 소개한 AI코딩 도구들을 제외하고도 계속해서 여러 서비스들이 개발되고 있습니다. 앞으로는 더욱 개선된 성능을 보이는 도구들이 나올 수도 있습니다. 또한, 다양한 산업 군에서 디지털 트랜스포메이션이 이루어지고 있는 지금 숙련된 개발자는 계속 요구되고 있고 또한 Low-Code나 No-Code 플랫폼이 진지하게 거론되고 있는 상황에서 AI코딩 도구의 산업화에서 사용 비율은 앞으로 더 높아질 것입니다. 그렇다면 우리 개발자들은 진화하는 AI코딩에 대해 어떠한 태도를 취해야 할까요?

실무에서는 다양한 알고리즘과 라이브러리 그리고 솔루션을 사용해서 서비스를 만듭니다. 그리고 어떠한 서비스를 만들기 위해 지금까지 학습하고 경험한 모든 내용들을 합하여 가장 최적의 방안을 찾아냅니다. 이러한 과정은 컴퓨터가 할 수 있는 영역이 아닙니다. 즉, 코딩하는 AI는 미래에 가능하겠지만 오류 없이 다양한 상황을 이해하고 해석하여 최적의 방안을 제공하는 일은 AI에게 지나치게 비효율적일 것입니다. 따라서 이 부분은 여전히 사람의 몫으로 남아있을 것입니다.

따라서 AI코딩 도구들의 발전을 단순 코더의 일이 줄어드는 것으로 받아들이고 개발자의 효율을 높여줄 수 있다고 생각해야 할 것입니다. 그리고 개발자는 더 높은 수준의 의사 결정이 필요한 시스템 설계나, 추상화, 아키텍처링으로 전환될 가능성이 있기 때문에 이러한 부분에서의 능력을 키워야 할 것입니다. 따라서 우리는 AI코딩 도구들을 보조자로서 어떻게 잘 활용할 수 있을지를 같이 고민해 봅시다!

 

 

참고 자료

'GDSC Sookmyung 활동 > 10 min Seminar' 카테고리의 다른 글

MSA, 마이크로 서비스 아키텍처  (0) 2023.03.19
Apache Kafka 알아보기  (0) 2023.03.13
빅데이터를 알아보자  (0) 2023.03.13
GIT 브랜치 전략이란  (0) 2023.03.05
스프링부트 로그 찍기  (0) 2023.03.05