Offcanvas

AI / 개발자 / 머신러닝|딥러닝 / 오픈소스

칼럼ㅣ깃허브 코파일럿에서 ‘희망’을 보았다

2021.11.10 Martin Heller  |  InfoWorld
‘깃허브 코파일럿’이 언제나 적절하고 정확하며 실행 가능한 코드를 생성하는 건 아니지만 어느 정도 유용하다는 점은 부인할 수 없다. 

컴퓨터 프로그래밍의 종말은 한두 해 된 이야기가 아니다. 하지만 여러 이유로 종말은 아직 오지 않았다. 가장 중요한 이유를 들자면 프로그래밍이 과학이나 공학이기도 하지만 그만큼이나 예술이기도 하다는 것이다. 
 
ⓒGetty Images

‘AI 동료 프로그래머(AI pair programmer)’라고도 부르는 ‘깃허브 코파일럿(GitHub Copilot)’은 인텔리센스(IntelliSense) 등이 제공할 수 있는 수준을 약간 능가하는 프로그래밍 자동화를 지원하고자 한다. 

물론 완전히 자율적이진 않다. 코파일럿이 유의미한 코드를 생성하려면 (개발자가) 먼저 의도를 선언(입력)해야 하고, 또한 코파일럿이 불가피하게 궤도를 이탈하면 이를 정상 궤도로 되돌릴 수 있도록 감독해야 한다. 

코파일럿은 비주얼 스튜디오 코드(Visual Studio Code), 젯브레인 IDE(예: 인텔리제이 IDEA(IntelliJ IDEA)), 네오빔(Neovim) 인터페이스를 갖춘 클라우드 서비스다(사용자의 컴퓨터에서 실행되거나 깃허브 코드스페이스의 클라우드에서 실행). 

그리고 이 클라우드 서비스는 수십억 줄의 공개된 코드를 학습한 언어 모델 ‘오픈AI 코덱스(OpenAI Codex)’로 구동되는 코드 예측 엔진이다. 

여기서 코덱스와 코파일럿에 대한 논란이 있었다. 하지만 코파일럿의 잠재적인 저작권 및 프라이버시 침해에 관해 열변을 토하기 전에, 코덱스가 머신러닝 커뮤니티 내에서 공정 이용(fair use)이라고 간주되는 방식에 따라 공개적으로 사용 가능한 코드를 학습했다는 점을 이해해야 한다. 

아울러 코덱스는 검색 엔진이 아니라 코드 합성기(code synthesizer)라는 점도 이해해야 한다. 

이와 관련해 코파일럿 개발팀은 “이는 새로운 공간이다. (깃허브는) 이에 관해 개발자들과 토론하고 싶으며, AI 모델 학습의 적절한 표준 확립을 주도하고 싶다”라고 밝힌 바 있다. 

깃허브 코파일럿의 작동 방식 
깃허브에 따르면 오픈AI 코덱스는 공개적으로 사용할 수 있는 소스 코드와 자연어를 학습했다. 따라서 사람과 프로그래밍 언어를 모두 이해한다. 이를 통해 깃허브 코파일럿 편집기 확장 프로그램은 주석과 코드를 깃허브 코파일럿 서비스로 보내고, 오픈AI 코덱스를 사용해 개별 행과 전체 함수를 합성하여 제안한다. 나아가 서비스는 사용자의 선택을 바탕으로 향후 제안을 개선한다. 
 
위 사진에서 볼 수 있는 것처럼 깃허브 코파일럿은 오픈AI 코덱스 언어 모델을 사용하여 비주얼 스튜디오 코드 및 기타 편집기의 콘텐츠를 기반으로 제안을 제공하는 서비스다. ⓒGitHub

비주얼 스튜디오 코드에서의 깃허브 코파일럿 테스트 
현재 코파일럿은 제한적인 테크니컬 프리뷰 상태다. 이를 설치하려면 프리뷰 프로그램 대기자 명단에 등록해야 한다. 

