_리노
🐶 AI 찐친
💰 재테크 찐친

StarCoder 들어 보셨나요? 코딩을 잘해준대요.

개발에 사용할 수 있는 LLM을 살펴보면 다음과 같은 여러 모델들이 있습니다.

  • MS - Copilot

  • Meta - LLaMA

  • AWS - CodeWhisperer


그리고 HF에도 코드를 생성하는 모델이 있으니 바로 StarCoder 입니다.

올해 StarCoder 2 가 출시되었는데요, 서비스나우, HF, NVIDIA 가 공동으로 만들었다고 하네요.

기사는 다음과 같습니다.

StarCoder2 and The Stack v2


요약하면 다음과 같습니다.



StarCoder2는 대규모 코드 생성용 언어 모델(Large Language Models for Code, 이하 Code LLMs)의 새로운 버전으로, BigCode 프로젝트의 일환으로 개발되었습니다. 이 모델은 Software Heritage와의 협력을 통해 구축된 The Stack v2 데이터셋을 기반으로 합니다. 이 데이터셋은 619개 프로그래밍 언어를 포함하며 GitHub 풀 리퀘스트, Kaggle 노트북 및 코드 문서화와 같은 고품질 데이터 소스를 선택적으로 사용하여 훈련되었습니다​ (Hugging Face)​.

StarCoder2는 3B, 7B, 15B 파라미터를 갖는 세 가지 모델 크기로 제공되며, 3.3조에서 4.3조 토큰에 걸쳐 훈련되었습니다. 이 중 가장 큰 모델인 StarCoder2-15B는 600개 이상의 프로그래밍 언어에서 훈련되었으며, 33B+ 모델과 비교해도 우수한 성능을 보여줍니다​ (Hugging Face)​.

StarCoder2는 특히 고성능 언어 모델에서 요구되는 메모리 효율성을 개선하기 위해 사용되는 'Grouped Query Attention' 기술을 활용합니다. 이를 통해 모델은 주어진 코드 스니펫의 맥락을 더 잘 이해하고, 코드 완성 또는 문제 해결에 필요한 코드를 생성할 수 있습니다​ (Hugging Face)​.

모델은 NVIDIA의 NGC 카탈로그를 통해 API로도 접근 가능하며, 사용자는 NVIDIA 클라우드 크레딧을 사용하여 모델을 경험할 수 있습니다. 또한, 모델은 복잡한 데이터 정제 과정 없이도 사용자의 도메인 및 회사 특화 언어로 훈련을 진행할 수 있도록 NVIDIA NeMo를 사용한 커스터마이징이 지원됩니다​ (NVIDIA Developer)​.

더 자세한 정보는 Hugging Face의 공식 블로그 포스트에서 확인할 수 있습니다.


깃허브에서 보실 수도 있습니다.

https://github.com/bigcode-project/starcoder2

모델을 다운 받아서 해볼 수도 있지만, StarChat 에서 바로 체험해볼 수 있습니다.

StarChat Playground - a Hugging Face Space by HuggingFaceH4


접속해서 간단한 구구단 프로그램을 만들어보기로 합니다.



9×9를 만들어 보기로 합니다.


소스를 복사해서 파이썬에서 실행해봅니다.


간단한 구구단 곱셉을 출력해주네요.


그럼 이제 문제를 내면 맞추도록 해봅니다.

거침없이 코드를 만들어줍니다.


복사해서 실행하니, 에러가 납니다. 난이도가 있었던 것일까요..?


에러를 알려주고 수정해달라고 합니다.


사과를 하더니 바로 수정된 코드를 알려줍니다.

에러가 또 납니다. 아직 그림을 바로 물어볼 수는 없네요.

다시 수정해주네요. 그런데 같은 처음과 같은 에러가 나는 코드 군요.

다시 물어보니 다음과 같이 답변해줍니다.


It appears that you have made a typo when typing out the variable name total_elements on lines 7 through 9. There is an underscore missing between total and elements. Without the underscores, the interpreter cannot recognize the variable correctly since it only matches part of the word.

Try replacing these three instances of the variable name with the following:




total_elements = int((rows * (rows + 1)) / 2)

and see if that fixes the problem. Let me know if you run into anything else!



오류를 잡지 못해서 전체소스를 복사해서 오류를 수정해 달라고 합니다. 이제 부터 chatgpt도 동일하게 물어봤습니다.


StarCoder가 준 코드는 문법 오류에서 헤어나오지 못했습니다.


Chatgpt는 일단 실행은 성공해서 출력까지 해냅니다.


StarCoder를 잘 못 쓴걸까요.. 다시 구구단 프로그램을 짜달라고 해봅니다.


출력결과까지 알려주네요.


구구단 전체 출력을 해주는 것은 좋은데, 사용자가 입력한 것을 받아 처리하기 위해서는 더 많은 대화가 필요한 것 같습니다.

chatgpt는 어떠할까요?

설명도 잘 달아주고, 제 의도와 가장 근접한 코드를 작성해 준 것 같네요.



이상 간단하게 StarCoder를 사용해보았습니다.

제가 잘못 사용한 것일까요? 생각보다 원하는 결과를 얻기가 쉽지 않다고 생각했습니다.

코드 작성에 있어서 어딘가에 더 특화된 부분이 있을 것 같은데 바로 느끼기에는 Chatgpt와 비교해서 장점을 찾지 못했네요. 더 연구가 필요해 보입니다.

5
2개의 답글

👉 이 게시글도 읽어보세요