본문 바로가기
데이터&AI/LLM

Hugging Face Transformers: Pipeline vs. AutoModel, 뭘 사용할까!??

by 일등박사 2024. 6. 22.

저의 포스팅에서 지속적으로 huggingface의 오픈 소스모델을 바탕으로 테스트를 진행해보고 있습니다~~

 

2024.06.21 - [데이터&AI/LLM] - llama3 한국어 모델 On-premise로 활용하기 (feat. Bllossom)

 

llama3 한국어 모델 On-premise로 활용하기 (feat. Bllossom)

airllm으로 llama3를 썻다가 메모리 부족 문제로 실행하지 못하는 문제를 겪었었습니다!!2024.05.07 - [데이터&AI/LLM] - 내 서버에서 llama3 70B 모델 사용하기 (feat. airllm) 내 서버에서 llama3 70B 모델 사용하

drfirst.tistory.com

2024.05.29 - [데이터&AI/LLM] - llama3 의 모델을 api로 호출하기!! (feat. ollama, python, embedding)

 

llama3 의 모델을 api로 호출하기!! (feat. ollama, python, embedding)

지난 포스팅에서는!! ollama로  올라간 llama를shell 환경에서 진행해보았는데요!!2024.05.29 - [데이터&AI/LLM] - 내 서버에서 llama3 실행하기!! (feat. ollama) 내 서버에서 llama3 실행하기!! (feat. ollama)이전 포

drfirst.tistory.com

 

이때 아래와 같이 AutoModel 이라는 패키지를 사용하는데요~~~

 

from transformers import AutoTokenizer, AutoModelForCausalLM

 

자연어 처리(NLP) 분야에서 뛰어난 성능을 보여주는 Hugging Face Transformers

라이브러리는 다양한 모델과 편리한 기능을 제공하며

특히, Pipeline과 AutoModel은 Transformers 모델을 활용하는 두 가지 주요 방법입니다!!!

이에 각각의 장단점을 이해하고자 포스팅을 작성해보았습니다

이번 포스팅을 통하여 Pipeline과 AutoModel의 차이점을 살펴보고,

각각의 활용 사례를 통해 어떤 상황에서 어떤 방법을 선택해야 하는지 알아보겠습니다.

 


1. Pipeline: 아이 쉽다!! 아이 편하다!~!

Pipeline은 특정 NLP 작업(Task)에 최적화된 모델, 토크나이저, 전처리 및 후처리 기능을

하나로 묶어 제공하는 고수준 API

 

즉, 모델 로딩, 입력 데이터 전처리, 모델 추론, 결과 후처리 등 복잡한 과정을 단 몇 줄의 코드로 처리

 

장점:

  • 간편한 사용: 복잡한 NLP 작업을 몇 줄의 코드로 처리, 초보자도 쉽게 사용 가능
  • 다양한 작업 지원: 감정 분석, 텍스트 분류, 질의응답, 번역 등 다양한 NLP 작업에 특화된 파이프라인을 제공
  • 빠른 프로토타이핑: 모델 성능 빠르게 확인 및 실험에 용이

단점:

  • 제한적인 커스터마이징: 모델 아키텍처나 세부 설정을 변경하기 어려움
  • 낮은 유연성: 특정 작업에 최적화되어 있어 다른 작업에 활용하기 어려움

활용 예시 (감정 분석):

from transformers import pipeline

classifier = pipeline("sentiment-analysis")
result = classifier("오늘 날씨 정말 좋다!")
print(result)

 

2. AutoModel: 입맛에 맞게 물고 뜯고!!

 

AutoModel은 모델 아키텍처에 대한 세부적인 제어가 가능한 저수준 API입니다

모델과 토크나이저를 직접 로드하고, 입력 데이터 전처리 및 결과 후처리 과정을 사용자가 직접 구현해야 함.

 

장점:

  • 높은 유연성: 모델 아키텍처, 토크나이저, 전처리 및 후처리 과정을 자유롭게 커스터마이징.
  • 다양한 모델 활용: Hugging Face Hub에 등록된 수많은 모델을 자유롭게 선택하여 사용 가능
  • 연구 및 고급 작업에 적합: 모델의 작동 방식 이해 후, 새로운 모델을 개발하거나 기존 모델을 개선하는 데 유용
  • !!! langchain에 연결 가능!! : 이게 기존 gpt 등을 활용한 모듈에서 바꿔끼기가 가능합니다!

단점:

  • 복잡한 사용: 모델 로딩, 전처리, 후처리 과정을 직접 구현, 코드량이 증가로 높은 난이도
  • 모델에 대한 깊은 이해 필요: 모델 아키텍처 및 작동 방식에 대한 이해가 부족하면 효과적으로 활용하기 어렵습니다.

활용 예시 (감정 분석):

from transformers import AutoTokenizer, AutoModelForSequenceClassification

tokenizer = AutoTokenizer.from_pretrained("beomi/KcELECTRA-base")
model = AutoModelForSequenceClassification.from_pretrained("beomi/KcELECTRA-base")

inputs = tokenizer("오늘 날씨 정말 좋다!", return_tensors="pt")
outputs = model(**inputs)
print(outputs)
 

비교 요약

  Pipeline AutoModel
사용 용이성 매우 쉬움 복잡함
유연성 제한적 매우 높음
코드 길이 짧음
커스터마이제이션 제한적 매우 높음
사용 사례 빠른 프로토타이핑, 간단한 작업 맞춤형 모델 구현, 세부 조정이 필요한 작업

 

결론

Pipeline과 AutoModel은 각기 다른 목적과 필요에 맞게 설계된 도구

간단한 NLP 작업을 빠르고 쉽게 수행하려면 Pipeline을 사용,

반면, 모델의 세부 조정이나 맞춤형 처리가 필요하다면 AutoModel을 사용!!

 

으로 이해해주시면 됩니다~~

 

 

 

감사합니다.

댓글