1P by neo 8달전 | favorite | 댓글 1개

LoRA 기술로 LLM 효율적 파인튜닝하기

  • LoRA(Low-Rank Adaptation)는 LLM(Large Language Models)을 더 효율적으로 파인튜닝하는 기술임.
  • 전체 신경망 파라미터를 조정하는 대신, LoRA는 소수의 저랭크 행렬만 업데이트함.

코드 예제 따라하기

  • 기사에 나온 모든 코드는 동반된 Studio에서 찾을 수 있음.
  • "Run"을 클릭하여 코드 환경의 전체 복사본을 얻고 코드 파일을 실행할 준비가 됨.

LoRA 이해하기

  • 사전 훈련된 LLM은 다양한 작업에서 범용성으로 인해 기반 모델로 불림.
  • 특정 데이터셋이나 작업에 맞게 사전 훈련된 LLM을 조정하는 것은 파인튜닝을 통해 이루어짐.
  • LoRA는 훈련 중 레이어의 가중치 변경을 저랭크 형식으로 근사화하여 더 효율적인 대안을 제공함.

LoRA 스크래치부터 코딩하기

  • LoRA 레이어를 PyTorch에서 다음과 같이 구현할 수 있음.
class LoRALayer(torch.nn.Module):
  def __init__(self, in_dim, out_dim, rank, alpha):
    super().__init__()
    self.A = torch.nn.Parameter(...)
    self.B = torch.nn.Parameter(...)
    self.alpha = alpha

  def forward(self, x):
    return self.alpha * (x @ self.A @ self.B)
  • LoRA는 신경망의 선형(피드포워드) 레이어에 주로 적용됨.

LoRA로 파인튜닝하기 -- 실습 예제

  • LoRA는 GPT나 이미지 생성 모델뿐만 아니라 다양한 유형의 신경망에 적용 가능함.
  • 작은 BERT 모델을 텍스트 분류 작업에 적용하는 실습 예제를 제공함.

전통적 파인튜닝과 비교

  • LoRA 기본 설정으로 89.44%의 테스트 정확도를 달성함.
  • 전통적 파인튜닝과 비교했을 때, LoRA는 더 적은 파라미터로 더 나은 성능을 보임.

LoRA 설정 최적화

  • LoRA의 하이퍼파라미터 설정을 조정하여 성능을 개선할 수 있음.
  • 다양한 하이퍼파라미터 조합을 실험하여 최적의 설정을 찾을 수 있음.

결론

  • LoRA를 스크래치부터 코딩하며 배웠고, DistilBERT 모델을 분류 작업에 파인튜닝하여 LoRA가 모델의 마지막 레이어만 파인튜닝하는 것보다 더 나은 성능을 보임을 확인함.

GN⁺의 의견

  • LoRA는 대규모 언어 모델을 효율적으로 파인튜닝하는 데 있어 중요한 기술로, 모델의 크기가 커짐에 따라 계산 비용을 절감할 수 있는 잠재력을 가짐.
  • 실제 예제를 통해 LoRA의 적용 방법을 이해하고, 실제 문제에 적용할 수 있는 능력을 키울 수 있음.
  • LoRA의 하이퍼파라미터를 조정하여 성능을 최적화하는 과정은 머신러닝 모델의 튜닝에 있어 일반적인 접근 방식을 보여줌.
Hacker News 의견
  • Maxime Labonne의 LLMs 101을 통해 기술을 추적하고 있음. 여전히 컴퓨터 과학 분야에서 "어떻게 하이퍼파라미터가 결과에 영향을 미치는지 정확히 모르니 다양한 값을 시도해보고 가장 좋은 것을 찾아라"라는 말을 하는 것이 낯설음.
  • LoRA와 LoRa는 다르며, 같은 약어를 사용하여 혼동되는 것에 대한 불만이 있음.
  • 언제 파인튜닝을 해야 하는지 여전히 명확하지 않음. 과거에는 모델 행동 변경을 위한 것으로 생각했지만, 최근에는 일부 회사들이 지식 추가를 위해 파인튜닝을 사용하는 것으로 보임.
  • 파인튜닝의 주요 사용 사례에 대한 질문이 있음.
  • LoRA에 대한 좋은 기사임. 해당 분야 전문가는 아니지만, 원래 논문에서 LoRA가 마지막 밀집층에만 적용되었다고 이해함. QLoRA에서 이 방법을 사용하고 흥미로운 효과가 있는 것 같다는 점에 주목할 필요가 있음.
  • 왜 LoRA가 작동하는지 확실히 이해하지 못함. 마지막 층에 적용하는 것은 이해가 가지만, 각 선형 층에 반복적으로 적용하는 논리를 이해하지 못함. 직관을 설명해 줄 수 있는 사람이 있는지 질문함.
  • 무선 LoRa 프로토콜이 오픈소스였으면 좋겠다는 바람을 표함.
  • 소프트웨어 정의 라디오에 관한 내용일 것으로 기대했지만, 여전히 흥미로운 내용임.
  • LoRA 순전파를 처음부터 구현하는 연습을 추가함. LoRA의 아이디어는 아름답고 구현은 꽤 간단함.
  • 파인튜닝을 위한 가장 인기 있는 라이브러리에 대한 질문이 있음.
  • 처음부터 시작하는 것보다는 Axolotl의 설정 기반 접근 방식을 선호함. Axolotl은 mistral, llama-2를 지원하며 최신 기술들을 많이 지원함.
  • 데이터 중심의 파인튜닝에 집중하며, LoRA를 처음부터 배우지 않고 파인튜닝 데이터를 수집하고 큐레이션하는 데 집중함.