1. 모델 데이터 전처리하기
모델을 데이터셋으로 학습시키기 전에 데이터를 모델이 처리할 수 있는 입력 형식으로 전처리해야 합니다. 텍스트, 이미지, 오디오 등 어떤 데이터든 텐서 배치로 변환하고 결합해야 합니다.
Transformers는 데이터를 모델에 맞게 준비하는 데 도움이 되는 여러 전처리 클래스를 제공합니다.
- 텍스트 : Tokenizer를 사용하여 텍스트를 토큰 시퀀스로 변환하고, 토큰의 숫자 표현을 만들고, 이를 텐서로 결합합니다.
- 음성 및 오디오 : Feature extractor를 사용하여 오디오 파형에서 시퀀스 특징을 추출하고 텐서로 변환합니다.
- 이미지 입력 : ImageProcessor를 사용하여 이미지를 텐서로 변환합니다.
- 멀티모달 입력 : Processor를 사용하여 토크나이저와 피처 추출기 또는 이미지 프로세서를 결합합니다.
- AutoProcessor 는 항상 작동하며 사용하는 모델에 맞는 올바른 클래스를 자동으로 선택합니다.
(토크나이저, 이미지 프로세서, 피처 추출기 또는 프로세서 중 어떤 것을 사용하든 상관없이)
전처리를 시작하기 전에 Datasets 를 설치하여 모델에 적용해볼 데이터 세트를 로드할 수 있도록 준비 합니다.
pip install datasets
2. 자연어처리(NLP : Natural Language Processing)
텍스트 데이터를 전처리하는 데 가장 중요한 도구는 토크나이저입니다. 토크나이저는 일련의 규칙에 따라 텍스트를 토큰으로 분할합니다. 이 토큰들은 숫자로 변환되고 텐서로 변환되어 모델에 입력됩니다. 필요한 추가 입력은 토크나이저가 모델에 추가합니다.
사전 훈련된 모델을 사용하려면 해당 모델을 사전 훈련할 때 사용했던 토크나이저를 사용하는 것이 중요합니다. 동일한 토크나이저를 사용함으로써 사전 훈련 중 동일한 토큰-인덱스(일반적으로 vocab이라고 함)에 해당하는 단어를 사용하여 텍스트가 사전 훈련 코퍼스와 동일한 방식으로 분할됩니다.
1. 사전 훈련된 토크나이저 로딩
먼저 AutoTokenizer.from_pretrained() 메서드를 사용하여 사전 훈련된 토크나이저를 로딩합니다. 토크나이저를 로딩할 때 모델을 사전 훈련할때 사용했던 vocab 사전을 자동으로 다운로드합니다.
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
2. 텍스트 토큰화
토큰화 할 텍스트를 토크나이저에 전달합니다.
encoded_input = tokenizer("Do not meddle in the affairs of wizards, for they are subtle and quick to anger.")
print(encoded_input)
토크나이저는 세 가지 항목이 있는 딕셔너리를 반환합니다:
- input_ids: 문장의 각 토큰에 해당하는 인덱스입니다.
- attention_mask: 토큰을 주의해야 하는지 여부를 나타냅니다.
- token_type_ids: 둘 이상의 시퀀스가 있을 때 토큰이 속한 시퀀스를 식별합니다.
3. 출력 디코딩
input_ids를 디코딩하여 입력을 반환합니다.
tokenizer.decode(encoded_input["input_ids"])
'[CLS] Do not meddle in the affairs of wizards, for they are subtle and quick to anger. [SEP]'
토크나이저는 문장에 두 개의 특수 토큰인 CLS(분류자)와 SEP(구분자)를 추가했습니다.
모든 모델이 특수 토큰을 필요로 하는 것은 아니지만, 필요한 경우 토크나이저가 자동으로 추가합니다.
4. 여러 문장 처리
전처리할 문장이 여러 개 있으면 List 로 토크나이저에 전달합니다.
batch_sentences = [
"But what about second breakfast?",
"Don't think he knows about second breakfast, Pip.",
"What about elevensies?",
]
encoded_inputs = tokenizer(batch_sentences)
print(encoded_inputs)
토크나이저는 텍스트 전처리 과정에서 중요한 역할을하며, 사전 훈련된 모델과 함께 사용할 때 특히 중요합니다.
'A.I.(인공지능) & M.L.(머신러닝) > transformers' 카테고리의 다른 글
[실습] merge base model and LoRA adapter_model, Upload huggingface-hub (0) | 2024.04.04 |
---|---|
[실습] 3-3 AutoModel (0) | 2024.02.03 |
[실습] 3-2 AutoTokenizer (0) | 2024.02.03 |
[이론] 3-1 AutoClass (0) | 2024.02.03 |
[실습] 2-5 accelerate를 활용한 Pipeline (0) | 2024.02.03 |