본문 바로가기
Time Series/Finance

FinLoRA (2024) 논문 리뷰

by 아르카눔 2025. 8. 12.

FinLoRA의 논문 제목은 FinLoRA: Finetuning Quantized Financial Large Language Models Using Low-Rank Adaptation다. (링크)

 

저자는 Dannong Wang, Daniel Kim, Bo Jin, Xingjian Zhao, Tianfan Fu, Steve Yang, Xiao-Yang Liu다.

 

FinLoRA는 금융 분야에서 파인 튜닝을 어떻게 적용하는지 찾다가 발견한 논문이다. 

 

비슷한 제목의 FinLoRA: Benchmarking LoRA Methods for Fine-Tuning LLMs on Financial Datasets라는 논문이 있는데 (논문 링크, Github 링크), 제목에서 알 수 듯이 금융 분야의 벤치마크를 따르는 논문이다. FinLoRA: Finetuning Quantized Financial Large Language Models Using Low-Rank Adaptation 논문과 동일한 저자들이 쓴 논문인데 왜 헷갈리게 제목을 동일하게 지었는지 모르겠다. 

 

다시 본론으로 돌아와서 해당 논문을 보는 목적은 domain-specific LLM을 파인 튜닝을 통해 어떻게 달성하는지 참고하기 위함이다. 전에 SmolLm2 1.7B와 Gemma2-2B로 파인 튜닝해보려다가 실패한 경험이 있어서 도움이 될듯하다. 당시에 데이터 자체를 제대로 구하기 힘들어서 그런지 모르겠지만 나중에 다시 실험 해봐야겠다. 

 

Abstract

파인 튜닝된 LLM은 감정 분석 및 정보 검색과 같은 금융 업무에서 탁월한 성능을 보였다. 개인정보 보호 문제로 인해 금융 기관은 금융 LLM (FinLLM)의 파인 튜닝 및 로컬 배포가 매우 중요하다. 그러나 FinLLM 미세 조정에는 GPU의 메모리 제약 및 긴 입력 시퀀스와 같은 어려움이 있다. 본 논문에서는 Quantized low-rank adaptation (QLoRA) 기법을 사용하여 FinLLM을 파인튜닝한다. QLoRA는 low-rank matrix decomposition 및 quantization 양자화 기법을 활용하여 높은 모델 성능을 유지하면서도 연산 요구 사항을 크게 줄인다. 또한, 비용 효율적이고 널리 접근 가능한 GPU를 사용한 로컬 파인 튜닝을 가능하게 하기 위해 데이터 및 파이프라인 병렬 처리를 사용한다. 금융 데이터셋에 대한 실험 결과, 본 기법이 accuracy 정확도, GPU 메모리 사용량 및 시간 효율성을 크게 향상시켰음을 보여주며, 이는 low-rank 기법이 확장 가능하고 리소스 효율적인 LLM 파인 튜닝에 잠재력이 있음을 보여준다.

 

Introduction

1. Quantized Low-Rank Adapation (QLoRA)를 적용해서 메모리 요구량을 줄이고 효율적인 파인튜닝을 수행한다.

2. Distributed Data Paralleism (DDP)와 파이프라임 병렬화를 이용해서 multiple GPUs를 효율적으로 사용한다.

3. 다양한 금융 데이터 셋에 대한 광범위한 실험을 수행한다.

 

 

Finetuning LLMs with Quantized Low-rank Adaptation (QLoRA)

Quantized Low-rank Adaptation

 

QLoRA는 8-bit 혹은 4-bit로 양자화를 수행한다. 파인 튜닝 중에 사전 학습 모델의 모든 웨이트는 8혹은 4비트로 양자화 된다. 

웨이트들은 input sequence x와 adaptor matrix A와 B를 계산할 때만 동적으로 16 bit로 de-qeuantized 된다.

 

QLoRA는 NF4 (Normal Float 4)라는 데이터 타입을 사용한다. 이 블로그 (링크)에 설명이 잘 나와있다.

Standard Normal dist N(0, 1)에 quantile (분위수)를 2**k + 1 개 (이때 k는 bit의 수. 여기서는 4나 8)을 설정하고 -1과 1사이의 값으로 양자화한다. 이 부분은 추후 다시 자세히 살펴봐야겠다. 

 

 

