تقييم نماذج LLM المحلية
القصة الخلفية
قمت ببناء LLM Speed Benchmark (LLMSB) خلال فترة عملي كمتدرب هندسي بدوام جزئي في Anarchy (YC W23). LLMSB هي أداة تقييم لقياس أداء نموذج LLM. تستخدم مكتبة HuggingFace’s transformers لتحميل وتشغيل نموذج LLM وتقيس:
- إجمالي وقت التشغيل
- الرموز في الثانية
- مواصفات الأجهزة العامة
- استخدام المعالج (التردد الحالي ونسبة استخدام النوى على مر الزمن)
- استخدام الذاكرة (الذاكرة والتبديل على مر الزمن)
- استخدام وحدة معالجة الرسوميات (الحمولة، استخدام الذاكرة، ودرجة الحرارة على مر الزمن)
هنا هو مثال على تشغيل تقييم لنموذج codellama-13b-oasst-sft-v10 يعمل على H100. أملك شخصياً Nvidia RTX 2070 Ti، والتي تحتوي على 8 جيجابايت من VRAM. للأسف، بالنسبة لمعظم نماذج LLM الحديثة، 8 جيجابايت من VRAM ليست كافية للتفاعل مع نموذج. بسبب ذلك، استخدمت RunPod “لإيجار” وحدة معالجة الرسوميات (GPU) وتشغيل تقييماتي على نماذج معينة.
كانت هذه القصة الخلفية/قصة الأصل لـ LLMSB. بما أن المشروع مفتوح المصدر، يمكنك عرض الكود هنا. أدناه، قمت بتضمين README من المستودع إذا كنت ترغب في الاطلاع عليه.
حول
🚧 LLM Speed Benchmark (LLMSB) حالياً في النسخة التجريبية (v0). يرجى عدم استخدام هذا في الإنتاج، أو استخدامه على مسؤوليتك الخاصة. لا زلنا نقوم بإصلاح بعض المشاكل وتحسين الوظائف. إذا واجهت أي أخطاء أو كانت لديك اقتراحات، يرجى الإبلاغ عنها تحت المشاكل. ملاحظاتك لا تقدر بثمن!
LLM Speed Benchmark (LLMSB) هي أداة تقييم لقياس أداء نماذج LLM عبر منصات الأجهزة المختلفة. الهدف النهائي هو تجميع مجموعة بيانات شاملة توضح أداء نماذج LLM على أنظمة متنوعة، مما يمكّن المستخدمين من اختيار النموذج (النماذج) الأنسب لمشاريعهم بشكل أكثر فعالية.
القيود
LLMSB في النسخة v0، لذا لديها قيود:
- مصممة فقط للعمل على أنظمة التشغيل المعتمدة على ديبيان، أي أنها ليست مصممة للعمل على ويندوز. وذلك لأن LLMSB تستخدم neofetch و nvidia-smi لجمع المقاييس في الخلفية ومنطق مسار الملفات يعتمد على أنظمة التشغيل يونكس.
- بسبب كيفية تسجيل المقاييس، قد يستغرق جامع المقاييس حتى 1 ثانية لجمع البيانات. وهذا يعني أنه، في أسرع الأحوال، يمكننا جمع مقاييس الأجهزة كل 1 ثانية.
- LLMSB تستخدم فقط HuggingFace لتحميل وتشغيل النماذج. هذا يعمل في الوقت الحالي، لكن الهدف هو أن تدعم LLMSB عدة أطر عمل، وليس فقط HuggingFace.
- حالياً، يتم تشغيل جميع النماذج من خلال المنطق المقدم في دالة run_llm()، الموجودة في src/hf.py، حيث يتم استخدام الدوال AutoTokenizer() و AutoModelForCausalLM() لتحميل وتشغيل نموذج. هذا يعمل لكنه يحد من كيفية تكوين/تحسين نماذج معينة. مع وضع ذلك في الاعتبار، الهدف هو إنشاء فئات منفصلة لكل نموذج شائع واستخدام الفئات المحددة للنموذج من HuggingFace، مثل LlamaTokenizer و LlamaForCausalLM، بدلاً من ذلك.
- LLMSB تجمع فقط مقاييس عامة وعالية المستوى. في المستقبل، نود جمع مقاييس أدنى مستوى. نعتقد أن هذا يمكن أن يتم جزئياً باستخدام غلاف المحلل الخاص بـ Pytorch.
مخرجات عينة
22 نوفمبر 2023
تم تشغيل/اختبار LLMSB على وحدة معالجة الرسوميات L40 و H100 من خلال RunPod. في تلك التقييمات تم اختبار النماذج llama-2-7b-hf، codellama-13b-oasst-sft-v10، و mpt-7b. تحقق من النتائج هنا. إذا تم ملاحظة أي أخطاء/مشاكل، يرجى الإبلاغ عنها في قسم المشاكل.
الإعداد
-
إنشاء وتفعيل بيئة بايثون:
python3 -m venv env source env/bin/activate -
تثبيت تبعيات الحزمة (باستخدام APT):
apt -y update apt install -y vim apt install -y neofetch -
تثبيت تبعيات بايثون:
pip3 install transformers pip3 install psutil pip3 install gputil pip3 install tabulate pip3 install sentencepiece pip3 install protobuf -
تثبيت Pytorch
# تثبيت إصدار pytorch المستقر، لنظام لينكس، باستخدام CUDA 12.1: pip3 install torch torchvision torchaudio -
تثبيت LLM-VM:
pip install llm-vm -
(اختياري) إذا كنت تستخدم نماذج مثل LLAMA، ستحتاج إلى رمز وصول HuggingFace. قم بإعداد رمز الوصول الخاص بك هنا ثم احفظ الرمز في وحدة التحكم الخاصة بك عن طريق تشغيل الأمر التالي:
huggingface-cli login
كيفية التشغيل
-
أكمل الخطوات المذكورة في قسم الإعداد.
-
لتكوين إعدادك، تحتاج إلى إنشاء ملف json مع المعلمات التالية (إليك مثال):
- ملاحظة: ليس كل إطار عمل يدعم نفس المعلمات
{ "model": "bigscience/bloom-560m", # مسار/مستودع النموذج على HuggingFace (https://huggingface.co/models) "prompt": "Hello World!", # النص الذي تريد إدخاله في نموذج LLM "device": "cuda:0", # الجهاز الذي تريد تشغيل نموذج LLM عليه (GPU/CPU) "max_length": 50, # الحد الأقصى لطول الرموز المولدة "temperature": 0.9, # قيمة درجة الحرارة لنموذج LLM "top_k": 50, # قيمة top-k لنموذج LLM "top_p": 0.9, # قيمة top-p لنموذج LLM "num_return_sequences": 1, # عدد الحالات المستقلة التي تم تشغيلها للنموذج "time_delay": 0, # تأخير الوقت (بالثواني) الذي سينتظره جامع المقاييس لكل تكرار "model_start_pause": 1, # الوقت (بالثواني) الذي سينتظره الاختبار قبل تشغيل نموذج LLM "model_end_pause": 1 # الوقت (بالثواني) الذي سينتظره الاختبار بعد انتهاء نموذج LLM من التشغيل، "framework": "llm-vm" # اسم الإطار/المكتبة التي تريد استخدامها لتشغيل النموذج } -
باستخدام المسار إلى ملف التكوين الذي أنشأته في الخطوة السابقة، قم بتشغيل ما يلي لبدء التقييم (اختر خياراً واحداً):
# تشغيل تقييم واحد python3 run.py --config ./configs/llmvm_test.json # تشغيل أكثر من تقييم واحد (في هذه الحالة 3) python3 run.py --config ./configs/llmvm_test.json --loops 3 -
بعد انتهاء التقييم، تحقق من النتائج النهائية في ملف يجب أن يبدو شيئاً مثل هذا:
report_2023-11-25_05:55:04.207515_utc_1ffc4fa7-3aa9-4878-b874-1ff445e1ff8a.json
إعداد RunPod:
-
إعداد RunPod، إعداد شهادة/مفتاح SSH الخاص بك، والحصول على وحدة تعمل. يمكنك الوصول إلى وحدتك (الوحدات) على صفحة وحدة التحكم الخاصة بـ RunPod.
-
انقر على زر “الاتصال” للحصول على معلومات الاتصال SSH. يجب أن تبدو هذه المعلومات شيئاً مثل هذا:
ssh root&12.345.678.90 -p 12345 -i ~/.ssh/id_example-
سيتم تنسيق هذا الأمر على النحو التالي:
ssh <user>@<ip-address> -p <port> -i <local-path-to-ssh-cert>
-
-
باستخدام الأمر في الخطوة #2، يجب أن تكون قادراً على الاتصال بوحدة معالجة الرسوميات (GPU) التي اخترتها في تلك الوحدة.
-
إذا كنت ترغب في نسخ ملف من الوحدة إلى جهازك المحلي، يمكنك تشغيل الأمر بهذا التنسيق (هذا يشير إلى المتغيرات الموضحة في الخطوة #2):
scp -P <port> -i <local-path-to-ssh-cert> <user>@<ip-address>:<path-to-file-in-pod> <path-to-local-directory>-
إليك مثال على مثل هذا الأمر:
scp -P 12345 -i ~/.ssh/id_example <user>@<ip-address>:/root/test.txt /home/user1/Downloads/
-
-
بعد الانتهاء من الوحدة، قم بإيقاف تشغيلها أو إيقافها مؤقتاً. لكن احذر، إذا قمت بإيقافها مؤقتاً ستظل تتلقى رسوم، ولكن أقل بكثير.
مصادر رائعة:
- مجموعات بيانات النصوص: awesome-chatgpt-prompts، bigscience/P3، و writing-prompts
- تعلم المزيد عن معلمات LLM
- تقييم رائع لتقييم نماذج LLM المستندة إلى السحابة
- لوحات زعامة ذكاء LLM الرائعة: FastEval و open_llm_leaderboard