본문 바로가기
기타

[Copilot] 이제 코딩도 AI

by yonikim 2021. 7. 20.
728x90

 

멀지 않은 미래에선 인공지능이 코딩을 하게 될 것이라고 생각하긴 했으나, 그 미래가 이렇게 빨리 도래될 줄은 몰랐다. 

Github Copilot 은 라인의 완성도와 함수의 바디 전체를 제안해주는 AI pair programmer 로, OpenAI에서 만든 AI 시스템인 Codex로 구동되며 인터넷  공개된 인터넷 텍스트와 수십억줄의 코드에 의해 학습되었다고 한다.

 

체험 신청인원이 제한되어 있는거 같은데 한발 늦은거 같다...

 

(https://copilot.github.com/)

 

 


Copilot 의 핵심 시스템, Codex 란?


 

Codex 는 2020년 6월에 공개된 GPT-3 를 활용하여 만든 모델이다.

 

GPT-3 는 Generative Pretrained Transformer 의 약자로 가장 큰 특징은 Few-Shot Learning 이 사용되었다는 점이다.

최근의 모델들은 대부분 대량의 데이터로 학습한 후 Fine-Tuning 을 거쳐 특정 태스크에 대해 좋은 성능을 얻었다. 하지만 Fine-Tuning 은 많은 데이터를 필요로 하기 때문에 비용이 많이 들 뿐만 아니라 해당 태스크 외에서 모델을 사용할 수 없다는 단점이 있다. Few-Shot Learning 은 이러한 단점을 보완하기 위해 Fine-Tuning 과정을 삭제하고, 적용하고 싶은 태스크에 대한 데이터 몇 개의 예시를 보고 문제를 푸는 학습법이다. 

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

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

 

(출처: https://medium.com/ai-networkkr/ai-모델-탐험기-14-코딩하는-인공지능-copilot-803f12fc81aa)

 

 


사용후기


타인의 경험을 빌려 정리해 보자면 결론은,

3~5년 내에 우리는 모두 지금보다 훨씬 더 많은 주석을 작성하게 될 것이고 변수명 혹은 함수명 등을 작성할 때 훨씬 더 설명적으로 Naming 하게 될 것이며 훨씬 더 적은 코드를 작성하게 될 것이다. 또한 수많은 코드를 리뷰하게 될 것이다. 

 

장점 

  • 반복적이고 지루한 보일러플레이트 코드 작성에 탁월하다. 최소한의 Context 로 dataset을 다룰 수 있고, 여러 ML 모델을 훈련 및 평가할 수 있다.  

단점

  • 고급 기능에 대해서는 유용성이 조금 더 미묘하다.
  • 코드가 원하는 바대로 잘 작동하는지 주의를 기울여서 살펴봐야 한다.
  • 즉, 코드 리뷰를 잘해야 한다. 

 

(출처: https://vladiliescu.net/github-copilot-first-impressions/)

 

 


 

이렇게 완벽해보이는 Copilot 에게도 논란이 있다. 바로 라이센스 이슈이다. 오픈소스 프로젝트를 만들게 되면 해당 프로젝트에 대한 라이센스를 적용해야 한다. MIT 라이센스의 경우 결과물을 오픈소스로 공개할 필요도 없고 소스 코드 공개 의무도 없다. GPL 라이센스의 경우 MIT 라이센스와 달리 의무사항이 엄격한 편이기에 해당 프로젝트로 나온 결과물을 모두 오픈소스로 공개해야 한다. 따로 라이센스를 적용하지 않은 경우에는 기본 저작권법이 적용되어 허락없이 재생산, 배포, 다른 파생 상품을 만들 수 없다. (참조: [Git] 오픈 소스 라이센스 선택하기)

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

 

 

(출처: https://medium.com/ai-networkkr/ai-모델-탐험기-14-코딩하는-인공지능-copilot-803f12fc81aa)

 

728x90

'기타' 카테고리의 다른 글

개발 전 ADR 작성하기  (1) 2024.02.28
네이버 검색에서 티스토리 노출하기  (2) 2023.11.19
[서비스] Airbyte 도입기  (0) 2021.04.22