Saya sudah mulai mengerjakan implementasi ulang perpustakaan di sini: FastTensors
Silakan beri bintang jika Anda ingin melihat implementasi yang kompatibel dengan GGML di Go murni.
Silakan periksa proyek terkait saya , Booster
Kami memimpikan sebuah dunia di mana sesama peretas ML menggunakan model GPT yang SANGAT BESAR di laboratorium rumah mereka tanpa membuat kluster GPU menghabiskan banyak $$$ .
Kode proyek ini didasarkan pada kerangka ggml.cpp legendaris Georgi Gerganov yang ditulis dalam C++ dengan sikap yang sama terhadap kinerja dan keanggunan.
Kami berharap penggunaan Golang dibandingkan bahasa yang terlalu canggih namun tingkatnya terlalu rendah akan memungkinkan adopsi yang lebih besar.
Pertama, dapatkan dan konversi sendiri model LLaMA asli, atau cukup unduh model siap pakai:
LLaMA-7B: llama-7b-fp32.bin
LLaMA-13B: llama-13b-fp32.bin
Kedua model menyimpan bobot FP32, jadi Anda memerlukan setidaknya 32 Gb RAM (bukan VRAM atau GPU RAM) untuk LLaMA-7B. Gandakan menjadi 64Gb untuk LLaMA-13B.
Selanjutnya, buat biner aplikasi dari sumber (lihat petunjuk di bawah), atau cukup unduh biner yang sudah dibuat:
Windows: llama-go-v1.4.0.exe
MacOS: llama-go-v1.4.0-macos
Linux: llama-go-v1.4.0-linux
Jadi sekarang Anda memiliki executable dan model, cobalah sendiri:
llama-go-v1.4.0-macos
--model ~ /models/llama-7b-fp32.bin
--prompt " Why Golang is so popular? "
--prompt Text prompt from user to feed the model input
--model Path and file name of converted .bin LLaMA model [ llama-7b-fp32.bin, etc ]
--server Start in Server Mode acting as REST API endpoint
--host Host to allow requests from in Server Mode [ localhost by default ]
--port Port listen to in Server Mode [ 8080 by default ]
--pods Maximum pods or units of parallel execution allowed in Server Mode [ 1 by default ]
--threads Adjust to the number of CPU cores you want to use [ all cores by default ]
--context Context size in tokens [ 1024 by default ]
--predict Number of tokens to predict [ 512 by default ]
--temp Model temperature hyper parameter [ 0.5 by default ]
--silent Hide welcome logo and other output [ shown by default ]
--chat Chat with user in interactive mode instead of compute over static prompt
--profile Profe CPU performance while running and store results to cpu.pprof file
--avx Enable x64 AVX2 optimizations for Intel and AMD machines
--neon Enable ARM NEON optimizations for Apple Macs and ARM server
LLaMA.go menyematkan server HTTP mandiri yang mengekspos REST API. Untuk mengaktifkannya, jalankan aplikasi dengan tanda khusus:
llama-go-v1.4.0-macos
--model ~ /models/llama-7b-fp32.bin
--server
--host 127.0.0.1
--port 8080
--pods 4
--threads 4
Bergantung pada ukuran model, berapa banyak inti CPU yang tersedia di sana, berapa banyak permintaan yang ingin Anda proses secara paralel, seberapa cepat Anda ingin mendapatkan jawaban, pilih parameter pod dan thread dengan bijak.
Pod adalah sejumlah instance inferensi yang mungkin berjalan secara paralel.
Parameter threads menetapkan berapa banyak inti yang akan digunakan untuk matematika tensor dalam sebuah pod.
Jadi misalnya jika Anda memiliki mesin dengan 16 inti perangkat keras yang mampu menjalankan 32 hyper-thread secara paralel, Anda mungkin mendapatkan hasil seperti itu:
--server --pods 4 --threads 8
Ketika tidak ada pod gratis untuk menangani permintaan kedatangan, pod tersebut akan ditempatkan ke dalam antrian tunggu dan dimulai ketika beberapa pod menyelesaikan pekerjaannya.
Kirim permintaan POST (dengan Tukang Pos) ke alamat server Anda dengan JSON yang berisi UUID v4 dan prompt unik:
{
"id" : " 5fb8ebd0-e0c9-4759-8f7d-35590f6c9fc3 " ,
"prompt" : " Why Golang is so popular? "
}
Kirim permintaan GET (dengan Tukang Pos atau browser) ke URL seperti http://host:port/jobs/status/:id
GET http://localhost:8080/jobs/status/5fb8ebd0-e0c9-4759-8f7d-35590f6c9fcb
Kirim permintaan GET (dengan Tukang Pos atau browser) ke URL seperti http://host:port/jobs/:id
GET http://localhost:8080/jobs/5fb8ebd0-e0c9-4759-8f7d-35590f6c9fcb
Pertama, instal Golang dan git (Anda harus mengunduh installer untuk Windows).
brew install git
brew install golang
Kemudian clone repo dan masuk ke folder proyek:
git clone https://github.com/gotzmann/llama.go.git
cd llama.go
Beberapa keajaiban Go untuk menginstal dependensi eksternal:
go mod tidy
go mod vendor
Sekarang kita siap membuat biner dari kode sumber:
go build -o llama-go-v1.exe -ldflags " -s -w " main.go
1) Dari mana saya bisa mendapatkan model LLaMA asli?
Hubungi Meta secara langsung atau cari saja beberapa alternatif torrent.
2) Bagaimana cara mengonversi file LLaMA asli ke format yang didukung?
Tempatkan file PyTorch FP16 asli ke direktori model , lalu konversi dengan perintah:
python3 ./scripts/convert.py ~ /models/LLaMA/7B/ 0