Alat AI 101

Panduan Lengkap untuk Pemula tentang Alat LLM Hugging Face

mm
HUGGING FACE - COMPLETE GUIDE

Hugging Face adalah laboratorium penelitian AI dan hub yang telah membangun komunitas sarjana, peneliti, dan penggemar. Dalam waktu yang relatif singkat, Hugging Face telah memperoleh kehadiran yang signifikan di ruang AI. Raksasa teknologi termasuk Google, Amazon, dan Nvidia telah memperkuat startup AI Hugging Face dengan investasi yang signifikan, membuat valuasinya $4,5 miliar.

Dalam panduan ini, kami akan memperkenalkan transformer, LLM, dan bagaimana perpustakaan Hugging Face memainkan peran penting dalam memfasilitasi komunitas AI sumber terbuka. Kami juga akan membahas fitur-fitur esensial Hugging Face, termasuk pipelines, dataset, model, dan lain-lain, dengan contoh Python yang praktis.

Transformer dalam NLP

Pada tahun 2017, Universitas Cornell menerbitkan sebuah makalah yang memperkenalkan transformer. Ini adalah model pembelajaran dalam yang digunakan dalam NLP. Penemuan ini memicu pengembangan model bahasa besar seperti ChatGPT.

Model bahasa besar atau LLM adalah sistem AI yang menggunakan transformer untuk memahami dan membuat teks yang mirip dengan manusia. Namun, membuat model ini memerlukan biaya yang besar, seringkali memerlukan jutaan dolar, yang membatasi aksesnya ke perusahaan besar.

Hugging Face, yang didirikan pada tahun 2016, bertujuan untuk membuat model NLP dapat diakses oleh semua orang. Meskipun merupakan perusahaan komersial, mereka menawarkan berbagai sumber daya sumber terbuka yang membantu orang dan organisasi untuk membangun dan menggunakan model transformer dengan terjangkau. Pembelajaran mesin adalah tentang mengajar komputer untuk melakukan tugas dengan mengenali pola, sedangkan pembelajaran dalam, sebuah subset dari pembelajaran mesin, membuat jaringan yang belajar secara mandiri. Transformer adalah jenis arsitektur pembelajaran dalam yang efektif dan fleksibel menggunakan data input, membuatnya menjadi pilihan populer untuk membangun model bahasa besar karena memerlukan waktu pelatihan yang lebih singkat.

Bagaimana Hugging Face Memfasilitasi Proyek NLP dan LLM

Hugging face Ecosystem - Models, dataset, metrics, transformers, accelerate, tokenizers

Hugging Face telah membuat bekerja dengan LLM lebih sederhana dengan menawarkan:

  1. Sebuah rangkaian model pra-latih untuk dipilih.
  2. Alat dan contoh untuk memperhalus model tersebut sesuai dengan kebutuhan spesifik Anda.
  3. Opsi penerapan yang mudah untuk berbagai lingkungan.

Sumber daya yang sangat berguna yang tersedia melalui Hugging Face adalah Open LLM Leaderboard. Berfungsi sebagai platform komprehensif, itu secara sistematis memantau, memeringkat, dan menilai efisiensi berbagai Model Bahasa Besar (LLM) dan chatbot, menyediakan analisis yang tajam tentang kemajuan di domain sumber terbuka

LLM Benchmarks mengukur model melalui empat metrik:

  • AI2 Reasoning Challenge (25-shot) — serangkaian pertanyaan seputar silabus sains dasar.
  • HellaSwag (10-shot) — tes inferensi umum yang, meskipun sederhana bagi manusia, merupakan tantangan signifikan bagi model canggih.
  • MMLU (5-shot) — evaluasi multifacet yang menyentuh kemampuan model teks di 57 domain yang beragam, mencakup matematika dasar, hukum, dan ilmu komputer, di antara lainnya.
  • TruthfulQA (0-shot) — alat untuk menentukan kecenderungan model untuk mengulangi informasi yang sering ditemukan secara online.

