Hugging Face adalah ekosistem yang memuat bobot pretrained, tokenizer, dan datanya dalam satu antarmuka, sehingga mengonsumsi model transformer tidak lagi menuntut pelatihan sendiri. Topik ini menjelaskan struktur model hub-nya, menjalankan tokenizer sungguhan, dan menetapkan alur standar memuat model beserta pemeriksaan yang menyertainya. Setelah selesai, pustaka transformers berhenti menjadi kotak hitam yang dipanggil dari contoh dan menjadi alat yang strukturnya dipahami.
Hub dan tiga artefak yang berpasangan#
Model hub menyimpan model dalam bentuk repository yang memuat tiga artefak yang saling terkait. Bobotnya disimpan dalam format safetensors atau PyTorch, konfigurasinya menyatakan arsitektur dan ukuran layer, dan tokenizer-nya menyatakan cara teks diubah menjadi token beserta kosakatanya. Kepentingan tiga artefak berpasangan ini muncul saat pemilihan, karena model bahasa tanpa tokenizer-nya tidak dapat dipakai dengan benar, dan memakai tokenizer yang salah pada model tertentu menghasilkan prediksi yang tampak wajar tetapi salah total.
Antarmuka kelasnya mengikuti arsitektur. Kelas AutoTokenizer dan AutoModel* membaca konfigurasi repository lalu memuat kelas yang tepat secara otomatis, sehingga pergantian model hanya mengganti nama repository pada string yang sama. Konvensi penamaan yang dipakai ekosistem memisahkan keluarga model dari varian tugasnya, misalnya AutoModel yang mengembalikan tubuh transformer dan AutoModelForSequenceClassification yang menambahkan head klasifikasi di atasnya.
Tokenizer sungguhan#
Tokenizers adalah tahap pertama setiap alur, dan peragaannya dapat dijalankan penuh karena hanya mengunduh berkas kosakata yang kecil. Kode berikut memuat tokenizer BERT dan membedah satu kalimat Indonesia yang ditransliterasi, sehingga pemotongan kata menjadi subword terlihat pada token-tokennya.
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
hasil = tokenizer("machine learning menyusun embedding", return_tensors="pt")
token = tokenizer.convert_ids_to_tokens(hasil["input_ids"][0])
print("input_ids :", hasil["input_ids"][0].tolist())
print("token :", token)
print("attention_mask:", hasil["attention_mask"][0].tolist())input_ids : [101, 3698, 4083, 2273, 10513, 19729, 7861, 8270, 4667, 102]
token : ['[CLS]', 'machine', 'learning', 'men', '##yu', '##sun', 'em', '##bed', '##ding', '[SEP]']
attention_mask: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]Pembacaan keluarannya menunjukkan tiga hal sekaligus. Token [CLS] dan [SEP] dibungkus otomatis karena konvensi BERT, kata bahasa Indonesia dipecah menjadi potongan subword yang beberapa di antaranya berawalan ## yang menandai kelanjutan kata, dan attention_mask menyatakan posisi mana yang berisi token sungguhan sehingga topeng dari topik Data sekuens disediakan otomatis. Bentuk return_tensors="pt" menyiapkan semuanya sebagai tensor PyTorch yang langsung bisa diteruskan ke model.
Memuat model dan alur standar#
Alur standar pemakaian model pretrained berurutan, yaitu muat tokenizer dan model dari repository yang sama, susun masukan lewat tokenizer, teruskan ke model dalam mode eval dan tanpa gradien, lalu olah keluarannya sesuai kelas model. Kode berikut menunjukkan alur penuh pada model kecil tanpa mengunduh bobot besar, dengan menampilkan struktur keluaran dari AutoModel pada tensor acak yang dikonstruksi sendiri.
import torch
from transformers import AutoConfig, AutoModel
config = AutoConfig.from_pretrained("bert-base-uncased")
config.hidden_size, config.num_hidden_layers, config.num_attention_heads = 32, 2, 4
model = AutoModel.from_config(config)
model.eval()
x = torch.randint(0, config.vocab_size, (1, 6))
with torch.no_grad():
keluar = model(input_ids=x)
print("tipe keluaran:", type(keluar).__name__)
print("bentuk last_hidden_state:", tuple(keluar.last_hidden_state.shape))tipe keluaran: BaseModelOutputWithPoolingAndCrossAttentions
bentuk last_hidden_state: (1, 6, 32)Keluaran AutoModel adalah objek yang menampung last_hidden_state berbentuk batch, panjang, dan dimensi, yaitu representasi tiap token yang siap disambungkan ke head apa pun. Konstruksi lewat from_config pada contoh ini sengaja mengecilkan model agar keluarannya dapat direproduksi tanpa unduhan, sedangkan pada pemakaian nyata, AutoModel.from_pretrained mengganti baris itu sekaligus mengambil bobot pretrained-nya.
Pipeline dan batas sandbox#
Untuk pemakaian cepat, ekosistem menyediakan pipeline yang menggabungkan tokenizer, model, dan post-processing dalam satu panggilan, dan contoh klasiknya adalah analisis sentimen:
# tidak-dijalankan
from transformers import pipeline
pengklasifikasi = pipeline("sentiment-analysis")
print(pengklasifikasi("I love this library!"))Blok di atas tidak dijalankan pada penulisan jalur ini karena pipeline mengunduh bobot model berukuran ratusan megabita dari hub pada panggilan pertama, dan pengunduhan tersebut melebihi batas eksekusi blok pada sandbox ini. Bentuk keluaran yang diharapkan dari panggilan itu berupa daftar berisi label POSITIVE beserta skornya, dan bentuk tersebut terdokumentasi pada tutorial resmi yang dirujuk di bawah. Aturan praktis yang menyertainya tetap sama dengan topik Paradigma pretraining, yaitu periksa lisensi repository sebelum dipakai, dan catat nama repository yang dipakai pada catatan eksperimen agar hasilnya dapat direproduksi.
Ringkasan#
- Repository Hugging Face memuat tiga artefak berpasangan, yaitu bobot, konfigurasi, dan tokenizer, dan semuanya harus berasal dari pasangan yang sama.
- Tokenizer subword memecah kata menjadi potongan dengan topeng attention yang siap pakai, dan pemanggilannya dapat dijalankan penuh pada sandbox.
- Alur standarnya adalah muat berpasangan, tokenisasi, forward dalam mode eval tanpa gradien, lalu olah keluaran sesuai kelas model.
pipelinemenggabungkan seluruh tahap dengan harga unduhan bobot penuh, sehingga bloknya ditandai tidak-dijalankan pada sandbox ini.
Referensi#
- Transformers documentation — Hugging Face — Dokumentasi resmi pustaka beserta kelas AutoModel dan pipeline.
- Pipelines — Hugging Face — Dokumentasi pipeline yang memuat contoh sentiment-analysis dan bentuk keluarannya.
- Preprocessing data — Hugging Face — Panduan tokenizer, padding, dan truncation yang menjadi konvensi ekosistem.