안녕하세요.

브리아나입니다.

 

오늘은 LLM 학습이나 fine-tuning시 필요한 필수 라이브러리에 대해서 소개해보고자 합니다.

 

✅ accelerate

 

Accelerate는 PyTorch 기반 모델의 학습(Training)과 추론(Inference)를 최적화하는 HuggingFace에서 만든 라이브러리입니다.

특히, 분산 학습(multi-GPU, TPU), 혼합 정밀도 학습(Mixed Precision Training), 메모리 최적화를 지원해 대규모 모델 학습을 효율적으로 만듭니다.

대게의 LLM 모델은 메모리 요구량이 매우 커서, accelerate는 단일 GPU or 다중 GPU 환경에서 학습 속도 높이면서 메모리 사용량 줄이는데 유용한 라이브러리입니다. 

 

내부적인 주요 기능은 다음과 같습니다.

  • Zero Redundancy Optimizer (ZeRO): 모델 파라미터, 옵티마이저 상태, 그래디언트를 GPU 간에 분할해 메모리 사용량 감소.
  • Mixed Precision: FP16/BF16 사용해 계산 속도 높이면서 메모리 사용량 줄인다.
  • Dynamic Padding: 배치 크기를 동적으로 조정해 효율성 높인다.

 

PEFT

 

peft(Parameter-Efficient Fine-Tuning)은 대규모 언어 모델(LLM)을 적은 파라미터로 미세 조정하는 기술로 HuggingFace에서 제공하는 라이브러리입니다.

대표적으로 LoRA(Low-Rank Adaption)과 QLoRA(Quantized LoRA)를 지원합니다.

대게 Fine-tuning 하고싶을 때, 모델 자체가 너무나도 대규모이기 때문에 모든 파라미터를 학습하는 Full Fine-tuning은 메모리 소모가 큽니다.

PEFT는 LoRA/QLoRA를 통해서 효율적인 미세조정이 가능하게 합니다.

 

💜 LoRA: 저차원 행렬(A, B)를 추가해 소량의 파라미터만 학습해요. 예) 7B에서 수백만으로 줄임.

💜 QLoRA: 4비트 양자화(Quantization)을 적용해 메모리 사용량을 추가로 줄여요.

💜 Adapters: 학습된 어댑터를 기존 모델에 병합(Merge) 하거나 분리도 돼요.

 

+ HuggingFace 말고도 torchtune 이라는 라이브러리가 있는데, 거기서는 lora_finetune_single_device, qlora_finetune_single_device 등의 라이브러리로도 동작 가능해요!

 

 

 Bitsandbytes

 

모델 파라미터를 4비트 혹은 8비트로 양자화해서 메모리 사용량을 줄이는 라이브러리입니다.

  • LLaMa-7B는 FP16으로 14GB 메모리 필요해요.
  • 그러나, bitsandbytes 사용해서 4비트 양자화(NF4)로 변환하면 8GB 이하로 학습 가능해요.

지원 가능한 기능은 다음과 같아요.

  • 4-bit/8-bit Quantization
  • NF4 (NormalFloat 4-bit): 보통 QLoRA에서 사용하는 특수 데이터 타입으로, 정밀도 손실을 최소화해요.
  • Dynamic Quantization: 학습 중 가중치를 디-퀀타이징해서 계산 정확도를 유지해요.

 

 

안녕하세요

브리아나입니다.

 

오늘은 yolo 모델의 성능평가를 파헤쳐볼게요!

 

 

모델 학습을 돌리다보면 관련된 정보를 획득할 수 있는데요!

 

Detection Box의 Precision, Recall, mAP50, mAP50-90

Segemtnation Mask의 Precision, Recall, mAP50, mAP50-90

정보입니다.

 

그럼 하나씩 정리해볼게요!!

 

✅ 1. Detection Preicision

: 모델이 "객체가 있어!" 라고 예측한 상자 중 실제로 객체가 맞는 비율입니다.

 - TP: 예측한 상자와 실제 상자간 IoU가 0.5 이상일 때,

- FP: 실제로 예측했는데, 실제 객체 아닐 때

 

즉, Precision이 높다? 잘못된 객체 예측이 적었다. 실제로 객체를 90%정도 잘 예측했다.

 

✅ 2. Detection Recall

: 모델이 올바르게 탐지한 비율입니다.

 

- FN: 실제 객체가 있지만 놓친 경우입니다.

 

즉, Recall이 높다? 실제 객체를 더 많이 찾아냈다. 나머지 비율은 놓쳤다.

 

✅ 3. mAP50

mAP50 => mean Average Precision at IoU 0.5, 임계값 0.5 기준으로 평균 정밀도

- IoU50: 50% 이상 겹쳤을 때, TP로 간주

- 클래스별 AP 계산해서 평균(mean)낸 값.

 

✅ 4. mAP50-95

: IoU 임계값을 0.5부터 0.95까지 0.05 간격으로 변화시키며 계산한 AP의 평균

: 더 엄격한 기준까지도 종합적으로 평가

 

--------------------------------------

✅ 5. Mask Precision

: 이 픽셀이 객체에 속한다고 예측한 픽셀 중 실제로 객체 픽셀인 비율

- TP: 예측 mask와 실제 Mask가 겹치는 픽셀

- FP: 예측 mask에서 잘못 예측된 픽셀

 

✅ 6. Mask Recall

: 실제 객체 픽셀 중 모델이 올바르게 예측한 픽셀의 비율

- FN: 실제 객체 픽셀이지만 놓친 픽셀

 

✅ 7. Mask mAP50

: 예측 mask와 실제 mask의 겹침 비율이 50% 이상일 때, TP로 간주

: 클래스 별 AP 계산한 후 평균

 

✅ 8. Mask mAP50-95

: 임계값을 0.5~0.95 간격으로 변화시키며 계산한 AP의 평균입니다.

 

'Experiments' 카테고리의 다른 글

yolov8 모델 Freeze 하는 방법  (0) 2023.11.14
openssh 업데이트 하는 방법  (2) 2023.10.10

#문제.

https://softeer.ai/practice/7628

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

 

#정답.

import sys

'''
6
2 4 6 9 12 18
'''
chance = int(sys.stdin.readline())
num_list = list(map(int, sys.stdin.readline().split()))
max_num = max(num_list)
if max_num > 100:
    max_num = 100
top_max_value = 0
for i in range(2, 101):
    cnt = 0
    for n in num_list:
        if n % i == 0:
            cnt += 1
    if top_max_value < cnt:
        top_max_value = cnt
print(top_max_value)

1. Virtualenv 설치

pip install virtualenv

 

2. 환경 생성

virtualenv capture --python=python3.10

PC에 python3.10은 설치되어있어야함.

가상환경명은 capture로 지정했음. (수정 가능)

 

3. 경로 이동

cd capture
cd Scripts
activate

 

입력하면 활성화 된 상태로 나옴.

+ Recent posts