1 poin oleh GN⁺ 2024-10-12 | 1 komentar | Bagikan ke WhatsApp

lm.rs: Menjalankan inferensi model bahasa lokal di CPU dengan Rust

  • Pengenalan

    • lm.rs adalah proyek yang memungkinkan inferensi model bahasa dijalankan di CPU menggunakan Rust.
    • Terinspirasi oleh llama2.c dan llm.c karya Karpathy, proyek ini dirancang agar model bahasa dapat dijalankan dengan kode seminimal mungkin tanpa library ML.
    • Awalnya hanya mendukung model Gemma 2 dari Google, tetapi kini juga mendukung model Llama 3.2 dan model gambar PHI-3.5.
  • Model yang disiapkan

    • Menyediakan benchmark untuk berbagai model dan tokenizer serta tautan unduhan.
    • Disarankan menggunakan model terkuantisasi Q8_0 dan Q4_0.
    • Kecepatan diukur pada AMD Epyc 16-core.
  • Konversi model

    • Model dari Google/Meta dapat dikonversi ke format lmrs.
    • Setelah memasang dependensi Python, model dan tokenizer dapat dikonversi menggunakan skrip export.py dan tokenizer.py.
  • Build

    • Kode Rust dapat dikompilasi dan dijalankan dengan cargo.
    • Untuk mengaktifkan fitur multimodal, perlu menyertakan fitur multimodal.
  • TODOs

    • Menambahkan metode sampling.
    • Menguji model 9B dan 27B.
    • Memparelkan loop multi-head attention.
    • Menambahkan metrik performa.
    • Menambahkan fitur penyediaan system prompt.
    • Dukungan kuantisasi (int8, int4).

# Ringkasan GN⁺

  • lm.rs menawarkan cara efisien untuk menjalankan model bahasa di CPU dengan Rust. Ini dapat dilakukan tanpa library ML sehingga berguna di lingkungan yang ringan.
  • Cocok bahkan untuk pengembang yang baru menggunakan Rust, serta mendukung beragam model sehingga memiliki skalabilitas tinggi.
  • Dukungan untuk model multimodal seperti PHI-3.5 juga mencakup kemampuan pemrosesan gambar.
  • Proyek dengan fungsi serupa antara lain library Transformers dari Hugging Face.

1 komentar

 
GN⁺ 2024-10-12
Komentar Hacker News
  • Saat menjalankan 1.2G llama3.2-1b-it-q80.lmrs di MacBook M2 64GB, kinerjanya cepat, dan penggunaan CPU mencapai 1000% di 13 thread
  • Tampaknya berguna untuk menjelaskan cara kerja Transformer melalui contoh kode
    • Perlu ditingkatkan agar library tidak mencetak ke stdout
    • Ada pertanyaan apakah ini bisa diimplementasikan tanpa unsafe
  • Berbagai tool Rust dapat digunakan untuk memuat model dan menangani tugas LLM lainnya
    • Ini dapat membantu mengurangi ketergantungan pada Python
    • Penasaran apakah ada rencana dukungan grammar
  • Judulnya kurang jelas
    • Ungkapan "no dependency" bisa menimbulkan salah paham
  • Pernah melakukan pekerjaan serupa di masa lalu, tetapi performanya tidak memuaskan
    • Diperlukan benchmark untuk implementasi Rust ini
    • Implementasi inferensi LLM bisa menjadi "hello world!" baru bagi para programmer
  • Dukungan Metal/Cuda itu wajib
  • Sangat menghargai antusiasme komunitas Rust
  • Penasaran apakah semua implementasi ini bergantung sepenuhnya pada CPU
  • Perlu perbandingan dengan proyek lain
    • Jika mendukung model vision, saya bersedia mencobanya