OptimalScale/LMFlow

An Extensible Toolkit for Finetuning and Inference of Large Foundation Models. Large Models for All.

LMFlow – 대규모 언어 모델의 피니튜닝을 위한 도구 상자

무엇인가요 – LMFlow는 Llama‑3, Phi‑3, Llama‑2, GPT‑2 등과 같은 대규모 언어 모델(LLM)을 적응(피니튜닝)하는 데 도움을 주는 오픈소스 파이썬 라이브러리입니다. 데이터 준비, 학습, 추론, 배포까지 전체 파이프라인을 더 빠르고 쉽게 만들 수 있도록 스크립트, 유틸리티, 선택적 통합 기능을 통합했습니다.

주요 기능

영역 LMFlow가 제공하는 기능
학습 • 전체 파라미터 피니튜닝 (모든 가중치 업데이트)
• LoRA (저랭크 적응) – 가볍고 파라미터 효율적인 방법
• LISA – 메모리 효율적인 새로운 알고리즘. 대부분의 레이어를 고정하고 일부 레이어만 업데이트하여 단일 24 GB GPU에서 7 B 규모 모델 학습 가능
• QLoRA (8비트/4비트 양자화 LoRA)로 메모리 사용량을 더욱 줄임
• 그래디언트 체크포인팅, FlashAttention‑2, DeepSpeed ZeRO‑3 등으로 성능 향상 및 GPU 메모리 절약
추론 • 표준 Hugging‑Face 스타일 추론
• 고처리량 서빙을 위한 vLLM 및 SGLang 백엔드
• llama.cpp 변환 스크립트를 통한 CPU 전용 4비트 추론
배포 • 빠른 챗봇 데모용 Gradio UI
• 사용자 정의 웹 서비스용 Flask 통합
확장 기능 • 필요 시 설치 가능한 선택적 패키지 (vllm, sglang, trl, deepspeed, flash_attn, ray, multimodal, gradio, flask)

사용 방법

  1. 설치pip install -e . (또는 필요한 확장 기능 추가).
  2. 데이터 준비 – 지원되는 데이터셋 형식(예: Alpaca)에 대한 문서를 따르세요.
  3. 학습 스크립트 실행 – 원하는 방법을 선택하세요 (run_finetune.sh는 전체용, run_finetune_with_lora.sh, run_finetune_with_lisa.sh는 각각 LoRA 및 LISA용).
  4. 채팅 – 학습 후 run_chatbot.sh로 간단한 터미널 챗봇을 시작하세요. 웹 UI가 필요하면 Gradio 예제를 사용하세요.
  5. 배포 – Flask 또는 Gradio 서비스를 시작하고, 필요 시 DeepSpeed를 사용해 멀티 GPU 스케일링을 수행하세요.

하드웨어 안내 – README에는 다양한 모델 크기와 학습 모드에 따른 GPU 메모리 사용량 추정 표가 포함되어 있습니다(예: 7 B 모델은 전체 정밀도 피니튜닝 시 약 120 GB가 필요하지만, LoRA 사용 시 약 16 GB, 8비트 QLoRA 사용 시 약 10 GB로 줄어듭니다).

커뮤니티 및 지원 – 프로젝트는 웹사이트, Discord, Slack, WeChat 그룹을 운영하며, 새로운 모델 지원, 스펙큘레이티브 디코딩 같은 새로운 알고리즘, 대화 템플릿 프리셋 등 정기적인 업데이트를 제공합니다.

왜 중요한가요 – LLM의 피니튜닝은 자원 집약적입니다. LMFlow는 LISA, LoRA, QLoRA, FlashAttention‑2, DeepSpeed 등의 최신 메모리 절약 기술을 하나의 설치 가능한 패키지로 통합하여 연구실과 애호가들이 특정 작업이나 도메인에 맞게 대규모 모델을 적응하기 위한 장벽을 낮췄습니다.


빠른 시작 스크립트

# 안정된 태그 클론
git clone -b v1.0.0 https://github.com/OptimalScale/LMFlow.git
cd LMFlow
conda create -n lmflow python=3.9 -y && conda activate lmflow
conda install mpi4py
pip install -e .

# Alpaca 데이터로 GPT‑2 피니튜닝
bash ./scripts/run_finetune.sh \
  --model_name_or_path gpt2 \
  --dataset_path data/alpaca/train_conversation \
  --output_model_path output_models/finetuned_gpt2

# 결과와 채팅
bash ./scripts/run_chatbot.sh output_models/finetuned_gpt2

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • Dispatch