등록 이메일을 받았다면 비주얼 스튜디오 코드 마켓플레이스의 깃허브 코파일럿 확장 프로그램 페이지로 가서 이를 설치할 수 있다. 그다음 비주얼 스튜디오 코드에서 해당 확장 프로그램을 승인해야 한다. 

시작하기 페이지에는 직접 해볼 수 있는 튜토리얼이 있다(2번부터 시작). 이 튜토리얼에서 .JS 파일을 생성하고 아래의 예문을 입력한다. 
 
function calculateDaysBetweenDates(begin, end) {

예문을 입력하면 함수 이름에서 추론한 완성형 코드를 얻을 수 있다. 다음 튜토리얼에서는 함수가 수행해야 할 작업을 요약한 주석을 입력하면 된다. 이를 통해 해당 주석에서 추론한 완성형 코드를 얻을 수 있다(함수 이름이 너무 막연하더라도 상관없다). 
 
비주얼 스튜디오 코드 마켓플레이스에 있는 깃허브 코파일럿 확장 프로그램 페이지. 위 사진은 확장 프로그램이 이미 설치된 상태다. ⓒIDG
 
깃허브 코파일럿이 활성화된 비주얼 스튜디오 코드의 스크린샷. 이제 막 첫 번째 튜토리얼을 시작해, 입력한 내용 아래에서 '유령' 코드 제안과 팝업 코파일럿 제어 바를 볼 수 있다. 심술궃게 새 파일을 자바스크립트가 아닌 타입스크립트로 만들었데도 코파일럿은 이에 상관없이 자바스크립트 코드를 생성했다. ⓒIDG

깃허브 코파일럿 기능 
함수 이름과 요약 설명에서 함수 본문을 추론하는 것 외에도, 코파일럿은 편집 중인 파일의 다른 코드와 변수 이름에서 힌트를 얻을 수 있다. 예를 들면 타입스크립트에서 변수 이름 뒤에 콜론을 입력하면 코파일럿은 해당 유형을 채우려고 할 것이다. 

가령 ‘var test1 =’을 입력하면 코파일럿이 ‘test’라는 단어에서 힌트를 얻어 이전 함수에서 실행 가능한 테스트를 생성할 것이다. 반복적인 패턴을 형성하는 여러 줄을 입력하면 코파일럿은 동일한 패턴의 더 많은 예를 생성한다. 

코파일럿은 다양한 프레임워크 및 언어와 함께 작동한다. 파이썬, 자바스크립트, 타입스크립트, 루비, 고 언어(그리고 최근에는 자바)를 지원하며, C 계열 언어(C, C++, C#)는 향후 제공될 예정이다. 리액트(React) 등의 인기 자바스크립트 프레임워크도 매우 원활하게 작동한다고 한다. 
 
행의 시작 부분을 여러 탭을 입력해 행 8과 9를 생성했다. 10 행을 입력했고, 11 행의 시작 부분을 입력하자 코파일럿이 11행을 완성했다. 타입스크립트를 사용했고, 이는 화면 하단에서 볼 수 있듯이 노드닷제이에스에서 실행한 자바스크립트로 컴파일된 모습이다. 8행과 9행의 예상 결과 값에 대해 잘못 생성된 주석을 확인할 수 있다. ⓒIDG

깃허브 코파일럿의 한계 
우선, 코파일럿이 언제나 적절한 코드, 정확한 코드, 실행 가능한 코드를 생성하는 건 아니다(테스트에서 3가지 경우를 모두 발견했다). 따라서 코파일럿이 생성한 코드를 반드시 검토해야 한다. 이를 구글 검색은 잘하지만 세심한 관리감독이 필요한 초보 프로그래머가 쓴 코드라고 생각하는 게 좋다.
 
코파일럿이 제공하는 첫 번째 코드 조각을 수락하지 않는 방법은 컨텍스트 메뉴에서 ‘코파일럿 열기(Open Copilot)’ 옵션을 사용하거나 ‘Ctrl-Enter’ 키 조합으로 별도 탭에 코파일럿 제안 창을 띄우는 것이다. 

제안된 10가지 솔루션을 모두 살펴보고, 원하는 것과 가장 가까운 코드를 수락하라. 이렇게 하면 생성된 코드를 약간 편집해 탄탄하게 만들 수 있다. 

한편 깃허브는 코파일럿 코드 생성에 관한 벤치마크를 실시했다. 그 결과는 다음과 같다. 

“오픈소스 리포지토리에서 테스트 범위가 넓은 파이썬 함수 세트로 벤치마크를 진행했다. 함수 본문을 비우고 이를 깃허브 코파일럿이 완성하도록 했다. 첫 번째 시도의 성공률은 43%였고, 10번의 시도를 허용했을 때는 57%였다.” 

‘43%’는 분명히 실무에 사용하기에는 그다지 좋은(또는 허용 가능한) 정확도가 아니지만 새로운 코드 생성 기술치고는 인상적인 수치다.

그럼에도 불구하고 유능한 코드 리뷰어라면 처음부터 직접 작성하는 것보다 코파일럿이 생성한 코드를 편집하는 것이 훨씬 더 빠르게 정확하고 견고한 코드를 얻을 수 있다. 생소한 라이브러리나 프레임워크로 작업하는 경우라면 특히 그렇다. 
 
우측 탭은 함수 본문으로 제안된 코드 조각 10개를 보여준다. 이중에서 원하는 것에 가장 근접한 조각을 선택하면 된다. ⓒIDG

깃허브 코파일럿 예제 
2021년 11월 5일을 기준으로 (코파일럿) 홈페이지에는 일반 코드 생성 예제 25개 그리고 코파일럿 갤러리에는 동영상 예제 4개가 제공되고 있다. 계속해서 다양한 프로그래밍 언어로 된 예제가 게시되리라 예상한다. 예제에 포함된 애니메이션과 갤러리의 MP4 영상은 볼만한 가치가 충분하다.   
 
파이썬에서의 감성분석 예제. 약 6줄과 여러 탭을 입력했다. 여기서 몇 가지 제안을 거부했는데, 예를 들면 긍정적_감성 목록이라고 생성됐지만 부정적이라고 판단한 테스트 문장이다. 코드는 파이썬 리퀘스트 패키지를 기기에 설치한 후에야 실행됐다. ⓒIDG

전반적으로 봤을 때 깃허브 코파일럿은 어느 정도 유용하다. 또한 현재의 성능은 (코파일럿이) 미래에 훨씬 더 많은 시간을 절약해줄 수 있으리라는 희망을 준다. 물론 이것이 출시됐을 때 구매할 가치가 있을지는 성능 발전 여부뿐만 아니라 개발자 본인의 스킬 및 역할에 달려 있다. 

한편 깃허브 코파일럿과 경쟁하는 여러 제품이 있다. 가장 유망한 제품은 ‘탭나인(Tabnine)’이다. 탭나인은 인텔리센스를 강화한 버전처럼 보인다. 오픈소스 코드뿐만 아니라 개발자 본인이 만든 코드를 선택적으로 학습시킬 수 있다. 다른 대안 제품 몇 가지는 스택오버플로우에서 관련 코드를 검색한다는 점에서 다소 염려스러운 방식이 아닌가 싶다. 

깃허브 코파일럿을 사용해보고, 시간 경과에 따른 발전 상황을 추적하는 일은 확실히 가치가 있을 것이다.

* Martin Heller는 인포월드의 기고 편집자이자 리뷰어다. 최근에는 알파 소프트웨어(Alpha Software)의 기술 및 교육 부문 부사장과 투비파이(Tubifi)의 회장 겸 CEO를 역임했다. ciokr@idg.co.kr
 
추천 테크라이브러리

회사명:한국IDG 제호: ITWorld 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아00743 등록일자 : 2009년 01월 19일

발행인 : 박형미 편집인 : 박재곤 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2022 International Data Group. All rights reserved.