6️⃣Evaluate

Huggingface Evaluate

Huggingface Evaluate는 다양한 평가 도구에 대한 액세스를 제공합니다. 여기에는 모델이나 데이터 세트를 평가하는 도구뿐만 아니라 텍스트, 컴퓨터 비전, 오디오 등과 같은 다양한 양식을 다룹니다. 이러한 도구는 세 가지 카테고리로 나뉩니다.

  • Metric: 모델의 성능을 평가하는 데 사용되며 일반적으로 모델의 예측과 일부 기준값 레이블을 포함합니다.

  • Comparison: 비교는 두 모델을 비교하는 데 사용됩니다. 예를 들어 두 모델의 예측을 기준값 레이블과 비교하고 일치도를 계산하여 비교를 수행할 수 있습니다.

  • Measurement:: 데이터 세트는 학습된 모델만큼이나 중요합니다. 측정을 통해 데이터 세트의 속성을 조사할 수 있습니다.

%pip install evaluate

Evaluate Load

import evaluate

accuracy = evaluate.load("accuracy")
accuracy.compute(references=[0,1,0,1], predictions=[1,0,0,1])
Downloading builder script:   0%|          | 0.00/4.20k [00:00<?, ?B/s]

{'accuracy': 0.5}

Combination

단일 지표뿐만 아니라 모델의 다양한 측면을 포착하는 다양한 지표를 평가하고자 하는 경우가 많습니다. 예를 들어 분류의 경우 일반적으로 모델 성능을 더 잘 파악하기 위해 정확도 외에도 F1 Score, Recall, Precision를 계산하는 것이 좋습니다. 물론 여러 메트릭을 로드하고 순차적으로 호출할 수 있습니다. 그러나 더 편리한 방법은 결합() 함수를 사용하여 함께 묶는 것입니다:

metrics = evaluate.combine(["accuracy", "f1", "precision", "recall"])

predictionsreferencecompute() 메서드에 전달하고 결과를 반환합니다. 배치별로 메트릭을 계산하고 진행 상황을 추적하는 기능이 있습니다.

Community module

평가하기에서 구현된 모듈 외에도 메트릭 구현의 리포지토리 ID를 지정하여 모든 커뮤니티 모듈을 로드할 수도 있습니다:

List evaluation module

list_evaluation_modules()를 사용하면 허브에서 어떤 모듈을 사용할 수 있는지 확인할 수 있습니다. 원하는 경우 특정 모듈을 필터링하고 커뮤니티 지표를 건너뛸 수도 있습니다.

Evaluator

Transformer pipeline과 함께 사용지 evaluator() 메서드로 각 Task 별로 Metric을 불러와서 evaluate 할 수 있습니다. 지원하는 Metrics는 아래와 같습니다:

  • "text-classification": TextClassificationEvaluator

  • "token-classification": TokenClassificationEvaluator

  • "question-answering": QuestionAnsweringEvaluator

  • "image-classification": ImageClassificationEvaluator

  • "text-generation": TextGenerationEvaluator

  • "text2text-generation": Text2TextGenerationEvaluator

  • "summarization": SummarizationEvaluator

  • "translation": TranslationEvaluator

  • "automatic-speech-recognition": AutomaticSpeechRecognitionEvaluator

Save Result

평가 결과를 저장하고 공유하는 것은 중요한 단계입니다. 지표 결과를 쉽게 저장할 수 있도록 evaluate.save() 함수를 제공합니다. 특정 파일 이름이나 디렉터리를 전달할 수 있습니다. 후자의 경우 결과는 자동으로 생성된 파일 이름으로 파일에 저장됩니다. 이 함수는 디렉터리나 파일 이름 외에도 키-값 쌍을 입력으로 받아 JSON 파일에 저장합니다.

results 디렉토리를 생성하고 "result-2024_05_23-19_22_08.json" json 포맷으로 저장했습니다.

Push to HF Hub

결과를 해당 Repository에 보고할 수 있습니다.

evaluate.push_to_hub() 함수를 사용하면 평가 결과를 모델의 리포지토리에 쉽게 보고할 수 있습니다:

Visualization

여러 모델을 비교할 때 단순히 점수만 보고는 성능의 차이를 파악하기 어려운 경우가 있습니다. 또한 최고의 모델이 하나만 있는 것이 아니라 지연 시간과 정확도 사이에 상충 관계가 있는 경우가 많으며, 더 큰 모델은 성능이 더 좋을 수 있지만 또한 더 느릴 수도 있습니다. 사용 사례에 가장 적합한 모델을 더 쉽게 선택할 수 있도록 플롯과 같은 다양한 시각화 접근 방식을 점진적으로 추가하고 있습니다.

Custom Pipeline

Evaluator는 즉시 트랜스포머 파이프라인과 함께 작동하도록 설계되었습니다. 하지만 많은 경우 트랜스포머 에코시스템에 속하지 않는 모델이나 파이프라인이 있을 수 있습니다. 그래도 평가기를 사용하여 이러한 모델이나 파이프라인에 대한 지표를 쉽게 계산할 수 있습니다. 이 가이드에서는 Scikit-Learn 파이프라인과 Spacy 파이프라인에 대해 이 작업을 수행하는 방법을 보여드립니다. Scikit-Learn 사례부터 시작하겠습니다.

scikit-learn

IMDB 데이터셋으로 불러와서 scikit-learn pipeline으로 Text Classification을 수행해보겠습니다.

Last updated