NVIDIA가 개발한 Python 라이브러리로, Hugging Face transformers 기반의 다양한 플러그형 압축 방식으로 추론 중 LLM KV cache를 압축합니다.
mit-han-lab/streaming-llm
사전 학습된 LLM이 attention sink 토큰과 최근 토큰 윈도우를 유지해 사실상 무한한 텍스트 스트림을 처리하도록 하는 방법인 StreamingLLM의 연구 코드입니다.
- 스타
- 7,277
- 포크
- 402
- 열린 이슈
- 50
- 마지막 커밋
- 2년 전
어떤 프로젝트인가요?
StreamingLLM은 attention sink를 활용한 효율적인 스트리밍 언어 모델에 관한 ICLR 2024 논문과 함께 공개된 MIT Han Lab의 연구 프로젝트입니다. 이 프로젝트는 LLM을 여러 차례 이어서 사용할 때 발생하는 두 가지 문제, 즉 디코딩 중 과거의 모든 Key 및 Value 상태를 캐시하는 데 드는 메모리 비용과 입력이 학습 시퀀스 길이를 초과하면 모델 출력이 저하되는 문제를 다룹니다.
이 방법은 attention sink 역할을 하는 처음 몇 개 토큰의 KV 상태와 최근 토큰의 슬라이딩 윈도우를 함께 유지하면 일반적인 윈도우 어텐션의 성능을 대부분 회복할 수 있음을 보여줍니다. 모델의 컨텍스트 윈도우가 늘어나는 것은 아니며, 중간 토큰만 버리므로 캐시를 초기화하지 않고 최근 텍스트를 바탕으로 계속 처리할 수 있습니다. 저장소에는 스트리밍 Llama 챗봇 데모와 perplexity 평가 코드가 포함되어 있으며, 현재 Llama-2, MPT, Falcon, Pythia를 지원합니다.
이 프로젝트는 범용 라이브러리가 아니라 논문을 위한 코드 공개입니다. 설치에는 버전을 고정한 transformers와 로컬 develop 설치를 사용하는 conda가 필요합니다.
핵심 기능
- 01초기 attention sink 토큰과 최근 토큰 윈도우를 KV cache에 유지합니다.
- 02파인튜닝 없이 학습 길이보다 훨씬 긴 입력을 모델이 처리할 수 있게 합니다.
- 03스트리밍 Llama 챗봇 데모 스크립트를 제공합니다.
- 04perplexity 평가 코드를 제공합니다.
- 05Llama-2, MPT, Falcon, Pythia를 지원합니다.
활용 사례
- 여러 대화 턴에 걸쳐 계속 응답해야 하는 장시간 실행 챗봇이나 일일 비서를 운영합니다.
- LLM 연구에서 attention sink 동작과 KV cache 관리를 연구합니다.
- StreamingLLM 논문의 perplexity 결과를 재현합니다.
빠른 시작
- 1
Python 3.8 conda 환경을 만들고 활성화합니다
conda create -yn streaming python=3.8 - 2
환경을 활성화합니다
conda activate streaming - 3
PyTorch와 버전이 고정된 Python 종속성을 설치합니다
pip install torch torchvision torchaudio - 4
GPU 0에서 스트리밍 Llama 챗봇 데모를 실행합니다
CUDA_VISIBLE_DEVICES=0 python examples/run_streaming_llama.py --enable_streaming
사용 전 알아둘 점
- 설정에는 특정 구버전 Python(3.8)과 버전이 고정된 transformers(4.33.0)가 필요합니다.
- 데모를 실행하려면 GPU가 필요하며, 별도로 구해야 하는 Llama-2와 같은 사전 학습 모델을 사용합니다.
- 모델은 최근 토큰과 attention sink에만 주의를 기울이므로 컨텍스트를 확장하거나 장기 기억을 제공하지 않습니다.
- 저장소의 마지막 push가 2024년 7월에 이루어져 유지 관리가 제한적입니다.
포함된 컬렉션
토픽
자주 묻는 질문
- streaming-llm은(는) 무엇인가요?
- 사전 학습된 LLM이 attention sink 토큰과 최근 토큰 윈도우를 유지해 사실상 무한한 텍스트 스트림을 처리하도록 하는 방법인 StreamingLLM의 연구 코드입니다. StreamingLLM은 attention sink를 활용한 효율적인 스트리밍 언어 모델에 관한 ICLR 2024 논문과 함께 공개된 MIT Han Lab의 연구 프로젝트입니다. 이 프로젝트는 LLM을 여러 차례 이어서 사용할 때 발생하는 두 가지 문제, 즉 디코딩 중 과거의 모든 Key 및 Value 상태를 캐시하는 데 드는 메모리 비용과 입력이 학습 시퀀스 길이를 초과하면 모델 출력이 저하되는 문제를 다룹니다.
- streaming-llm은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- streaming-llm은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- streaming-llm은(는) 아직 유지보수되고 있나요?
- 6개월 이상 커밋 없음. streaming-llm의 마지막 커밋은 2024년 7월 11일입니다.
- streaming-llm은(는) 어디에 사용할 수 있나요?
- 여러 대화 턴에 걸쳐 계속 응답해야 하는 장시간 실행 챗봇이나 일일 비서를 운영합니다. LLM 연구에서 attention sink 동작과 KV cache 관리를 연구합니다. StreamingLLM 논문의 perplexity 결과를 재현합니다.
- streaming-llm는 어떻게 설치하나요?
- Python 3.8 conda 환경을 만들고 활성화합니다: conda create -yn streaming python=3.8 환경을 활성화합니다: conda activate streaming PyTorch와 버전이 고정된 Python 종속성을 설치합니다: pip install torch torchvision torchaudio GPU 0에서 스트리밍 Llama 챗봇 데모를 실행합니다: CUDA_VISIBLE_DEVICES=0 python examples/run_streaming_llama.py --enable_streaming
- streaming-llm은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/mit-han-lab/streaming-llm
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
PagedAttention 없이 CUDA 가상 메모리 API로 GPU 메모리를 필요할 때 할당하는 LLM 서빙용 KV-cache 메모리 관리자입니다.
SGLang은 다양한 GPU, TPU, CPU 플랫폼에서 대규모 언어·비전 언어·디퓨전 모델을 서빙하는 오픈소스 추론 프레임워크입니다.
Microsoft가 만든 Python 라이브러리로, 중요하지 않은 토큰을 제거해 성능 저하를 최소화하면서 LLM 프롬프트와 KV cache를 최대 20배 압축합니다.
서빙 엔진 간에 LLM 어텐션 캐시를 저장하고 공유·재사용해 첫 토큰 생성 시간(TTFT)을 줄이는 KV 캐시 관리 계층입니다.
긴 컨텍스트 LLM 추론을 위한 KV cache 압축, 검색, 병합 및 양자화 기법을 비교하는 통합 연구 환경입니다.