Skip to content

Commit

Permalink
docs: ko: chapter4/1,2,4.mdx
Browse files Browse the repository at this point in the history
  • Loading branch information
cjfghk5697 committed Jun 3, 2024
1 parent e63a663 commit de06974
Show file tree
Hide file tree
Showing 4 changed files with 230 additions and 0 deletions.
16 changes: 16 additions & 0 deletions chapters/ko/_toctree.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,22 @@
title: 단원 마무리 퀴즈
quiz: 2

- title: 4. 모델과 토크나이저 공유하기
sections:
- local: chapter4/1
title: Hugging Face Hub
- local: chapter4/2
title: 사전학습 모델 사용하기
- local: chapter4/3
title: 사전학습 모델 공유하기
- local: chapter4/4
title: 모델 카드 구축하기
- local: chapter4/5
title: Part 1 완료!
- local: chapter4/6
title: 단원 마무리 퀴즈
quiz: 4

- title: 5. 🤗 Datasets 라이브러리
sections:
- local: chapter5/1
Expand Down
22 changes: 22 additions & 0 deletions chapters/ko/chapter4/1.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# The Hugging Face Hub[[the-hugging-face-hub]]

<CourseFloatingBanner
chapter={4}
classNames="absolute z-10 right-0 top-0"
/>