High-Performance Optimizations on GPUs Optimizing Finetuning Process

 

Distributed Data Paralleism (DDP)를 이용해서 여러개의 GPU를 동시에 사용하여 속도를 향상시킨다.

Brian Floating Point인 BF16을 이용해서 파인 튜닝을 수행한다. BF16은 FP32와 쉽게 호환가능하며 비슷한 성능을 달성하면서도 빠른 속도와 메모리 효율성을 지닌다.

 

저자들은 0/1 Adam Optimizer를 사용하는데 이는 1-bit compression을 통해서 더 빠른 수렴 속도를 지닌다. 또한 더 적은 데이터 볼륨과 높은 training throughput 학습 처리량을 보여준다. 

 

 

Optimizing Inference Process

 

저자들은 베이스라인 모델로 Llama 3.1을 선택했고 파라미터는 8B와 70B다. 

 

Llama 3.1 70B 같은 큰 모델은 많은 GPU 메모리를 요구한다. Pipeline paralleism을 도입하는데 이는 레이어 레벨로 모델을 쪼개서 여러개의 GPU에 올린다. Table 1에서 Quantization과 필요로 하는 GPU 메모리 사용량을 정리되어 있다.

 

 

 

 

 

Experiments

Hardware Configurations

 

16-core AMD EPYC 7313 CPUs, 1 TB of Ram, 4 NVIDIA RTX A6000 GPUs with 48GB GPU memory 환경에서 실험했다.

 

 

Financial Applications

 

  • Sentiment Analysis (SA)
  • Named Entity Recognition (NER)
  • News Headline Classification
  • Question-Answering (QA): eXtensible Business Reporting Language (XBRL) 데이터 셋 

XBRL은 미국의 SEC (한국으로 치면 DART) 사이트에서 볼 수 있는 마크업 언어다. 

 

Base Models

 

Llama 3.1-8B Instruct와 Llama 3.1-70B Instruct를 사용했다.

 

Datasets

 

Sentiment Aanlysis

  • Financial Phrasebank (FPB)
  • Financial question-answering sentiment analysis (FiQA SA)
  • Twitter financial news sentiment (TFNS)
  • News with GPT instruction (NWGI)

 

Headline Classification

  • Headline dataset. yes and no의 2개의 클래스 

 

Named Entity Recognition (NER)

  • NER dataset. location, person과 organization의 3개의 클래스 

 

 

XBRL

  • XBRL tage extraction
  • XBRL value extraction

 

Implementation Details

 


• Classification Tasks: 

For classification tasks, including sentiment analysis, headline classification, and named entity recognition, single-task fine-tuning을 수행한다. 


• XBRL Question Answering: 

For XBRL questionanswering tasks, including tag extraction and value extraction,에서는 multi-task fine-tuning을 수행한다. 


모든 파인 튜닝에 대해서 0/1 Adam optimizer을 learning rate of 1e-4, LoRA alpha of 32, LoRA dropout of 0.1을 적용한다.

저자들은 LoRA rank 4 with 4-bit quantization와 rank 8 with 8-bit quantization를 모두를 Llama 3.1 8B에 적용한다. 배치 사이즈와 학습 에포크는 모델의 크기와 태스크에 따라서 조정한다. 


• Classification Tasks:
– Llama 3.1 8B: Batch size of 16 with gradient accumulation step of 1; 4 epochs.
– Llama 3.1 70B: Batch size of 4 with gradient accumulation step of 4; 4 epochs.


• XBRL Tasks:
– Llama 3.1 8B: Batch size of 2 with gradient accumulation step of 2; 1 epoch.

 

Inference

 

모든 성능 평가에서 8-bit quantized inference를 수행한다.

 

Performance Metrics

 

Accuracy와 Weighted F1 Score를 계산한다.

 

 

Result and Analysis

 

 

 

 

 

 

 

 

 

Refernces:

https://velog.io/@kaiba0514/QLoRA-QLoRA-Efficient-Finetuning-of-Quantized-LLMs