Hub documentation

Tugas

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Tugas

Apa itu tugas?

Tugas, atau tipe pipeline, menggambarkan “bentuk” dari API masing-masing model (input dan output) dan digunakan untuk menentukan Inference API serta widget mana yang ingin ditampilkan untuk model tertentu.

Klasifikasi ini relatif kasar (Anda selalu dapat menambahkan nama tugas yang lebih rinci dalam tag model Anda), sehingga Anda jarang perlu membuat tugas baru. Jika Anda ingin menambahkan dukungan untuk tugas baru, dokumen ini menjelaskan langkah-langkah yang diperlukan.

Ikhtisar

Adanya tugas baru yang terintegrasi ke dalam Hub berarti:

  • Pengguna dapat mencari semua model – dan dataset – untuk tugas tertentu.
  • API Inferensi mendukung tugas tersebut.
  • Pengguna dapat mencoba model secara langsung dengan widget. 🏆

Perlu dicatat bahwa Anda tidak perlu mengimplementasikan semua langkah sendiri. Menambahkan tugas baru adalah upaya komunitas, dan banyak orang dapat berkontribusi. 🧑‍🤝‍🧑

Untuk memulai prosesnya, buka issue baru di repositori huggingface_hub. Silakan gunakan template “Adding a new task”. ⚠️Sebelum melakukan penulisan kode, disarankan untuk membaca dokumen ini terlebih dahulu. ⚠️

Langkah pertama adalah mengunggah model untuk tugas yang Anda usulkan. Setelah Anda memiliki model di Hub untuk tugas baru tersebut, langkah selanjutnya adalah mengaktifkannya di Inference API. Ada tiga jenis dukungan yang dapat Anda pilih:

  • 🤗 menggunakan model transformers
  • 🐳 menggunakan model dari perpustakaan yang didukung secara resmi
  • 🖨️ menggunakan model dengan kode inferensi kustom. Opsi eksperimental ini memiliki kekurangan, sehingga kami merekomendasikan penggunaan salah satu pendekatan lainnya.

Terakhir, Anda dapat menambahkan beberapa elemen UI, seperti ikon tugas dan widget, yang melengkapi integrasi di Hub. 📷

Beberapa langkah bersifat ortogonal; Anda tidak perlu melakukannya secara berurutan. Anda tidak perlu menggunakan Inference API untuk menambahkan ikon. Artinya, meskipun integrasi penuh belum tersedia, pengguna tetap dapat mencari model untuk tugas tertentu.

Menambahkan tugas baru ke Hub

Menggunakan pustaka transformers Hugging Face

Jika model Anda adalah model berbasis transformers, terdapat pemetaan 1:1 antara tugas Inference API dan kelas pipeline. Berikut adalah beberapa contoh PR dari pustaka transformers:

Setelah pipeline dikirim dan di-deploy, Anda seharusnya dapat menggunakan Inference API untuk model Anda.

Menggunakan Community Inference API dengan pustaka yang didukung

Hub juga mendukung lebih dari 10 pustaka sumber terbuka di Community Inference API.

Menambahkan tugas baru relatif mudah dan memerlukan 2 PR:

Menambahkan Community Inference API untuk prototipe cepat

Model saya tidak didukung oleh pustaka mana pun. Apakah saya sudah habis harapan? 😱

Kami merekomendasikan penggunaan Hugging Face Spaces untuk kasus penggunaan ini.

Elemen UI

Hub memungkinkan pengguna untuk memfilter model berdasarkan tugas tertentu. Untuk melakukannya, Anda perlu menambahkan tugas tersebut ke beberapa tempat. Anda juga dapat memilih ikon untuk tugas tersebut!

  1. Tambahkan jenis tugas ke Types.ts

Di huggingface.js/packages/tasks/src/pipelines.ts, Anda perlu melakukan beberapa hal

  • Tambahkan tipe ke PIPELINE_DATA. Perhatikan bahwa tipe pipeline dikelompokkan ke dalam kategori yang berbeda (NLP, Audio, Computer Vision, dan lainnya).
  • Anda juga perlu mengisi perubahan kecil di huggingface.js/packages/tasks/src/tasks/index.ts
  1. Pilih ikon

Anda dapat menambahkan ikon di direktori lib/Icons. Kami biasanya memilih ikon carbon dari https://icones.js.org/collection/carbon. Tambahkan juga ikon tersebut ke PipelineIcon.

Widget

Setelah tugas berjalan di produksi, apa yang lebih seru daripada mengimplementasikan cara agar pengguna dapat berinteraksi langsung dengan model di browser mereka? 🤩 Anda dapat menemukan semua widget di sini.

Jika Anda tertarik untuk berkontribusi dengan sebuah widget, Anda dapat melihat implementasi dari semua widget.

Update on GitHub