- Artikel ini membahas penambahan sampling berbasis tata bahasa pada API baru di llama.cpp untuk mengarahkan dan membatasi proses generasi.
- API llama menerima struktur data yang merepresentasikan tata bahasa bebas konteks, yang memungkinkan sampling berdasarkan aturan tata bahasa.
- Kode sampling tata bahasa memodelkan automata pushdown nondeterministik dan mempertahankan beberapa stack untuk status parsing.
- Artikel ini memberikan contoh penggunaan API tata bahasa untuk berbagai skenario seperti catur, aritmetika, JSON, dan bahasa Jepang.
- Disebutkan pula potensi optimasi seperti mengompilasi tata bahasa menjadi tensor transisi status dan menjalankannya di GPU.
- Para kontributor mendiskusikan penambahan dukungan file tata bahasa, peningkatan parser tata bahasa, dan optimasi evaluasi token.
- Kegunaan kontribusi ini ditekankan, dan ada usulan untuk memisahkan API sampling menjadi modul terpisah.
- Proyek lain yang menggunakan pendekatan serupa untuk generasi berbasis tata bahasa, seperti lmql.ai dan jsonformer, juga disebutkan.
- Ada usulan untuk mereferensikan token penuh dari tata bahasa dan menyertakan parser dalam API llama.cpp agar kegunaannya meningkat.
- Para kontributor meninjau kode, memberikan umpan balik, mendiskusikan potensi perbaikan, dan berbagi pengalaman mereka terkait fitur tersebut.
- Seorang software engineer ikut berkontribusi pada proyek terkait sampling tata bahasa dan mengalami masalah pada ARM64+CUDA.
- Editor menyarankan bahwa masalah itu mungkin terkait kombinasi paket toolchain dan menawarkan bantuan.
- Ada pull request untuk menambahkan fungsi LocalAI, serta usulan agar proyek menggunakan sintaks BNF yang lebih standar.
- Pelanggaran terhadap tata bahasa dianggap sebagai hasil terburuk, dan backtracking diusulkan untuk pertimbangan di masa depan.
- Diskusi tentang implementasi EBNF dan format yang akan diikuti masih berlangsung.
- Dalam pembaruan terbaru, sampling dibatasi pada kecocokan token penuh, dan diusulkan perbaikan tambahan untuk menangani kasus saat token terpisah secara tidak semestinya.
- Perubahan pada proyek telah disetujui dan siap digabungkan, dan editor menantikan untuk bereksperimen dengan proyek yang telah diperbarui.
- Disebutkan pula masalah serupa yang sedang dikerjakan di proyek lain, dengan usulan pra-perhitungan distribusi token leksikal.
- Seorang software engineer menyatakan ketertarikannya pada pendekatan tersebut dan bersedia berbagi pendapat.
- Percakapan di GitHub berlanjut dengan banyak peserta.
1 komentar
Opini Hacker News