본문 바로가기

Home > 열린마당 > 공개SW 소식

공개SW 소식

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

support 게시글 작성 시각 2021-11-11 11:22:14 게시글 조회수 3933

2021.11.10.
ⓒCIO Korea / Martin Heller | InfoWorld

 

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

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

‘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 코덱스를 사용해 개별 행과 전체 함수를 합성하여 제안한다. 나아가 서비스는 사용자의 선택을 바탕으로 향후 제안을 개선한다. 

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

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

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


예문을 입력하면 함수 이름에서 추론한 완성형 코드를 얻을 수 있다. 다음 튜토리얼에서는 함수가 수행해야 할 작업을 요약한 주석을 입력하면 된다. 이를 통해 해당 주석에서 추론한 완성형 코드를 얻을 수 있다(함수 이름이 너무 막연하더라도 상관없다). 

 

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

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

코파일럿은 다양한 프레임워크 및 언어와 함께 작동한다. 파이썬, 자바스크립트, 타입스크립트, 루비, 고 언어(그리고 최근에는 자바)를 지원하며, C 계열 언어(C, C++, C#)는 향후 제공될 예정이다. 리액트(React) 등의 인기 자바스크립트 프레임워크도 매우 원활하게 작동한다고 한다. 

 

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

 

[원문 기사 : https://www.ciokorea.com/news/214314 ] 

 

※ 본 내용은 한국아이디지(주) (https://www.idg.co.kr/)의 저작권 동의에 의해 공유되고 있습니다.
Copyright ⓒ 2020 International Data Group. 무단전재 및 재배포 금지. 

맨 위로
맨 위로