Program obrolan baris perintah sederhana untuk model GPT-J, LLaMA dan MPT yang ditulis dalam C++. Berdasarkan llama.cpp dan menggunakan gpt4all-backend untuk kompatibilitas penuh.
Peringatan Kemajuan yang sangat awal, mungkin ada bug
Karena program ini dibuat menggunakan c++, program ini harus dibuat dan dijalankan di sebagian besar sistem Linux, MacOS, dan Windows. Tautan Rilis memiliki biner yang sudah jadi. AVX2 lebih cepat dan berfungsi pada sebagian besar komputer baru. Jika Anda menjalankan program ini, program ini akan memeriksa dan mencetak apakah komputer Anda memiliki dukungan AVX2.
git clone --recurse-submodules https://github.com/kuvaus/LlamaGPTJ-chat
cd LlamaGPTJ-chat
Anda juga perlu mengunduh file model, lihat model yang didukung untuk detail dan tautan.
Karena program ini dibuat menggunakan c++, program ini harus dibuat dan dijalankan di sebagian besar sistem Linux, MacOS, dan Windows. Pada sebagian besar sistem, Anda hanya memerlukan ini untuk membangun:
mkdir build
cd build
cmake ..
cmake --build . --parallel
Catatan
Jika Anda memiliki prosesor lama, Anda dapat MENONAKTIFKAN instruksi AVX2 pada langkah pembuatan dengan tanda
-DAVX2=OFF
.Jika Anda memiliki prosesor baru, Anda dapat MENGAKTIFKAN instruksi AVX512 pada langkah pembuatan dengan tanda
-DAVX512=ON
.Di macOS lama, setel
-DBUILD_UNIVERSAL=OFF
untuk menjadikan build x86 saja, bukan biner Intel/ARM64 universal. Pada macOS yang sangat lama, setel-DOLD_MACOS=ON
. Ini menonaktifkan/save
dan/load
tetapi dikompilasi pada Xcode lama.Di Windows Anda sekarang dapat menggunakan Visual Studio (MSVC) atau MinGW. Jika Anda ingin membangun MinGW, setel
-G "MinGW Makefiles"
.Di ARM64 Linux tidak ada biner siap pakai, tetapi kini Anda dapat membuatnya dari sumber.
Setelah dikompilasi, binernya terletak di:
build/bin/chat
Namun Anda bebas memindahkannya kemana saja. Perintah sederhana untuk 4 thread untuk memulai:
./chat -m " /path/to/modelfile/ggml-vicuna-13b-1.1-q4_2.bin " -t 4
atau
./chat -m " /path/to/modelfile/ggml-gpt4all-j-v1.3-groovy.bin " -t 4
Selamat mengobrol!
Backend saat ini mendukung model GPT-J, LLaMA dan MPT.
Anda perlu mengunduh model GPT-J terlebih dahulu. Berikut ini tautan langsung ke model:
- Versi defaultnya adalah v1.0 : ggml-gpt4all-j.bin
- Pada saat penulisan, yang terbaru adalah 1.3-groovy : ggml-gpt4all-j-v1.3-groovy.bin
Masing-masing berukuran sekitar 3,8 Gb. Program obrolan menyimpan model dalam RAM saat runtime sehingga Anda memerlukan memori yang cukup untuk menjalankannya. Anda dapat memperoleh detail selengkapnya tentang model GPT-J dari gpt4all.io atau nomic-ai/gpt4all github.
Alternatifnya, Anda perlu mengunduh model LLaMA terlebih dahulu. Anak timbang asli ditujukan untuk tujuan penelitian dan Anda dapat mengajukan permohonan akses di sini. Di bawah ini adalah tautan langsung ke model turunan:
- Vicuna 7b v1.1 : ggml-vicuna-7b-1.1-q4_2.bin
- Vicuna 13b v1.1 : ggml-vicuna-13b-1.1-q4_2.bin
- GPT-4-Semua l13b-snoozy : ggml-gpt4all-l13b-snoozy.bin
Model LLaMA cukup besar: versi parameter 7B masing-masing berukuran sekitar 4,2 Gb dan 13B parameter 8,2 Gb. Program obrolan menyimpan model dalam RAM saat runtime sehingga Anda memerlukan memori yang cukup untuk menjalankannya. Anda bisa mendapatkan detail lebih lanjut tentang model LLaMA dari whitepaper atau situs web META AI.
Anda juga dapat mengunduh dan menggunakan model MPT. Berikut ini tautan langsung ke model MPT-7B:
- Model dasar MPT-7B telah dilatih sebelumnya oleh Moses ML: ggml-mpt-7b-base.bin
- Model instruksi MPT-7B dilatih oleh Moses ML: ggml-mpt-7b-instruct.bin
- Model obrolan MPT-7B non-komersial yang dilatih oleh Moses ML: ggml-mpt-7b-chat.bin
Masing-masing berukuran sekitar 4,9 Gb. Program obrolan menyimpan model dalam RAM saat runtime sehingga Anda memerlukan memori yang cukup untuk menjalankannya. Anda dapat memperoleh detail lebih lanjut tentang model MPT dari situs web MosesML atau mosaikml/llm-foundry github.
Anda dapat melihat bantuan dan daftar parameter lengkap dengan: ./chat -h
usage: ./bin/chat [options]
A simple chat program for GPT-J, LLaMA, and MPT models.
You can set specific initial prompt with the -p flag.
Runs default in interactive and continuous mode.
Type ' /reset ' to reset the chat context.
Type ' /save ' , ' /load ' to save network state into a binary file.
Type ' /save NAME ' , ' /load NAME ' to rename saves. Default: --save_name NAME.
Type ' /help ' to show this help dialog.
Type ' quit ' , ' exit ' or, ' Ctrl+C ' to quit.
options:
-h, --help show this help message and exit
-v, --version show version and license information
--run-once disable continuous mode
--no-interactive disable interactive mode altogether (uses given prompt only)
--no-animation disable chat animation
--no-saves disable ' /save ' , ' /load ' functionality
-s SEED, --seed SEED RNG seed for --random-prompt (default: -1)
-t N, --threads N number of threads to use during computation (default: 4)
-p PROMPT, --prompt PROMPT
prompt to start generation with (default: empty)
--random-prompt start with a randomized prompt.
-n N, --n_predict N number of tokens to predict (default: 200)
--top_k N top-k sampling (default: 40)
--top_p N top-p sampling (default: 0.9)
--temp N temperature (default: 0.9)
--n_ctx N number of tokens in context window (default: 0)
-b N, --batch_size N batch size for prompt processing (default: 20)
--repeat_penalty N repeat_penalty (default: 1.1)
--repeat_last_n N last n tokens to penalize (default: 64)
--context_erase N percent of context to erase (default: 0.8)
--b_token optional beginning wrap token for response (default: empty)
--e_token optional end wrap token for response (default: empty)
-j, --load_json FNAME
load options instead from json at FNAME (default: empty/no)
--load_template FNAME
load prompt template from a txt file at FNAME (default: empty/no)
--save_log FNAME
save chat log to a file at FNAME (default: empty/no)
--load_log FNAME
load chat log from a file at FNAME (default: empty/no)
--save_dir DIR
directory for saves (default: ./saves)
--save_name NAME
save/load model state binary at save_dir/NAME.bin (current: model_state)
context is saved to save_dir/NAME.ctx (current: model_state)
-m FNAME, --model FNAME
model path (current: ./models/ggml-vicuna-13b-1.1-q4_2.bin)
Berikut adalah beberapa fitur praktis dan detail tentang cara mencapainya menggunakan opsi baris perintah.
Secara default, program ini mencetak obrolan ke keluaran standar (stdout), jadi jika Anda memasukkan program ke dalam aplikasi Anda, program tersebut hanya perlu membaca stdout. Anda juga dapat menyimpan seluruh log obrolan ke file teks dengan opsi --save_log
. Ada cara dasar untuk mengingat percakapan masa lalu Anda hanya dengan memuat log obrolan yang disimpan dengan opsi --load_log
saat Anda memulai sesi baru.
Jika Anda hanya memerlukan program untuk berjalan sekali tanpa interaksi pengguna apa pun, salah satu caranya adalah dengan menyetel prompt dengan -p "prompt"
dan menggunakan tanda --no-interactive
dan --no-animation
. Program akan membaca prompt, mencetak jawabannya, dan menutup.
Jika Anda menginginkan kepribadian untuk AI Anda, Anda dapat mengubah prompt_template_sample.txt
dan menggunakan --load_template
untuk memuat file yang dimodifikasi. Satu-satunya hal yang konstan adalah masukan Anda selama obrolan akan diletakkan di baris %1
. Instruksi, prompt, respons, dan lainnya dapat diganti sesuai keinginan Anda. Memiliki file personality_template.txt
yang berbeda adalah cara mudah untuk menambahkan karakter AI yang berbeda. Pada beberapa model, memberikan AI dan nama pengguna, bukan Prompt:
dan Response:
, dapat membuat percakapan mengalir lebih alami saat AI mencoba meniru percakapan antara dua orang.
Anda dapat mengatur ulang obrolan kapan saja selama mengobrol dengan mengetik /reset
di kolom input. Ini akan menghapus memori AI dari percakapan, logit, dan token sebelumnya. Anda kemudian dapat memulai obrolan dari awal tanpa harus memuat ulang seluruh model lagi.
Anda juga dapat mengambil parameter dari file json dengan tanda --load_json "/path/to/file.json"
. Model yang berbeda mungkin berperforma lebih baik atau lebih buruk dengan parameter masukan yang berbeda sehingga menggunakan file json adalah cara praktis untuk menyimpan dan memuat semua pengaturan sekaligus. Pemuat file JSON dirancang sederhana untuk mencegah ketergantungan eksternal, dan akibatnya, file JSON harus mengikuti format tertentu. Berikut ini contoh sederhananya:
{ "top_p" : 1.0 , "top_k" : 50400 , "temp" : 0.9 , "n_batch" : 9 }
Ini berguna ketika Anda ingin menyimpan pengaturan suhu dan pengambilan sampel yang berbeda.
Dan yang lebih detail:
{
"top_p" : 1.0 ,
"top_k" : 50400 ,
"temp" : 0.9 ,
"n_batch" : 20 ,
"threads" : 12 ,
"prompt" : "Once upon a time" ,
"load_template" : "/path/to/prompt_template_sample.txt" ,
"model" : "/path/to/ggml-gpt4all-j-v1.3-groovy.bin" ,
"no-interactive" : "true"
}
Yang ini memuat prompt dari json, menggunakan templat tertentu, dan menjalankan program sekali dalam mode tanpa interaktif sehingga pengguna tidak perlu menekan input apa pun.
Proyek ini dilisensikan di bawah Lisensi MIT