Generative AI / LLMs

StarCoder2로 LLM 코딩 잠재력 활용하기

Reading Time: 4 minutes

코딩은 디지털 시대에 필수적이지만 지루하고 시간이 많이 소요될 수 있습니다. 그렇기 때문에 많은 개발자가 거대 언어 모델(LLM)의 도움을 받아 코딩 작업을 자동화하고 간소화하는 방법을 찾고 있습니다. 이러한 모델은 라이선스가 허가된 GitHub 리포지토리의 방대한 양의 코드를 학습하여 사람의 개입이 거의 없이 코드를 생성, 분석 및 문서화할 수 있습니다.

이 포스팅에서는 수백 개의 프로그래밍 언어를 지원하고 동급 최고의 정확도를 제공하는 새로운 커뮤니티 모델인 StarCoder2를 통해 코드 LLM의 최신 발전 사항을 살펴봅니다. 그런 다음 NVIDIA AI 파운데이션 모델 및 엔드포인트를 사용하여 모델을 사용해 보고 단계별 지침에 따라 모델을 커스터마이즈하고 프로덕션에 배포해 봅니다.

StarCoder2

BigCode가 NVIDIA와 협력하여 구축한 StarCoder2는 개발자를 위한 가장 진보된 코드 LLM입니다. 코드 완성, 자동 채우기, 고급 코드 요약, 자연어를 사용한 관련 코드 스니펫 검색 등 이 모델의 기능을 사용하여 애플리케이션을 빠르게 빌드할 수 있습니다.

StarCoder2 제품군에는 3B, 7B 및 15B 매개변수 모델이 포함되어 있어 사용 사례에 적합하고 컴퓨팅 리소스를 충족하는 모델을 유연하게 선택할 수 있습니다. 이 게시물에서는 15B 모델에 초점을 맞출 것입니다.

성능

15B 모델은 유명 프로그래밍 벤치마크에서 주요 오픈 코드 LLM보다 성능이 뛰어나며 동급 최고의 성능을 제공합니다. 참고로 오리지널 스타코더의 정확도는 30%입니다. 또한 스타코더2의 성능은 생산 비용을 최적화하면서 뛰어난 추론 성능을 제공하므로 엔터프라이즈 애플리케이션에 적합합니다.

그림 1. HumanEval 벤치마크에서 우수한 정확도를 제공하는 StarCoder2 15B

16,000개 토큰의 컨텍스트 길이를 가진 Starcoder 모델은 더 긴 코드 베이스와 정교한 코딩 지침을 처리하고 코드 구조를 더 잘 이해하며 향상된 코드 문서화를 제공할 수 있습니다.

책임감 있는 교육과 누구나 사용 가능

모델은 책임감 있게 소싱된 데이터로 학습되며, GitHub에서 허가된 데이터에 1조 개의 토큰을 사용합니다. 여기에는 600개 이상의 프로그래밍 언어, Git 커밋, GitHub 이슈, Jupyter Notebook이 포함됩니다. 이 모델은 소싱, 처리, 번역을 포함한 프로세스 전반에 걸쳐 완전히 투명합니다. 또한 개인은 자신의 코드가 모델에서 사용되지 않도록 제외할 수 있습니다.

StarCoder2 모델은 BigCode Open RAIL-M 라이선스에 따라 공개적으로 사용 가능하므로 로열티 없이 배포할 수 있으며 기업이 사용 사례 및 제품에 모델을 통합하는 프로세스를 간소화할 수 있습니다.

StarCoder2 체험하기

StarCoder2는 엄선된 커뮤니티 및 NVIDIA가 구축한 생성형 AI 모델에 대한 액세스를 제공하여 엔터프라이즈 애플리케이션에서 경험, 커스터마이징 및 배포할 수 있도록 NVIDIA AI Foundation Models and Endpoints의 일부로 제공됩니다.

StarCoder2는 NVIDIA AI 플레이그라운드에서 체험할 수 있으며, Nemotron-3, Mixtral 8X7B, Llama 70BStable Diffusion과 같은 다른 주요 모델도 이용할 수 있습니다.

이 모델들은 NVIDIA NeMo로 쉽게 커스터마이징할 수 있도록 .nemo 형식으로 제공되며, NVIDIA TensorRT-LLM으로 성능에 최적화되어 있습니다.

TensorRT-LLM으로 모델 최적화하기

NVIDIA는 추론을 위한 거대 언어 모델을 정의, 최적화 및 실행하기 위한 오픈 소스 라이브러리인 TensorRT-LLM으로 모델을 최적화했습니다. 이를 통해 추론 시 더 높은 처리량과 더 낮은 지연 시간을 달성하는 동시에 프로덕션의 컴퓨팅 비용을 절감할 수 있습니다.

이러한 지연 시간과 성능의 개선은 최적화된 주의 메커니즘, 텐서 병렬 처리 및 파이프라인 병렬 처리와 같은 모델 병렬 처리 기술, 인플라이트 배치, 양자화 등을 통해 달성되었습니다. 전체 최적화 목록을 보거나 자세한 내용을 알아보려면 TensorRT-LLM GitHub를 참조하세요.

그래픽 사용자 인터페이스를 통한 모델 체험

이제 NGC 카탈로그의 간단한 플레이그라운드 사용자 인터페이스를 사용하여 브라우저에서 직접 StarCoder2를 체험할 수 있습니다. 완전히 가속화된 스택에서 실행되는 모델에서 생성된 결과를 확인할 수 있습니다.

그림 2. 사용자 프롬프트에서 코드를 생성하는 StarCoder2 모델의 예시

API 사용

