> 기술 주변기기 > 일체 포함 > S-LoRA: 하나의 GPU에서 수천 개의 대형 모델 실행이 가능합니다.

S-LoRA: 하나의 GPU에서 수천 개의 대형 모델 실행이 가능합니다.

WBOY
풀어 주다: 2023-11-15 14:14:14
앞으로
1314명이 탐색했습니다.

일반적으로 대규모 언어 모델 배포에서는 일반적으로 "사전 학습-미세 조정" 방법을 채택합니다. 그러나 여러 작업(예: 개인화된 비서)에 대한 기본 모델을 미세 조정하는 경우 학습 및 서비스 비용이 매우 높아집니다. LoRA(LowRank Adaptation)는 효율적인 매개변수 미세 조정 방법으로, 일반적으로 기본 모델을 여러 작업에 적용하여 파생된 LoRA 어댑터를 대량으로 생성하는 데 사용됩니다.

다시 작성: 일괄 추론은 제공 중에 많은 기회를 제공하며 이 패턴은 어댑터 가중치를 미세 조정하여 전체 미세 조정과 비슷한 성능을 달성하는 것으로 나타났습니다. 이 접근 방식을 사용하면 대기 시간이 짧은 단일 어댑터 추론과 어댑터 전체의 직렬 실행이 가능하지만 여러 어댑터를 동시에 제공할 때 전체 서비스 처리량이 크게 줄어들고 전체 대기 시간이 늘어납니다. 따라서 이러한 미세 조정 변형의 대규모 서비스 문제를 어떻게 해결할지는 아직 알려지지 않았습니다

최근 UC Berkeley, Stanford 및 기타 대학의 연구자들은 S-LoRA라는 새로운 미세 조정 방법을 논문에서 제안했습니다

S-LoRA: 하나의 GPU에서 수천 개의 대형 모델 실행이 가능합니다.

  • 논문 주소: https://arxiv.org/pdf/2311.03285.pdf
  • 프로젝트 주소: https://github.com/S-LoRA/S-LoRA

S-LoRA는 많은 LoRA 어댑터의 확장 가능한 서비스를 위해 설계된 시스템입니다. 모든 어댑터를 메인 메모리에 저장하고 현재 실행 중인 쿼리에서 사용되는 어댑터를 GPU 메모리로 가져옵니다.

S-LoRA는 통합 메모리 풀을 사용하여 다양한 수준의 동적 어댑터 가중치와 다양한 시퀀스 길이의 KV 캐시 텐서를 관리하는 "통합 페이징" 기술을 제안합니다. 또한 S-LoRA는 새로운 텐서 병렬성 전략과 고도로 최적화된 맞춤형 CUDA 커널을 사용하여 LoRA 계산의 이기종 일괄 처리를 가능하게 합니다.

이러한 기능을 통해 S-LoRA는 적은 비용으로(2000개의 어댑터를 동시에 제공) 단일 또는 다중 GPU에서 수천 개의 LoRA 어댑터를 제공하고 추가 LoRA 계산 비용을 최소화할 수 있습니다. 이에 비해 vLLM 팩은 여러 개의 가중치 사본을 유지해야 하며 GPU 메모리 제한으로 인해 5개 미만의 어댑터만 제공할 수 있습니다.

HuggingFace PEFT 및 vLLM과 같은 최신 기술과 비교(LoRA 서비스만 지원) ) 라이브러리와 비교하여 S-LoRA의 처리량은 최대 4배까지 증가할 수 있으며, 제공되는 어댑터 수는 몇 배까지 증가할 수 있습니다. 따라서 S-LoRA는 다양한 작업별 미세 조정 모델에 확장 가능한 서비스를 제공할 수 있으며 미세 조정 서비스의 대규모 사용자 정의 가능성을 제공합니다.

S-LoRA: 하나의 GPU에서 수천 개의 대형 모델 실행이 가능합니다.

