소개
생성형 AI는 코드 생성을 완전히 자동화하는 직전에 있지만, 아직 그 이정표에 도달하지는 않았습니다. 하지만 그 다음으로 좋은 도구는 Code Llama입니다! 2023년에 출시된 Meta의 최신 코드 생성기인 Code Llama는 다양한 프로그래밍 작업에서 코더를 지원하기 위해 설계되었습니다. Code Llama는 개발자 워크플로우 향상, 코드 생성 및 완성, 테스트 지원에 중점을 둡니다. Code Llama를 독립형 자산으로 살펴본 다음, 코딩에 특화된 다른 생성형 AI 도구와 비교해 보겠습니다.
Code Llama 작동 방식
Code Llama는 Llama 2의 코드 특화 변종으로, Llama 2를 코드 특화 데이터셋으로 추가 훈련하고 이러한 데이터셋에서 더 오랜 기간 동안 더 많은 데이터를 샘플링하여 개발되었습니다. 이 과정을 통해 Code Llama는 Llama 2의 기반 위에 향상된 코딩 능력을 갖추게 되었습니다. 코드와 자연어 프롬프트(예: “피보나치 수열을 출력하는 함수를 작성해 주세요.”)로부터 코드와 코드의 자연어 설명을 생성할 수 있습니다. 또한 코드 완성 및 디버깅에도 사용할 수 있습니다. Code Llama는 Python, C++, Java, PHP, TypeScript (JavaScript), C#, Bash 등 많은 인기 프로그래밍 언어를 지원합니다.
출처: Meta AI
Meta는 각각 7B, 13B, 34B, 70B 매개변수를 가진 네 가지 크기의 Code Llama를 출시합니다. 70B 버전을 제외한 각 모델은 500B 토큰의 코드 및 코드 관련 데이터로 훈련되었으며, 70B 모델은 1T 토큰으로 훈련되었습니다. 7B 및 13B 기본 및 instruct 모델에는 FIM(fill-in-the-middle) 기능도 포함되어 있어 기존 코드에 코드를 삽입하고 코드 완성과 같은 작업을 바로 지원할 수 있습니다.
이러한 모델은 다양한 서빙 및 지연 시간 요구 사항을 충족합니다. 예를 들어 7B 모델은 단일 GPU에서 서빙할 수 있습니다. 34B 및 70B 모델이 최상의 결과를 제공하고 우수한 코딩 지원을 제공하는 반면, 더 작은 7B 및 13B 모델은 더 빠르며 실시간 코드 완성과 같이 낮은 지연 시간이 필요한 작업에 더 적합합니다.
Code Llama의 기능
Code Llama 모델은 최대 100,000 토큰의 컨텍스트에서 안정적인 생성을 제공합니다. 모든 모델은 16,000 토큰 시퀀스로 훈련되었으며 최대 100,000 토큰의 입력에서 개선 사항을 보여줍니다.
더 긴 입력 시퀀스를 처리하는 이 기능은 더 긴 프로그램 생성을 용이하게 할 뿐만 아니라 코드 언어 모델(LLM)의 새로운 사용 사례를 열어줍니다. 예를 들어, 사용자는 코드베이스에서 더 많은 컨텍스트를 모델에 제공하여 생성된 코드의 관련성을 높일 수 있습니다. 또한 개발자가 특정 문제와 관련된 모든 코드를 추적하기 어려울 수 있는 대규모 코드베이스의 디버깅 시나리오에서 유용합니다. 개발자가 전체 코드 길이를 입력할 수 있도록 함으로써 모델은 광범위한 코드 섹션을 디버깅하는 데 도움을 줄 수 있습니다.
또한 Meta는 Code Llama의 두 가지 추가 변종인 Code Llama — Python 및 Code Llama — Instruct를 추가로 미세 조정했습니다.
Code Llama — Python은 언어 특화 버전으로, 100B 토큰의 Python 코드로 추가 미세 조정되었습니다. Python은 코드 생성에 가장 많이 벤치마킹된 언어이며 PyTorch와 함께 AI 커뮤니티에서 중요한 역할을 하기 때문에 이 특화 모델은 추가적인 유용성을 제공합니다.
Code Llama — Instruct는 지시 미세 조정 및 정렬된 변종입니다. 지시 조정은 모델이 “자연어 명령” 입력과 예상 출력을 제공받는 다른 목표로 훈련 과정을 계속합니다. 이는 프롬프트에서 인간의 기대를 이해하는 능력을 향상시킵니다. 코드 생성에는 Code Llama — Instruct 변종을 사용하는 것이 좋습니다. 이 변종은 자연어로 유용하고 안전한 답변을 생성하도록 미세 조정되었기 때문입니다.
일반 자연어 작업에는 Code Llama 또는 Code Llama — Python을 사용하지 않는 것이 좋습니다. 이러한 모델은 자연어 지시를 따르도록 설계되지 않았기 때문입니다. NLP 작업을 완료하려면 novita.ai LLM API와 통합하여 액세스할 수 있는 Llama2 또는 Llama3 모델을 선택할 수 있습니다.

