[분석AI서비스팀 이현정]
지난 해 9월에 시작한 Huggingface와 ServiceNow Research의 협업 프로젝트 Bigcode에서 올해 5월 오픈 소스 코딩 모델을 출시했습니다.
StarCoderBase, StarCoder, StarCoderPlus가 그것인데, 80개 이상의 프로그래밍 언어, Git 커밋, Git Hub 이슈, 주피터 노트북을 포함하여 허가된 Github 데이터를 학습한 code를 위한 LLM(Code LLMs) 입니다.
그 차이는 각각 다음과 같습니다.
- StarCoderBase: LLaMA와 마찬가지로 1조 개 토큰에 대해 약 150억 개의 파라미터를 학습한 모델
- StarCoder: StarCoderBase에 350억 개의 파이썬 토큰을 파인튜닝한 모델
- StarCoderPlus : StarCoderBase에 영어 웹 데이터를 파인튜닝한 모델
공식 사이트에서는 StarCoderBase가 프로그래밍 벤치마크에서 기존의 개방형 코드 LLM보다 성능이 뛰어나며, OpenAI의 code-cushman-001 (GitHub Copilot의 초기 버전을 구동한 오리지널 Codex 모델)과 같은 폐쇄형 모델과 같거나 능가한다는 사실을 발견했고, 8,000개가 넘는 토큰의 컨텍스트 길이를 가진 StarCoder 모델은 다른 어떤 개방형 LLM보다 더 많은 입력을 처리할 수 있어 다양하고 흥미로운 애플리케이션 구현할 수 있다고 말하고 있습니다.
실 사용 예
StarCoder는 Huggingface 사이트의 StarChat Playground에서 사용해 볼 수 있고, VS Code Extension과 Jupyter notebook Extension이 있어서 확장을 하여 사용할 수도 있습니다. (단, Extension을 사용할 경우 Huggingface에서 AccessToken을 발급받아서 설정해야 함)
사용한 것은 StarChat Playground, VS Code Extension이고, 비교를 위해 ChatGPT 3.5의 결과도 함께 확인했습니다. (단, 오류 없는 코드가 작성되었는지 여부는 판단하지 않았습니다.)
-Python
“웹 사이트에서 데이터를 추출하는 방법을 python을 이용해서 작성” 해달라고 요청했는데, StarChat Playground와 ChatGPT 3.5는 비교적 코드 형태를 갖추었고, 이해할 수 있는 코드가 작성된 것에 반해, VS Code Extension을 이용한 코드는 이미 주석이 처리된 채로 코드가 생성되었고, 코드의 형태가 완성되지 않은 상태에서 생성이 끝났습니다.
-Java
Java의 경우 “Pattern matching을 이용한 switch 구문의 예제를 작성” 해달라고 요청했는데, StarChat Playground에서는 switch 구문에 Pattern matching을 사용할 수 있게 된 Java 버전을 명시하여 요청한 경우, 원하는 형태의 결과를 보여줬고, VS Code Extension은 경우 버전 명시를 했음에도 결과가 나오지 않았을 뿐더러, 한번에 완전한 구문을 만들어주지 못해, 잘린 부분에서 다시 요청하는 동작을 하여 구문을 완성 시켰습니다. ChatGPT 3.5의 경우 버전 명시없이 요청했음에도 원하는 결과를 출력해 주었습니다.
-JavaScript
Javascript의 경우 세가지 모두 요청에 따라 결과가 나왔으며, 버전을 명시하면 그 버전에 맞는 코드가 작성되는 것을 확인하였습니다.
마침
StarCoder라는 프로그래밍에 특화된 모델이 나왔다는 것과 그것이 완전히 무료라는 것은 사용자 입장에서 정말 환영할 만한 부분이었습니다. 그리고 StarChat Playground를 통한 결과 역시 실제 코딩시에 사용할 만한 했습니다. VS Code Extension은 IDE에서 별도의 패널없이 편집 영역에서 직접 사용할 수 있는 것이 큰 장점이있고, 요청에 어떤 언어로 작성할 것인지 명시하지 않아도 생성된 파일의 확장자에 따라 코드가 생성되어 편리한 부분이 있었습니다. 또한 Enter, Space bar 등 키 이벤트가 발생하면 코드 요청이 없더라도 VS Code 우측 하단 ‘Hugging Face Code’라는 부분에 실행 표시가 나타나며, 뒤에 이어질 것으로 예측되는 추천 코드들이 보여졌고, 이러한 추천 코드들은 OUTPUT패널에서 ‘Hugging Face Code’ 를 선택하면 그 동안 추천된 코드의 이력을 확인할 수 있는 점도 편리한 부분이었습니다.
다만, 동일 모델을 사용하고 있다고 보기에는 StarChat Playground의 결과물과 VS Code Extension의 결과물이 너무나도 상이했고, VS Code Extension의 경우, 별도의 요청이 없어도, 현재 위치에서 키 이벤트만 발생하면 추천코드를 노출해주는 등 요청을 해석하여 적절한 코드를 생성한다기 보다는 앞서 작성된 코드를 Stack (The Stack 데이터 세트는 GitHub의 코드로 구성 된 매우 큰 데이터 세트)에서 찾아 그 이후에 올 수 있는 코드를 노출(검색)해주는 느낌을 받았습니다.
필자는 Big Code 프로젝트를 시작부터 눈여겨 보고 있었고, StarCoder의 출시가 반가웠지만, 위 테스트를 진행해 본 결과, 현 시점에서는 빠르게 원하는 결과물을 찾기 위해 ChatGPT, StarChat Playground, VS Code Extension 순으로 접근하게 될 것 같습니다. 오픈 소스 StarCoder가 조금 더 성능이 좋아지길 기대하며 응원합니다.
参考
https://huggingface.co/blog/starcoder
https://huggingface.co/spaces/bigcode/bigcode-playground
https://huggingface.co/spaces/HuggingFaceH4/starchat-playground
https://blog.naver.com/thgml4814