Benchmarks, yang digambarkan dengan istilah seperti “25-shot”, “10-shot”, “5-shot”, dan “0-shot”, menunjukkan jumlah contoh prompt yang diberikan kepada model selama proses evaluasi untuk mengukur kinerja dan kemampuan penalaran di berbagai domain. Dalam paradigma “few-shot”, model diberikan beberapa contoh untuk membantu memandu respons mereka, sedangkan dalam pengaturan “0-shot”, model tidak menerima contoh dan harus bergantung sepenuhnya pada pengetahuan pra-eksisting mereka untuk merespons dengan tepat.

Komponen Hugging Face

Pipelines

‘Pipelines’ adalah bagian dari perpustakaan transformer Hugging Face — fitur yang membantu dalam pemanfaatan model pra-latih yang tersedia di repositori Hugging Face. Ini menyediakan API yang intuitif untuk berbagai tugas, termasuk analisis sentimen, pertanyaan menjawab, pemodelan bahasa tersembunyi, pengenalan entitas bernama, dan ringkasan.

Pipelines mengintegrasikan tiga komponen Hugging Face sentral:

  1. Tokenizer: Menyiapkan teks Anda untuk model dengan mengubahnya menjadi format yang dapat dipahami model.
  2. Model: Ini adalah inti pipeline di mana prediksi sebenarnya dilakukan berdasarkan input yang diproses sebelumnya.
  3. Post-processor: Mengubah prediksi mentah model menjadi bentuk yang dapat dibaca manusia.

Pipelines ini tidak hanya mengurangi kode yang ekstensif tetapi juga menawarkan antarmuka yang ramah pengguna untuk menyelesaikan berbagai tugas NLP.

Aplikasi Transformer menggunakan Perpustakaan Hugging Face

Sorotan dari perpustakaan Hugging Face adalah Perpustakaan Transformer, yang menyederhanakan tugas NLP dengan menghubungkan model dengan tahap pra-pemrosesan dan pasca-pemrosesan yang diperlukan, sehingga mempermudah proses analisis. Untuk menginstal dan mengimpor perpustakaan, gunakan perintah berikut:

pip install -q transformers
from transformers import pipeline

Setelah itu, Anda dapat menjalankan tugas NLP mulai dari analisis sentimen, yang mengategorikan teks menjadi sentimen positif atau negatif. Fungsi pipeline() perpustakaan yang kuat berfungsi sebagai pusat yang mencakup pipelines lain dan memfasilitasi aplikasi spesifik tugas di domain audio, visi, dan multimodal.

Aplikasi Praktis

Klasifikasi Teks

Klasifikasi teks menjadi mudah dengan fungsi pipeline() Hugging Face. Berikut cara Anda dapat memulai pipeline klasifikasi teks:

classifier = pipeline("text-classification")

Untuk pengalaman tangan, umpan string atau daftar string ke pipeline Anda untuk mendapatkan prediksi, yang dapat divisualisasikan dengan rapi menggunakan perpustakaan Pandas Python. Berikut adalah potongan kode Python yang menunjukkan hal ini:

kalimat = ["Saya sangat senang memperkenalkan Anda ke dunia AI yang luar biasa.",
"Semoga itu tidak akan mengecewakan Anda."]

# Dapatkan hasil klasifikasi untuk setiap kalimat dalam daftar
hasil = classifier(kalimat)

# Loop melalui setiap hasil dan cetak label dan skor
for i, hasil in enumerate(hasil):
print(f"Hasil {i + 1}:")
print(f" Label: {hasil['label']}")
print(f" Skor: {round(hasil['score'], 3)}\n")

Hasil

Hasil 1:
Label: POSITIF
Skor: 1.0

Hasil 2:
Label: POSITIF
Skor: 0.996

Pengenalan Entitas Bernama (NER)

NER sangat penting dalam mengekstrak objek dunia nyata yang disebut ‘entitas bernama’ dari teks. Gunakan pipeline NER untuk mengidentifikasi entitas tersebut secara efektif:

ner_tagger = pipeline("ner", aggregation_strategy="simple")
teks = "Elon Musk adalah CEO SpaceX."
hasil = ner_tagger(teks)
print(hasil)

Hasil

 Elon Musk: PER, SpaceX: ORG 

Pertanyaan Menjawab

