Menggunakan Llamafiles untuk Menyederhanakan Eksekusi LLM

Menggunakan Llamafiles untuk Menyederhanakan Eksekusi LLM

Node Sumber: 3068075

Pengantar

Menjalankan Model Bahasa Besar selalu menjadi proses yang membosankan. Kita harus mengunduh satu set perangkat lunak pihak ketiga untuk memuat LLM ini atau mengunduh Python dan menciptakan lingkungan dengan mengunduh banyak Perpustakaan Pytorch dan HuggingFace. Jika melalui Pendekatan Pythonic, seseorang harus melalui proses penulisan kode untuk mengunduh dan menjalankan model. Panduan ini akan membahas pendekatan yang lebih mudah untuk menjalankan LLM ini.

Tujuan Pembelajaran

  • Memahami tantangan pelaksanaan LLM tradisional
  • Pahami konsep inovatif Llamafiles
  • Belajar mengunduh dan menjalankan executable Llamafile Anda sendiri dengan mudah
  • Belajar membuat Llamfiles dari LLM terkuantisasi
  • Identifikasi keterbatasan pendekatan ini

Artikel ini diterbitkan sebagai bagian dari Blogathon Ilmu Data.

Daftar Isi

Masalah dengan Model Bahasa Besar

Model Bahasa Besar (LLM) telah merevolusi cara kita berinteraksi dengan komputer, menghasilkan teks, menerjemahkan bahasa, menulis berbagai jenis konten kreatif, dan bahkan menjawab pertanyaan Anda dengan cara yang informatif. Namun, menjalankan model canggih ini di komputer Anda sering kali merupakan tantangan.

Untuk menjalankan LLM, kita harus mengunduh Python dan banyak dependensi AI, dan terlebih lagi, kita bahkan harus menulis kode untuk mengunduh dan menjalankannya. Bahkan ketika menginstal UI siap pakai untuk Model Bahasa Besar, hal ini melibatkan banyak pengaturan, yang dapat dengan mudah menyebabkan kesalahan. Menginstal dan menjalankannya seperti file yang dapat dieksekusi bukanlah proses yang sederhana.

Apa itu Llamafile?

Llamafiles dibuat agar dapat bekerja dengan mudah dengan model bahasa besar sumber terbuka yang populer. Ini adalah file tunggal yang dapat dieksekusi. Ini seperti mengunduh LLM dan menjalankannya seperti file yang dapat dieksekusi. Tidak diperlukan instalasi awal perpustakaan. Ini semua dimungkinkan berkat llama.cpp dan libc kosmopolitan, yang membuat LLM berjalan di OS berbeda.

Llama.cpp dikembangkan oleh Georgi Gerganov untuk menjalankan Model Bahasa Besar dalam format terkuantisasi sehingga dapat dijalankan pada CPU. Llama.cpp adalah perpustakaan C yang memungkinkan kita menjalankan LLM terkuantisasi pada perangkat keras konsumen. Di sisi lain, libc kosmopolitan adalah perpustakaan C lain yang membangun biner yang dapat berjalan di OS apa pun (Windows, Mac, Ubuntu) tanpa memerlukan penerjemah. Jadi Llamafile dibangun di atas perpustakaan ini, yang memungkinkannya membuat LLM file tunggal yang dapat dieksekusi

Model yang tersedia dalam format terkuantisasi GGUF. GGUF adalah format file untuk Model Bahasa Besar yang dikembangkan oleh Georgi Gerganov, pencipta llama.cpp. GGUF adalah format untuk menyimpan, berbagi, dan memuat Model Bahasa Besar secara efektif dan efisien pada CPU dan GPU. GGUF menggunakan teknik kuantisasi untuk mengompresi model dari floating point 16-bit aslinya ke format integer 4-bit atau 8-bit. Bobot model terkuantisasi ini dapat disimpan dalam format GGUF ini

Hal ini mempermudah model 7 Miliar Parameter untuk dijalankan pada komputer dengan VRAM 16 GB. Kita dapat menjalankan Model Bahasa Besar tanpa memerlukan GPU (meskipun Llamafile bahkan memungkinkan kita menjalankan LLM pada GPU). Saat ini, file llama Model Bahasa Besar Sumber Terbuka yang populer seperti LlaVa, Mistral, dan WizardCoder sudah tersedia untuk diunduh dan dijalankan.

Eksekusi Satu Tembakan

Di bagian ini, kita akan mengunduh dan mencoba menjalankan file LlaVa Llama multimodal. Di sini, kami tidak akan bekerja dengan GPU dan menjalankan model di CPU. Buka Repositori GitHub Llamafile resmi dengan mengklik di sini dan mengunduh Model LlaVa 1.5.

