본문 바로가기
AI Codes/Huggingface

Hugging Face 개요

by 아르카눔 2025. 4. 18.

Hugging Face Libraries

 

허깅페이스의 주요 라이브러리들과 기본적인 내용을 다룬다. 

 

 

transformers

 

Huggingface는 pretrained models를 간편하게 사용할 수 있는 라이브러리다.

 

Github: 링크

Documents: 링크

 

huggingface를 설치할 때 pip install transformers 명령어를 사용하는데, 

 

이름에서 알 수 있듯이 대부분이 NLP 모델들이지만 computer vision이나 multimodal 모델들도 제공한다. 

 

timm

 

컴퓨터 비전을 모은 모델들은 PyTorch-Image-Models라고 하고 timm이라고 부른다.

 

Github: 링크

Documents: 링크

 

 

NLP 처리의 단계별 구성 요소의 클래스  

 

Huggingface에서 제공하는 구성 요소들은 아래의 Figure 1에 표시된 NLP의 프로세스를 보면 이해할 수 있다.

 

 

Fig 1. NLP Process

 

  1. Data가 필요하다.
  2. Tokenizer로 Raw text 데이터를 정제한다.
  3. 필요하다면 Model을 Train 학습한다. 
  4. 학습한 모델로 Model로 logits을 수행한다.
  5. Logits를 기반으로 Predictions를 생성한다.
  6. Predictions와 Groundtruth를 evaluate 평가한다. 

 

HF에서는 단계별로 필요한 클래스를 제공한다.

 

1. Datasets

 

데이터를 간편하게 사용할 수 있는 패키지는 datasets다. 

 

Github: 링크

Documents: 링크

 

2. Tokenizers

 

Raw text 데이터를 토큰 단위로 쪼개는 라이브러리다. 

텍스트 데이터의 토큰화 이외에도 직접적으로 학습도 가능하다. 

 

Github: 링크

Documents: 링크

 

3. Models

 

위에서 언급한 transformers아 timm을 사용하면 된다. 

 

 

 

4. Training

4.1. Trainer 클래스

 

transformers의 하위 클래스다.

from transformers import Trainer, TrainerConfig

 

코드 (링크)를 직접 뜯어 보거나 다른 사람이 분석한 블로그 (링크)에서 살펴보면 알겠지만 label smoothed cross entropy loss를 계산하고 이를 토대로 모델을 학습한다. (Label smoother 클래스의 깃허브 링크, label smoothed cross entropy loss 관련 블로그그 링크)

 

여러가지 objectives들인 next token prediction, causal language modeling, masked language modeling 등등 맞게 알아서 계산해서 loss를 생성한다.

 

Cross Entropy를 계산하는 위 과정을 보면 알겠지만 Pre-train이나 Full Fine-tuning을 할 때 쓰는 클래스다.

 

 

Github: 링크

Documents: 링크

 

 

 

4.2. TRL 클래스 

 

TRL은 Transforemrs Reinforcement Learning의 약자다.

 

SFT와 PPO, DPO가 여기에 속한다. 

 

TRL

 

Github: 링크

Documents: 링크

 

 

4.2.1. SFT 클래스 

 

SFT는 Supervised Fine-Tuning의 약자로 TRL의 하위 클래스다.

 

from trl import SFTConfig, SFTTrainer

 

Github: 링크

Documents: 링크

 

4.2.2. PPO 클래스 

 

PPO는 Proximal Policy Optimization의 약자로 강화학습의 방법 중 하나다. 

 

PPOTrainer, PPOConfig 

 

from trl import PPOConfig, PPOTrainer

 

Github: 링크

Documents: 링크

 

 

4.2.3. DPO 클래스 

 

DPO는 Direct Preference Optimization의 약자로 강화학습의 방법 중 하나다. 

 

DPOTrainer, DPOConfig 

 

from trl import DPOConfig, DPOTrainer

 

Github: 링크

Documents: 링크

 

 

 

4.3. PEFT 클래스 

 

Parameter Efficient Fine Tuning을 다룬 클래스로 LoRA가 여기에 속한다.

 

Github: 링크

Documents: 링크

 

 

4.3.1. LoRA 클래스 

 

from peft import LoraModel, LoraConfig

 

LoraModel, LoraConfig

 

Github: 링크

Documents: 링크

 

 

 

5. Evaluate

전에는 통일된 평가 함수가 없어서 pytorch, numpy, sklearn 셋 중 하나로 구현했던거 같은데

지금은 HF에서 여러 평가 클래스를 지원 한다. 

 

Github: 링크

Documents: 링크

 

 

 

6. Inference

 

pipeline

 

pipeline은 간단한 명령어로 전통적인 NLP 태스크들을 처리하는 추론 전용 클래스다. 

본인은 딱히 사용한 적이 없는 클래스다. 

 

Github: 링크

Documents: 링크

 

 

 

 

 

References:

https://huggingface.co/learn/llm-course/chapter2/2?fw=pt

https://huggingface.co/blog/proflead/hugging-face-tutorial

https://fallenangel13th.tistory.com/16

https://huggingface.co/learn/llm-course/ko/chapter1/3?fw=pt

https://yjoonjang.medium.com/huggingface-trainer%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%99%EC%8A%B5-%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8%EC%9D%84-%EB%A7%8C%EB%93%A4%EC%97%88%EC%9D%84%EA%B9%8C-trainer%EC%9D%98-%EC%9B%90%EB%A6%AC-9a8261934f2e

 

 

 

 

 

 

'AI Codes > Huggingface' 카테고리의 다른 글

Hugging Face Hub 설명  (0) 2025.04.18