Trainer - deprecate tokenizer for processing_class (#32385)
* Trainer - deprecate tokenizer for processing_class * Extend chage across Seq2Seq trainer and docs * Add tests * Update to FutureWarning and add deprecation version
This commit is contained in:
@@ -18,8 +18,8 @@ rendered properly in your Markdown viewer.
|
||||
|
||||
[[open-in-colab]]
|
||||
|
||||
문서 시각적 질의 응답(Document Visual Question Answering)이라고도 하는
|
||||
문서 질의 응답(Document Question Answering)은 문서 이미지에 대한 질문에 답변을 주는 태스크입니다.
|
||||
문서 시각적 질의 응답(Document Visual Question Answering)이라고도 하는
|
||||
문서 질의 응답(Document Question Answering)은 문서 이미지에 대한 질문에 답변을 주는 태스크입니다.
|
||||
이 태스크를 지원하는 모델의 입력은 일반적으로 이미지와 질문의 조합이고, 출력은 자연어로 된 답변입니다. 이러한 모델은 텍스트, 단어의 위치(바운딩 박스), 이미지 등 다양한 모달리티를 활용합니다.
|
||||
|
||||
이 가이드는 다음 내용을 설명합니다:
|
||||
@@ -72,7 +72,7 @@ pip install -q pytesseract
|
||||
|
||||
## 데이터 불러오기 [[load-the-data]]
|
||||
|
||||
이 가이드에서는 🤗 Hub에서 찾을 수 있는 전처리된 DocVQA의 작은 샘플을 사용합니다.
|
||||
이 가이드에서는 🤗 Hub에서 찾을 수 있는 전처리된 DocVQA의 작은 샘플을 사용합니다.
|
||||
DocVQA의 전체 데이터 세트를 사용하고 싶다면, [DocVQA homepage](https://rrc.cvc.uab.es/?ch=17)에 가입 후 다운로드 할 수 있습니다. 전체 데이터 세트를 다운로드 했다면, 이 가이드를 계속 진행하기 위해 [🤗 dataset에 파일을 가져오는 방법](https://huggingface.co/docs/datasets/loading#local-and-remote-files)을 확인하세요.
|
||||
|
||||
```py
|
||||
@@ -124,9 +124,9 @@ DatasetDict({
|
||||
>>> updated_dataset = updated_dataset.filter(lambda x: len(x["words"]) + len(x["question"].split()) < 512)
|
||||
```
|
||||
|
||||
이 시점에서 이 데이터 세트의 OCR 특성도 제거해 보겠습니다. OCR 특성은 다른 모델을 미세 조정하기 위한 것으로, 이 가이드에서 사용하는 모델의 입력 요구 사항과 일치하지 않기 때문에 이 특성을 사용하기 위해서는 일부 처리가 필요합니다.
|
||||
이 시점에서 이 데이터 세트의 OCR 특성도 제거해 보겠습니다. OCR 특성은 다른 모델을 미세 조정하기 위한 것으로, 이 가이드에서 사용하는 모델의 입력 요구 사항과 일치하지 않기 때문에 이 특성을 사용하기 위해서는 일부 처리가 필요합니다.
|
||||
대신, 원본 데이터에 [`LayoutLMv2Processor`]를 사용하여 OCR 및 토큰화를 모두 수행할 수 있습니다.
|
||||
이렇게 하면 모델이 요구하는 입력을 얻을 수 있습니다.
|
||||
이렇게 하면 모델이 요구하는 입력을 얻을 수 있습니다.
|
||||
이미지를 수동으로 처리하려면, [`LayoutLMv2` model documentation](../model_doc/layoutlmv2)에서 모델이 요구하는 입력 포맷을 확인해보세요.
|
||||
|
||||
```py
|
||||
@@ -186,7 +186,7 @@ DatasetDict({
|
||||
### 텍스트 데이터 전처리 [[preprocessing-text-data]]
|
||||
|
||||
이미지에 OCR을 적용했으면 데이터 세트의 텍스트 부분을 모델에 맞게 인코딩해야 합니다.
|
||||
이 인코딩에는 이전 단계에서 가져온 단어와 박스를 토큰 수준의 `input_ids`, `attention_mask`, `token_type_ids` 및 `bbox`로 변환하는 작업이 포함됩니다.
|
||||
이 인코딩에는 이전 단계에서 가져온 단어와 박스를 토큰 수준의 `input_ids`, `attention_mask`, `token_type_ids` 및 `bbox`로 변환하는 작업이 포함됩니다.
|
||||
텍스트를 전처리하려면 프로세서의 `tokenizer`가 필요합니다.
|
||||
|
||||
```py
|
||||
@@ -197,8 +197,8 @@ DatasetDict({
|
||||
|
||||
레이블 추가를 위해서, 먼저 더 큰 리스트(단어 리스트)에서 하위 리스트(단어로 분할된 답변)을 찾을 수 있는 헬퍼 함수를 정의합니다.
|
||||
|
||||
이 함수는 `words_list`와 `answer_list`, 이렇게 두 리스트를 입력으로 받습니다.
|
||||
그런 다음 `words_list`를 반복하여 `words_list`의 현재 단어(words_list[i])가 `answer_list`의 첫 번째 단어(answer_list[0])와 같은지,
|
||||
이 함수는 `words_list`와 `answer_list`, 이렇게 두 리스트를 입력으로 받습니다.
|
||||
그런 다음 `words_list`를 반복하여 `words_list`의 현재 단어(words_list[i])가 `answer_list`의 첫 번째 단어(answer_list[0])와 같은지,
|
||||
현재 단어에서 시작해 `answer_list`와 같은 길이만큼의 `words_list`의 하위 리스트가 `answer_list`와 일치하는지 확인합니다.
|
||||
이 조건이 참이라면 일치하는 항목을 발견했음을 의미하며, 함수는 일치 항목, 시작 인덱스(idx) 및 종료 인덱스(idx + len(answer_list) - 1)를 기록합니다. 일치하는 항목이 두 개 이상 발견되면 함수는 첫 번째 항목만 반환합니다. 일치하는 항목이 없다면 함수는 (`None`, 0, 0)을 반환합니다.
|
||||
|
||||
@@ -349,7 +349,7 @@ end_index 18
|
||||
|
||||
## 훈련 [[train]]
|
||||
|
||||
축하합니다! 이 가이드의 가장 어려운 부분을 성공적으로 처리했으니 이제 나만의 모델을 훈련할 준비가 되었습니다.
|
||||
축하합니다! 이 가이드의 가장 어려운 부분을 성공적으로 처리했으니 이제 나만의 모델을 훈련할 준비가 되었습니다.
|
||||
훈련은 다음과 같은 단계로 이루어져 있습니다:
|
||||
* 전처리에서의 동일한 체크포인트를 사용하기 위해 [`AutoModelForDocumentQuestionAnswering`]으로 모델을 가져옵니다.
|
||||
* [`TrainingArguments`]로 훈련 하이퍼파라미터를 정합니다.
|
||||
@@ -406,7 +406,7 @@ end_index 18
|
||||
... data_collator=data_collator,
|
||||
... train_dataset=encoded_train_dataset,
|
||||
... eval_dataset=encoded_test_dataset,
|
||||
... tokenizer=processor,
|
||||
... processing_class=processor,
|
||||
... )
|
||||
|
||||
>>> trainer.train()
|
||||
@@ -421,7 +421,7 @@ end_index 18
|
||||
|
||||
## 추론 [[inference]]
|
||||
|
||||
이제 LayoutLMv2 모델을 미세 조정하고 🤗 Hub에 업로드했으니 추론에도 사용할 수 있습니다.
|
||||
이제 LayoutLMv2 모델을 미세 조정하고 🤗 Hub에 업로드했으니 추론에도 사용할 수 있습니다.
|
||||
추론을 위해 미세 조정된 모델을 사용해 보는 가장 간단한 방법은 [`Pipeline`]을 사용하는 것 입니다.
|
||||
|
||||
예를 들어 보겠습니다:
|
||||
@@ -473,4 +473,4 @@ end_index 18
|
||||
|
||||
>>> processor.tokenizer.decode(encoding.input_ids.squeeze()[predicted_start_idx : predicted_end_idx + 1])
|
||||
'lee a. waller'
|
||||
```
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user