Widgets

Widgets

Widget이 뭔가요?

많은 모델 저장소에는 누구나 브라우저에서 바로 추론을 실행할 수 있는 widget이 있어요. 이 widget은 Inference Providers로 구동돼요. Inference Providers는 서버리스 추론 파트너에 기반해 개발자에게 수백 개의 머신러닝 모델에 대한 간소화되고 통합된 접근을 제공해요.

출처: 문서

본문

현재 인기 모델의 예시 몇 가지:

더 많은 모델과 widget은 모델 페이지에서 탐색하거나, Inference Playground에서 대화형으로 시험해볼 수 있어요.

widget 활성화

widget은 모델이 최소한 하나의 Inference Provider에 호스팅될 때 표시돼요. 이는 모델 추론의 최적 성능과 신뢰성을 보장하기 위해서예요. Providers는 자신이 배포할 모델을 자율적으로 선택·제어해요.

표시되는 widget 유형(text to image, automatic speech recognition 등)은 모델의 pipeline_tag에서 추론돼요. pipeline_tag는 Hub가 모든 모델에 대해 자동 계산하려는 특수 태그예요. 유일한 예외는 conversational widget으로, pipeline_tagtext-generation 또는 image-text-to-text인 모든 모델에 표시돼요. 단순함을 위해 모델당 widget 하나만 노출하기로 했어요.

transformers 같은 일부 라이브러리에서는 구성 파일(config.json)에서 모델 유형을 자동으로 추론할 수 있어요. 아키텍처가 유형을 결정할 수 있죠. 예를 들어 AutoModelForTokenClassificationtoken-classification에 해당해요. 관심이 있다면 이 gist에서 의사 코드를 볼 수 있어요.

대부분의 다른 사용 사례에서는 모델 태그로 모델 task 유형을 결정해요. 예를 들어 모델 카드 메타데이터tag: text-classification이 있으면 추론된 pipeline_tagtext-classification이 돼요.

모델 카드 메타데이터에서 pipeline_tag: xxx로 파이프라인 유형을 항상 수동으로 덮어쓸 수 있어요. (메타데이터 GUI 편집기로도 할 수 있어요.)

모델의 widget 예시 입력을 어떻게 제어하나요?

모델 카드 메타데이터 섹션에서 widget 입력을 지정할 수 있어요.

widget:
  - text: "This new restaurant has amazing food and great service!"
    example_title: "Positive Review"
  - text: "I'm really disappointed with this product. Poor quality and overpriced."
    example_title: "Negative Review"
  - text: "The weather is nice today."
    example_title: "Neutral Statement"

하나 이상의 예시 입력을 제공할 수 있어요. widget의 예시 드롭다운 메뉴에서 Example 1, Example 2 등으로 표시돼요. 선택적으로 example_title도 제공할 수 있어요.

widget:
  - text: "Is this review positive or negative? Review: Best cast iron skillet you will ever buy."
    example_title: "Sentiment analysis"
  - text: "Barack Obama nominated Hilary Clinton as his secretary of state on Monday. He chose her because she had ..."
    example_title: "Coreference resolution"
  - text: "On a shelf, there are five books: a gray book, a red book, a purple book, a blue book, and a black book ..."
    example_title: "Logic puzzles"
  - text: "The two men running to become New York City's next mayor will face off in their first debate Wednesday night ..."
    example_title: "Reading comprehension"

또한 모델 카드 메타데이터에서 텍스트가 아닌 예시 입력을 지정할 수 있어요. 모든 widget 유형의 샘플 입력 형식 전체 목록은 여기를 참고하세요. 비전·오디오 widget 유형은 text 대신 src로 예시 입력을 제공하세요.

예를 들어 자동 음성 인식 task에서 사용자가 두 개의 샘플 오디오 파일 중 하나를 선택하게 하려면:

widget:
  - src: https://example.org/somewhere/speech_samples/sample1.flac
    example_title: Speech sample 1
  - src: https://example.org/somewhere/speech_samples/sample2.flac
    example_title: Speech sample 2

모델 저장소에 예시 파일을 포함시키고 사용할 수도 있어요.

widget:
  - src: https://huggingface.co/username/model_repo/resolve/main/sample1.flac
    example_title: Custom Speech Sample 1

