Terjemahan mesin · Versi asli bahasa Inggris
GLINER: pengambilan keputusan lokal dan ekstraksi entitas
Preview pengembangan. Bobot yang diterbitkan di Hugging Face; modul Swift sedang diulas dan belum dalam rilis speech-swift.
Modul GLINER berjalan GLiNER2.5-Decide in MLX Swift. Berikan teks dan daftar label diperbolehkan untuk memperoleh skor klasifikasi, atau meminta entitas spans seperti orang dan waktu.
Bagaimana cara kerjanya
Sebuah Enkoder DeBerTa membaca teks dan skema bersama-sama. Kepala klasifikasi mencetak label Anda. kepala Entity mengidentifikasi spas dari kalimat asli. Waktu-waktu berjalan tidak menghasilkan sebuah JSON respon tanda dengan token.
import GLiNER
let model = try await GLiNER.fromPretrained()
let choices = try model.classify(
"Remind me to call Dad at six PM.",
labels: ["create_reminder", "send_message", "other"]
)
let spans = try model.extractEntities(
"Remind me to call Dad at six PM.",
labels: ["person", "time"]
)
♪ Weights ♪
Tiga konversi MLX dari revisi upstream yang disematkan 7ee5da4c dipublikasikan di Hugging Face. Waktu berjalan mengunduh varian yang dipilih pada penggunaan pertama dan menggunakan cache lokal sesudahnya; tidak ada Python yang terlibat.
| Varian | Repositori | ♪ Weights ♪ | Routing | Ekstraksi | Puncak memori |
|---|---|---|---|---|---|
int8 (bawaan) | aufklarer / GLiNER2.5-Decide-340M-MLX-8bit | 567 MB | 7.6 md | 8,9 md | 0.85 GB |
fp16 | aufklarer / GLiNER2.5-Decide-340M-MLX-fp16 | 973 MB | 8,8 md | 10,0 md | 1.58 GB |
fp32 | aufklarer / GLiNER2.5-Decide-340M-MLX | 1.95 GB | 11.1 md | 12.6 md | 2.55 GB |
Apple M5 Pro, mesin menganggur: permintaan penuh median termasuk tokinisasi, dan puncak proses memori. Ketiga varian mengembalikan label yang sama, spans dan offset sebagai model PyTorch di hulu 24 referensi kasus, dengan keyakinan dalam 0.006.
Baris perintah
The speech CLI mengekspos kedua tugas sebagai speech gliner classify dan speech gliner extract. Pass label sebagai comma- dipisahkan daftar dan ulangi --description label=text Abaikan teks untuk membacanya dari stdin. --variant memilih int8 (bawaan), fp16 atau fp32, dan --model-dir memuat sebuah bundle lokal daripada mengunduh. Argumen tidak valid ditolak sebelum beban model. Dengan --json, keluaran mencakup setiap kemungkinan label, atau spans dengan UTF-16 offset, ditambah beban dan waktu inference.
swift build -c release --product speech --disable-sandbox
scripts/build_mlx_metallib.sh release
.build/release/speech gliner classify "Remind me to call Dad at six PM." \
--labels create_reminder,send_message,set_timer,other
.build/release/speech gliner extract "Remind me to call Dad at six PM." \
--labels person,time --json
The Model kartu untuk agen adalah berkas Markdown yang memuat hasil yang tepat API, ruas keluaran dan hasil yang diverifikasi.
Akurasi pada set perintah kecil
Enam belas contoh routing tulisan tangan cocok dengan harapan dalam 12 kasus; delapan contoh ekstraksi cocok dalam 7 Kasus. Swift Port mereproduksi model PyTorch di hulu 24 kasus referensi: ID token identik, label dan spans, dengan skor dalam 0.001Ini set kecil memeriksa perilaku dan kesetiaan; mereka bukan benchmark akurasi yang luas.
Scope dan keterbatasan
- Klasifikasi nama tunggal dan entitas spam; hingga 512 token berkode per permintaan.
- Span / count _ lstm titik pemeriksaan dengan berbagi perhatian relatif, dalam FP32, FP16 atau INT8Model batas, grafik hubungan dan kendala bersama bukan bagian dari awal ini API.
- Entitas offset memakai UTF-16, pencocokan NSRange. Tanggal dan waktu memerlukan normalisasi terpisah.
- Nilai tidak menjamin bahwa suatu keputusan benar. Tidak ada alat yang dijalankan oleh modul.
- Model ukuran download, memori proses, dan unified- memori jejak fisik yang berbeda pengukuran.
Presisi dan memori
FP16 Setengah penyimpanan berat ke 973 MB. INT8 kuantisasi matriks penyandi dan tanda penggelapan 8 bit dalam grup 64, dengan kepala, normalisasi dan aktivasi di FP16, untuk 567 Berkas MB. Waktu jalan terus INT8 matriks dikemas dan decode hanya embedding baris penggunaan permintaan.
Enkoder yang relative- posisi proyeksi hanya bergantung pada bobot, sehingga mereka dihitung sekali di beban bukan pada setiap permintaan. Pilihan GLiNER.load(from:evaluateLayers:) mode dimaterialisasikan lapisan enkoder satu pada satu waktu untuk puncak alokasi lebih rendah.