API를 사용하여 모델을 테스트하고 싶다면 다음과 같이 하세요. NGC 카탈로그에 로그인하면 NVIDIA 클라우드 크레딧에 액세스할 수 있습니다. 이 크레딧을 사용하면 애플리케이션을 API 엔드포인트에 연결하고 대규모로 모델을 경험할 수 있습니다.

StarCoder2 AI Playground에서 엔드포인트에 REST 요청을 발행할 수 있는 모든 언어 또는 프레임워크를 사용할 수 있습니다. 다음 예제에서는 요청 라이브러리와 함께 Python을 사용합니다. 계속 진행하기 전에 주피터 노트북과 같이 Python 코드를 실행할 수 있는 환경이 있는지 확인하세요.

NGC 카탈로그 API 키 받기

API 탭에서 키 생성을 선택합니다. 등록하지 않은 경우 가입 또는 로그인하라는 메시지가 표시됩니다.

코드에서 API 키를 설정합니다:

# Will be used to issue requests to the endpoint 
API_KEY = “nvapi-xxxx“

추론 요청 보내기

StarCoder2를 코드 완성용으로 사용하면 부분적으로 작성된 코드에서 다음 몇 줄을 생성하여 개발자의 생산성을 향상시킬 수 있습니다.

요청 가져오기

import requests

invoke_url = "https://api.nvcf.nvidia.com/v2/nvcf/pexec/functions/835ffbbf-4023-4cef-8f48-09cb5baabe5f"
fetch_url_format = "https://api.nvcf.nvidia.com/v2/nvcf/pexec/status/"

headers = {
    "Authorization": "Bearer {}".format(API_KEY),
    "Accept": "application/json",
}

payload = {
  "prompt": "X_train, y_train, X_test, y_test = train_test_split(X, y, test_size=0.1) #Train a logistic regression model, predict the labels on the test set and compute the accuracy score",
  "temperature": 0.1,
  "top_p": 0.7,
  "max_tokens": 512,
  "seed": 42,
  "stream": False
}

# re-use connections
session = requests.Session()

response = session.post(invoke_url, headers=headers, json=payload)

while response.status_code == 202:
    request_id = response.headers.get("NVCF-REQID")
    fetch_url = fetch_url_format + request_id
    response = session.get(fetch_url, headers=headers)

response.raise_for_status()
response_body = response.json()
# The response body contains additional metadata along with completion text. Visualizing just the completion.
print(response_body['choices'][0]['text'])

이 예제에서 StarCoder2는 메시지에 따라 로지스틱 회귀 모델을 훈련하고 테스트 세트에 대한 정확도를 계산하는 Python 코드를 생성합니다.

모델 사용자 지정 및 소유

이해합니다. 대부분의 기업은 모델을 그대로 사용하지 않을 것입니다. 모델이 정확도 높은 결과를 제공할 수 있도록 도메인 및 회사별 전문 언어로 모델을 훈련시켜야 합니다. NVIDIA는 NeMo를 통해 모델을 쉽게 커스터마이징할 수 있도록 지원합니다.

모델은 이미 .nemo 형식으로 변환되어 있으므로 LLM을 위한 간소화된 데이터 큐레이션, RLHF와 같은 인기 있는 커스터마이징 기술, 어디서나 배포할 수 있는 컨테이너화된 소프트웨어 등 다양한 NeMo 기능을 활용할 수 있습니다.

노트북에서 파라미터 효율적 미세 조정(PEFT) 기법을 사용하여 이 모델을 커스터마이징하는 방법을 확인할 수 있습니다.

어디서나 자신 있게 배포

NVIDIA Triton Inference Server는 프로덕션 환경에서 AI 추론 워크로드의 배포를 간소화하고 가속화하는 오픈 소스 AI 모델 제공 플랫폼입니다. 이를 통해 기업은 모델 제공 인프라의 복잡성을 줄이고, 새로운 AI 모델을 프로덕션에 배포하는 데 필요한 시간을 단축하며, AI 추론 및 예측 용량을 늘릴 수 있습니다.

NVIDIA Triton 추론 서버는 엔터프라이즈급 지원, 보안, 안정성 및 관리 용이성을 갖춘 NVIDIA AI 엔터프라이즈의 일부입니다. Triton 추론 서버를 사용하면 StarCoder2 모델을 온프레미스 또는 모든 CSP에 배포할 수 있습니다.

노트북에서는 TensorRT-LLM을 사용하여 최적화하는 방법과 Triton Inference Server를 사용하여 모델을 배포하는 방법을 자세히 설명합니다.

엔터프라이즈급 AI 소프트웨어로 모델 배포

비즈니스 운영을 위해 AI 모델을 배포할 준비가 되었을 때 보안, 안정성 및 엔터프라이즈 지원은 매우 중요합니다.

모든 엔터프라이즈에 생성형 AI를 제공하는 엔드투엔드 소프트웨어 플랫폼인 NVIDIA AI Enterprise는 생성형 AI 기반 모델을 위한 가장 빠르고 효율적인 런타임을 제공합니다. 여기에는 엔터프라이즈급 보안, 지원 및 안정성을 갖춘 AI 프레임워크, 라이브러리 및 도구가 포함되어 있어 프로토타입에서 프로덕션으로 규모에 맞게 원활하게 전환할 수 있습니다.

시작하기

사용자 인터페이스 또는 API를 통해 StarCoder2 모델을 사용해 보고 애플리케이션에 적합한지 확인한 후, TensorRT-LLM으로 모델을 최적화하고 NVIDIA NeMo로 커스터마이즈하세요.

엔터프라이즈 애플리케이션을 빌드하는 경우, NVIDIA AI Enterprise의 무료 평가판 소프트웨어에 등록하여 애플리케이션을 프로덕션으로 전환하기 위한 프레임워크와 엔터프라이즈 지원을 이용할 수 있습니다.

관련 리소스

Discuss (0)

Tags