TurboPilot عبارة عن استنساخ مساعد طيار مستضاف ذاتيًا يستخدم المكتبة الموجودة خلف llama.cpp لتشغيل نموذج Salesforce Codegen المكون من 6 مليارات معلمة في 4 جيجا بايت من ذاكرة الوصول العشوائي. إنه يعتمد بشكل كبير ومستوحى من مشروع fauxpilot.
ملحوظة: هذا دليل على المفهوم في الوقت الحالي وليس أداة مستقرة. الإكمال التلقائي بطيء جدًا في هذا الإصدار من المشروع. لا تتردد في اللعب بها، ولكن قد تختلف المسافة المقطوعة.
يدعم الآن StableCode 3B. قم ببساطة باستخدام نماذج GGML الكمية الخاصة بـ TheBloke وقم بتعيين -m stablecode
.
جديد: معاد تصنيعه + مبسط : تم تحسين كود المصدر لتسهيل توسيع وإضافة نماذج جديدة إلى Turbopilot. يدعم النظام الآن نكهات متعددة للنموذج
جديد: دعم Wizardcoder وStarcoder وSantacoder - يدعم Turbopilot الآن أحدث نماذج إكمال التعليمات البرمجية المحلية التي توفر المزيد من لغات البرمجة ودعم "ملء الوسط".
نرحب بشدة بالممثلين الدائمين لهذا المشروع وشوكة GGML المقابلة.
اصنع شوكة، وقم بإجراء التغييرات ثم افتح العلاقات العامة.
أسهل طريقة لتجربة المشروع هي الحصول على النماذج التي تمت معالجتها مسبقًا ثم تشغيل الخادم في عامل الإرساء.
لديك خياران للحصول على النموذج
يمكنك تنزيل النماذج المحولة مسبقًا والمكممة مسبقًا من Huggingface.
بالنسبة لمستخدمي ذاكرة الوصول العشوائي المنخفضة (4-8 جيجا بايت)، أوصي بـ StableCode وللمستخدمين ذوي الطاقة العالية (16+ جيجا بايت من ذاكرة الوصول العشوائي، وحدة معالجة الرسومات المنفصلة أو سيليكون التفاح) أوصي بـ WizardCoder.
لا يزال Turbopilot يدعم نماذج التشفير من الجيل الأول من الإصدار v0.0.5
والإصدارات السابقة. على الرغم من أن النماذج القديمة تحتاج إلى إعادة تكميمها.
يمكنك العثور على كتالوج كامل للنماذج في MODELS.md.
اتبع هذا الدليل إذا كنت تريد تجربة تحديد كمية النماذج بنفسك.
قم بتنزيل أحدث إصدار ثنائي واستخرجه إلى مجلد المشروع الجذر. إذا لم يتم توفير ملف ثنائي لنظام التشغيل لديك أو كنت تفضل إنشاءه بنفسك، فاتبع تعليمات الإنشاء
يجري:
./turbopilot -m starcoder -f ./models/santacoder-q4_0.bin
يجب أن يبدأ التطبيق خادمًا على المنفذ 18080
، يمكنك تغيير ذلك باستخدام الخيار -p
ولكن هذا هو المنفذ الافتراضي الذي يحاول vscode-fauxpilot الاتصال به، لذا ربما تريد ترك هذا بمفرده إلا إذا كنت متأكدًا من أنك تعرف ما تريد. إعادة القيام.
إذا كان لديك نظام متعدد النواة، فيمكنك التحكم في عدد وحدات المعالجة المركزية المستخدمة من خلال الخيار -t
- على سبيل المثال، في جهاز AMD Ryzen 5000 الذي يحتوي على 6 مراكز/12 خيطًا أستخدمه:
./codegen-serve -t 6 -m starcoder -f ./models/santacoder-q4_0.bin
لتشغيل نماذج Codegen القديمة. ما عليك سوى تغيير علامة نوع النموذج -m
إلى codegen
بدلاً من ذلك.
ملاحظة: يقوم Turbopilot 0.1.0 والأحدث بإعادة تحديد نماذج الكودجين الخاصة بك، والنماذج القديمة من الإصدار 0.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، أصبح الرمز التوربيني يدعم الآن استنتاج CUDA. من أجل تشغيل الحاوية الممكّنة لـ cuda، ستحتاج إلى تمكين nvidia-docker، واستخدام الإصدارات الموسومة بـ cuda وتمرير --gpus=all
إلى docker مع إمكانية الوصول إلى وحدة معالجة الرسومات الخاصة بك كما يلي:
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_LAYERS
سيسمح للطيار التوربيني بتفريغ العمليات الحسابية بالكامل على وحدة معالجة الرسومات الخاصة بك بدلاً من نسخ البيانات ذهابًا وإيابًا، مما يؤدي إلى تسريع الاستدلال بشكل كبير.
قم بتبديل 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
إذا كنت تستخدم كودا 12.0 أو 12.2 على التوالي.
ستحتاج إلى CUDA 11 أو CUDA 12 لاحقًا لتشغيل هذه الحاوية. يجب أن تكون قادرًا على رؤية /app/turbopilot
مدرجًا عند تشغيل nvidia-smi
.
اعتبارًا من الإصدار 0.0.5، يتوفر إصدار CUDA من نظام التشغيل Linux القابل للتنفيذ - ويتطلب تثبيت libcublas 11 على الجهاز - قد أقوم بإنشاء نظام ubuntu debs في مرحلة ما ولكن التشغيل في الوقت الحالي في عامل الإرساء قد يكون أكثر ملاءمة إذا كنت تريد استخدام كودا GPU.
يمكنك استخدام تفريغ GPU عبر خيار --ngl
.
يجري دعم البرنامج المساعد الرسمي لـ VS Code copilot (راجع التذكرة رقم 11). يجب أن تكون واجهة برمجة التطبيقات (API) الآن متوافقة على نطاق واسع مع OpenAI.
لاستخدام واجهة برمجة التطبيقات من 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 "
}