Pertanyaan menjawab melibatkan mengekstrak jawaban yang tepat untuk pertanyaan spesifik dari konteks yang diberikan. Inisialisasi pipeline pertanyaan menjawab dan masukkan pertanyaan dan konteks Anda untuk mendapatkan jawaban yang diinginkan:

reader = pipeline("question-answering")
teks = "Hugging Face adalah perusahaan yang membuat alat untuk NLP. Ini berbasis di New York dan didirikan pada 2016."
pertanyaan = "Di mana Hugging Face berbasis?"
hasil = reader(question=pertanyaan, context=teks)
print(hasil)

Hasil

 { 'score': 0.998, 'start': 51, 'end': 60, 'answer': 'New York' } 

Fungsi pipeline Hugging Face menawarkan berbagai pipeline pra-bangun untuk tugas yang berbeda, selain klasifikasi teks, NER, dan pertanyaan menjawab. Berikut adalah detail tentang subset tugas yang tersedia:

Tabel: Tugas Pipeline Hugging Face

Tugas Deskripsi Identifikasi Pipeline
Generasi Teks Menghasilkan teks berdasarkan prompt yang diberikan pipeline(task=”text-generation”)
Ringkasan Meringkas teks panjang atau dokumen pipeline(task=”summarization”)
Klasifikasi Gambar Mengidentifikasi label untuk gambar input pipeline(task=”image-classification”)
Klasifikasi Audio Mengategorikan data audio pipeline(task=”audio-classification”)
Pertanyaan Jawaban Visual Menjawab pertanyaan menggunakan gambar dan pertanyaan pipeline(task=”vqa”)

 

Untuk deskripsi rinci dan tugas lebih lanjut, silakan merujuk ke dokumentasi pipeline di situs web Hugging Face.

Mengapa Hugging Face Mengalihkan Fokusnya ke Rust

Hugging face Safetensors dan tokenizer Rust

Hugging face Safetensors dan tokenizer GitHub Page

Ekosistem Hugging Face (HF) telah mulai menggunakan Rust dalam perpustakaannya seperti safetensors dan tokenizers.

Hugging Face juga baru-baru ini merilis kerangka kerja pembelajaran mesin baru yang disebut Candle. Tidak seperti kerangka kerja tradisional yang menggunakan Python, Candle dibangun dengan Rust. Tujuan di balik penggunaan Rust adalah untuk meningkatkan kinerja dan menyederhanakan pengalaman pengguna sambil mendukung operasi GPU.

Tujuan utama Candle adalah untuk memfasilitasi inferensi serverless, membuat penerapan binari ringan memungkinkan dan menghapus Python dari beban kerja produksi, yang dapat memperlambat proses karena overheadnya. Kerangka kerja ini datang sebagai solusi untuk mengatasi masalah yang ditemukan dengan kerangka kerja pembelajaran mesin penuh seperti PyTorch yang besar dan lambat saat membuat instance di cluster.

Mari kita jelajahi mengapa Rust menjadi pilihan yang lebih disukai daripada Python.

  1. Kecepatan dan Kinerja – Rust dikenal karena kecepatannya yang luar biasa, mengungguli Python, yang secara tradisional digunakan dalam kerangka kerja pembelajaran mesin. Kinerja Python dapat diperlambat karena Global Interpreter Lock (GIL), tetapi Rust tidak menghadapi masalah ini, menjanjikan eksekusi tugas yang lebih cepat dan, pada gilirannya, kinerja yang lebih baik dalam proyek di mana Rust diterapkan.
  2. Keamanan – Rust menyediakan jaminan keamanan memori tanpa pengumpul sampah, aspek yang sangat penting untuk memastikan keamanan sistem paralel. Ini memainkan peran kunci dalam area seperti safetensors di mana keamanan dalam menangani struktur data sangat penting.

Safetensors

Safetensors mendapat manfaat dari kecepatan dan fitur keamanan Rust. Safetensors melibatkan manipulasi tensor, entitas matematika kompleks, dan memiliki Rust memastikan bahwa operasi tersebut tidak hanya cepat tetapi juga aman, menghindari bug umum dan masalah keamanan yang dapat muncul dari penanganan memori yang tidak tepat.

Tokenizer

