Traffine I/O

Bahasa Indonesia

2023-02-03

Hugging Face Transformers:Pipeline

Hugging Face Transformers Pipeline

Pipeline Hugging Face Transformers memungkinkan Anda untuk melakukan tugas-tugas NLP hanya dengan beberapa baris kode.

Pipeline secara internal melakukan tiga langkah berikut ketika menerima data teks mentah.

  1. Tokenizer: prapemrosesan dilakukan untuk mengubah data menjadi format input model.
  2. Model: teks input yang telah dikonversi dimasukkan ke dalam model.
  3. Post Processing: hasil inferensi model diproses setelahnya menjadi bentuk yang lebih mudah dikelola untuk keluaran.

Pipeline flow
Behind the pipeline

Cara menggunakan Pipeline

Instal Hugging Face Transformers dengan perintah berikut.

$ pip install transformers

Tentukan nama tugas yang ingin Anda lakukan di pipeline, seperti pipeline("question-answering"). Tugas dapat berupa, misalnya

  • feature-extraction (get the vector representation of a text)
  • fill-mask
  • ner (named entity recognition)
  • question-answering
  • sentiment-analysis
  • summarization
  • text-generation
  • translation
  • zero-shot-classification

Informasi lebih lanjut dapat ditemukan di tautan berikut.

https://huggingface.co/docs/transformers/main_classes/pipelines

Misalnya, jika Anda ingin melakukan klasifikasi teks, tulis yang berikut ini.

from transformers import pipeline

pipe = pipeline("text-classification")
pipe("This restaurant is awesome")

Hasil berikut ini dikembalikan.

[{'label': 'POSITIVE', 'score': 0.9998743534088135}]

Jika Anda ingin menggunakan model tertentu dari Hub, Anda dapat menghilangkan nama tugas hanya jika model di Hub sudah mendefinisikan tugas tersebut.

from transformers import pipeline

pipe = pipeline(model="roberta-large-mnli")
pipe("This restaurant is awesome")

>> [{'label': 'NEUTRAL', 'score': 0.7313136458396912}]

Anda juga dapat meneruskan daftar untuk masukan.

from transformers import pipeline

pipe = pipeline("text-classification")
pipe(["This restaurant is awesome", "This restaurant is awful"])

>> [{'label': 'POSITIVE', 'score': 0.9998743534088135},
>>  {'label': 'NEGATIVE', 'score': 0.9996669292449951}]

Pipeline khusus juga dapat ditentukan.

class MyPipeline(TextClassificationPipeline):
    def postprocess():
        # Your code goes here
        scores = scores * 100
        # And here

my_pipeline = MyPipeline(model=model, tokenizer=tokenizer, ...)
# or if you use *pipeline* function, then:
my_pipeline = pipeline(model="xxxx", pipeline_class=MyPipeline)

Contoh-contoh Pipeline

Berikut ini adalah contoh tugas NLP.

  • Zero-shot classification
  • Text generation
  • Mask filling

Zero-shot classification

Zero-shot classification adalah tugas yang tidak memerlukan teks berlabel; alih-alih, Anda cukup memberikan label yang ingin Anda klasifikasikan secara langsung ke Pipeline, yang mengembalikan hasil inferensi untuk label tersebut. Memberi anotasi pada teks biasanya memakan waktu dan memerlukan pengetahuan khusus. Zero-shot classification sangat berguna dalam kasus-kasus seperti itu.

from transformers import pipeline

classifier = pipeline("zero-shot-classification")
classifier(
    "This is a course about the Transformers library",
    candidate_labels=["education", "politics", "business"],
)
{'sequence': 'This is a course about the Transformers library',
 'labels': ['education', 'business', 'politics'],
 'scores': [0.8445988297462463, 0.11197440326213837, 0.04342682659626007]}

Text generation

Text generation adalah tugas di mana, dengan diberikan sebuah perintah, model akan membuat teks lainnya dan melengkapi secara otomatis.

from transformers import pipeline

generator = pipeline("text-generation")
generator("In this course, we will teach you how to")
[{'generated_text': 'In this course, we will teach you how to understand and use '
                    'data flow and data interchange when handling user data. We '
                    'will be working with one or more of the most commonly used '
                    'data flows — data flows of various types, as seen by the '
                    'HTTP'}]

Anda juga dapat memilih model tertentu dari Hub.

from transformers import pipeline

generator = pipeline("text-generation", model="distilgpt2")
generator(
    "In this course, we will teach you how to",
    max_length=30,
    num_return_sequences=2,
)
[{'generated_text': 'In this course, we will teach you how to manipulate the world and '
                    'move your mental and physical capabilities to your advantage.'},
 {'generated_text': 'In this course, we will teach you how to become an expert and '
                    'practice realtime, and with a hands on experience on both real '
                    'time and real'}]

Mask filling

Mask filling adalah tugas mengisi bagian yang kosong dari teks yang diberikan.

from transformers import pipeline

unmasker = pipeline("fill-mask")
unmasker("This course will teach you all about <mask> models.", top_k=2)
[{'sequence': 'This course will teach you all about mathematical models.',
  'score': 0.19619831442832947,
  'token': 30412,
  'token_str': ' mathematical'},
 {'sequence': 'This course will teach you all about computational models.',
  'score': 0.04052725434303284,
  'token': 38163,
  'token_str': ' computational'}]

Referensi

https://huggingface.co/course/chapter1/3
https://huggingface.co/course/chapter2/2?fw=pt
https://huggingface.co/docs/transformers/main_classes/pipelines
https://huggingface.co/docs/transformers/quicktour#use-another-model-and-tokenizer-in-the-pipeline

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!