가장 저렴한 가격과 확장 가능한 모델로, Novita AI LLM 추론 API는 2초 미만의 놀라운 안정성과 상당히 낮은 지연 시간을 제공합니다. Novita AI LLM 추론 API를 통해 LLM 성능을 크게 향상시킬 수 있습니다.
Code Llama는 코드 특화 작업에 특화되어 있으며 다른 애플리케이션의 기반 모델로는 적합하지 않습니다.
Code Llama 모델 사용자는 Meta의 라이선스 및 허용 가능 사용 정책을 준수해야 합니다.
Code Llama 성능 평가
Code Llama의 성능을 기존 솔루션과 비교 평가하기 위해 Meta는 HumanEval 및 MBPP(대부분 기본 Python 프로그래밍)라는 두 가지 널리 사용되는 코딩 벤치마크를 사용했습니다. HumanEval은 docstring을 기반으로 코드를 완성하는 모델의 능력을 평가하고, MBPP는 설명을 기반으로 코드를 작성하는 모델의 능력을 테스트합니다.
벤치마크 테스트 결과 Code Llama는 다른 오픈 소스 코드 특화 언어 모델을 능가했으며 Llama 2의 성능을 초과했습니다. 예를 들어, Code Llama 34B는 HumanEval에서 53.7%, MBPP에서 56.2%의 점수를 기록하여 최첨단 오픈 솔루션 중 가장 높았으며 ChatGPT와 비슷한 수준이었습니다.
모든 최첨단 기술과 마찬가지로 Code Llama에도 특정 위험이 따릅니다. AI 모델을 책임감 있게 구축하는 것이 중요하므로 Code Llama를 출시하기 전에 다양한 안전 조치가 시행되었습니다. 레드 팀 노력의 일환으로 Code Llama가 악성 코드를 생성할 위험을 평가하기 위한 정량적 평가가 수행되었습니다. 명확한 의도로 악성 코드를 요청하도록 설계된 프롬프트가 사용되었으며 Code Llama의 응답을 ChatGPT(GPT-3.5 Turbo)의 응답과 비교했습니다. 결과는 Code Llama가 더 안전한 응답을 제공한다는 것을 보여주었습니다.
Code Llama 사용 방법
Code Llama는 웹사이트나 플랫폼을 통해 직접 액세스할 수 없습니다. 대신 GitHub에서 사용할 수 있으며 로컬에서 사용하기 위해 다운로드할 수 있습니다. Code Llama에 액세스할 수 있는 몇 가지 방법은 다음과 같습니다.
1. 챗봇 통합: ChatGPT와 유사한 텍스트 기반 AI인 Perplexity-AI는 Code Llama의 34B 매개변수 버전을 통합했습니다. 이를 통해 사용자는 텍스트 기반 프롬프팅을 통해 코드를 생성할 수 있습니다. Perplexity-AI는 Python, Java, C++, JavaScript와 같은 특정 프로그래밍 언어에 초점을 맞춘 여러 변종을 제공합니다.
2. 모델 통합: 오픈 소스 플랫폼인 Hugging Face는 코드를 쉽게 생성하는 데 사용할 수 있는 기본 모델을 제공합니다.
3. 통합 개발 환경(IDE): Ollama는 다운로드하여 IDE에 직접 통합할 수 있는 Code Llama 라이브러리입니다. 이를 통해 사용자는 로컬에서 대규모 언어 모델을 활용할 수 있습니다.
이 튜토리얼에서는 Perplexity AI를 사용하여 Code Llama의 기능을 시연하겠습니다. 먼저 정렬 함수를 정의하고 생성하겠습니다. 먼저 이진 정렬 함수를 생성할 것입니다. 이는 삽입 정렬과 유사하지만 요소의 위치를 결정하기 위해 이진 검색을 사용합니다. 그 다음으로 Perplexity에 이진 정렬과 비교할 만한 다른 알고리즘이 있는지 물어보겠습니다. 마지막으로 Perplexity에 이러한 함수 중 일부를 포함하는 정렬 클래스를 생성하도록 요청하겠습니다.
프롬프트:
이진 정렬 알고리즘의 이점을 얻을 수 있는 Python 클래스가 있습니다. 값 목록을 받아 이진 정렬을 사용하여 정렬하고 정렬된 목록을 반환하는 Python 클래스를 만들어 주시겠습니까?
응답:

프롬프트:
이진 정렬보다 비슷하거나 더 나은 다른 알고리즘이 있나요?
응답:

프롬프트:
사실 제 요구에 맞는 정렬 옵션을 갖고 싶습니다. 이진 정렬, 퀵 정렬 및 병합 정렬 기능이 있는 정렬 클래스를 만들 수 있나요?
응답:



Code Llama의 혜택을 받는 사람
프로그래머는 이미 새로운 소프트웨어 작성부터 기존 코드 디버깅에 이르기까지 다양한 작업을 지원하기 위해 대규모 언어 모델(LLM)을 사용하고 있습니다. 목표는 개발자 워크플로우를 향상시켜 반복적인 작업보다는 업무의 인간 중심적인 측면에 집중할 수 있도록 하는 것입니다.
Meta에서는 AI 모델, 특히 코딩용 LLM이 개방형 접근 방식에서 상당한 이점을 얻어 혁신과 안전을 모두 촉진한다고 믿습니다. 공개적으로 사용 가능한 코드 특화 모델은 사람들의 삶을 개선하는 새로운 기술 개발을 추진할 수 있습니다. Code Llama와 같은 모델을 출시함으로써 전체 커뮤니티가 그 기능을 평가하고, 문제를 식별하며, 취약점을 해결할 수 있습니다.
Code Llama의 책임 있는 사용
Meta의 연구 논문은 Code Llama의 개발, 수행된 벤치마킹 테스트, 모델의 한계 및 직면한 문제, 취해진 완화 조치 및 해결해야 할 미래 과제에 대한 자세한 정보를 제공합니다.
또한 책임 있는 사용 가이드가 업데이트되어 다운스트림 모델을 책임감 있게 개발하기 위한 지침을 포함하며, 다음과 같은 측면을 다룹니다.
- 콘텐츠 정책 및 완화 조치 정의
- 데이터 준비
- 모델 미세 조정
- 성능 평가 및 개선
- 입력 및 출력 수준 위험 처리
- 사용자 상호 작용에서 투명성 및 보고 메커니즘 구축
개발자는 코드 특화 평가 벤치마크를 사용하여 모델을 평가하고 악성 코드, 컴퓨터 바이러스 또는 악성 코드 생성과 같은 코드 특화 사용 사례에 대한 안전 연구를 수행하는 것이 좋습니다. 또한 자동 및 인간 평가를 위한 안전 데이터셋을 사용하고 적대적 프롬프트로 레드 팀을 구성하는 것이 좋습니다.
코딩을 위한 생성형 AI의 미래
Code Llama는 연구, 산업, 오픈 소스 프로젝트, NGO, 비즈니스를 포함한 모든 분야의 소프트웨어 엔지니어를 지원하도록 설계되었습니다. 그러나 기본 및 instruct 모델이 현재 지원할 수 있는 것 이상의 많은 사용 사례가 여전히 있습니다.
Code Llama가 다른 사람들이 Llama 2를 활용하여 연구 및 상업 제품을 위한 새롭고 혁신적인 도구를 만들도록 영감을 주기를 바랍니다.
결론
Code Llama는 프로그래밍 프로젝트를 지원하도록 설계된 독특한 도구로, 개발자가 코드 생성에서 프로젝트 목표로 초점을 전환할 수 있도록 합니다. 코드 완성을 지원하고, 사람이 읽을 수 있는 주석을 작성하며, 코드를 생성합니다.
AI 프로그래밍 도구로서 Code Llama는 오프라인 기능이 돋보입니다. IDE로 가져올 수 있어 인터넷 연결이 필요 없습니다. 100GB의 데이터로 훈련된 이 도구는 코드 완성 및 생성에 탁월합니다. 7B, 13B, 34B 매개변수 버전과 -Python 및 -Instruct와 같은 특화 버전을 포함한 여러 버전의 Code Llama를 사용할 수 있습니다. 필요에 가장 적합한 것을 선택하고 프로그래밍에 행운을 빕니다!
novita.ai는 무한한 창의성을 위한 원스톱 플랫폼으로, 100개 이상의 API에 액세스할 수 있습니다. 이미지 생성 및 언어 처리부터 오디오 향상 및 비디오 조작까지, 저렴한 종량제 요금제로 GPU 유지 관리 부담 없이 자체 제품을 구축할 수 있습니다. 지금 무료로 사용해 보세요.
추천 자료
