DoRA: 가중치 분해 LoRA (Weight-Decomposed Low-Rank Adaptation)

PyTorchKR​:fire::kr: :thinking::speech_balloon:

  • 대표적인 PEFT(Parameter-Efficient Fine-Tuning) 기법 중 하나인 LoRA(Low-Rank Adaptation)에 이어 DoRA가 등장하였습니다. 함께 살펴보시죠. :smiley:
  • 이 글은 GPT 모델로 정리한 것으로, 잘못된 부분이 있을 수 있으니 글 아래쪽의 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

DoRA: 가중치 분해 저랭크 적응 (DoRA: Weight-Decomposed Low-Rank Adaptation)

소개

DoRA: 가중치 분해 LoRA (Weight-Decomposed Low-Rank Adaptation)

"DoRA: 가중치 분해 LoRA (Weight-Decomposed Low-Rank Adaptation)"이라는 제목의 이 논문은 매개변수 효율적 미세조정(PEFT, Parameter-Effiecient Fine-Tuning)에 대한 새로운 접근 방식을 제시합니다. DoRA는 제한된 계산 자원이나 추가 추론 비용을 최소화할 필요성과 같은 제약 조건 하에서 모델의 정확도를 유지하거나 개선하는 과제를 해결하고자 합니다. 저자들은 전체 매개변수에 대한 미세조정(FT, Fine-Tuning)과 저랭크 적응(LoRA, Low-Rank Adaptation) 방법 사이의 차이를 탐색하기 위해 가중치 분해 분석을 도입하고, 이를 통해 DoRA를 개발하였음을 보이고 있습니다.

DoRA는 사전 학습된 가중치를 크기(Magnitude)와 방향(Direction)의 구성 요소들로 분해(Decompose)하고, LoRA를 사용하여 방향(Direction) 업데이트를 적용하여 미세조정(FT, Fine-Tuning) 과정에서 학습 가능한 매개변수의 수를 효율적으로 최소화합니다. 이 전략은 학습 능력과 안정성을 향상시키면서도 추가적인 추론 오버헤드를 발생시키지 않습니다. 이 논문은 DoRA가 상식 추론, 시각적 지시 조정, 이미지/비디오-텍스트 이해와 같은 다양한 작업에서 LoRA를 능가함을 보여주며, 이 분야에서 중요한 발전을 표시합니다.

들어가며

LoRA나 PEFT가 익숙하지 않으신 분들을 위해 가볍게 소개하고 시작하겠습니다. :smiley:

매개변수-효율적 미세조정(PEFT, Parameter-Efficient Fine-Tuning)

PEFT(Parameter-Efficient Fine-Tuning)는 사전 학습된 딥러닝 모델을 특정 작업에 맞게 조정하는 과정에서 추가적인 매개변수의 수를 최소화하면서 모델의 성능을 최적화하는 방법론을 말합니다. 이 접근 방식은 계산 비용, 메모리 사용량, 그리고 에너지 소비를 줄이는 동시에, 사전 훈련된 모델의 강력한 일반화 능력을 유지하거나 향상시키기 위해 고안되었습니다. PEFT는 특히 대규모 모델을 소규모 데이터셋에 적용하거나, 리소스가 제한된 환경에서 모델을 배포할 때 유용합니다.

PEFT의 주요 개념은 다음과 같습니다:

  • 사전 학습된 모델의 재사용: PEFT는 이미 대규모 데이터셋으로 사전 학습된 모델(Pre-trained Model)의 지식을 활용하여, 새로운 작업이나 소규모 데이터셋에 대해 빠르게 적응할 수 있도록 합니다.

  • 매개변수 최소화: 모델의 전체 매개변수를 미세조정하는 대신, PEFT는 추가적인 매개변수의 수를 최소화하면서도 특정 작업에 대한 성능을 최적화합니다.

  • 효율성과 성능의 균형: PEFT는 모델의 효율성을 높이는 동시에, 사전 훈련된 모델의 강력한 성능을 유지하거나 개선하는 방법을 찾습니다.