Tokenizers menangani pemecahan kalimat atau frasa menjadi unit yang lebih kecil, seperti kata atau istilah. Rust membantu dalam proses ini dengan mempercepat waktu eksekusi, memastikan bahwa proses tokenisasi tidak hanya akurat tetapi juga cepat, sehingga meningkatkan efisiensi tugas pemrosesan bahasa alami.

Di inti tokenizer Hugging Face terletak konsep tokenisasi subkata, yang mencapai keseimbangan halus antara tokenisasi tingkat kata dan karakter untuk mengoptimalkan retensi informasi dan ukuran kamus. Ini berfungsi melalui penciptaan subtoken, seperti “##ing” dan “##ed”, yang mempertahankan kekayaan semantik sambil menghindari kamus yang membengkak.

Tokenisasi subkata melibatkan fase pelatihan untuk mengidentifikasi keseimbangan yang paling efektif antara tokenisasi tingkat karakter dan kata. Ini melampaui aturan awalan dan akhiran sederhana, memerlukan analisis menyeluruh tentang pola bahasa dalam corpus teks yang luas untuk merancang tokenizer subkata yang efisien. Tokenizer yang dihasilkan sangat terampil dalam menangani kata-kata baru dengan memecahnya menjadi subkata yang dikenal, mempertahankan tingkat pemahaman semantik yang tinggi.

Komponen Tokenisasi

Perpustakaan tokenizers membagi proses tokenisasi menjadi beberapa langkah, masing-masing menangani aspek yang berbeda dari tokenisasi. Mari kita jelajahi komponen-komponen ini:

  • Normalizer: Menerapkan transformasi awal pada string input, menerapkan penyesuaian yang diperlukan seperti konversi ke huruf kecil, normalisasi Unicode, dan penghapusan.
  • PreTokenizer: Bertanggung jawab untuk memecah string input menjadi pra-segment, menentukan pemisahan berdasarkan aturan yang telah ditetapkan, seperti pembagian berdasarkan spasi.
  • Model: Mengawasi penemuan dan penciptaan subtoken, beradaptasi dengan spesifik input data Anda dan menawarkan kemampuan pelatihan.
  • Post-Processor: Meningkatkan fitur konstruksi untuk memfasilitasi kompatibilitas dengan banyak model berbasis transformer, seperti BERT, dengan menambahkan token seperti [CLS] dan [SEP].

Untuk memulai dengan tokenizers Hugging Face, pasang perpustakaan menggunakan perintah pip install tokenizers dan impor ke lingkungan Python Anda. Perpustakaan ini dapat menangani tokenisasi teks dalam jumlah besar dalam waktu yang sangat singkat, sehingga menghemat sumber daya komputasi yang berharga untuk tugas yang lebih intensif seperti pelatihan model.

Perpustakaan tokenizers menggunakan Rust yang mewarisi kesamaan sintaks dengan C++ sambil memperkenalkan konsep baru dalam desain bahasa pemrograman. Dengan pengikatan Python, ini memastikan Anda menikmati kinerja bahasa tingkat rendah sambil bekerja dalam lingkungan Python.

Dataset

Dataset adalah fondasi proyek AI. Hugging Face menawarkan berbagai dataset, cocok untuk berbagai tugas NLP, dan lebih. Untuk menggunakan dataset tersebut secara efektif, memahami proses memuat dan menganalisisnya sangat penting. Berikut adalah skrip Python yang dikomentari dengan baik yang menunjukkan cara menjelajahi dataset yang tersedia di Hugging Face:

from datasets import load_dataset
# Muat dataset
dataset = load_dataset('squad')
# Tampilkan entri pertama
print(dataset[0])

Skrip ini menggunakan fungsi load_dataset untuk memuat dataset SQuAD, yang merupakan pilihan populer untuk tugas pertanyaan menjawab.

Menggunakan Model Pra-Latih dan Menggabungkan Semua

Model pra-latih membentuk tulang punggung banyak proyek pembelajaran dalam, memungkinkan peneliti dan pengembang untuk memulai proyek mereka tanpa harus memulai dari awal. Hugging Face memfasilitasi eksplorasi berbagai model pra-latih, seperti yang ditunjukkan dalam kode berikut:

from transformers import AutoModelForQuestionAnswering, AutoTokenizer

