본문 바로가기 주메뉴 바로가기 검색 바로가기
AI, 인간처럼 코드 작성 가능...버그와 같은 각종 실수도 인간과 똑같아
상태바
AI, 인간처럼 코드 작성 가능...버그와 같은 각종 실수도 인간과 똑같아
개발자의 소프트웨어 작성 작업을 돕는 새로운 툴이 인간과 비슷한 실수를 한다.
By WILL KNIGHT, WIRED US

일부 소프트웨어 개발자는 현재 인공지능(AI)이 코드 작업을 돕도록 한다. 그리고, 많은 개발자가 AI도 인간과 같은 실수를 한다는 사실을 발견했다.

2021년 6월, 코드 작업 호스팅과 협력 툴을 제공하는 마이크로소프트의 자회사인 깃허브(GitHub)는 AI를 이용해 프로그래머를 돕는 프로그램 베타 버전을 출시했다. 명령이나 데이터베이스 질문, API 요청 등을 입력하면 코파일럿(Copilot)이라는 프로그램이 사용자의 의도를 추측하고 나머지 코드를 작성한다.

최근 코파일럿 테스트를 신청한 어느 한 바이오테크 기업의 데이터과학자인 알렉스 나카(Alex Naka)는 코파일럿이 매우 유용하며, 자신의 작업 방식에 변화를 가져왔다고 밝혔다. 나카는 “브라우저를 검색해 API 문서나 스택 오버플로(Stack Overflow) 예제를 찾는 데 소요하는 시간이 단축됐다. 업무가 코드 생성에서 분류로 약간 달라진 듯한 느낌을 받았다”라고 말했다.

그러나 나카는 이내 코파일럿의 오류가 자신의 코드를 다른 방식으로 영향을 미치기 시작할 수 있다는 사실을 발견했다. 나카는 “AI 프로그램이 제안하는 코드를 받아들이면서 몇 가지 미묘한 실수를 간과할 때가 있다. AI의 미묘한 실수는 추적하기 매우 어렵다. 아마도 인간이 직접 코드 작성 작업을 할 때와는 다른 유형의 실수를 하기 때문일 수도 있다”라고 밝혔다.
 
[사진=Pixabay]
[사진=Pixabay]

AI의 잘못된 코드 생성 위험성은 놀라울 정도로 크다. 최근, 뉴욕대학교 연구팀은 코파일럿이 생성한 코드를 분석하고는 보안이 중요한 특정 작업에서 AI의 코드가 40%의 확률로 결함을 지닌다는 사실을 확인했다.

코파일럿의 코드 분석에 함께 한 뉴욕대학교의 브랜던 도란 개비트(Brendan Dolan-Gavitt) 교수는 “결함을 포함할 확률이 40%라는 수치는 예상보다 높은 수치”라며, “코파일럿의 훈련 방식이 실제로 훌륭한 코드 작성을 위한 방식으로 이루어지지 않았다. 단순히 주어진 명령에 따르는 일종의 텍스트를 생성하는 방법만 훈련받았다”라고 설명했다.

각종 결함이 있지만 코파일럿을 비롯한 AI 코드 작성 툴 모두 소프트웨어 개발자의 코드 작성 방식의 대대적인 변화가 이루어질 것을 시사한다. 갈수록 AI를 사용한 일상적 업무 자동화 관련 관심이 증가했다. 그러나 코파일럿은 오늘날 AI의 기법이 지닌 몇 가지 함정을 부각하기도 한다.
 
“인간이 직접 코드 작성 작업을 할 때와는 다른 유형의 실수를 하는 듯하다.”
알렉스 나카, 데이터 과학자

코드 분석 작업은 코파일럿 맞춤 제작을 가능하게 하지만, 도란 개비트 교수는 코파일럿이 제한된 구문 목록을 포함한 사실을 발견했다. 모두 코파일럿 시스템이 공격성 메시지나 타인이 작성한 널리 알려진 코드 작성 복제를 막기 위해 도입된 것이 확실했다.

깃허브 부회장이자 코파일럿의 공동 개발자 중 한 명인 외게 드 무어(Oege de Moor)는 코파일럿 제작 초기 단계부터 보안을 중요하게 생각했다고 주장한다. 드 무어 부회장은 뉴욕대학교 연구팀이 주장한 코파일럿의 결함이 있는 코드 생성 비율은 보안 결함이 더 발생할 확률이 높은 하위 세트의 코드에만 관련되었다고 주장한다.

드 무어 부회장은 뉴욕대학교 연구팀이 코드 속 버그를 자동 식별하기 위해 사용한 툴인 코드QL(CodeQL)도 개발했다. 드 무어 부회장은 깃허브가 개발자에게 코파일럿을 코드QL과 함께 사용해 작업 안전성을 확인할 것을 추천한다고 밝혔다.