Eksekusi satu tembakan | File Llama

Unduh Modelnya

Gambar di atas menunjukkan semua model yang tersedia beserta nama, ukuran, dan tautan unduhan. LlaVa 1.5 hanya berukuran sekitar 4GB dan merupakan multi-model tangguh yang dapat memahami gambar. Model yang diunduh adalah model 7 Miliar Parameter yang dikuantisasi menjadi 4-bit. Setelah mendownload model, buka folder tempat downloadnya.

"

Kemudian buka CMD, arahkan ke folder tempat download model ini, ketikkan nama file yang kita download, lalu tekan enter.

llava-v1.5-7b-q4.llamafile
"

Untuk Pengguna Mac dan Linux

Untuk Mac dan Linux, secara default, izin eksekusi untuk file ini tidak aktif. Oleh karena itu, kita harus memberikan izin eksekusi untuk file llama, yang dapat kita lakukan dengan menjalankan perintah di bawah ini.

chmod +x llava-v1.5-7b-q4.llamafile

Ini untuk mengaktifkan izin eksekusi untuk file llava-v1.5-7b-q4.llama. Tambahkan juga “./” sebelum nama file untuk menjalankan file di Mac dan Linux. Setelah Anda menekan kata kunci enter, model akan didorong ke RAM sistem dan menampilkan output berikut.

Untuk Pengguna Mac dan Linux | File Llama

Kemudian browser akan muncul dan model akan berjalan pada URL http://127.0.0.1:8080/

"
"

Gambar di atas menunjukkan Prompt default, Nama Pengguna, Nama LLM, Templat Prompt, dan Templat Riwayat Obrolan. Ini dapat dikonfigurasi, tetapi untuk saat ini, kami akan menggunakan nilai default.

Di bawah ini, kita bahkan dapat memeriksa hyperparameter LLM yang dapat dikonfigurasi seperti Top P, Top K, Temperature, dan lainnya. Bahkan ini pun, kami akan membiarkannya menjadi default untuk saat ini. Sekarang mari kita ketik sesuatu dan klik kirim.

"

Pada gambar di atas, kita dapat melihat bahwa kita telah mengetik pesan dan bahkan menerima balasan. Di bawahnya, kita dapat memeriksa bahwa kita mendapatkan sekitar 6 token per detik, yang merupakan token/detik yang bagus mengingat kita menjalankannya sepenuhnya pada CPU. Kali ini, mari kita coba dengan sebuah Gambar.

CPU | Llama Kecil

Meskipun tidak 100% benar, model tersebut hampir bisa mendapatkan sebagian besar hal dengan benar dari Gambar. Sekarang mari kita melakukan percakapan multi-putaran dengan LlaVa untuk menguji apakah ia mengingat riwayat obrolan.

Pada gambar di atas terlihat bahwa LlaVa LLM mampu mengikuti obrolan dengan baik. Ini bisa mencakup percakapan sejarah dan kemudian menghasilkan tanggapan. Meskipun jawaban terakhir yang dihasilkan tidak sepenuhnya benar, jawaban sebelumnya dikumpulkan untuk menghasilkannya. Jadi dengan cara ini, kita dapat mengunduh file llama dan menjalankannya seperti perangkat lunak dan bekerja dengan model yang diunduh tersebut.

Membuat Llamafile

Kami telah melihat demo Llamafile yang sudah ada di GitHub resmi. Seringkali kita tidak ingin bekerja dengan model ini. Sebagai gantinya, kami ingin membuat file tunggal yang dapat dieksekusi dari Model Bahasa Besar kami. Pada bagian ini, kita akan melalui proses pembuatan file tunggal yang dapat dieksekusi, yaitu file llama dari LLM terkuantisasi.

Pilih LLM

Pertama-tama kita akan mulai dengan memilih Model Bahasa Besar. Untuk demo ini, kami akan memilih versi TinyLlama yang terkuantisasi. Di sini, kita akan mengunduh model TinyLlama terkuantisasi 8-bit (Anda dapat mengklik di sini untuk membuka HuggingFace dan mengunduh Model)

Llama Kecil

Download Llamafile Terbaru

Zip llamafile terbaru dari tautan resmi GitHub dapat diunduh. Juga, unduh zip dan ekstrak file zip. Versi artikel ini saat ini adalah file llama-0.6. Setelah di ekstrak llama maka folder bin dengan folder file akan berisi file seperti gambar di bawah ini.

"

