PEFT-SingLoRA
Tests
PyPI version
License
Python 3.8+
SingLoRA (Single Low-Rank Adaptation)는 전통적인 LoRA와 달리 두 개의 저랭크 행렬 대신 단일 저랭크 행렬을 사용하여 파라미터를 줄이면서 성능은 유지하는 효율적인 대안입니다. 이 패키지는 Hugging Face 생태계를 위한 PEFT(Parameter-Efficient Fine-Tuning)-호환 SingLoRA 구현을 제공합니다: 한 번 등록하면 get_peft_model이 대상 선형 레이어에 이를 사용하게 됩니다.
주요 특징 (Key Features)
- 🚀 표준 LoRA보다 50% 적은 파라미터
- 🔧 PEFT 생태계와 완벽하게 호환
- 📊 표준 LoRA와 수학적으로 동등
- 🎯 기존 PEFT 워크플로우에 쉬운 통합
설치 (Installation)
pip install peft-singlora
빠른 시작 (Quick Start)
전역 스텝(global step)을 업데이트해야 하는 시점을 이해하는 데 도움이 되는 매우 간소화된 학습 루프 예시입니다:
from transformers import AutoModelForCausalLM
from peft import LoraConfig, get_peft_model
from peft_singlora import setup_singlora, update_singlora_global_step
...
작동 방식 (How It Works)
전통적인 LoRA는 저랭크 분해를 위해 두 개의 행렬(A와 B)을 사용합니다:
SingLoRA는 대칭 분해(symmetric decomposition)를 가진 단일 행렬 A를 사용합니다:
이는 학습 가능한 파라미터를 2 * d * r에서 d * r로 줄이면서 동일한 표현력을 유지합니다.
고급 사용 (Advanced Usage)
사용자 정의 설정 (Custom Configuration)
from peft_singlora import SingLoRAConfig
config = SingLoRAConfig(
...
수동 통합 (Manual Integration)
import torch.nn as nn
from peft_singlora import Linear as SingLoRALinear
...
예시 (Examples)
다음 디렉토리(examples/)에서 다음 내용을 확인하세요:
- 다양한 모델 아키텍처를 사용한 기본 사용법
- 실제 데이터셋을 이용한 파인튜닝 예제
- 표준 LoRA와의 성능 비교
LoRA와의 비교
| 표준 LoRA (Standard LoRA) | SingLoRA |
|---|
| 분해 (Decomposition) | W = W_0 + B @ A (두 개의 행렬) | W = W_0 + α/r * A @ A^T (하나의 행렬) |
| ... | | |
실질적인 효과는 다음과 같습니다: 동일한 랭크(rank)를 사용할 경우, 어댑터 파라미터의 절반이 옵티마이저 상태(optimizer state)에 존재하게 되며, 이는 대규모 모델을 단일 GPU에서 파인튜닝하거나 여러 타겟 모듈에 어댑터를 쌓는 경우 가장 중요합니다.
요구사항 (Requirements)
- Python 3.9 이상 (CI는 3.9 및 3.12 실행)
- PyTorch 1.13 이상 (CUDA 또는 CPU)
peft 0.7 이상 및 transformers 4.34 이상 (또는 최신 버전)
- flash-attn / triton 요구사항 없음; 레이어는 순수 PyTorch로 구현됨
개발 (Development)
git clone https://github.com/revaldianggara/PEFT-SingLoRA
cd PEFT-SingLoRA
pip install -e ".[dev]"
...
이 스위트(suite)는 PEFT를 사용한 등록, 정사각형 및 비정사각형 투영에 대한 순전파/역전파 형태 검사, 그리고 글로벌 스텝 업데이트 계약을 다룹니다. flake8 src tests --max-line-length=100로 린팅하세요.
로드맵 (Roadmap)
로드맵 항목과 관련된 기여 및 이슈 보고를 환영합니다.
인용 (Citation)
연구에서 SingLoRA를 사용했다면 다음을 인용해 주세요:
@misc{bensaïd2025singloralowrankadaptation,
title={SingLoRA: Low Rank Adaptation Using a Single Matrix},
author={David Bensaïd and Noam Rotstein and Roy Velich and Daniel Bensaïd and Ron Kimmel},
...
기여 (Contributing)
기여를 환영합니다! 자세한 내용은 Contributing Guidelines를 참고해 주세요.
라이선스 (License)
본 프로젝트는 BSD 2-Clause 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 [LICENSE] 파일을 참조하십시오.