Aplikasi membaca kecepatan token untuk AI lokal | Ollama, llmaa.cp dll
Gambar respon ari aplikasi penghitung kecepatan token "tokenku.py"
Penjelasan Fungsi Kode Program tokenku.py
Kode program ini adalah sebuah skrip Python yang berinteraksi dengan model bahasa (LLM - Large Language Model) bernama "llama3.2:3b" melalui API untuk menghasilkan respons berdasarkan prompt yang diberikan.
Fungsi Utama:
- Mengirim Prompt ke Model Bahasa:
- Program mengirim pertanyaan "jelaskan apa itu modem?" ke model bahasa yang berjalan di server lokal (http://192.168.0.116:11434)
- Menggunakan model khusus "llama3.2:3b" (kemungkinan versi ringan dari model LLaMA 3 dengan 3 miliar parameter)
- Program mengirim pertanyaan "jelaskan apa itu modem?" ke model bahasa yang berjalan di server lokal (http://192.168.0.116:11434)
- Mengelola Respons Stream:
- Program menerima respons dari model secara streaming (berkelanjutan)
- Setiap potongan (chunk) respons diproses dan ditampilkan segera ke layar
- Program menerima respons dari model secara streaming (berkelanjutan)
- Menghitung dan Menganalisis Performa:
- Menghitung total token yang dihasilkan
- Mengukur waktu eksekusi
- Menghitung kecepatan generasi token per detik
- Menghitung total token yang dihasilkan
Alur Kerja Program:
1. Inisialisasi:
prompt = "jelaskan apa itu modem?"
data = { "model": "llama3.2:3b", "prompt": prompt, "stream": True }
Menyiapkan prompt dan konfigurasi permintaan API
2. Permintaan ke API:
with requests.post(url, json=data, stream=True) as response:
- Mengirim permintaan POST ke endpoint API dengan data JSON
- stream=True memungkinkan penerimaan respons secara bertahap
3. Proses Streaming Respons:
for line in response.iter_lines(): decoded = json.loads(line) if 'response' in decoded: token_count += 1 print(decoded['response'], end='', flush=True)
- Setiap baris respons di-decode dari JSON
- Jika mengandung field 'response', konten ditampilkan dan token dihitung
Analisis Performa:
print("\n\nSummary:") print(f"Total tokens generated: {token_count}") print(f"Elapsed time: {elapsed:.2f} seconds") print(f"Tokens per second: {token_count / elapsed:.2f}")
- Menampilkan statistik performa generasi teks
Output yang Dihasilkan:
- Teks penjelasan tentang modem yang dihasilkan model bahasa
- Ringkasan performa yang mencakup:
- Total token yang dihasilkan
- Waktu yang dibutuhkan
- Kecepatan generasi token per detik
penjelasan visual cara kerja program tokenku.py dalam bentuk diagram alur:
Penjelasan Gambar:
- Langkah 1: Program menyiapkan permintaan dengan:
- Model: llama3.2:3b
- Prompt: "jelaskan apa itu modem?"
- Mode: streaming (true)
- Langkah 2: Mengirim permintaan POST ke server API lokal (192.168.0.116:11434) dengan data JSON
- Langkah 3: Server mengirim respons secara streaming (potongan kecil JSON):
{"response": "Modem", "done": false} {"response": " adalah", "done": false} ...
- Langkah 4: Program memproses setiap chunk dengan:
- Menghitung token
- Menampilkan teks secara real-time
- Merekam waktu mulai/selesai
- Output Akhir:
- Teks penjelasan lengkap
- Statistik performa generasi
Analogi Sederhana seperti memesan kopi di kedai:
- Anda beri pesanan (prompt)
- Barista (server) mulai membuat kopi (proses generasi)
- Anda terima kopi per tetes (streaming respons)
- Terakhir dapat laporan: total tetes, waktu pembuatan, kecepatan tetes/detik
Contoh Penggunaan program ini cocok untuk:
- Menguji model bahasa lokal
- Mengevaluasi kecepatan generasi teks
- Eksperimen dengan prompt sederhana
- Memahami cara kerja API model bahasa berbasis streaming
Download aplikasi pembaca kecepatan token AI Offline | Ollama dll | Pilih salah satu dari GITHUB
Kode saat ini untuk keperluan pemantauan dasar, tetapi tidak menggantikan penghitungan token yang sebenarnya sehingga tidak cocok jika Anda membutuhkan presisi tinggi.
Proses penghitungan token di kode program ini:
Cara Kerja Penghitungan Token
- Metode Penghitungan: Kode menghitung setiap potongan (chunk) respons yang diterima dari API sebagai 1 token. Ini dilakukan dengan:
- Memeriksa apakah ada kunci 'response' dalam JSON yang diterima
- Menambahkan 1 ke token_count setiap kali ada respons baru
- Memeriksa apakah ada kunci 'response' dalam JSON yang diterima
- Ketergantungan Model:
- Cara ini tidak benar-benar menghitung token linguistik aktual, tapi menghitung chunk respons
- Akurasi tergantung pada bagaimana API mengirimkan respons (per token atau per chunk)
- Cara ini tidak benar-benar menghitung token linguistik aktual, tapi menghitung chunk respons
Akurasi dengan Model Berbeda
- Model yang Kompatibel:
- Akan bekerja dengan semua model yang dihosting melalui Ollama API
- Karena ini menghitung respons stream bukan token aktual, akan konsisten di berbagai model
- Akan bekerja dengan semua model yang dihosting melalui Ollama API
- Tingkat Akurasi:
- Estimasi kasar: Ini memberikan perkiraan jumlah token, bukan hitungan pasti
- Variasi aktual: Model berbeda mungkin mengirim chunk yang berbeda-beda ukurannya
- Perbandingan: Model besar mungkin mengirim lebih banyak teks per chunk dibanding model kecil
- Estimasi kasar: Ini memberikan perkiraan jumlah token, bukan hitungan pasti
Langkah-Langkah Menjalankan Aplikasi tokenku.py dengan Ollama dan Model LLaMA 3.2:3B
- Pastikan Ollama Telah Terinstal dan Berfungsi Normal
Pastikan Anda telah menginstal Ollama dengan benar dan menjalankannya tanpa kendala. - Instal Model yang Diperlukan
Instal salah satu model, misalnya llama3.2:3b, melalui perintah Ollama. - Verifikasi API Ollama
Pastikan API Ollama sudah berjalan dengan baik dengan mengakses alamat berikut melalui browser:
http://localhost:11434 Jika berhasil, akan muncul respon: "Ollama is running". - Unduh Aplikasi tokenku.py
Unduh file aplikasi tokenku.py dan simpan di komputer Anda, misalnya di direktori C:\. - Menjalankan Aplikasi via CMD (Command Prompt)
- Buka Command Prompt.
C:\Users\Nama_Komputermu>cd C:\
- Buka Command Prompt.
-
- Arahkan ke direktori tempat file disimpan, misalnya dengan perintah:
C:\tokenku.py
- Arahkan ke direktori tempat file disimpan, misalnya dengan perintah:
Penjelasan Fungsi Kode Program tokenku.py
Kode program ini adalah sebuah skrip Python yang berinteraksi dengan model bahasa (LLM - Large Language Model) bernama "llama3.2:3b" melalui API untuk menghasilkan respons berdasarkan prompt yang diberikan.
Fungsi Utama:
-
Mengirim Prompt ke Model Bahasa:
-
Program mengirim pertanyaan "jelaskan apa itu modem?" ke model bahasa yang berjalan di server lokal (http://192.168.0.116:11434)
-
Menggunakan model khusus "llama3.2:3b" (kemungkinan versi ringan dari model LLaMA 3 dengan 3 miliar parameter)
-
-
Mengelola Respons Stream:
-
Program menerima respons dari model secara streaming (berkelanjutan)
-
Setiap potongan (chunk) respons diproses dan ditampilkan segera ke layar
-
-
Menghitung dan Menganalisis Performa:
-
Menghitung total token yang dihasilkan
-
Mengukur waktu eksekusi
-
Menghitung kecepatan generasi token per detik
-
Alur Kerja Program:
-
Inisialisasi:
prompt = "jelaskan apa itu modem?" data = { "model": "llama3.2:3b", "prompt": prompt, "stream": True }
-
Menyiapkan prompt dan konfigurasi permintaan API
-
-
Permintaan ke API:
with requests.post(url, json=data, stream=True) as response:
-
Mengirim permintaan POST ke endpoint API dengan data JSON
-
stream=Truememungkinkan penerimaan respons secara bertahap
-
-
Proses Streaming Respons:
for line in response.iter_lines(): decoded = json.loads(line) if 'response' in decoded: token_count += 1 print(decoded['response'], end='', flush=True)
-
Setiap baris respons di-decode dari JSON
-
Jika mengandung field 'response', konten ditampilkan dan token dihitung
-
-
Analisis Performa:
print("\n\nSummary:") print(f"Total tokens generated: {token_count}") print(f"Elapsed time: {elapsed:.2f} seconds") print(f"Tokens per second: {token_count / elapsed:.2f}")
-
Menampilkan statistik performa generasi teks
-
Output yang Dihasilkan:
-
Teks penjelasan tentang modem yang dihasilkan model bahasa
-
Ringkasan performa yang mencakup:
-
Total token yang dihasilkan
-
Waktu yang dibutuhkan
-
Kecepatan generasi token per detik
-
Contoh Penggunaan:
Program ini cocok untuk:
-
Menguji model bahasa lokal
-
Mengevaluasi kecepatan generasi teks
-
Eksperimen dengan prompt sederhana
-
Memahami cara kerja API model bahasa berbasis streaming