Sekarang pindahkan model terkuantisasi TinyLlama 8-bit yang diunduh ke folder bin ini. Untuk membuat file tunggal yang dapat dieksekusi, kita perlu membuat file .args di folder bin llamafile. Ke file ini, kita perlu menambahkan konten berikut:

-m
tinyllama-1.1b-chat-v0.3.Q8_0.gguf
--host
0.0.0.0
...
  • Baris pertama menunjukkan bendera -m. Ini memberi tahu llamafile bahwa kita sedang memuat bobot model.
  • Di baris kedua, kita tentukan nama model yang telah kita unduh, yang ada di direktori yang sama dengan file .args, yaitu folder bin dari llamafile.
  • Di baris ketiga, kami menambahkan tanda host, yang menunjukkan bahwa kami menjalankan file yang dapat dieksekusi dan ingin menghostingnya ke server web.
  • Terakhir, di baris terakhir, kami menyebutkan alamat tempat kami ingin menghosting, yang dipetakan ke localhost. Diikuti dengan tiga titik, yang menentukan bahwa kita dapat meneruskan argumen ke file llama setelah dibuat.
  • Tambahkan baris ini ke file .args dan simpan.

Untuk Pengguna Windows

Sekarang, langkah selanjutnya adalah untuk pengguna Windows. Jika bekerja di Windows, kami harus menginstal Linux melalui WSL. Jika tidak, klik di sini untuk melalui langkah-langkah menginstal Linux melalui WSL. Di Mac dan Linux, tidak diperlukan langkah tambahan. Sekarang buka folder bin dari folder llamafile di terminal (jika bekerja pada Windows, buka direktori ini di WSL) dan ketik perintah berikut.

cp llamafile tinyllama-1.1b-chat-v0.3.Q8_0.llamafile

Di sini, kami membuat file baru bernama tinyllama-1.1b-chat-v0.3.Q3_0.llamafile; yaitu kita membuat file dengan ekstensi .llamafile dan memindahkan file llamafile ke dalam file baru ini. Sekarang, setelah ini, kita akan mengetikkan perintah berikutnya.

./zipalign -j0 tinyllama-1.1b-chat-v0.3.Q8_0.llamafile tinyllama-1.1b-chat-v0.3.Q8_0.gguf .args

Di sini kami bekerja dengan file zipalign yang datang saat kami mengunduh zip llamafile dari GitHub. Kami bekerja dengan perintah ini untuk membuat file llama untuk TinyLlama kami yang terkuantisasi. Untuk perintah zipalign ini, kita meneruskan file tinyllama-1.1b-chat-v0.3.Q8_0.llama yang telah kita buat pada langkah sebelumnya, kemudian kita meneruskan file tinyllama-1.1b-chat-v0.3.Q8_0.llama model yang kita punya di folder bin dan terakhir pass di file .args yang sudah kita buat tadi.

Ini akhirnya akan menghasilkan file tunggal tinyllama-1.1b-chat-v0.3.Q8_0.llamafile yang dapat dieksekusi. Untuk memastikan kita berada di halaman yang sama, folder bin sekarang berisi file-file berikut.

File yang dapat dieksekusi | File Llama

Sekarang, kita dapat menjalankan file tinyllama-1.1b-chat-v0.3.Q8_0.llama dengan cara yang sama seperti yang kita lakukan sebelumnya. Di Windows, Anda bahkan dapat mengganti nama file .llama menjadi .exe dan menjalankannya dengan mengklik dua kali.

Server yang Kompatibel dengan OpenAI

Bagian ini akan membahas cara server LLM melalui Llamfile. Kami memperhatikan bahwa ketika kami menjalankan file llama, browser terbuka, dan kami dapat berinteraksi dengan LLM melalui WebUI. Pada dasarnya inilah yang kami sebut sebagai hosting Model Bahasa Besar.

Setelah kita menjalankan Llamafile, kita dapat berinteraksi dengan LLM masing-masing sebagai titik akhir karena model disajikan di host lokal di PORT 8080. Server mengikuti Protokol API OpenAI, yaitu mirip dengan Titik Akhir GPT OpenAI, sehingga membuat mudah untuk beralih antara model OpenAI GPT dan LLM yang berjalan dengan Llamafile.

Di sini, kita akan menjalankan file llama TinyLlama yang dibuat sebelumnya. Sekarang, ini harus berjalan di localhost 8080. Sekarang kita akan mengujinya melalui OpenAI API itu sendiri dengan Python

