우노
[DL] Hugging Face란? 본문
트랜스포머(Transformer)란?
- 인공신경망 알고리즘은 크게, 합성곱 신경망(CNN), 순환 신경망(RNN), 트랜스포머(Transformer) 3가지로 나눠집니다.
- 이 중 트랜스포머는, 2017년 구글이 발표한 논문인 "Attention is all you need"에서 나온 모델로,
- 셀프 에텐션(Self-Attention)이라는 방식을 사용하는 모델입니다.
- 트랜스포머는, 이러한 어텐션 방식을 사용해, 문장 전체를 병렬구조로 번역할 뿐만 아니라, 멀리 있는 단어까지도 연관성을 만들어 유사성을 높였으며, RNN의 한계를 극복했습니다.
- 또한, 이미지나 언어 번역에 폭넓게 쓰이고 있으며, GPT-3, BERT 등이 가장 관심을 많이 받고 있는 모델입니다.
Hugging Face 란?
- '허깅 페이스’는, 자연어 처리 스타트업이 개발한,
- 다양한 트랜스포머 모델(transformer.models)과 학습 스크립트(transformer.Trainer)를 제공하는 모듈입니다.
- 허깅 페이스를 사용한다면, 트랜스포머 모델 사용시 layer, model 등을 선언하거나 학습 스크립트를 구현해야하는 수고를 덜 수 있습니다.
- 참고 링크
- https://github.com/huggingface/transformers
- 일반적인 layer.py, model.py 는 transformer.models 로,
- train.py 는 transformer.Trainer 로 대응해서 사용할 수 있습니다.
transformers.models
- 트랜스포머 기반의 다양한 모델을 pytorch, tensorflow 로 각각 구현해놓은 모듈입니다.
- 각 모델에 맞는 tokenizer 도 구현되어 있습니다.
transformers.Trainer
- 딥러닝 학습 및 평가에 필요한 optimizer, weight updt, learning rate schedul, ckpt, tensorbord, evaluation 등을 수행하는 모듈입니다.
- Trainer.train 함수를 호출하면, 이 모든 과정이, 사용자가 원하는 arguments에 맞게 실행됩니다.
- pytorch lightning 과 비슷하게, 공통적으로 사용되는 학습 스크립트를 모듈화 하여 편하게 사용할 수 있다는 점이 장점입니다.
결론
- 기존 pytorch 학습 스크립트에서 반복되는 부분(optimizer, lr schedul, tensorbord, gpu 병렬 처리,..)을 따로 구현하지 않고, arguments 로 편하게 통제할 수 있습니다.
- 다양한 트랜스포머 기반 모델 구현체들을, 손쉽게 당겨 쓸 수 있습니다.
- high level로 모듈화 되어 있기 때문에, 커스터마이징이 비교적 어렵습니다.
- 커스터마이징은 소스코드를 참고하여 원하는 class를 상속 받아 overiding 하면 됩니다.
참고
'AI > Deep Learning' 카테고리의 다른 글
[DL] DistilBERT 모델을 사용한 GLUE SST-2 데이터 추론 (0) | 2022.02.15 |
---|---|
[DL] ONNX 란? (0) | 2022.01.24 |
[DL] TVM 이란? (0) | 2022.01.12 |
[DL] TFLite 와 TensorRT 간단 비교 (2) | 2022.01.12 |
[DL] 양자화(Quantization)란? (0) | 2022.01.10 |
Comments