S-LoRA에는 세 가지 주요 혁신 부품이 포함되어 있습니다. 섹션 4에서는 기본 모델과 LoRA 어댑터 간의 계산을 분해하는 데 사용되는 일괄 처리 전략을 소개합니다. 또한 연구원들은 어댑터 클러스터링 및 승인 제어와 같은 측면을 포함하여 수요 일정 관리의 문제도 해결했습니다. 동시 어댑터 전체에 걸쳐 일괄 처리하는 기능은 메모리 관리에 새로운 과제를 안겨줍니다. 다섯 번째 부분에서 연구원들은 LoRA 어댑터의 동적 로딩을 지원하기 위해 PagedAttention을 Unfied Paging으로 승격합니다. 이 접근 방식은 통합 메모리 풀을 사용하여 KV 캐시 및 어댑터 가중치를 페이징 방식으로 저장합니다. 이를 통해 조각화를 줄이고 KV 캐시 및 어댑터 가중치의 동적으로 변화하는 크기의 균형을 맞출 수 있습니다. 마지막으로 6부에서는 기본 모델과 LoRA 어댑터를 효율적으로 분리할 수 있는 새로운 텐서 병렬 전략을 소개합니다.

다음은 주요 내용입니다.

일괄 처리

단일 어댑터의 경우 Hu et al. (2021)은 어댑터 가중치를 기본 모델 가중치와 병합하여 새로운 모델을 생성하는 권장 방법을 제안했습니다(수식 1 참조). 이것의 이점은 새 모델이 기본 모델과 동일한 수의 매개변수를 갖기 때문에 추론 중에 추가 어댑터 오버헤드가 없다는 것입니다. 사실 이는 원본 LoRA 작업의 주목할만한 기능이기도 합니다

S-LoRA: 하나의 GPU에서 수천 개의 대형 모델 실행이 가능합니다.

이 기사에서는 LoRA 어댑터를 기본 모델에 병합하는 것이 다중 LoRA 고처리량 서비스 설정에 비효율적임을 지적합니다. 대신 연구진은 xAB를 계산하기 위해 실시간으로 LoRA를 계산할 것을 제안했다(수학식 2 참조).

S-LoRA에서는 기본 모델을 일괄 처리한 다음 맞춤형 CUDA 커널을 사용하여 모든 어댑터에 대해 개별적으로 추가 xAB를 수행합니다. 이 프로세스는 그림 1에 나와 있습니다. LoRA를 계산하기 위해 BLAS 라이브러리의 패딩 및 배치 GEMM 커널을 사용하는 대신 패딩 없이 보다 효율적인 계산을 달성하기 위해 맞춤형 CUDA 커널을 구현했습니다. 구현 세부 사항은 하위 섹션 5.3에 있습니다.

S-LoRA: 하나의 GPU에서 수천 개의 대형 모델 실행이 가능합니다.

LoRA 어댑터를 메인 메모리에 저장하면 개수가 많아질 수 있지만, 현재는 배치 크기가 GPU 메모리에 의해 제한되기 때문에 배치 실행에 필요한 LoRA 어댑터 개수를 제어할 수 있습니다. 이를 활용하기 위해 모든 LoRA 어댑터를 메인 메모리에 저장하고 현재 실행 중인 배치를 추론할 때 해당 배치에 필요한 LoRA 어댑터만 GPU RAM으로 가져옵니다. 이 경우 서비스 가능한 최대 어댑터 수는 주 메모리 크기에 따라 제한됩니다. 그림 2는 이 프로세스를 보여줍니다. 섹션 5에서는 효율적인 메모리 관리를 위한 기술도 논의합니다

S-LoRA: 하나의 GPU에서 수천 개의 대형 모델 실행이 가능합니다.

메모리 관리

단일 기본 모델을 제공하는 것과 비교하여 여러 LoRA 어댑터 카드를 동시에 제공하면 새로운 메모리 관리 문제가 발생합니다. 여러 어댑터를 지원하기 위해 S-LoRA는 이를 메인 메모리에 저장하고 현재 실행 중인 배치에 필요한 어댑터 가중치를 GPU RAM에 동적으로 로드합니다.