깃허브의 코드QL은 머신러닝과 관련된 뛰어난 작업을 하는 유명 AI 기업인 오픈AI(OpenAI)가 개발한 AI 모델을 최우선으로 두고 구축한 프로그램이다. 오픈AI가 개발한 모델인 코덱스(Codex)는 텍스트와 컴퓨터 코드의 다음 특성을 예측하도록 훈련받은 대규모 인공 신경망으로 구성됐다. 알고리즘은 깃허브에 저장된 코드 수십억 줄을 소화해 코드 작성 방법을 학습한다.

오픈AI는 몇 가지 놀라운 코딩 변형 작업을 수행하도록 코덱스를 최우선으로 두어 자체 AI 코딩 툴을 구축했다. “1부터 100까지 임의의 변수를 광범위하게 생성하고는 그중 가장 큰 값을 다시 제시하라”와 같이 자연어로 입력된 지시 사항을 몇 가지 프로그래밍 언어 코드로 작성하여 변환한다.

오픈AI 프로그램의 또 다른 버전인 GPT-3는 주어진 주제에 부합하는 논리적인 텍스트를 생성할 수 있으나 웹의 어두운 이면을 통해 학습한 공격적인 표현이나 편견이 담긴 언어를 반복할 수 있다.

코파일럿과 코덱스 모두 일부 개발자가 AI의 개발 작업 자동화 가능성을 두고 궁금증을 자아내는 결과를 낳았다. 사실, 나카의 경험에서 드러난 바와 같이 개발자는 프로그램을 사용할 상당한 기술이 필요하다. 코파일럿은 AI가 제안한 문구를 종종 조사하거나 변경해야 하기 때문이다.

뉴욕대학교 연구팀의 코파일럿 코드 분석 연구에 참여한 박사 후 연구원인 해몬드 피어스(Hammond Pearce)는 코파일럿이 간혹 문제가 있는 코드를 생성하는 이유가 코드의 작업 목표를 100% 이해하지 못하기 때문이라고 말한다. 그는 “취약점은 종종 개발자가 알아야 할 맥락이 부족한 탓에 발생한다”라고 언급했다.

일부 개발자는 AI 때문에 이미 나쁜 습관이 형성된다는 점을 우려한다. AI로 코드 생성 작업을 한 적이 있지만, 코파일럿을 사용한 적은 없는 소프트웨어 개발자 맥심 카이로(Maxim Khailo)는 “업계가 단순히 복사와 붙이기 방식의 해결책에서 벗어나려 하면서 열심히 노력했다. 코파일럿은 매우 강력한 해결책을 만들었다”라고 평가했다.

카이로는 해커가 코파일럿과 같은 프로그램에 개입할 수 있다고 생각한다. 그는 “내가 해커라면 깃허브에서 취약한 코드 프로젝트를 생성하고는 암시장에서 깃허브 특성을 구매하면서 인위적으로 인기를 조작할 것이다. 또한, 프로그램의 다음 훈련 구조의 일부가 되기를 바랄 것이다”라고 말했다.

반면, 깃허브와 오픈AI 모두 자체적으로 개발한 AI 코딩 툴이 갈수록 오류를 생성할 확률이 줄어들 것이라고 주장한다. 오픈AI는 수동 생성 툴과 자동화된 툴을 모두 사용하면서 프로젝트와 코드를 신중하게 검토한다고 밝혔다.

드 무어 부회장은 코파일럿의 최신 업데이트가 보안 취약점 발생 빈도를 감소해야 한다고 말했다. 다만, 자신의 개발팀이 코파일럿의 결과물을 개선할 다른 방법도 탐색 중이라고 밝혔다. 그 한 가지 방법은 두드러진 AI 모델이 학습하는 나쁜 예시를 제거하는 것이다. 또 다른 방법은 게임과 다른 영역에서 인상적인 결과를 생성한 AI 기법인 강화학습을 이용해 이전에는 볼 수 없었던 사례와 같은 일부 부정적인 사례를 자동으로 감지하는 것이다. 드 무어 부회장은 “대대적인 개선이 이루어지고 있다. 1년 후면 코파일럿이 어떤 모습이 될지 상상하는 것이 거의 불가능하다”라고 말했다.

** 위 기사는 와이어드US(WIRED.com)에 게재된 것을 와이어드코리아(WIRED.kr)가 번역한 것입니다. (번역 : 고다솔 에디터)

<기사원문>
AI Can Write Code Like Humans—Bugs and All
이 기사를 공유합니다
RECOMMENDED