LitGPT: 대규모 사전 학습, 미세 조정 및 배포를 위한 20개 이상의 고성능 LLM 레시피
요약
LitGPT는 대규모 언어 모델(LLM)의 사전 학습, 미세 조정 및 배포를 위한 고성능 레시피를 제공하는 라이브러리입니다. 추상화 없이 처음부터 직접 구현되어 개발자에게 완전한 제어권을 부여하며, 기업 규모의 워크플로우에 최적화되어 있습니다.
핵심 포인트
- 20개 이상의 LLM에 대한 사전 학습 및 미세 조정 레시피 제공
- 추상화 없는 직접 구현으로 디버깅 용이성 및 완전한 제어권 확보
- Flash Attention, FSDP, LoRA 등 최신 최적화 기술 지원
- Apache 2.0 라이선스로 기업 환경에서 자유로운 사용 가능
사전 학습(pretrain), 미세 조정(finetune) 및 대규모 배포를 위한 레시피를 갖춘 20개 이상의 고성능 LLM.
✅ 처음부터 직접 구현 (From scratch implementations) ✅ 추상화 없음 (No abstractions) ✅ 초보자 친화적 ✅ Flash attention ✅ FSDP ✅ LoRA, QLoRA, Adapter ✅ GPU 메모리 절감 (fp4/8/16/32) ✅ 1-1000+ GPUs/TPUs ✅ 20개 이상의 LLM
빠른 시작 • 모델 • 미세 조정 • 배포 • 모든 워크플로우 • 기능 • 레시피 (YAML) • Lightning AI • 튜토리얼
340,000명 이상의 개발자가 PyTorch 및 PyTorch Lightning을 위해 특별히 제작된 Lightning Cloud를 사용하고 있습니다.
- $0.19부터 시작하는 GPU.
- 클러스터 (Clusters): 최첨단 수준의 학습/추론 클러스터.
- AI Studio (vibe train): AI가 디버깅, 튜닝 및 vibe train을 도와주는 워크스페이스.
- AI Studio (vibe deploy): AI가 모델 최적화 및 배포를 도와주는 워크스페이스.
- 노트북 (Notebooks): AI가 코딩 및 분석을 도와주는 지속 가능한 GPU 워크스페이스.
- 추론 (Inference): 모델을 추론 API로 배포.
모든 LLM은 추상화 없이 (no abstractions) **완전한 제어권 (full control)**을 가지고 처음부터 직접 구현되었으며, 이를 통해 기업 규모에서 매우 빠르고, 최소한의 구성으로 높은 성능을 발휘합니다.
✅ 기업용 준비 완료 (Enterprise ready) - 무제한 기업 사용을 위한 Apache 2.0 라이선스.
✅ 개발자 친화적 (Developer friendly) - 추상화 계층이 없고 단일 파일 구현으로 구성되어 디버깅이 용이함.
✅ 최적화된 성능 (Optimized performance) - 성능을 극대화하고 비용을 절감하며 학습 속도를 높이도록 설계된 모델.
✅ 검증된 레시피 (Proven recipes) - 기업 규모에서 테스트된 고도로 최적화된 학습/미세 조정 레시피.
LitGPT 설치
pip install 'litgpt[extra]'
20개 이상의 LLM 중 하나를 로드하여 사용하기:
from litgpt import LLM
llm = LLM.load("microsoft/phi-2")
text = llm.generate("Fix the spelling: Every fall, the family goes to the mountains.")
...
✅ 빠른 추론에 최적화
✅ 양자화 (Quantization)
✅ 저메모리 GPU에서 실행 가능
✅ 내부 추상화 계층 없음
✅ 프로덕션 규모에 최적화
고급 설치 옵션
소스에서 설치:
git clone https://github.com/Lightning-AI/litgpt
cd litgpt
# uv를 사용하는 경우
...
성능을 극대화하고 추상화 계층을 제거하기 위해 모든 모델은 처음부터 직접 작성되었습니다:
| 모델 | 모델 크기 | 저자 | 참고 문헌 |
|---|---|---|---|
| Llama 3, 3.1, 3.2, 3.3 | 1B, 3B, 8B, 70B, 405B | Meta AI | Meta AI 2024 |
| ... |
20개 이상의 LLM 전체 목록 보기
| 모델 | 모델 크기 | 저자 | 참고 문헌 |
|---|---|---|---|
| CodeGemma | 7B | Google Team, Google Deepmind | |
| ... | |||
Tip: litgpt download list 명령어를 실행하면 사용 가능한 모든 모델 목록을 확인할 수 있습니다. |
미세 조정 (Finetune) • 사전 학습 (Pretrain) • 연속 사전 학습 (Continued pretraining) • 평가 (Evaluate) • 배포 (Deploy) • 테스트 (Test)
명령줄 인터페이스 (CLI)를 사용하여 자체 데이터에 대한 사전 학습 (pretraining) 또는 미세 조정 (finetuning)과 같은 고급 워크플로우를 실행하세요.
LitGPT를 설치한 후, 실행할 모델과 워크플로우(finetune, pretrain, evaluate, deploy 등)를 선택합니다:
# litgpt [action] [model]
litgpt serve meta-llama/Llama-3.2-3B-Instruct
litgpt finetune meta-llama/Llama-3.2-3B-Instruct
...
미세 조정 (Finetuning)은 사전 학습된 (pretrained) AI 모델을 가져와 특정 작업이나 애플리케이션에 맞춤화된 더 작고 전문화된 데이터셋으로 추가 학습시키는 과정입니다.
# 0) 데이터셋 설정
curl -L https://huggingface.co/datasets/ksaw008/finance_alpaca/resolve/main/finance_alpaca.json -o my_custom_dataset.json
# 1) 모델 미세 조정 (가중치 자동 다운로드)
...
사전 학습된 (pretrained) 또는 미세 조정된 (finetune) LLM을 실제 애플리케이션에서 사용할 수 있도록 배포 (Deploy)하세요. 배포 (Deploy)를 실행하면 웹사이트나 앱에서 접속할 수 있는 웹 서버가 자동으로 설정됩니다.
# 즉시 사용 가능한 LLM 배포
litgpt serve microsoft/phi-2
# 직접 학습시킨 모델 배포
...
서버 쿼리를 위한 코드 예시:
별도의 터미널에서 서버를 테스트하고 모델 API를 귀하의 AI 제품에 통합하세요:
# 3) 서버 사용 (별도의 Python 세션에서)
import requests, json
response = requests.post(
...
LLM을 평가(Evaluate)하여 다양한 작업에 대한 성능을 테스트하고, 모델이 텍스트를 얼마나 잘 이해하고 생성하는지 확인합니다. 간단히 말해, 대학 수준의 화학, 코딩 등을 얼마나 잘 수행하는지 등을 평가할 수 있습니다... (MMLU, Truthful QA 등...)
litgpt evaluate microsoft/phi-2 --tasks 'truthfulqa_mc2,mmlu'
대화형 채팅을 통해 모델이 얼마나 잘 작동하는지 테스트합니다. chat 명령어를 사용하여 채팅을 하거나, 임베딩 (embeddings)을 추출하는 등의 작업을 수행할 수 있습니다...
다음은 Phi-2 LLM을 사용하는 방법을 보여주는 예시입니다:
litgpt chat microsoft/phi-2
>> Prompt: What do Llamas eat?
전체 코드:
# 1) 지원되는 모든 LLM 목록 나열
litgpt download list
# 2) 모델 사용 (가중치 자동 다운로드)
...
특정 모델을 다운로드하려면 추가 액세스 토큰 (access token)이 필요합니다. 이에 대한 자세한 내용은 다운로드 문서에서 확인할 수 있습니다.
사전 학습 (Pretraining)은 특정 작업에 맞춰 미세 조정 (fine-tuned)하기 전에 대량의 데이터에 모델을 노출시켜 AI 모델을 가르치는 과정입니다.
코드 보기:
mkdir -p custom_texts
curl https://www.gutenberg.org/cache/epub/24440/pg24440.txt --output custom_texts/book1.txt
curl https://www.gutenberg.org/cache/epub/26393/pg26393.txt --output custom_texts/book2.txt
...
지속적 사전 학습 (Continued pretraining)은 커스텀 데이터로 학습하여 이미 사전 학습된 모델을 전문화하는 또 다른 미세 조정 (finetuning) 방법입니다:
코드 보기:
mkdir -p custom_texts
curl https://www.gutenberg.org/cache/epub/24440/pg24440.txt --output custom_texts/book1.txt
curl https://www.gutenberg.org/cache/epub/26393/pg26393.txt --output custom_texts/book2.txt
...
✅ 최첨단 최적화 (State-of-the-art optimizations): Flash Attention v2, 완전 샤딩 데이터 병렬 처리 (fully-sharded data parallelism)를 통한 멀티 GPU 지원, 선택적 CPU 오프로딩 (CPU offloading), 그리고 TPU 및 XLA 지원.
✅ 사전 학습 (Pretrain), 미세 조정 (finetune) 및 배포 (deploy)
✅ 저정밀도 (low-precision) 설정을 통한 연산 요구 사항 감소: FP16, BF16, 그리고 FP16/FP32 혼합 (mixed).
✅ 양자화 (quantization)를 통한 메모리 요구 사항 감소: 4비트 부동 소수점 (4-bit floats), 8비트 정수 (8-bit integers), 그리고 이중 양자화 (double quantization).
✅ 뛰어난 즉각적 성능 (out-of-the-box performance)을 위한 설정 파일들.
✅ 매개변수 효율적 미세 조정 (Parameter-efficient finetuning): LoRA, QLoRA, Adapter, 그리고 Adapter v2.
✅ 다른 인기 있는 모델 가중치 형식으로의 내보내기 (Exporting).
✅ 사전 학습 (pretraining) 및 미세 조정 (finetuning)을 위한 다양한 인기 데이터셋, 그리고 커스텀 데이터셋 지원.
✅ 최신 연구 아이디어를 실험할 수 있는 읽기 쉽고 수정하기 용이한 코드.
LitGPT는 다양한 조건에서 모델을 학습시키기 위해 검증된 레시피 (YAML 설정 파일)를 제공합니다. 우리는 다양한 학습 조건에서 가장 성능이 좋다고 판단된 매개변수를 기반으로 이 레시피들을 생성했습니다.
모든 학습 레시피를 여기서 찾아보세요.
litgpt finetune \
--config https://raw.githubusercontent.com/Lightning-AI/litgpt/main/config_hub/finetune/llama-2-7b/lora.yaml
✅ 설정을 사용하여 학습 사용자 정의하기
설정 파일 (Configs)을 사용하면 다음과 같은 모든 세부 매개변수에 대해 학습을 사용자 정의할 수 있습니다:
# 미세 조정을 위해 로드할 베이스 모델의 체크포인트 디렉토리 경로. (type: <class 'Path'>, default: checkpoints/stabilityai/stablelm-base-alpha-3b)
checkpoint_dir: checkpoints/meta-llama/Llama-2-7b-hf
# 체크포인트와 로그를 저장할 디렉토리. (type: <class 'Path'>, default: out/lora)
...
✅ 예시: LoRA 미세 조정 설정
# 미세 조정을 위해 로드할 베이스 모델의 체크포인트 디렉토리 경로. (type: <class 'Path'>, default: checkpoints/stabilityai/stablelm-base-alpha-3b)
checkpoint_dir: checkpoints/meta-llama/Llama-2-7b-hf
# 체크포인트와 로그를 저장할 디렉토리. (type: <class 'Path'>, default: out/lora)
...
✅ CLI에서 모든 매개변수 재정의하기:
litgpt finetune \
--config https://raw.githubusercontent.com/Lightning-AI/litgpt/main/config_hub/finetune/llama-2-7b/lora.yaml \
--lora_r 4
LitGPT는 많은 훌륭한 AI 프로젝트, 이니셔티브, 챌린지, 그리고 물론 기업들을 뒷받침합니다. 새로운 기능 반영을 원하신다면 Pull Request를 제출해 주세요.
📊 SAMBA: 효율적인 무제한 컨텍스트 언어 모델링을 위한 단순 하이브리드 상태 공간 모델 (Simple Hybrid State Space Models)
Microsoft 연구진의 Samba 프로젝트는 LitGPT 코드베이스를 기반으로 구축되었으며, 상태 공간 모델 (State Space Models)과 슬라이딩 윈도우 어텐션 (Sliding Window Attention)을 결합하여 순수 상태 공간 모델보다 뛰어난 성능을 보여줍니다.
🏆 NeurIPS 2023 대규모 언어 모델 효율성 챌린지 (Large Language Model Efficiency Challenge): 1 LLM + 1 GPU + 1 Day
LitGPT 저장소는 NeurIPS 2023 LLM 효율성 챌린지의 공식 스타터 키트였습니다. 이 대회는 단일 GPU에서 24시간 동안 기존의 비-지시 미세 조정 (non-instruction tuned) LLM을 미세 조정 (Finetuning)하는 데 중점을 둔 경진대회입니다.
🦙 TinyLlama: 오픈 소스 소규모 언어 모델 (An Open-Source Small Language Model)
LitGPT는 TinyLlama 프로젝트와 TinyLlama: 오픈 소스 소규모 언어 모델 (TinyLlama: An Open-Source Small Language Model) 연구 논문의 기반이 되었습니다.
🍪 MicroLlama: MicroLlama-300M
MicroLlama는 TinyLlama와 LitGPT를 기반으로 50B 토큰으로 사전 학습 (Pretrained)된 300M 규모의 Llama 모델입니다.
🔬 더 적은 토큰을 사용한 소규모 베이스 언어 모델 (Base LMs) 사전 학습
LitGPT를 활용한 "더 적은 토큰을 사용한 소규모 베이스 언어 모델 (Base LMs) 사전 학습" 연구 논문은 더 큰 모델로부터 몇 개의 트랜스포머 블록 (Transformer blocks)을 상속받고, 더 큰 모델에 사용된 데이터의 아주 적은 부분만을 사용하여 더 작은 베이스 언어 모델을 개발합니다. 이 연구는 이러한 소규모 모델들이 훨씬 적은 학습 데이터와 자원을 사용함에도 불구하고 더 큰 모델과 대등한 성능을 낼 수 있음을 보여줍니다.
경험 수준이나 하드웨어에 관계없이 모든 개인 기여자들을 환영합니다. 여러분의 기여는 가치 있으며, 이 협력적이고 지원적인 환경에서 여러분이 무엇을 성취할 수 있을지 기대됩니다.
🚀 시작하기
⚡️ LoRA, QLoRA 및 어댑터 (Adapters)를 포함한 미세 조정 (Finetuning)
🤖 사전 학습 (Pretraining)
💬 모델 평가 (Model evaluation)
📘 지원되는 데이터셋 및 커스텀 데이터셋
🧹 양자화 (Quantization)
🤯 메모리 부족 (OOM) 오류 해결을 위한 팁
🧑🏽💻 클라우드 TPU 사용
이 구현체는 Lit-LLaMA와 nanoGPT를 확장한 것이며, Lightning Fabric ⚡에 의해 구동됩니다.
- nanoGPT를 위한 @karpathy
- GPT-NeoX 및 평가 하네스 (Evaluation Harness)를 위한 @EleutherAI
- bitsandbytes를 위한 @TimDettmers
- LoRA를 위한 @Microsoft
- Flash Attention 2를 위한 @tridao
LitGPT는 Apache 2.0 라이선스 하에 배포됩니다.
연구에 LitGPT를 사용하신다면, 다음 저작물을 인용해 주세요:
@misc{litgpt-2023,
author = {Lightning AI},
title = {LitGPT},
...
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Python (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기