이 과정에는 두 가지 분명한 과제가 있습니다. 첫 번째는 다양한 크기의 어댑터 가중치를 동적으로 로드 및 언로드함으로써 발생하는 메모리 조각화 문제입니다. 두 번째는 어댑터 로드 및 언로드로 인해 발생하는 대기 시간 오버헤드입니다. 이러한 문제를 효과적으로 해결하기 위해 연구진은 "통합 페이징"이라는 개념을 제안하고 어댑터 가중치를 미리 가져옴으로써 I/O와 계산의 중첩을 구현했습니다

Unified Paging

연구원 개념 확장 통합 페이징에 대한 PagedAttention입니다. 통합 페이징은 KV 캐시 관리뿐만 아니라 어댑터 가중치 관리에도 사용됩니다. 통합 페이징은 통합 메모리 풀을 사용하여 KV 캐시와 어댑터 가중치를 공동으로 관리합니다. 이를 달성하기 위해 먼저 메모리 풀에 대규모 버퍼를 정적으로 할당합니다. 이는 기본 모델 가중치와 임시 활성화 텐서를 저장하는 데 사용되는 공간을 제외하고 사용 가능한 모든 공간을 활용합니다. KV 캐시 및 어댑터 가중치는 페이징 방식으로 메모리 풀에 저장되며 각 페이지는 H 벡터에 해당합니다. 따라서 시퀀스 길이가 S인 KV 캐시 텐서는 S 페이지를 차지하는 반면, R 수준 LoRA 가중치 텐서는 R 페이지를 차지합니다. 그림 3은 KV 캐시와 어댑터 가중치가 인터리브되고 연속되지 않은 방식으로 저장되는 메모리 풀의 레이아웃을 보여줍니다. 이 접근 방식은 조각화를 크게 줄이고 다양한 수준의 어댑터 가중치가 구조적이고 체계적인 방식으로 동적 KV 캐시와 공존할 수 있도록 보장합니다.

S-LoRA: 하나의 GPU에서 수천 개의 대형 모델 실행이 가능합니다.

Tensor Parallel

또한, 배치 LoRA 추론 A 연구원 새로운 텐서 병렬 전략은 대규모 Transformer 모델의 다중 GPU 추론을 지원하도록 설계되었습니다. Tensor 병렬 처리는 단일 프로그램, 다중 데이터 패러다임이 구현 및 기존 시스템과의 통합을 단순화하기 때문에 가장 널리 사용되는 병렬 접근 방식입니다. Tensor 병렬 처리는 대규모 모델을 제공할 때 GPU당 메모리 사용량과 대기 시간을 줄일 수 있습니다. 이 설정에서 추가 LoRA 어댑터는 새로운 가중치 행렬과 행렬 곱셈을 도입하므로 이러한 추가에 대한 새로운 분할 전략이 필요합니다.

S-LoRA: 하나의 GPU에서 수천 개의 대형 모델 실행이 가능합니다.

Evaluation

마지막으로 연구진은 Llama-7B/13B/30B/70B

S-LoRA: 하나의 GPU에서 수천 개의 대형 모델 실행이 가능합니다.

를 제공하여 S-LoRA를 평가했습니다. 단일 GPU에서 수천 개의 LoRA 어댑터를 제공하거나 오버헤드가 거의 없는 여러 GPU를 제공합니다. S-LoRA는 최첨단 매개변수 효율적인 미세 조정 라이브러리인 Huggingface PEFT에 비해 최대 30배 더 높은 처리량을 달성합니다. S-LoRA는 LoRA 서비스를 지원하는 고처리량 서비스 시스템 vLLM을 사용하는 것에 비해 처리량을 4배 증가시키고 서비스 어댑터 수를 몇 배로 늘립니다.

자세한 연구 내용은 원문을 참고해주세요.

위 내용은 S-LoRA: 하나의 GPU에서 수천 개의 대형 모델 실행이 가능합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:51cto.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