PEFT 방법론들은 모델의 미세조정 과정을 최적화하여, 리소스가 제한된 환경에서도 고성능의 AI 모델을 효율적으로 배포할 수 있게 합니다. 이러한 방법론들은 계산 비용과 메모리 사용량을 줄이는 동시에, 사전 훈련된 모델의 강력한 일반화 능력을 활용하는 데 중점을 둡니다.

저-랭크 적응(LoRA, Low-Rank Adaptation)

저-랭크 적응(LoRA, Low-Rank Adaptation)

LoRA(Low-Rank Adaptation, 저랭크 적응)는 매개변수 효율적인 미세조정(PEFT) 기법 중 하나로, 대규모 사전 학습된 모델을 특정 작업에 맞게 조정할 때 사용됩니다. LoRA의 핵심 아이디어는 모델의 가중치를 직접적으로 변경하는 대신, 추가적인 저랭크 행렬을 도입하여 모델의 출력에 간접적으로 영향을 주는 것입니다. 이 방법은 모델의 학습 가능한 매개변수의 수를 크게 증가시키지 않으면서도, 사전 학습된 모델의 성능을 특정 작업에 맞게 최적화할 수 있도록 합니다.

LoRA는 특히 트랜스포머 아키텍처에서 자주 사용되며, 이 아키텍처의 셀프-어텐션 메커니즘(self-attention mechanism)에 적용됩니다. 자가 주의 메커니즘의 가중치 행렬 W 가 있다고 했을 때, LoRA는 이 가중치 행렬보다 낮은 랭크의 수정을 적용합니다. 구체적으로, 원래의 가중치 행렬 W 에 대해서 2개의 낮은 랭크 행렬 AB 를 도입합니다. 파인튜닝 과정에서는 W 를 고정시킨 상태로 AB 를 학습한 뒤, 추론 시점에는 W + AB^T 형태로 최종 가중치 행렬을 만들어 사용합니다.

이러한 LoRA의 주요한 장점들은 다음과 같습니다:

  1. 효율성: LoRA는 추가적인 학습 가능한 매개변수의 수를 최소화하면서도 사전 훈련된 모델의 성능을 특정 작업에 맞게 조정할 수 있습니다. 이는 계산 비용과 메모리 사용량을 크게 줄여줍니다.
  2. 유연성: LoRA는 다양한 사전 훈련된 모델과 작업에 적용될 수 있으며, 특히 NLP와 컴퓨터 비전 작업에서 유용합니다.
  3. 성능: LoRA를 사용한 미세조정은 전체 모델을 미세조정하는 것에 비해 상대적으로 적은 매개변수로도 유사한 성능을 달성할 수 있습니다. 이는 특히 데이터가 제한된 작업에서 유리합니다.

즉, LoRA는 모델의 가중치 중 일부를 업데이트하는 특정 PEFT 방법으로, 주어진 작업에 가장 영향력 있는 매개변수를 대상으로 합니다. 저랭크 부공간에 업데이트를 제한함으로써 LoRA는 미세조정 과정이 효율적이면서도 효과적이도록 보장합니다. 이 기술은 전체 미세조정의 계산 비용이 매우 커질 수 있는 대규모 모델들에서 특히 효율적입니다.

DoRA(Weight-Decomposed Low-Rank Adaptation) 소개

DoRA: 가중치 분해 LoRA (Weight-Decomposed Low-Rank Adaptation)

DoRA의 핵심적인 아이디어는 사전 학습된 가중치( W )를 크기(Magnitude)와 방향(Direction)의 두 가지 구성 요소로 분해(Decompose)하는 접근 방식에 있습니다. 이 분해(Decompose)는 미세조정 과정에서 더 세밀한 업데이트를 가능하게 하며, 특히 가중치 벡터의 방향(Direction) 구성 요소쪽에 LoRA를 적용합니다. 이 방법론적 전환은 전통적인 PEFT의 한계를 해결하고, 추가 계산 부담 없이 더 정밀하고 효과적인 업데이트를 가능하게 합니다. 논문에서는 방향(Direction)의 업데이트에 초점을 맞춤으로써 DoRA가 전체 파인튜닝(Full Fine-Tuning)에 가까운 성능을 달성할 수 있으며 PEFT 방법의 효율성을 유지할 수 있다고 주장합니다.

