이 글은 GitHub Copilot과 같은 생성AI 기반 코딩 에이전트 개발방법을 간단히 정리한다.
머리말
Code LLAMA는 코드 작업에 특화된 LLAMA2 기반 기술로, 커뮤니티 라이센스로 릴리즈되었다. 코드 라마는 라마2 기반으로 5,000억 토큰 코드 데이터를 학습하였다. 파이썬, 자연어 명령어를 이해할 수 있고, 미세 조정을 통해 성능을 개선했다.
파이썬, C++, JAVA, PHP. C#, TypeScript, Bash 코드 생성을 지원한다. 7B, 13B 모델을 제공하며, 16k 컨텍스트 길이를 학습하였다. 코드 라마는 위치 임베딩을 을 스케일링할 수 있는 RoPE가 적용되었다.
라마2를 이용해 인터뷰 프로그래밍 질문 항목을 만들고, 코드 라마를 통해 테스트를 수행해 평가되었다.
이 글은 다음 개발환경에서 동작되었다.
- NVIDIA GPU (Over 28 GB RAM), CUDA 12.1, PyTorch 2.1.2+cu121 (link)
이 글은 학습모델을 최적화하기 위해, 4비트 양자화를 사용해, 크기를 줄인 모델을 사용한다.
4비트 양자화 개념도
코드 라마 사용 방법
4.33 버전부터는 학습 및 추론 예제, 안전한 텐서 포맷(safetensors), 4비트 양자화, 파라메터 미세조정(PEFT), 모델 생성 지원 도우, 배포 등 기능이 트랜스포머 라이브러리에 추가되었다. 다음과 같이 최신 버전을 설치한다.
pip install --upgrade transformers
pip install accelerate peft bitsandbytes transformers trl
다음은 코드 라마 모델을 로딩하고, 트랜스포머 파이프라인을 생성한 후, 기본적인 함수 정의를 생성하는 예제이다. 입력하고 실행해 본다.
from transformers import AutoTokenizer
import transformers
import torch
tokenizer = AutoTokenizer.from_pretrained("codellama/CodeLlama-7b-hf")
pipeline = transformers.pipeline(
"text-generation",
model="codellama/CodeLlama-7b-hf",
torch_dtype=torch.float16,
device_map="auto",
)
sequences = pipeline(
'def fibonacci(',
do_sample=True,
temperature=0.2,
top_p=0.9,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
max_length=100,
)
for seq in sequences:
print(f"Result: {seq['generated_text']}")
다음은 그 결과를 보여준다.
이 경우 70억 파라메터를 가진 모델이기 때문에, 최소한 28GB이상 GPU RAM이 필요하다(4바이트일경우 = 7 x 10^9 x 4 bytes. 8바이트일 경우 56GB).
라마2 미세 조정 방법은 다음 링크를 참고한다.
마무리
코딩에 대한 생성 AI 모델 테스트는 일반적으로 HumanEval 데이터세트에서 벤치마킹된다. 이 데이터세트는 모델 함수 서명과 스트링이 제공되며, 함수 본문을 작성하는 프로그래밍 과제로 구성된다. 생성된 코드는 미리 정의된 단위 테스트 세트를 실행해 검증한다. 그 결과 얼마나 많은 테스트를 통과했는 지 비율이 리포트된다.
다음은 그 결과 리더보드 평균 점수를 보여준다.
레퍼런스
- Code Llama: Llama 2 learns to code (huggingface.co)
- Fine-Tuning LLaMA 2: A Step-by-Step Guide to Customizing the Large Language Model | DataCamp
- How to train llama2.c with Google Colab | by yuca | Medium
- Fine-tuning Llama2 takes less than 200 lines of code! | by OpenMMLab | Medium
- Fine-Tuning a Llama-2 7B Model for Python Code Generation – Towards AI
- What is Llama 2? Meta’s large language model explained | InfoWorld
- Medium, 2023, How to Build an AI Assistant with OpenAI & Python | by Shaw Talebi | Towards Data Science
- OpenAI, 2021, Learning Transferable Visual Models From Natural Language Supervision
- Huggin Face, 2023, LLaMA: Open and Efficient Foundation Language Models
- Github, unit-mesh/build-your-ai-coding-assistant
- Github, ai-assistants · GitHub Topics
- Facebook, 2023, LLaMA: OpenandEfficient Foundation Language Models
- Facebook, 2023, Llama 2: OpenFoundation and Fine-Tuned Chat Models
- AI assistant coding - Google Scholar
- Build your own AI Assistant with Python : r/Python (reddit.com)
- Build your own AI Assistant - YouTube
- Build a ChatGPT-Like language model in Python on a Raspberry Pi (youtube.com)
- kevinmcaleer/PythonAI (github.com)
- GeoGPT alpha showcase demo - YouTube
- GeoGPT+: Using OpenAI’s custom GPTs for geospatial analysis | by Ageospatial | Jan, 2024 | Medium
- GeoGPT: Understanding and Processing Geospatial Tasks through An Autonomous GPT
- Open BIM GPT (openbimgpt.com)
- BIM-GPT: a Prompt-Based Virtual Assistant Framework for BIM Information Retrieval
- CodePen: Online Code Editor and Front End Web Developer Community
- How ChatGPT Built My App in Minutes 🤯 (youtube.com)
- tiiny.host - The simplest way to share your web project
- Web To App - Turn Your Website Into Android & iOS App Online (webintoapp.com)
- How To Create Custom GPTs - Build your own ChatGPT (youtube.com)
댓글 없음:
댓글 쓰기