# Muat model dan tokenizer pra-latih
model = AutoModelForQuestionAnswering.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
tokenizer = AutoTokenizer.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')

# Tampilkan arsitektur model
print(model)

Dengan model dan tokenizer dimuat, kita sekarang dapat melanjutkan untuk membuat fungsi yang mengambil teks dan pertanyaan sebagai input dan mengembalikan jawaban yang diekstrak dari teks. Kita akan menggunakan tokenizer untuk memproses input teks dan pertanyaan menjadi format yang kompatibel dengan model, lalu kita akan memberikan input yang diproses ini ke model untuk mendapatkan jawaban:


def get_jawaban(teks, pertanyaan):
# Tokenisasi input teks dan pertanyaan
inputs = tokenizer(pertanyaan, teks, return_tensors='pt', max_length=512, truncation=True)
outputs = model(**inputs)

# Dapatkan skor awal dan akhir untuk jawaban
jawaban_awal = torch.argmax(outputs.start_logits)
jawaban_akhir = torch.argmax(outputs.end_logits) + 1

jawaban = tokenizer.convert_tokens_to_string(tokenizer.convert_ids_to_tokens(inputs['input_ids'][0][jawaban_awal:jawaban_akhir]))
return jawaban

Dalam potongan kode, kita mengimpor modul yang diperlukan dari paket transformers, lalu memuat model dan tokenizer pra-latih menggunakan metode from_pretrained. Kita memilih model BERT yang telah dilatih ulang pada dataset SQuAD.

Mari kita lihat contoh kasus penggunaan fungsi ini di mana kita memiliki paragraf teks dan ingin mengekstrak jawaban spesifik untuk pertanyaan dari teks itu:


teks = """
Menara Eiffel, terletak di Paris, Perancis, adalah salah satu landmark paling ikonik di dunia. Ini dirancang oleh Gustave Eiffel dan selesai pada tahun 1889. Menara ini memiliki tinggi 324 meter dan merupakan struktur buatan manusia tertinggi di dunia pada saat selesainya.
"""

pertanyaan = "Siapa yang merancang Menara Eiffel?"

# Dapatkan jawaban pertanyaan
jawaban = get_jawaban(teks, pertanyaan)
print(f"Jawaban pertanyaan adalah: {jawaban}")
# Keluaran: Jawaban pertanyaan adalah: Gustave Eiffel

Dalam skrip ini, kita membangun fungsi get_jawaban yang mengambil teks dan pertanyaan, menokenisasi mereka dengan tepat, dan menggunakan model BERT pra-latih untuk mengekstrak jawaban dari teks. Ini menunjukkan aplikasi praktis dari perpustakaan transformer Hugging Face untuk membangun sistem pertanyaan menjawab yang sederhana namun kuat. Untuk memahami konsep-konsep ini dengan baik, disarankan untuk melakukan eksperimen tangan dengan menggunakan Google Colab Notebook.

Kesimpulan

Melalui berbagai alat sumber terbuka, model pra-latih, dan pipeline yang ramah pengguna, Hugging Face memungkinkan baik profesional berpengalaman maupun pemula untuk memasuki dunia AI dengan rasa mudah dan pemahaman. Lebih lagi, upaya untuk mengintegrasikan Rust, karena kecepatan dan fitur keamanannya, menunjukkan komitmen Hugging Face untuk memfasilitasi inovasi sambil memastikan efisiensi dan keamanan dalam aplikasi AI. Karya transformasional Hugging Face tidak hanya mendemokratisasi akses ke alat AI tingkat tinggi tetapi juga memupuk lingkungan kolaboratif untuk pembelajaran dan pengembangan di ruang AI, memfasilitasi masa depan di mana AI dapat diakses oleh semua orang.

Saya telah menghabiskan lima tahun terakhir dengan membenamkan diri dalam dunia Machine Learning dan Deep Learning yang menarik. Minat dan keahlian saya telah memimpin saya untuk berkontribusi pada lebih dari 50 proyek rekayasa perangkat lunak yang beragam, dengan fokus khusus pada AI/ML. Rasa ingin tahu saya yang terus-menerus juga telah menarik saya ke arah Natural Language Processing, sebuah bidang yang saya ingin jelajahi lebih lanjut.