Tasks

Tasks

Task가 뭔가요?

Task(또는 pipeline type)는 각 모델 API의 "형태"(입력과 출력)를 설명하고, 어떤 모델에 어떤 Inference API와 widget을 표시할지 결정하는 데 사용돼요.

출처: 문서

본문

이 분류는 비교적 거친 편이에요(모델 태그에 더 세분화된 task 이름을 언제든 추가할 수 있어요). 그래서 새 task를 만들어야 할 일은 거의 없어요. 새 task 지원을 추가하고 싶다면, 이 문서가 필요한 단계를 설명해요.

개요

새 task가 Hub에 통합된다는 것은 다음을 의미해요.

  • 사용자가 주어진 task의 모든 모델 – 그리고 데이터셋 – 을 검색할 수 있음
  • Inference API가 task를 지원함
  • 사용자가 widget으로 모델을 직접 시험해볼 수 있음 🏆

모든 단계를 혼자 구현할 필요는 없다는 점을 기억하세요. 새 task 추가는 커뮤니티 노력이고, 여러 사람이 기여할 수 있어요. 🧑‍🤝‍🧑

과정을 시작하려면 huggingface_hub 저장소에 새 이슈를 열어주세요. "Adding a new task" 템플릿을 사용하세요. ⚠️코딩을 시작하기 전에 이 문서를 먼저 읽는 것을 권장해요. ⚠️

첫 단계는 제안한 task에 대한 모델을 업로드하는 거예요. 새 task의 모델이 Hub에 있으면, 다음 단계는 Inference API에서 활성화하는 거예요. 선택할 수 있는 지원 유형은 세 가지가 있어요.

  • 🤗 transformers 모델 사용
  • 🐳 공식 지원 라이브러리의 모델 사용
  • 🖨️ 커스텀 추론 코드가 있는 모델 사용. 이 실험적 옵션은 단점이 있으므로 다른 접근 방식을 권장해요.

마지막으로 task 아이콘과 widget 같은 몇 가지 UI 요소를 추가해 Hub에서 통합을 완성할 수 있어요. 📷

일부 단계는 독립적이므로 순서대로 할 필요가 없어요. 아이콘을 추가하는 데 Inference API는 필요하지 않아요. 즉 아직 완전히 통합되지 않아도 사용자가 주어진 task의 모델을 검색할 수 있다는 뜻이에요.

Hub에 새 task 추가하기

Hugging Face transformers 라이브러리 사용

모델이 transformers 기반이라면 Inference API task와 pipeline 클래스 사이에 1:1 매핑이 있어요. transformers 라이브러리의 PR 예시 몇 가지를 보여줄게요.

파이프라인이 제출되고 배포되면 모델에 Inference API를 사용할 수 있어야 해요.

지원 라이브러리로 Community Inference API 사용

Hub는 Community Inference API에서 10개 이상의 오픈소스 라이브러리도 지원해요.

새 task 추가는 비교적 간단하고 2개의 PR이 필요해요.

빠른 프로토타입용 Community Inference API 추가

제 모델이 어떤 라이브러리도 지원하지 않아요. 절망인가요? 😱

이런 사용 사례에는 Hugging Face Spaces를 권장해요.

UI 요소

Hub는 사용자가 주어진 task로 모델을 필터링할 수 있게 해요. 이렇게 하려면 여러 곳에 task를 추가해야 해요. task 아이콘도 고를 수 있죠!

  1. Types.ts에 task 유형 추가

huggingface.js/packages/tasks/src/pipelines.ts에서 몇 가지 작업을 해야 해요.

  • type을 PIPELINE_DATA에 추가해요. pipeline type은 서로 다른 카테고리(NLP, Audio, Computer Vision 등)로 정렬된다는 점을 기억하세요.
  • huggingface.js/packages/tasks/src/tasks/index.ts에서도 약간의 변경이 필요해요.
  1. 아이콘 선택

lib/Icons 디렉토리에 아이콘을 추가할 수 있어요. 보통 https://icones.js.org/collection/carbon 의 carbon 아이콘을 사용해요. PipelineIcon에도 아이콘을 추가하세요.

Widget

task가 프로덕션에 들어가면, 사용자가 브라우저에서 모델을 직접 조작할 방법을 구현하는 것보다 흥미로운 건 없을 거예요. 🤩 모든 widget은 여기에서 찾을 수 있어요.

widget 기여에 관심이 있다면 모든 widget의 구현을 살펴보세요.

더 알아보기 (Learn more)

Task는 모델 API의 입출력 형태를 정의하고 Inference API와 widget 선택을 결정해요. 새 task 추가는 커뮤니티 작업으로, transformers pipeline, Community Inference API(PR 2개), UI 요소 세 축으로 진행돼요. 아이콘은 Inference API 지원 없이도 추가할 수 있으니 독립적으로 기여할 수 있어요.