from openai import OpenAI
client = OpenAI(
    base_url="http://localhost:8080/v1", 
    api_key = "sk-no-key-required"
)
completion = client.chat.completions.create(
    model="TinyLlama",
    messages=[
        {"role": "system", "content": "You are a usefull AI 
        Assistant who helps answering user questions"},
        {"role": "user", "content": "Distance between earth to moon?"}
    ]
)
print(completion.choices[0].message.content)
  • Di sini, kami bekerja dengan perpustakaan OpenAI. Namun alih-alih menentukan titik akhir OpenAI, kami menentukan URL tempat TinyLlama kami dihosting dan memberikan “sk-tidak–diperlukan token” untuk api_key
  • Kemudian, klien akan terhubung ke titik akhir TinyLlama kami
  • Sekarang, mirip dengan cara kita bekerja dengan OpenAI, kita dapat menggunakan kode tersebut untuk mengobrol dengan TinyLlama kita.
  • Untuk ini, kami bekerja sama dengan penyelesaian kelas OpenAI. Kami membuat yang baru penyelesaian pada pengatur terkenal. Pengatur ini menawarkan bantuan hukum kepada traderapabila trader berselisih dengan broker yang terdaftar dengan mereka. .membuat() objek dan meneruskan detail seperti nama model dan pesannya.
  • Pesannya berupa daftar kamus, di mana kita punya peran, bisa sistem, pengguna, atau asisten, dan kita punya isinya.
  • Terakhir, kita dapat mengambil informasi yang dihasilkan melalui pernyataan print di atas.

Output di atas dapat dilihat di bawah ini.

File Llama | Keluaran

Dengan cara ini, kita dapat memanfaatkan file llama dan mengganti OpenAI API dengan mudah dengan file llama yang kita pilih untuk dijalankan.

Batasan Llamafiles

Meskipun revolusioner, llamafile masih dalam pengembangan. Beberapa batasannya antara lain:

  • Pilihan model terbatas: Saat ini, tidak semua LLM tersedia dalam bentuk llamafiles. Pilihan Llamafile siap pakai saat ini masih terus bertambah. Saat ini, Llamafiles tersedia untuk Llama 2, LlaVa, Mistral, dan Wizard Coder.
  • Persyaratan perangkat keras: Menjalankan LLM, bahkan melalui Llamafiles, masih memerlukan banyak sumber daya komputasi. Meskipun metode ini lebih mudah dijalankan dibandingkan metode tradisional, komputer yang lebih tua atau kurang bertenaga mungkin memerlukan bantuan untuk menjalankannya dengan lancar.
  • Perhatian pada keamanan: Mengunduh dan menjalankan executable dari sumber yang tidak tepercaya memiliki risiko yang melekat. Jadi harus ada platform terpercaya tempat kita bisa mendownload file llama ini.

Llamafiles vs Lainnya

Sebelum Llamafiles, ada berbagai cara untuk menjalankan Model Bahasa Besar. Salah satunya adalah melalui llama_cpp_python. Ini adalah llama.cpp versi Python yang memungkinkan kita menjalankan Model Bahasa Besar terkuantisasi pada perangkat keras konsumen seperti Laptop dan PC Desktop. Namun untuk menjalankannya, kita harus mendownload dan menginstal Python dan bahkan perpustakaan deep learning seperti torch, huggingface, transformer, dan masih banyak lagi. Dan setelah itu, melibatkan penulisan banyak baris kode untuk menjalankan model.

Meski begitu, terkadang, kita mungkin menghadapi masalah karena masalah ketergantungan (yaitu, beberapa perpustakaan memiliki versi yang lebih rendah atau lebih tinggi dari yang diperlukan). Dan ada juga CTransformer perpustakaan yang memungkinkan kita menjalankan LLM terkuantisasi. Bahkan ini memerlukan proses yang sama seperti yang telah kita bahas untuk llama_cpp_python

Dan kemudian, ada Ollama. Ollama sangat sukses dalam komunitas AI karena kemudahan penggunaannya untuk memuat dan menjalankan Model Bahasa Besar dengan mudah, terutama yang terkuantisasi. Ollama adalah sejenis TUI (Terminal User Interface) untuk LLM. Satu-satunya perbedaan antara Ollama dan Llamafile adalah kemampuan berbagi. Artinya, jika mau, maka saya dapat membagikan file model.llama saya kepada siapa pun dan mereka dapat menjalankannya tanpa mengunduh perangkat lunak tambahan apa pun. Namun dalam kasus Ollama, saya perlu membagikan file model.gguf, yang hanya dapat dijalankan oleh orang lain ketika mereka menginstal perangkat lunak Ollama atau melalui pustaka Python di atas.

Mengenai sumber daya, semuanya memerlukan jumlah sumber daya yang sama karena semua metode ini menggunakan llama.cpp di bawahnya untuk menjalankan model terkuantisasi. Ini hanya tentang kemudahan penggunaan dimana terdapat perbedaan di antara keduanya.

Kesimpulan

Llamafiles menandai langkah maju yang penting dalam membuat LLM mudah dijalankan. Kemudahan penggunaan dan portabilitasnya membuka banyak kemungkinan bagi pengembang, peneliti, dan pengguna biasa. Meskipun terdapat keterbatasan, potensi llamafile untuk mendemokratisasi akses LLM terlihat jelas. Apakah Anda seorang pengembang ahli atau pemula yang penasaran, Llamafiles membuka kemungkinan menarik untuk menjelajahi dunia LLM. Dalam panduan ini, kami telah melihat cara mengunduh Llamafiles dan bahkan cara membuat Llamafiles kami sendiri dengan model terkuantisasi kami . Kami bahkan telah melihat server yang kompatibel dengan OpenAI yang dibuat saat menjalankan Llamafiles.

Pengambilan Kunci

  • Llamafile adalah file tunggal yang dapat dieksekusi yang membuat menjalankan model bahasa besar (LLM) lebih mudah dan lebih mudah tersedia.
  • Mereka menghilangkan kebutuhan akan pengaturan dan konfigurasi yang rumit, memungkinkan pengguna mengunduh dan menjalankan LLM secara langsung tanpa persyaratan Python atau GPU.
  • Llamafiles saat ini tersedia untuk pilihan LLM sumber terbuka terbatas, termasuk LlaVa, Mistral, dan WizardCoder.
  • Meskipun nyaman, Llamafiles masih memiliki keterbatasan, seperti persyaratan perangkat keras dan masalah keamanan yang terkait dengan pengunduhan file executable dari sumber yang tidak tepercaya.
  • Terlepas dari keterbatasan ini, Llamafiles mewakili langkah penting menuju demokratisasi akses LLM bagi pengembang, peneliti, dan bahkan pengguna biasa.

Tanya Jawab Umum (FAQ)

Q1. Apa keuntungan menggunakan Llamafiles?

A. Llamafiles memberikan beberapa keunggulan dibandingkan metode konfigurasi LLM tradisional. Mereka membuat LLM lebih mudah dan cepat untuk diatur dan dijalankan karena Anda tidak perlu menginstal Python atau memiliki GPU. Hal ini membuat LLM lebih mudah tersedia untuk khalayak yang lebih luas. Selain itu, Llamafiles dapat dijalankan di berbagai sistem operasi.

Q2. Apa batasan Llamafiles?

J. Meskipun Llamafile memberikan banyak manfaat, mereka juga memiliki beberapa keterbatasan. Pilihan LLM yang tersedia di Llamafiles terbatas dibandingkan dengan metode tradisional. Selain itu, menjalankan LLM melalui Llamafiles masih memerlukan sumber daya perangkat keras yang cukup banyak, dan komputer yang lebih lama atau kurang bertenaga mungkin tidak mendukungnya. Terakhir, masalah keamanan terkait dengan pengunduhan dan menjalankan file executable dari sumber yang tidak tepercaya.

Q3. Bagaimana cara memulai dengan Llamafiles?

A. Untuk memulai dengan Llamafiles, Anda dapat mengunjungi Repositori GitHub resmi Llamafile. Di sana, Anda dapat mendownload Llamafile untuk model LLM yang ingin Anda gunakan. Setelah Anda mengunduh file, Anda dapat menjalankannya langsung seperti file yang dapat dieksekusi.

Q4. Bisakah saya menggunakan model LLM saya sendiri dengan Llamafiles?

J. Tidak. Saat ini, Llamafiles hanya mendukung model pre-built tertentu. Pembuatan Llamafiles kami sendiri direncanakan untuk versi mendatang.

Q5. Bagaimana prospek Llamafiles?

A. Pengembang Llamafiles berupaya memperluas pilihan model LLM yang tersedia, menjalankannya dengan lebih efisien, dan menerapkan langkah-langkah keamanan. Kemajuan ini bertujuan untuk membuat Llamafiles lebih tersedia dan aman bagi lebih banyak orang yang memiliki sedikit latar belakang teknis.

Media yang ditampilkan dalam artikel ini bukan milik Analytics Vidhya dan digunakan atas kebijaksanaan Penulis.

Stempel Waktu:

Lebih dari Analisis Vidhya