[Hugging Face Hub](https://huggingface.co/)는 주요 웹사이트로, 누구나 최신의 모델과 데이터셋을 발견하고 사용하고 기여할 수 있는 중앙 플랫폼입니다. 이 Hub에는 10,000개 이상의 공개적으로 이용 가능한 다양한 모델이 호스팅되어 있습니다. 이 장에서는 모델에 초점을 맞추고, 다음 장에서는 데이터셋을 살펴볼 것입니다.

Hub의 모델은 🤗 Transformers나 심지어 NLP에만 국한되지 않습니다. NLP를 위한 [Flair](https://github.com/flairNLP/flair)[AllenNLP](https://github.com/allenai/allennlp), 음성을 위한 [Asteroid](https://github.com/asteroid-team/asteroid)[pyannote](https://github.com/pyannote/pyannote-audio), 그리고 시각을 위한 [timm](https://github.com/rwightman/pytorch-image-models) 등 다양한 모델이 있습니다.

각 모델은 Git repository로 호스팅되어 있어 버전 관리와 재현성을 가능하게 합니다. Hub에 모델을 공유함으로써 커뮤니티에 공개하고 사용하기 쉽게 만들어 다른 사람이 모델을 직접 훈련할 필요가 없게 하며, 공유와 사용을 단순화합니다.

또한, Hub에 모델을 공유하면 해당 모델에 대한 호스팅된 추론 API가 자동으로 배포됩니다. 커뮤니티의 누구나 해당 모델의 페이지에서 사용자 정의 입력과 적절한 위젯을 사용하여 직접 테스트할 수 있습니다.

가장 좋은 점은 Hub에서 공개된 모든 모델을 공유하고 사용하는 것이 완전히 무료라는 것입니다! [유료 요금제도](https://huggingface.co/pricing) 있으므로 모델을 비공개로 공유하려는 경우 사용할 수 있습니다.

아래 동영상은 Hub를 사용하는 방법을 보여줍니다.

<Youtube id="XvSGPZFEjDY"/>

huggingface.co 계정이 있어야 이 부분을 따라갈 수 있습니다. Hub에서 repository를 생성하고 관리할 수 있습니다: [계정 만들기](https://huggingface.co/join)
94 changes: 94 additions & 0 deletions chapters/ko/chapter4/2.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
<FrameworkSwitchCourse {fw} />

# 사전학 모델 사용하기[[using-pretrained-models]]

{#if fw === 'pt'}

<CourseFloatingBanner chapter={4}
classNames="absolute z-10 right-0 top-0"
notebooks={[
{label: "Google Colab", value: "https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter4/section2_pt.ipynb"},
{label: "Aws Studio", value: "https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter4/section2_pt.ipynb"},
]} />

{:else}

<CourseFloatingBanner chapter={4}
classNames="absolute z-10 right-0 top-0"
notebooks={[
{label: "Google Colab", value: "https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter4/section2_tf.ipynb"},
{label: "Aws Studio", value: "https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter4/section2_tf.ipynb"},
]} />

{/if}

Model Hub는 적절한 모델을 선택하는 과정을 간단하게 만들어주어, 이를 다양한 라이브러리에서 몇 줄의 코드로 사용할 수 있게 해줍니다. 이제 실제로 이러한 모델을 사용하는 방법과 커뮤니티에 기여하는 방법을 살펴보겠습니다.

예시로 프랑스어 기반의 마스크 채우기(mask filling) 모델을 찾아봅시다.
<div class="flex justify-center">
<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/camembert.gif" alt="Selecting the Camembert model." width="80%"/>
</div>

`camembert-base` 체크포인트를 선택하여 사용해보겠습니다. `camembert-base`라는 식별자만 있으면 이를 사용하기 시작할 수 있습니다! 이전 챕터에서 보았듯이, `pipeline()` 함수를 사용하여 이를 인스턴스화할 수 있습니다:
```py
from transformers import pipeline

camembert_fill_mask = pipeline("fill-mask", model="camembert-base")
results = camembert_fill_mask("Le camembert est <mask> :)")
```

```python out
[
{'sequence': 'Le camembert est délicieux :)', 'score': 0.49091005325317383, 'token': 7200, 'token_str': 'délicieux'},
{'sequence': 'Le camembert est excellent :)', 'score': 0.1055697426199913, 'token': 2183, 'token_str': 'excellent'},
{'sequence': 'Le camembert est succulent :)', 'score': 0.03453313186764717, 'token': 26202, 'token_str': 'succulent'},
{'sequence': 'Le camembert est meilleur :)', 'score': 0.0330314114689827, 'token': 528, 'token_str': 'meilleur'},
{'sequence': 'Le camembert est parfait :)', 'score': 0.03007650189101696, 'token': 1654, 'token_str': 'parfait'}
]
```

보시다시피, 파이프라인 내에서 모델을 로드하는 것은 매우 간단합니다. 주의해야 할 점은 선택한 체크포인트가 하고자하는 작업에 적합한지 확인하는 것입니다. 예를 들어, 여기서는 `camembert-base` 체크포인트를 `fill-mask` 파이프라인에 가져오고 있는데, 이는 전혀 문제가 없습니다. 하지만 이 체크포인트를 `text-classification` 파이프라인에 가져오면 결과물은 아무 의미 없을 것입니다. 왜냐하면 `camembert-base`의 헤드가 이 작업에 맞지 않기 때문입니다! Hugging Face Hub 인터페이스에서 작업 선택기를 사용하여 적절한 체크포인트를 선택하는 것을 추천합니다:

<div class="flex justify-center">
<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/tasks.png" alt="The task selector on the web interface." width="80%"/>
</div>

모델 아키텍처를 직접 사용하여 체크포인트를 인스턴스화할 수도 있습니다:

{#if fw === 'pt'}
```py
from transformers import CamembertTokenizer, CamembertForMaskedLM

tokenizer = CamembertTokenizer.from_pretrained("camembert-base")
model = CamembertForMaskedLM.from_pretrained("camembert-base")
```

하지만 [Auto* 클래스](https://huggingface.co/transformers/model_doc/auto?highlight=auto#auto-classes)를 사용하는 것을 권장합니다. 이 클래스들은 설계상 아키텍처에 구애받지 않기 때문입니다. 이전 코드 샘플은 사용자가 CamemBERT 아키텍처로 로드 가능한 체크포인트에만 한정되지만, `Auto*` 클래스를 사용하면 체크포인트 전환이 간단해집니다:

```py
from transformers import AutoTokenizer, AutoModelForMaskedLM

tokenizer = AutoTokenizer.from_pretrained("camembert-base")
model = AutoModelForMaskedLM.from_pretrained("camembert-base")
```
{:else}
```py
from transformers import CamembertTokenizer, TFCamembertForMaskedLM

tokenizer = CamembertTokenizer.from_pretrained("camembert-base")
model = TFCamembertForMaskedLM.from_pretrained("camembert-base")
```

하지만 [TFAuto* 클래스](https://huggingface.co/transformers/model_doc/auto?highlight=auto#auto-classes)를 사용하는 것을 권장합니다. 이 클래스들은 설계상 아키텍처에 구애받지 않기 때문입니다. 이전 코드 샘플은 사용자가 CamemBERT 아키텍처로 로드 가능한 체크포인트에만 한정되지만, `TFAuto*` 클래스를 사용하면 체크포인트 전환이 간단해집니다:

```py
from transformers import AutoTokenizer, TFAutoModelForMaskedLM

tokenizer = AutoTokenizer.from_pretrained("camembert-base")
model = TFAutoModelForMaskedLM.from_pretrained("camembert-base")
```
{/if}

<Tip>
사전 학습 모델을 사용할 때는 모델이 어떻게 훈련되었는지, 어떤 데이터셋에서 훈련되었는지, 한계와 편향이 무엇인지 반드시 확인하세요. 이러한 정보는 모델 카드에 기재되어 있습니다.
</Tip>
98 changes: 98 additions & 0 deletions chapters/ko/chapter4/4.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# Building a model card[[building-a-model-card]]

<CourseFloatingBanner
chapter={4}
classNames="absolute z-10 right-0 top-0"
/>

모델 카드는 모델 리포지토리에 있는 모델 및 토크나이저 파일만큼이나 중요한 파일입니다. 이는 모델 리포지토리의 핵심으로, 커뮤니티의 다른 구성원들이 재사용할 수 있게 하고 결과를 재현할 수 있도록 하며, 다른 구성원들이 자신의 아티팩트를 구축할 수 있는 플랫폼을 제공합니다.

훈련 및 평가 과정을 문서화하면 다른 사람들이 모델에 대해 기대하는 점을 알 수 있도록 도와줍니다. 데이터에 대한 충분한 정보와 전처리 및 후처리 과정을 제공하면 모델의 한계, 편향성, 모델이 유용하거나 그렇지 않은 맥락을 식별하고 알 수 있습니다.

따라서, 모델을 명확히 정의하는 모델 카드를 만드는 것은 매우 중요한 단계입니다. 이 단계를 도와줄 몇 가지 팁을 알려드리겠습니다. 모델 카드는 이전에 본 Markdown 형식인 *README.md* 파일을 통해 작성됩니다.

"모델 카드" 개념은 Google의 연구 방향에서 유래했으며, Margaret Mitchell 등 저자가 발표한 논문 ["Model Cards for Model Reporting"](https://arxiv.org/abs/1810.03993)에서 처음 공유되었습니다. 여기 포함된 많은 정보는 그 논문을 기반으로 하며, 모델 카드가 재현성, 재사용성, 공정성을 중시하는 세상에서 모델 카드가 왜 중요한지 이해하기 위해 논문을 보는 것을 추천합니다.

모델 카드는 보통 모델에 대한 간략한 고수준 개요로 시작하며, 다음 섹션에서 추가 세부 정보를 제공합니다:
- 모델 설명
- 의도된 사용 및 한계
- 사용 방법
- 한계 및 편향
- 훈련 데이터
- 훈련 절차
- 평가 결과

각 섹션을 살펴보겠습니다.

### 모델 설명[[model-description]]

The model description provides basic details about the model. This includes the architecture, version, if it was introduced in a paper, if an original implementation is available, the author, and general information about the model. Any copyright should be attributed here. General information about training procedures, parameters, and important disclaimers can also be mentioned in this section.
모델 설명은 모델에 대한 기본 정보를 제공합니다. 여기에는 아키텍처, 버전, 논문에 소개되었는지 여부, 원본 구현이 가능한지 여부, 저자 및 모델에 대한 일반 정보가 포함됩니다. 저작권은 여기에 명시해야 합니다. 훈련 절차, 파라미터, 중요한 고지 사항에 대한 일반 정보도 이 섹션에 포함될 수 있습니다.
### 의도된 사용 및 한계[[intended-uses-limitations]]

Here you describe the use cases the model is intended for, including the languages, fields, and domains where it can be applied. This section of the model card can also document areas that are known to be out of scope for the model, or where it is likely to perform suboptimally.
이 섹션에서는 모델이 의도된 사용 사례를 설명합니다. 여기에는 적용 가능한 언어, 분야, 도메인이 포함됩니다. 또한, 모델이 범위 밖으로 알려진 영역이나 성능이 떨어질 가능성이 있는 영역을 문서화할 수 있습니다.

### How to use[[how-to-use]]

This section should include some examples of how to use the model. This can showcase usage of the `pipeline()` function, usage of the model and tokenizer classes, and any other code you think might be helpful.
이 섹션에는 모델을 사용하는 예제가 포함되어야 합니다. 여기에는 pipeline() 함수 사용, 모델 및 토크나이저 클래스 사용, 그리고 유용하다고 생각하는 다른 코드가 포함될 수 있습니다.

### Training data[[training-data]]

This part should indicate which dataset(s) the model was trained on. A brief description of the dataset(s) is also welcome.
이 부분에는 모델이 훈련된 데이터셋을 명시해야 합니다. 데이터셋에 대한 간략한 설명도 환영합니다.

### Training procedure[[training-procedure]]

In this section you should describe all the relevant aspects of training that are useful from a reproducibility perspective. This includes any preprocessing and postprocessing that were done on the data, as well as details such as the number of epochs the model was trained for, the batch size, the learning rate, and so on.
이 섹션에서는 재현성 관점에서 유용한 훈련의 모든 관련 측면을 설명해야 합니다. 여기에는 데이터에 수행된 전처리 및 후처리, 에포크 수, 배치 크기, 학습률 등이 포함됩니다.

### Variable and metrics[[variable-and-metrics]]

Here you should describe the metrics you use for evaluation, and the different factors you are mesuring. Mentioning which metric(s) were used, on which dataset and which dataset split, makes it easy to compare you model's performance compared to that of other models. These should be informed by the previous sections, such as the intended users and use cases.
여기에서는 평가에 사용한 메트릭과 측정하는 다양한 요소를 설명해야 합니다. 사용된 메트릭, 데이터셋 및 데이터셋 분할 등을 언급하여 다른 모델과 성능을 비교하기 쉽게 만듭니다. 이는 의도된 사용자와 사용 사례와 관련된 이전 섹션을 반영해야 합니다.

### Evaluation results[[evaluation-results]]

Finally, provide an indication of how well the model performs on the evaluation dataset. If the model uses a decision threshold, either provide the decision threshold used in the evaluation, or provide details on evaluation at different thresholds for the intended uses.
마지막으로, 평가 데이터셋에서 모델이 얼마나 잘 수행되는지에 대한 지표를 제공해야 합니다. 모델이 결정 임계값을 사용하는 경우, 평가에 사용된 결정 임계값을 제공하거나, 의도된 사용에 대한 다양한 임계값에서의 평가에 대한 세부 정보를 제공해야 합니다.

## Example[[example]]

Check out the following for a few examples of well-crafted model cards:
다음은 잘 작성된 모델 카드의 몇 가지 예시입니다:
- [`bert-base-cased`](https://huggingface.co/bert-base-cased)
- [`gpt2`](https://huggingface.co/gpt2)
- [`distilbert`](https://huggingface.co/distilbert-base-uncased)

More examples from different organizations and companies are available [here](https://github.com/huggingface/model_card/blob/master/examples.md).
다양한 조직과 회사의 더 많은 예시는 여기에서 확인할 수 있습니다.

## Note[[note]]

Model cards are not a requirement when publishing models, and you don't need to include all of the sections described above when you make one. However, explicit documentation of the model can only benefit future users, so we recommend that you fill in as many of the sections as possible to the best of your knowledge and ability.
모델 카드는 모델을 게시할 때 필수 사항은 아니며, 위에서 설명한 모든 섹션을 포함할 필요는 없습니다. 그러나 모델을 명시적으로 문서화하면 향후 사용자에게 유익할 수 있으므로 가능한 한 많은 섹션을 최대한의 지식과 능력으로 작성하는 것을 권장합니다.

## Model card metadata[[model-card-metadata]]
모델 카드 메타데이터

If you have done a little exploring of the Hugging Face Hub, you should have seen that some models belong to certain categories: you can filter them by tasks, languages, libraries, and more. The categories a model belongs to are identified according to the metadata you add in the model card header.
Hugging Face Hub를 조금 탐색해보았다면, 일부 모델이 특정 범주에 속해 있는 것을 보았을 것입니다. 모델을 작업, 언어, 라이브러리 등으로 필터링할 수 있습니다. 모델이 속한 범주는 모델 카드 헤더에 추가한 메타데이터에 따라 식별됩니다.

For example, if you take a look at the [`camembert-base` model card](https://huggingface.co/camembert-base/blob/main/README.md), you should see the following lines in the model card header:
예를 들어, camembert-base 모델 카드를 보면 모델 카드 헤더에 다음과 같은 줄이 있는 것을 볼 수 있습니다:

```
---
language: fr
license: mit
datasets:
- oscar
---
```

This metadata is parsed by the Hugging Face Hub, which then identifies this model as being a French model, with an MIT license, trained on the Oscar dataset.
이 메타데이터는 Hugging Face Hub에서 파싱되어 이 모델이 프랑스어 모델이며, MIT 라이센스를 갖고 있고, Oscar 데이터셋으로 훈련되었음을 식별합니다.
The [full model card specification](https://github.com/huggingface/hub-docs/blame/main/modelcard.md) allows specifying languages, licenses, tags, datasets, metrics, as well as the evaluation results the model obtained when training.
전체 모델 카드 사양을 통해 언어, 라이센스, 태그, 데이터셋, 메트릭, 훈련 시 얻은 평가 결과를 지정할 수 있습니다.

0 comments on commit de06974

Please sign in to comment.