TurboPilot adalah klon kopilot yang dihosting sendiri yang menggunakan perpustakaan di belakang llama.cpp untuk menjalankan model Codegen Salesforce Parameter 6 Miliar dalam RAM 4GiB. Ini sangat didasarkan dan terinspirasi oleh proyek fauxpilot.
NB: Ini adalah bukti konsep saat ini dan bukan alat yang stabil. Pelengkapan otomatis cukup lambat dalam versi proyek ini. Jangan ragu untuk memainkannya, tetapi jarak tempuh Anda mungkin berbeda.
Sekarang Mendukung StableCode 3B Instruksi cukup gunakan model GGML Terkuantisasi TheBloke dan set -m stablecode
.
Baru: Difaktorkan Ulang + Disederhanakan : Kode sumber telah ditingkatkan untuk memudahkan perluasan dan penambahan model baru ke Turbopilot. Sistem sekarang mendukung berbagai macam model
Baru: Dukungan Wizardcoder, Starcoder, Santacoder - Turbopilot sekarang mendukung model penyelesaian kode lokal canggih yang menyediakan lebih banyak bahasa pemrograman dan dukungan "isi di tengah".
PR untuk proyek ini dan fork GGML yang terkait sangat disambut baik.
Buat garpu, buat perubahan, lalu buka PR.
Cara termudah untuk mencoba proyek ini adalah dengan mengambil model yang telah diproses sebelumnya dan kemudian menjalankan server di buruh pelabuhan.
Anda memiliki 2 opsi untuk mendapatkan modelnya
Anda dapat mengunduh model yang telah dikonversi dan dikuantisasi sebelumnya dari Huggingface.
Untuk pengguna RAM rendah (4-8 GiB), saya merekomendasikan StableCode dan untuk pengguna berdaya tinggi (RAM 16+ GiB, GPU diskrit atau silikon apel) saya merekomendasikan WizardCoder.
Turbopilot masih mendukung model codegen generasi pertama dari v0.0.5
dan versi sebelumnya. Meskipun model lama memang perlu dikuantisasi ulang.
Anda dapat menemukan katalog lengkap model di MODELS.md.
Ikuti panduan ini jika Anda ingin bereksperimen sendiri dengan mengkuantisasi model.
Unduh biner terbaru dan ekstrak ke folder root proyek. Jika biner tidak disediakan untuk OS Anda atau Anda lebih memilih untuk membuatnya sendiri, ikuti petunjuk pembuatannya
Berlari:
./turbopilot -m starcoder -f ./models/santacoder-q4_0.bin
Aplikasi harus memulai server pada port 18080
, Anda dapat mengubahnya dengan opsi -p
tetapi ini adalah port default yang vscode-fauxpilot coba sambungkan sehingga Anda mungkin ingin membiarkannya kecuali Anda yakin Anda tahu apa yang Anda' sedang melakukan.
Jika Anda memiliki sistem multi-core, Anda dapat mengontrol berapa banyak CPU yang digunakan dengan opsi -t
- misalnya, pada AMD Ryzen 5000 saya yang memiliki 6 core/12 thread saya menggunakan:
./codegen-serve -t 6 -m starcoder -f ./models/santacoder-q4_0.bin
Untuk menjalankan model codegen lama. Ubah saja tipe model flag -m
menjadi codegen
saja.
CATATAN: Turbopilot 0.1.0 dan yang lebih baru mengkuantisasi ulang model codegen Anda, model lama dari v0.0.5 dan yang lebih lama. Saya sedang berupaya menyediakan model codegen terkuantisasi yang diperbarui
Anda juga dapat menjalankan Turbopilot dari image buruh pelabuhan bawaan yang disediakan di sini
Anda masih perlu mengunduh model secara terpisah, lalu Anda dapat menjalankan:
docker run --rm -it
-v ./models:/models
-e THREADS=6
-e MODEL_TYPE=starcoder
-e MODEL= " /models/santacoder-q4_0.bin "
-p 18080:18080
ghcr.io/ravenscroftj/turbopilot:latest
Pada rilis turbocode v0.0.5 sekarang mendukung inferensi CUDA. Untuk menjalankan container yang mendukung cuda, Anda harus mengaktifkan nvidia-docker, gunakan versi yang diberi tag cuda dan teruskan --gpus=all
ke docker dengan akses ke GPU Anda seperti:
docker run --gpus=all --rm -it
-v ./models:/models
-e THREADS=6
-e MODEL_TYPE=starcoder
-e MODEL= " /models/santacoder-q4_0.bin "
-e GPU_LAYERS=32
-p 18080:18080
ghcr.io/ravenscroftj/turbopilot:v0.2.0-cuda11-7
Jika Anda memiliki GPU yang cukup besar maka pengaturan GPU_LAYERS
akan memungkinkan turbopilot memindahkan komputasi sepenuhnya ke GPU Anda daripada menyalin data bolak-balik, sehingga mempercepat inferensi secara signifikan.
Tukar ghcr.io/ravenscroftj/turbopilot:v0.1.0-cuda11
dengan ghcr.io/ravenscroftj/turbopilot:v0.2.0-cuda12-0
atau ghcr.io/ravenscroftj/turbopilot:v0.2.0-cuda12-2
jika Anda menggunakan CUDA 12.0 atau 12.2 masing-masing.
Anda nanti memerlukan CUDA 11 atau CUDA 12 untuk menjalankan container ini. Anda seharusnya dapat melihat /app/turbopilot
terdaftar saat Anda menjalankan nvidia-smi
.
Pada v0.0.5, versi CUDA dari linux yang dapat dieksekusi tersedia - ini mengharuskan libcublas 11 diinstal pada mesin - Saya mungkin akan membuat deb ubuntu di beberapa titik tetapi untuk saat ini berjalan di buruh pelabuhan mungkin lebih nyaman jika Anda ingin menggunakan GPU CUDA.
Anda dapat menggunakan pembongkaran GPU melalui opsi --ngl
.
Dukungan untuk plugin kopilot VS Code resmi sedang berlangsung (Lihat tiket #11). API tersebut sekarang harus kompatibel secara luas dengan OpenAI.
Untuk menggunakan API dari VSCode, saya merekomendasikan plugin vscode-fauxpilot. Setelah Anda menginstalnya, Anda perlu mengubah beberapa pengaturan di file settings.json Anda.
Preferences: Open User Settings (JSON)
{
... // other settings
"fauxpilot.enabled" : true ,
"fauxpilot.server" : " http://localhost:18080/v1/engines " ,
}
Sekarang Anda dapat mengaktifkan fauxpilot dengan CTRL + SHIFT + P
dan pilih Enable Fauxpilot
Plugin akan mengirimkan panggilan API ke proses codegen-serve
yang sedang berjalan saat Anda melakukan penekanan tombol. Kemudian akan menunggu setiap permintaan selesai sebelum mengirim permintaan lebih lanjut.
Anda dapat membuat permintaan ke http://localhost:18080/v1/engines/codegen/completions
yang akan berperilaku seperti titik akhir Copilot yang sama.
Misalnya:
curl --request POST
--url http://localhost:18080/v1/engines/codegen/completions
--header ' Content-Type: application/json '
--data ' {
"model": "codegen",
"prompt": "def main():",
"max_tokens": 100
} '
Seharusnya memberi Anda sesuatu seperti ini:
{
"choices" : [
{
"logprobs" : null ,
"index" : 0 ,
"finish_reason" : " length " ,
"text" : " n """ Main entry point for this script. """n logging.getLogger().setLevel(logging.INFO) n logging.basicConfig(format=('%(levelname)s: %(message)s')) nn parser = argparse.ArgumentParser( n description=__doc__, n formatter_class=argparse.RawDescriptionHelpFormatter, n epilog=__doc__) n "
}
],
"created" : 1681113078 ,
"usage" : {
"total_tokens" : 105 ,
"prompt_tokens" : 3 ,
"completion_tokens" : 102
},
"object" : " text_completion " ,
"model" : " codegen " ,
"id" : " 01d7a11b-f87c-4261-8c03-8c78cbe4b067 "
}