TurboPilot เป็นโคลน Copilot ที่โฮสต์ด้วยตนเอง ซึ่งใช้ไลบรารีเบื้องหลัง llama.cpp เพื่อรันโมเดล Salesforce Codegen พารามิเตอร์ 6 พันล้านพารามิเตอร์ใน RAM ขนาด 4GiB มีพื้นฐานมาจากและได้รับแรงบันดาลใจจากโครงการ fauxpilot
หมายเหตุ: นี่เป็นข้อพิสูจน์แนวคิดในตอนนี้ ไม่ใช่เครื่องมือที่มีความเสถียร การเติมข้อความอัตโนมัติค่อนข้างช้าในโปรเจ็กต์เวอร์ชันนี้ รู้สึกอิสระที่จะเล่นกับมัน แต่ระยะทางของคุณอาจแตกต่างกันไป
ขณะนี้รองรับ StableCode 3B Instruct เพียงใช้โมเดล Quantized GGML ของ TheBloke และ set -m stablecode
ใหม่: ปรับโครงสร้างใหม่ + ทำให้ง่ายขึ้น : ซอร์สโค้ดได้รับการปรับปรุงเพื่อให้ง่ายต่อการขยายและเพิ่มโมเดลใหม่ให้กับ Turbopilot ขณะนี้ระบบรองรับโมเดลได้หลายรสชาติ
ใหม่: รองรับ Wizardcoder, Starcoder, Santacoder - ตอนนี้ Turbopilot รองรับโมเดลการเติมโค้ดท้องถิ่นที่ทันสมัย ซึ่งให้ภาษาการเขียนโปรแกรมมากขึ้นและรองรับ "เติมตรงกลาง"
ยินดีต้อนรับการประชาสัมพันธ์โครงการนี้และทางแยก GGML ที่เกี่ยวข้อง
ทำทางแยก ทำการเปลี่ยนแปลง จากนั้นเปิด PR
วิธีที่ง่ายที่สุดในการลองใช้โปรเจ็กต์คือการหยิบโมเดลที่ประมวลผลไว้ล่วงหน้าแล้วรันเซิร์ฟเวอร์ในนักเทียบท่า
คุณมี 2 ตัวเลือกในการรับแบบจำลอง
คุณสามารถดาวน์โหลดโมเดลที่แปลงล่วงหน้าและกำหนดปริมาณล่วงหน้าได้จาก Huggingface
สำหรับผู้ใช้ RAM ต่ำ (4-8 GiB) ฉันขอแนะนำ StableCode และสำหรับผู้ใช้พลังงานสูง (16+ GiB RAM, GPU แยกหรือแอปเปิ้ลซิลิคอน) ฉันขอแนะนำ WizardCoder
Turbopilot ยังคงรองรับโมเดลโค้ดเจนรุ่นแรกตั้งแต่ v0.0.5
และรุ่นก่อนหน้า แม้ว่ารุ่นเก่าจะต้องได้รับการจัดสรรใหม่ก็ตาม
คุณสามารถดูแคตตาล็อกรุ่นทั้งหมดได้ใน MODELS.md
ปฏิบัติตามคู่มือนี้หากคุณต้องการทดลองการหาปริมาณแบบจำลองด้วยตนเอง
ดาวน์โหลดไบนารีล่าสุดและแตกไฟล์ไปยังโฟลเดอร์โปรเจ็กต์รูท หากไม่มีไบนารีสำหรับระบบปฏิบัติการของคุณ หรือคุณต้องการสร้างไบนารีด้วยตนเอง ให้ปฏิบัติตามคำแนะนำในการสร้าง
วิ่ง:
./turbopilot -m starcoder -f ./models/santacoder-q4_0.bin
แอปพลิเคชันควรเริ่มต้นเซิร์ฟเวอร์บนพอร์ต 18080
คุณสามารถเปลี่ยนสิ่งนี้ได้ด้วยตัวเลือก -p
แต่นี่เป็นพอร์ตเริ่มต้นที่ vscode-fauxpilot พยายามเชื่อมต่อดังนั้นคุณอาจต้องการปล่อยสิ่งนี้ไว้ตามลำพังเว้นแต่คุณจะแน่ใจว่าคุณรู้ว่าคุณทำอะไร กำลังทำอยู่
หากคุณมีระบบมัลติคอร์ คุณสามารถควบคุมจำนวน CPU ที่จะใช้ด้วยตัวเลือก -t
- ตัวอย่างเช่น บน AMD Ryzen 5000 ของฉันซึ่งมี 6 คอร์/12 เธรดที่ฉันใช้:
./codegen-serve -t 6 -m starcoder -f ./models/santacoder-q4_0.bin
เพื่อรันโมเดลโค้ดเจนดั้งเดิม เพียงเปลี่ยน model type flag -m
เป็น codegen
แทน
หมายเหตุ: Turbopilot 0.1.0 และใหม่กว่านั้น re-quantize โมเดลโค้ดเจนของคุณ รุ่นเก่าตั้งแต่ v0.0.5 และเก่ากว่า ฉันกำลังดำเนินการจัดหาโมเดลโค้ดเจนเชิงปริมาณที่ได้รับการอัปเดต
คุณยังสามารถเรียกใช้ Turbopilot จากอิมเมจนักเทียบท่าที่สร้างไว้ล่วงหน้าที่ให้ไว้ที่นี่
คุณจะต้องดาวน์โหลดโมเดลแยกต่างหาก จากนั้นจึงเรียกใช้:
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
ตั้งแต่เปิดตัว v0.0.5 turbocode รองรับการอนุมาน CUDA แล้ว ในการรันคอนเทนเนอร์ที่เปิดใช้งาน cuda คุณจะต้องเปิดใช้งาน nvidia-docker ใช้เวอร์ชันที่ติดแท็ก cuda และส่งผ่าน --gpus=all
ไปยังนักเทียบท่าที่มีสิทธิ์เข้าถึง GPU ของคุณดังนี้:
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
หากคุณมี GPU ขนาดใหญ่เพียงพอ การตั้งค่า GPU_LAYERS
จะทำให้ Turbopilot ถ่ายโอนข้อมูลการประมวลผลไปยัง GPU ของคุณได้อย่างเต็มที่ แทนที่จะคัดลอกข้อมูลย้อนหลังและไปข้างหน้า ซึ่งจะช่วยเร่งการอนุมานได้อย่างมาก
สลับ ghcr.io/ravenscroftj/turbopilot:v0.1.0-cuda11
สำหรับ ghcr.io/ravenscroftj/turbopilot:v0.2.0-cuda12-0
หรือ ghcr.io/ravenscroftj/turbopilot:v0.2.0-cuda12-2
หากคุณใช้ CUDA 12.0 หรือ 12.2 ตามลำดับ
คุณจะต้องใช้ CUDA 11 หรือ CUDA 12 ในภายหลังเพื่อเรียกใช้คอนเทนเนอร์นี้ คุณควรจะเห็นรายการ /app/turbopilot
เมื่อคุณรัน nvidia-smi
ตั้งแต่ v0.0.5 เวอร์ชัน CUDA ของไฟล์ปฏิบัติการ linux นั้นพร้อมใช้งาน - จำเป็นต้องติดตั้ง libcublas 11 บนเครื่อง - ฉันอาจสร้าง debs ubuntu ในบางจุด แต่ตอนนี้การทำงานใน docker อาจสะดวกกว่าถ้าคุณต้องการใช้ CUDA GPU
คุณสามารถใช้การถ่าย GPU ผ่านตัวเลือก --ngl
การสนับสนุนปลั๊กอิน VS Code copilot อย่างเป็นทางการอยู่ระหว่างดำเนินการ (ดูตั๋ว #11) API ควรเข้ากันได้กับ OpenAI ในวงกว้างแล้ว
หากต้องการใช้ API จาก VSCode ฉันขอแนะนำปลั๊กอิน vscode-fauxpilot เมื่อคุณติดตั้งแล้ว คุณจะต้องเปลี่ยนการตั้งค่าบางอย่างในไฟล์ settings.json
Preferences: Open User Settings (JSON)
{
... // other settings
"fauxpilot.enabled" : true ,
"fauxpilot.server" : " http://localhost:18080/v1/engines " ,
}
ตอนนี้คุณสามารถเปิดใช้งาน fauxpilot ด้วย CTRL + SHIFT + P
และเลือก Enable Fauxpilot
ปลั๊กอินจะส่งการเรียก API ไปยังกระบวนการ codegen-serve
ที่ทำงานอยู่เมื่อคุณทำการกดแป้นพิมพ์ จากนั้นจะรอให้แต่ละคำขอเสร็จสิ้นก่อนที่จะส่งคำขอเพิ่มเติม
คุณสามารถส่งคำขอไปยัง http://localhost:18080/v1/engines/codegen/completions
ซึ่งจะทำงานเหมือนกับจุดสิ้นสุด Copilot เดียวกัน
ตัวอย่างเช่น:
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
} '
ควรได้รับสิ่งนี้ให้กับคุณ:
{
"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 "
}