لقد بدأت العمل على إعادة تنفيذ المكتبة هنا: FastTensors
يرجى تمييزها بنجمة إذا كنت ترغب في رؤية التنفيذ المتوافق مع GGML في Go الخالص.
من فضلك قم بمراجعة مشروعي ذو الصلة Booster
نحن نحلم بعالم حيث يقوم زملاء قراصنة تعلم الآلة باستغلال نماذج GPT الكبيرة حقًا في مختبراتهم المنزلية دون أن يكون لديهم مجموعات GPU تستهلك أطنانًا كبيرة من $$$ .
يعتمد رمز المشروع على إطار عمل ggml.cpp الأسطوري لجورجي جيرجانوف المكتوب بلغة C++ مع نفس الموقف من الأداء والأناقة.
نأمل أن يؤدي استخدام لغة Golang بدلاً من اللغة القوية جدًا ولكن ذات المستوى المنخفض جدًا إلى السماح بتبني أكبر بكثير.
أولاً، احصل على نماذج LLaMA الأصلية وقم بتحويلها بنفسك، أو قم فقط بتنزيل النماذج الجاهزة للموسيقى الروك:
LLaMA-7B: llama-7b-fp32.bin
LLaMA-13B: llama-13b-fp32.bin
يخزن كلا الطرازين أوزان FP32، لذا ستحتاج إلى 32 جيجا بايت على الأقل من ذاكرة الوصول العشوائي (وليس VRAM أو GPU RAM) لـ LLaMA-7B. مضاعفة إلى 64 جيجا بايت لـ LLaMA-13B.
بعد ذلك، أنشئ تطبيقًا ثنائيًا من المصادر (راجع التعليمات أدناه)، أو قم فقط بتنزيل التطبيق الذي تم إنشاؤه بالفعل:
ويندوز: اللاما-غو-v1.4.0.exe
نظام التشغيل MacOS: llama-go-v1.4.0-macos
لينكس: اللاما-غو-v1.4.0-لينكس
والآن أصبح لديك كل من الملف القابل للتنفيذ والنموذج، جربه بنفسك:
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 بتضمين خادم HTTP مستقل يكشف عن REST API. لتمكينه، قم بتشغيل التطبيق باستخدام علامات خاصة:
llama-go-v1.4.0-macos
--model ~ /models/llama-7b-fp32.bin
--server
--host 127.0.0.1
--port 8080
--pods 4
--threads 4
اعتمادًا على حجم النموذج، وعدد نوى وحدة المعالجة المركزية المتوفرة هناك، وعدد الطلبات التي تريد معالجتها بالتوازي، ومدى السرعة التي ترغب في الحصول على الإجابات فيها، واختيار القرون ومعلمات الخيوط بحكمة.
Pods عبارة عن عدد من مثيلات الاستدلال التي قد تعمل بالتوازي.
تحدد معلمة Threads عدد النوى التي سيتم استخدامها لرياضيات الموتر داخل الكبسولة.
لذلك، على سبيل المثال، إذا كان لديك جهاز يحتوي على 16 مركزًا للأجهزة قادرًا على تشغيل 32 مؤشر ترابط فائقًا بالتوازي، فقد ينتهي بك الأمر إلى شيء من هذا القبيل:
--server --pods 4 --threads 8
عندما لا تكون هناك حجرة مجانية للتعامل مع الطلب القادم، سيتم وضعها في قائمة انتظار الانتظار وتبدأ عندما تنتهي بعض البودات من المهمة.
أرسل طلب POST (مع Postman) إلى عنوان الخادم الخاص بك باستخدام JSON الذي يحتوي على UUID v4 الفريد والمطالبة:
{
"id" : " 5fb8ebd0-e0c9-4759-8f7d-35590f6c9fc3 " ,
"prompt" : " Why Golang is so popular? "
}
أرسل طلب GET (باستخدام Postman أو المتصفح) إلى عنوان URL مثل http://host:port/jobs/status/:id
GET http://localhost:8080/jobs/status/5fb8ebd0-e0c9-4759-8f7d-35590f6c9fcb
أرسل طلب GET (باستخدام Postman أو المتصفح) إلى عنوان URL مثل http://host:port/jobs/:id
GET http://localhost:8080/jobs/5fb8ebd0-e0c9-4759-8f7d-35590f6c9fcb
أولاً، قم بتثبيت Golang و git (ستحتاج إلى تنزيل أدوات التثبيت في حالة نظام التشغيل Windows).
brew install git
brew install golang
ثم انسخ الريبو وأدخل مجلد المشروع:
git clone https://github.com/gotzmann/llama.go.git
cd llama.go
بعض أدوات Go Magic لتثبيت التبعيات الخارجية:
go mod tidy
go mod vendor
نحن الآن جاهزون لبناء الملف الثنائي من الكود المصدري:
go build -o llama-go-v1.exe -ldflags " -s -w " main.go
1) من أين يمكنني الحصول على نماذج LLaMA الأصلية؟
اتصل بـ Meta مباشرةً أو ابحث فقط عن بعض بدائل التورنت.
2) كيفية تحويل ملفات LLaMA الأصلية إلى تنسيق مدعوم؟
ضع ملفات PyTorch FP16 الأصلية في دليل النماذج ، ثم قم بالتحويل باستخدام الأمر:
python3 ./scripts/convert.py ~ /models/LLaMA/7B/ 0