더 편리하게, 파일이 해당 모델 저장소에 있으면 저장소 안의 파일명이나 경로만 사용하면 돼요.

widget:
  - src: sample1.flac
    example_title: Custom Speech Sample 1

저장소 안에 중첩되어 있으면:

widget:
  - src: nested/directory/sample1.flac

일부 언어와 대부분의 widget 유형에 대한 예시 입력을 default-widget-inputs.ts 파일에서 제공해요. 빠진 예시가 있다면 커뮤니티의 PR을 환영해요!

예시 출력

예시 입력의 확장으로, 각 widget 예시에 대해 해당 모델 출력을 output 속성에 직접 설명할 수도 있어요.

이것은 모델이 아직 Inference Providers에서 지원되지 않을 때 유용해요. 모델 페이지가 어떻게 동작하고 어떤 결과를 주는지 여전히 보여줄 수 있으니까요.

예를 들어 automatic-speech-recognition 모델의 경우:

widget:
  - src: sample1.flac
    output:
      text: "Hello my name is Julien"

output 속성은 Inference Providers의 출력 형식을 나타내는 YAML 딕셔너리여야 해요.

텍스트를 출력하는 모델은 위 예시를 보면 돼요.

라벨을 출력하는 모델(예: text-classification 모델)은 출력이 이렇게 생겨야 해요.

widget:
  - text: "I liked this movie"
    output:
      - label: POSITIVE
        score: 0.8
      - label: NEGATIVE
        score: 0.2

마지막으로 이미지, 오디오, 또는 다른 종류의 자산을 출력하는 모델은 저장소 안의 파일 이름·경로 또는 원격 URL을 가리키는 url 속성을 포함해야 해요. 예를 들어 text-to-image 모델의 경우:

widget:
  - text: "picture of a futuristic tiger, artstation"
    output:
      url: images/tiger.jpg

Hugging Face UI에서 예시 출력을 표시할 수도 있어요. 예를 들어 text-to-image 모델로 멋진 이미지 생성 갤러리를 표시할 수 있어요.

Widget 가용성 및 Provider 지원

모든 모델이 widget을 가진 것은 아니에요. widget 가용성은 다음에 달려 있어요.

  1. Task 지원: 모델의 task가 Inference Providers 네트워크의 최소 하나의 provider에 지원되어야 함
  2. Provider 가용성: 최소 하나의 provider가 특정 모델을 서빙해야 함
  3. 모델 구성: 모델에 적절한 메타데이터와 구성 파일이 있어야 함

지원되는 task 전체 목록은 전용 문서 페이지를 참고하세요.

모든 provider와 지원하는 task 목록은 이 문서 페이지에서 확인할 수 있어요.

Provider 지원이 없는 모델은 모델 카드의 예시 출력으로 여전히 기능을 보여줄 수 있어요.

또한 모델 페이지에서 Ask for provider support 를 클릭해 충분한 커뮤니티 관심이 있으면 provider가 모델을 서빙하도록 독려할 수 있어요.

Inference Playground로 모델 탐색

모델을 애플리케이션에 통합하기 전에 Inference Playground에서 대화형으로 테스트할 수 있어요. 플레이그라운드에서:

  • 커스텀 프롬프트로 다른 챗 컴플리션 모델 테스트
  • 여러 모델에 걸친 응답 비교
  • temperature, max tokens 같은 추론 파라미터 실험
  • 특정 사용 사례에 완벽한 모델 찾기

플레이그라운드는 widget을 구동하는 것과 같은 Inference Providers 인프라를 사용하므로, 모델을 자신의 애플리케이션에 통합할 때 비슷한 성능과 기능을 기대할 수 있어요.

더 알아보기 (Learn more)

widget은 Inference Providers가 모델을 호스팅할 때 모델 페이지에 나타나고, 표시 유형은 pipeline_tag에서 추론돼요(pipeline_tag: xxx로 수동 덮어쓰기 가능). 모델 카드 메타데이터의 widget: 섹션으로 예시 입력을, output 속성으로 예시 출력을 커스터마이징할 수 있어요. 제공자 미지원 모델도 예시 출력으로 기능을 보여줄 수 있어요.