DoRA의 또 다른 주요 기여는 LoRA 기반 방법의 학습 능력과 학습의 안정성을 향상시키는 것입니다. 가중치 분해 전략을 사용함으로써 DoRA는 특정 작업에서 모델의 성능에 직접적인 영향을 미치는 방향(Direction) 구성 요소의 가중치에 대한 효율적이고 목표 지향적인 업데이트를 허용합니다.

DoRA 구현의 첫 번째 단계는 사전 학습된 가중치를 크기(M)와 방향(D) 구성 요소로 분해하는 것입니다. 먼저 사전학습된 모델의 가중치 행렬 W 를 분해하는 과정은 다음과 같이 표현할 수 있습니다:

W = M D

이 때, M 는 가중치의 크기(스칼라 값), D 는 정규화된 방향(D) 벡터로 ||D|| = 1 을 만족합니다.

DoRA는 이러한 분해 과정을 확장하여, LoRA의 접근 방식과 결합하여 아래와 같이 표현할 수 있습니다:

W' = W + M (AB^T)

이 때, W' 는 수정된 가중치 해렬이고, AB 는 LoRA에서의 낮은 랭크의 행렬로 학습을 통해 업데이트되는 매개변수입니다. 마지막으로 M 는 가중치 크기(Magnitude)를 나타내며, 방향성 업데이트의 강도를 조정합니다.

이 분해는 DoRA 접근 방식의 기초이며, 작업에 가장 관련이 있는 가중치의 측면(방향)을 덜 관련이 있는 것(크기)으로부터 분리합니다. 다음 단계는 방향 구성 요소의 가중치에 특별히 LoRA를 적용하여, 원하는 작업에서 모델의 성능에 직접적인 영향을 미치는 효율적이고 목표 지향적인 업데이트를 가능하게 합니다.

이상의 수식들은 DoRA의 가중치 분해 과정을 개념적으로 이해하기 위한 기본적이고 기초적인 수식으로, 실제 DoRA의 구현 과정에서는 이러한 아이디어를 바탕으로 더 복잡한 최적화와 학습 알고리즘이 적용될 수 있습니다. (자세한 내용은 논문을 참고해주세요. 이 글에서는 생략하겠습니다;; :sweat_smile: )

DoRA의 실제 적용은 다양한 작업과 데이터 세트에서 광범위한 실험을 통해 입증됩니다. 이러한 실험은 DoRA가 전통적인 LoRA 및 기타 PEFT 방법을 능가하는 능력을 보여주며, 그 효과성에 대한 실증적 증거를 제공합니다. 논문은 이러한 결과의 자세한 분석을 제공합니다.

실험 결과

논문에서 제시된 성능 분석은 DoRA가 기존 PEFT 방법을 포함한 LoRA를 다양한 작업에서 능가함을 강조합니다. 제공된 실증적 결과는 DoRA가 추가 추론 비용 없이 전체 FT에 가까운 성능을 달성할 수 있음을 보여줍니다. 이러한 효율성과 정확도의 균형은 중요한 성과로, 가중치 분해가 PEFT 방법을 향상시키는 전략으로서의 잠재력을 보여줍니다.

LoRA에 이미 익숙한 사람이라면, DoRA는 LoRA의 기본 원리를 더 발전시킨 형태로 이해할 수 있습니다. 가중치 분해와 방향성 업데이트를 통해, DoRA는 LoRA의 기본 개념을 유지하면서도 미세조정 과정에서의 성능과 안정성을 크게 향상시키는 새로운 방법을 제시합니다.

더 읽어보기

DoRA 논문

DoRA 구현체

LoRA 논문




:fire:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 뉴스 발행에 힘이 됩니다~ :star_struck:

2개의 좋아요

Building a Large Language Model (from Scratch) 책을 집필 중인, Lightning AISebanstian Raschka(@rasbt)의 글도 함께 소개드립니다. :smiley:

LoRA를 사용해 사전학습 모델을 구성하는 것도 좋았는데 DoRA를 사용하면 사용자의 요구사항에 적합한 생성 및 충족을 할 수 있을 것 같습니다.

매번 많은 것을 배울 수 있어서 감사드립니다. :blush:

1개의 좋아요