آخر الأخبار
hf-multimodal
و vllm-vlm
ومهمة mmmu
كميزة نموذج أولي . نحن نرحب بالمستخدمين لتجربة هذه الميزة قيد التقدم واختبارها بأنفسهم، ونقترح عليهم الاطلاع على lmms-eval
، وهو مشروع رائع تفرع في الأصل من أداة تقييم lm، لمجموعة واسعة من المهام متعددة الوسائط، النماذج والميزات.local-completions
لتقييم النموذج.يتوفر إصدار v0.4.0 جديد من أداة تقييم lm !
تتضمن التحديثات والميزات الجديدة ما يلي:
يرجى الاطلاع على صفحات التوثيق المحدثة في docs/
لمزيد من التفاصيل.
سيستمر التطوير في الفرع main
، ونحن نشجعك على تزويدنا بتعليقاتك حول الميزات المطلوبة وكيفية تحسين المكتبة بشكل أكبر، أو طرح الأسئلة، سواء في القضايا أو العلاقات العامة على GitHub، أو في EleutherAI Discord!
يوفر هذا المشروع إطارًا موحدًا لاختبار نماذج اللغة التوليدية على عدد كبير من مهام التقييم المختلفة.
سمات:
أداة تقييم نموذج اللغة هي الواجهة الخلفية لـ؟ تم استخدام لوحة المتصدرين Open LLM الشهيرة الخاصة بـ Hugging Face في مئات الأوراق البحثية، ويتم استخدامها داخليًا من قبل العشرات من المؤسسات بما في ذلك NVIDIA وCohere وBigScience وBigCode وNous Research وMosaic ML.
لتثبيت حزمة lm-eval
من مستودع github، قم بتشغيل:
git clone --depth 1 https://github.com/EleutherAI/lm-evaluation-harness
cd lm-evaluation-harness
pip install -e .
نحن نقدم أيضًا عددًا من التبعيات الاختيارية للوظائف الموسعة. يتوفر جدول تفصيلي في نهاية هذه الوثيقة.
يتوفر هنا دليل مستخدم يعرض بالتفصيل القائمة الكاملة للوسائط المدعومة، وعلى الجهاز الطرفي عن طريق استدعاء lm_eval -h
. بدلًا من ذلك، يمكنك استخدام lm-eval
بدلاً من lm_eval
.
يمكن عرض قائمة المهام المدعومة (أو مجموعات المهام) باستخدام lm-eval --tasks list
. يتم توفير أوصاف المهام والروابط إلى المجلدات الفرعية المقابلة هنا.
transformers
الوجه لتقييم نموذج مستضاف على HuggingFace Hub (على سبيل المثال GPT-J-6B) على hellaswag
يمكنك استخدام الأمر التالي (يفترض هذا أنك تستخدم وحدة معالجة رسومات متوافقة مع CUDA):
lm_eval --model hf
--model_args pretrained=EleutherAI/gpt-j-6B
--tasks hellaswag
--device cuda:0
--batch_size 8
يمكن توفير وسائط إضافية لمنشئ النموذج باستخدام علامة --model_args
. وعلى الأخص، يدعم هذا الممارسة الشائعة المتمثلة في استخدام ميزة revisions
على المركز لتخزين نقاط التفتيش المدربة جزئيًا، أو لتحديد نوع البيانات لتشغيل النموذج:
lm_eval --model hf
--model_args pretrained=EleutherAI/pythia-160m,revision=step100000,dtype= " float "
--tasks lambada_openai,hellaswag
--device cuda:0
--batch_size 8
يتم دعم النماذج التي يتم تحميلها عبر كل من transformers.AutoModelForCausalLM
AutoModelForCausalLM (نماذج نمط GPT ذات الانحدار التلقائي ووحدة فك التشفير فقط) transformers.AutoModelForSeq2SeqLM
يتم دعم AutoModelForSeq2SeqLM (مثل نماذج وحدة فك التشفير والتشفير مثل T5) في Huggingface.
يمكن أتمتة اختيار حجم الدفعة عن طريق تعيين علامة --batch_size
على auto
. سيؤدي هذا إلى إجراء اكتشاف تلقائي لأكبر حجم دفعة يناسب جهازك. في المهام التي يوجد فيها اختلاف كبير بين المثال الأطول والأقصر، قد يكون من المفيد إعادة حساب حجم الدفعة الأكبر بشكل دوري، للحصول على مزيد من السرعة. للقيام بذلك، قم بإلحاق :N
بالعلامة أعلاه لإعادة حساب أكبر حجم دفعة N
مرات تلقائيًا. على سبيل المثال، لإعادة حساب حجم الدفعة 4 مرات، سيكون الأمر كما يلي:
lm_eval --model hf
--model_args pretrained=EleutherAI/pythia-160m,revision=step100000,dtype= " float "
--tasks lambada_openai,hellaswag
--device cuda:0
--batch_size auto:4
ملحوظة
مثلما يمكنك توفير مسار محلي transformers.AutoModel
AutoModel، يمكنك أيضًا توفير مسار محلي لـ lm_eval
عبر --model_args pretrained=/path/to/model
accelerate
تقييم وحدات معالجة الرسومات المتعددة مع عناق الوجهنحن ندعم ثلاث طرق رئيسية لاستخدام مكتبة تسريع Hugging Face لتقييم وحدات معالجة الرسومات المتعددة.
لإجراء تقييم متوازي للبيانات (حيث تقوم كل وحدة معالجة رسومات بتحميل نسخة كاملة منفصلة من النموذج)، فإننا نستفيد من مشغل accelerate
على النحو التالي:
accelerate launch -m lm_eval --model hf
--tasks lambada_openai,arc_easy
--batch_size 16
(أو عبر accelerate launch --no-python lm_eval
).
بالنسبة للحالات التي يمكن فيها احتواء النموذج الخاص بك على وحدة معالجة رسومات واحدة، فإن هذا يسمح لك بالتقييم على وحدات معالجة الرسومات K أسرع بـ 100 مرة من وحدة واحدة.
تحذير : لا يعمل هذا الإعداد مع تقسيم طراز FSDP، لذلك يجب تعطيل FSDP أثناء accelerate config
، أو يجب استخدام خيار NO_SHARD FSDP.
الطريقة الثانية لاستخدام accelerate
لتقييم وحدات معالجة الرسومات المتعددة هي عندما يكون النموذج الخاص بك كبيرًا جدًا بحيث لا يمكن احتواؤه على وحدة معالجة رسومات واحدة.
في هذا الإعداد، قم بتشغيل المكتبة خارج مشغل accelerate
، ولكن قم بتمرير parallelize=True
إلى --model_args
كما يلي:
lm_eval --model hf
--tasks lambada_openai,arc_easy
--model_args parallelize=True
--batch_size 16
وهذا يعني أنه سيتم تقسيم أوزان النموذج الخاص بك عبر جميع وحدات معالجة الرسومات المتاحة.
بالنسبة للمستخدمين الأكثر تقدمًا أو حتى النماذج الأكبر حجمًا، فإننا نسمح بالوسيطات التالية عندما parallelize=True
أيضًا:
device_map_option
: كيفية تقسيم أوزان النموذج عبر وحدات معالجة الرسومات المتاحة. الإعدادات الافتراضية إلى "تلقائي".max_memory_per_gpu
: الحد الأقصى لذاكرة وحدة معالجة الرسومات التي سيتم استخدامها لكل وحدة معالجة رسومات في تحميل النموذج.max_cpu_memory
: الحد الأقصى لمقدار ذاكرة وحدة المعالجة المركزية التي سيتم استخدامها عند إلغاء تحميل أوزان النموذج إلى ذاكرة الوصول العشوائي.offload_folder
: مجلد حيث سيتم إلغاء تحميل أوزان النموذج على القرص إذا لزم الأمر.الخيار الثالث هو استخدام كليهما في نفس الوقت. سيسمح لك هذا بالاستفادة من كل من توازي البيانات وتقسيم النماذج، وهو مفيد بشكل خاص للنماذج الكبيرة جدًا بحيث لا يمكن احتواؤها على وحدة معالجة رسومات واحدة.
accelerate launch --multi_gpu --num_processes {nb_of_copies_of_your_model}
-m lm_eval --model hf
--tasks lambada_openai,arc_easy
--model_args parallelize=True
--batch_size 16
لمعرفة المزيد حول التوازي النموذجي وكيفية استخدامه مع مكتبة accelerate
، راجع وثائق التسريع
تحذير: نحن لا ندعم أصلاً التقييم متعدد العقد باستخدام نوع نموذج hf
! يرجى الرجوع إلى تكامل مكتبة GPT-NeoX للحصول على مثال للتعليمة البرمجية التي يتم فيها كتابة برنامج نصي مخصص لتقييم الأجهزة المتعددة.
ملاحظة: نحن لا ندعم حاليًا التقييمات متعددة العقد محليًا، وننصح باستخدام إما خادم مستضاف خارجيًا لتشغيل طلبات الاستدلال مقابلها، أو إنشاء تكامل مخصص مع إطار العمل الموزع الخاص بك كما هو الحال مع مكتبة GPT-NeoX.
nemo
NVIDIA NeMo Framework هو إطار عمل توليدي للذكاء الاصطناعي مصمم للباحثين ومطوري pytorch الذين يعملون على نماذج اللغة.
لتقييم نموذج nemo
، ابدأ بتثبيت NeMo باتباع الوثائق. نوصي بشدة باستخدام حاوية NVIDIA PyTorch أو NeMo، خاصة إذا كانت لديك مشكلات في تثبيت Apex أو أي تبعيات أخرى (راجع أحدث الحاويات التي تم إصدارها). الرجاء أيضًا تثبيت مكتبة أدوات تقييم lm باتباع الإرشادات الموجودة في قسم التثبيت.
يمكن الحصول على نماذج NeMo من خلال كتالوج NVIDIA NGC أو من صفحة Hugging Face الخاصة بـ NVIDIA. توجد في NVIDIA NeMo Framework برامج نصية للتحويل لتحويل نقاط فحص hf
للنماذج الشائعة مثل llama أو falcon أو mixtral أو mpt إلى nemo
.
تشغيل نموذج nemo
على وحدة معالجة رسومات واحدة:
lm_eval --model nemo_lm
--model_args path= < path_to_nemo_model >
--tasks hellaswag
--batch_size 32
يوصى بتفريغ نموذج nemo
لتجنب التفريغ داخل حاوية الإرساء - فقد يتجاوز مساحة القرص. لذلك يمكنك تشغيل:
mkdir MY_MODEL
tar -xvf MY_MODEL.nemo -c MY_MODEL
nemo
بشكل افتراضي، يتم استخدام GPU واحد فقط. لكننا ندعم إما تكرار البيانات أو توازي الموتر/خط الأنابيب أثناء التقييم، على عقدة واحدة.
model_args
devices
على عدد النسخ المتماثلة للبيانات المطلوب تشغيلها. على سبيل المثال، الأمر لتشغيل 8 نسخ متماثلة للبيانات عبر 8 وحدات معالجة رسومات هو: torchrun --nproc-per-node=8 --no-python lm_eval
--model nemo_lm
--model_args path= < path_to_nemo_model > ,devices=8
--tasks hellaswag
--batch_size 32
model_args
لـ tensor_model_parallel_size
و/أو pipeline_model_parallel_size
. بالإضافة إلى ذلك، يتعين عليك أيضًا إعداد devices
لتكون مساوية لمنتج tensor_model_parallel_size
و/أو pipeline_model_parallel_size
. على سبيل المثال، الأمر لاستخدام عقدة واحدة من 4 وحدات معالجة رسوميات مع توازي موتر 2 وتوازي خط أنابيب 2 هو: torchrun --nproc-per-node=4 --no-python lm_eval
--model nemo_lm
--model_args path= < path_to_nemo_model > ,devices=4,tensor_model_parallel_size=2,pipeline_model_parallel_size=2
--tasks hellaswag
--batch_size 32
لاحظ أنه يوصى باستبدال أمر python
بـ torchrun --nproc-per-node=<number of devices> --no-python
لتسهيل تحميل النموذج في وحدات معالجة الرسومات. وهذا مهم بشكل خاص لنقاط التفتيش الكبيرة المحملة في وحدات معالجة الرسومات المتعددة.
غير مدعوم حتى الآن: تقييم متعدد العقد ومجموعات من نسخ البيانات مع توازي الموتر أو خط الأنابيب.
vLLM
نحن ندعم أيضًا vLLM للاستدلال بشكل أسرع على أنواع النماذج المدعومة، وخاصة بشكل أسرع عند تقسيم النموذج عبر وحدات معالجة الرسومات المتعددة. بالنسبة لوحدة معالجة الرسومات المفردة أو وحدات معالجة الرسومات المتعددة — الموتر المتوازي، أو البيانات المتوازية، أو مزيج من الاثنين معًا — الاستدلال، على سبيل المثال:
lm_eval --model vllm
--model_args pretrained={model_name},tensor_parallel_size={GPUs_per_model},dtype=auto,gpu_memory_utilization=0.8,data_parallel_size={model_replicas}
--tasks lambada_openai
--batch_size auto
لاستخدام vllm، قم pip install lm_eval[vllm]
. للحصول على قائمة كاملة بتكوينات vLLM المدعومة، يرجى الرجوع إلى تكامل vLLM الخاص بنا ووثائق vLLM.
يختلف vLLM أحيانًا في الإخراج عن Huggingface. نحن نتعامل مع Huggingface باعتباره التطبيق المرجعي، ونوفر برنامجًا نصيًا للتحقق من صحة نتائج vllm مقابل HF.
نصيحة
للحصول على أسرع أداء، نوصي باستخدام --batch_size auto
لـ vLLM كلما أمكن ذلك، للاستفادة من وظيفة التجميع المستمر!
نصيحة
قد يؤدي تمرير max_model_len=4096
أو بعض الإعدادات الافتراضية المعقولة الأخرى إلى vLLM من خلال وسيطات النموذج إلى حدوث عمليات تسريع أو منع أخطاء نفاد الذاكرة عند محاولة استخدام حجم الدُفعة التلقائي، مثل Mistral-7B-v0.1 الذي يبلغ طوله الافتراضي الحد الأقصى 32 ألف.
تدعم مكتبتنا أيضًا تقييم النماذج التي يتم تقديمها عبر العديد من واجهات برمجة التطبيقات التجارية، ونأمل في تنفيذ الدعم لخوادم الاستدلال المحلية/المستضافة ذاتيًا ذات الأداء الأكثر استخدامًا.
للاتصال بنموذج مستضاف، استخدم:
export OPENAI_API_KEY=YOUR_KEY_HERE
lm_eval --model openai-completions
--model_args model=davinci
--tasks lambada_openai,hellaswag
نحن ندعم أيضًا استخدام خادم الاستدلال المحلي الخاص بك مع الخوادم التي تعكس واجهات برمجة تطبيقات OpenAI Completions وChatCompletions.
lm_eval --model local-completions --tasks gsm8k --model_args model=facebook/opt-125m,base_url=http://{yourip}:8000/v1/completions,num_concurrent=1,max_retries=3,tokenized_requests=False,batch_size=16
لاحظ أنه بالنسبة للنماذج المستضافة خارجيًا، لا ينبغي استخدام التكوينات مثل --device
التي تتعلق بمكان وضع النموذج المحلي ولا تعمل. تمامًا مثلما يمكنك استخدام --model_args
لتمرير وسيطات عشوائية إلى مُنشئ النموذج للنماذج المحلية، يمكنك استخدامه لتمرير وسيطات عشوائية إلى واجهة برمجة تطبيقات النموذج للنماذج المستضافة. راجع وثائق خدمة الاستضافة للحصول على معلومات حول الوسائط التي تدعمها.
API أو خادم الاستدلال | مُنفّذ؟ | --model <xxx> | النماذج المدعومة: | أنواع الطلب: |
---|---|---|---|---|
استكمالات OpenAI | ✔️ | openai-completions local-completions | جميع نماذج OpenAI Complementions API | generate_until ، loglikelihood ، loglikelihood_rolling |
استكمالات الدردشة OpenAI | ✔️ | openai-chat-completions ، local-chat-completions | جميع نماذج ChatCompletions API | generate_until (لا توجد مشاكل في السجل) |
أنثروبي | ✔️ | anthropic | المحركات الإنسانية المدعومة | generate_until (لا توجد مشاكل في السجل) |
الدردشة الأنثروبيه | ✔️ | anthropic-chat , anthropic-chat-completions | المحركات الإنسانية المدعومة | generate_until (لا توجد مشاكل في السجل) |
تركيب النص | ✔️ | textsynth | جميع المحركات المدعومة | generate_until ، loglikelihood ، loglikelihood_rolling |
التحم | ⌛ - تم حظره بسبب خطأ Cohere API | لا يوجد | جميع محركات cohere.generate() | generate_until ، loglikelihood ، loglikelihood_rolling |
Llama.cpp (عبر llama-cpp-python) | ✔️ | gguf ، ggml | جميع الموديلات مدعومة بواسطة llama.cpp | generate_until ، loglikelihood ، (لم يتم تنفيذ تقييم الحيرة بعد) |
vLLM | ✔️ | vllm | معظم نماذج اللغة السببية HF | generate_until ، loglikelihood ، loglikelihood_rolling |
مامبا | ✔️ | mamba_ssm | نماذج لغة معمارية Mamba عبر حزمة mamba_ssm | generate_until ، loglikelihood ، loglikelihood_rolling |
المعانقة الأمثل (LMs السببية) | ✔️ | openvino | تم تحويل أي AutoModelForCausalLM لوحدة فك التشفير فقط باستخدام Huggingface Optimum إلى تنسيق OpenVINO™ Intermediate Representation (IR) | generate_until ، loglikelihood ، loglikelihood_rolling |
الخلايا العصبية عبر AWS Inf2 (LMs السببية) | ✔️ | neuronx | يتم دعم أي AutoModelForCausalLM لوحدة فك الترميز فقط للتشغيل على صورة عناق الوجه-ami للاستدلال2 | generate_until ، loglikelihood ، loglikelihood_rolling |
العصبية ماجيك DeepSparse | ✔️ | deepsparse | أي LM من SparseZoo أو على HF Hub مع علامة "deepsparse". | generate_until , loglikelihood |
العصبية ماجيك SparseML | ✔️ | sparseml | أي AutoModelForCausalLM لوحدة فك الترميز فقط من SparseZoo أو على HF Hub. مفيد بشكل خاص للنماذج ذات التكميم مثل zoo:llama2-7b-gsm8k_llama2_pretrain-pruned60_quantized | generate_until ، loglikelihood ، loglikelihood_rolling |
خادم الاستدلال المحلي الخاص بك! | ✔️ | local-completions أو local-chat-completions | دعم الخوادم المتوافقة مع OpenAI API، مع سهولة التخصيص لواجهات برمجة التطبيقات الأخرى. | generate_until ، loglikelihood ، loglikelihood_rolling |
يمكن استخدام النماذج التي لا توفر logprobs أو logprobs مع المهام من النوع generate_until
فقط، بينما النماذج المحلية، أو واجهات برمجة التطبيقات التي توفر logprobs/logits لمطالباتها، يمكن تشغيلها على جميع أنواع المهام: generate_until
و loglikelihood
و loglikelihood_rolling
و multiple_choice
.
لمزيد من المعلومات حول output_types
المهام المختلفة وأنواع طلبات النماذج، راجع وثائقنا.
ملحوظة
للحصول على أفضل أداء مع واجهات برمجة التطبيقات لنماذج الدردشة المغلقة مثل Anthropic Claude 3 وGPT-4، نوصي بالنظر بعناية في بعض نماذج المخرجات باستخدام --limit 10
أولاً للتأكد من أن استخراج الإجابات والتسجيل في المهام التوليدية يعمل كما هو متوقع. توفير system="<some system prompt here>"
ضمن --model_args
لاستكمالات الدردشة البشرية، لإرشاد النموذج بالتنسيق الذي سيتم الرد به، قد يكون مفيدًا.
يحتوي عدد من المكتبات الأخرى على نصوص برمجية لاستدعاء أداة التقييم من خلال مكتبتها. وتشمل هذه GPT-NeoX، وMegatron-DeepSpeed، وmesh-transformer-jax.
لإنشاء التكامل المخصص الخاص بك، يمكنك اتباع التعليمات الواردة في هذا البرنامج التعليمي.
ملحوظة
بالنسبة للمهام غير المناسبة للتقييم المباشر — إما بسبب المخاطر المرتبطة بتنفيذ تعليمات برمجية غير موثوقة أو التعقيدات في عملية التقييم — تتوفر علامة --predict_only
للحصول على أجيال مفككة التشفير للتقييم اللاحق.
إذا كان لديك جهاز Mac متوافق مع Metal، فيمكنك تشغيل أداة التقييم باستخدام الواجهة الخلفية MPS عن طريق استبدال --device cuda:0
بـ --device mps
(يتطلب الإصدار 2.1 من PyTorch أو أعلى). لاحظ أن الواجهة الخلفية لـ PyTorch MPS لا تزال في المراحل الأولى من التطوير، لذلك قد توجد مشكلات تتعلق بالصحة أو عمليات غير مدعومة. إذا لاحظت شذوذات في أداء النموذج على الواجهة الخلفية لـ MPS، فنوصيك أولاً بالتحقق من تطابق التمرير الأمامي لنموذجك على --device cpu
و --device mps
.
ملحوظة
يمكنك فحص الشكل الذي تبدو عليه مدخلات LM عن طريق تشغيل الأمر التالي:
python write_out.py
--tasks < task1,task2,... >
--num_fewshot 5
--num_examples 10
--output_base_path /path/to/output/folder
سيؤدي هذا إلى كتابة ملف نصي واحد لكل مهمة.
للتحقق من سلامة بيانات المهام التي تقوم بها بالإضافة إلى تشغيل المهام نفسها، يمكنك استخدام علامة --check_integrity
:
lm_eval --model openai
--model_args engine=davinci
--tasks lambada_openai,hellaswag
--check_integrity
بالنسبة للنماذج المحملة بمكتبة transformers
HuggingFace، يتم تمرير أي وسيطات مقدمة عبر --model_args
إلى المُنشئ ذي الصلة مباشرةً. وهذا يعني أن أي شيء يمكنك القيام به باستخدام AutoModel
يمكن القيام به من خلال مكتبتنا. على سبيل المثال، يمكنك تمرير مسار محلي عبر pretrained=
أو استخدام النماذج المضبوطة باستخدام PEFT عن طريق إجراء الاستدعاء الذي ستجريه لتقييم النموذج الأساسي وإضافة ,peft=PATH
إلى الوسيطة model_args
:
lm_eval --model hf
--model_args pretrained=EleutherAI/gpt-j-6b,parallelize=True,load_in_4bit=True,peft=nomic-ai/gpt4all-j-lora
--tasks openbookqa,arc_easy,winogrande,hellaswag,arc_challenge,piqa,boolq
--device cuda:0
يمكن بسهولة تحميل النماذج المقدمة كأوزان دلتا باستخدام مكتبة محولات Hugging Face. ضمن --model_args، قم بتعيين وسيطة دلتا لتحديد أوزان دلتا، واستخدم الوسيطة المدربة مسبقًا لتعيين النموذج الأساسي النسبي الذي سيتم تطبيقها عليه:
lm_eval --model hf
--model_args pretrained=Ejafa/llama_7B,delta=lmsys/vicuna-7b-delta-v1.1
--tasks hellaswag
يمكن تحميل نماذج GPTQ الكمية باستخدام GPTQModel (أسرع) أو AutoGPTQ
GPTQModel: إضافة ,gptqmodel=True
to model_args
lm_eval --model hf
--model_args pretrained=model-name-or-path,gptqmodel=True
--tasks hellaswag
AutoGPTQ: إضافة ,autogptq=True
to model_args
:
lm_eval --model hf
--model_args pretrained=model-name-or-path,autogptq=model.safetensors,gptq_use_triton=True
--tasks hellaswag
نحن ندعم أحرف البدل في أسماء المهام، على سبيل المثال، يمكنك تشغيل جميع مهام lambada المترجمة آليًا عبر --task lambada_openai_mt_*
.
لحفظ نتائج التقييم، قم بتوفير --output_path
. نحن ندعم أيضًا استجابات نموذج التسجيل باستخدام علامة --log_samples
للتحليل اللاحق.
بالإضافة إلى ذلك، يمكن توفير دليل يحتوي على --use_cache
للتخزين المؤقت لنتائج عمليات التشغيل السابقة. يتيح لك ذلك تجنب التنفيذ المتكرر لنفس أزواج (النموذج، المهمة) لإعادة التسجيل.
لدفع النتائج والعينات إلى Hugging Face Hub، تأكد أولاً من تعيين رمز وصول مع إمكانية الوصول للكتابة في متغير البيئة HF_TOKEN
. بعد ذلك، استخدم علامة --hf_hub_log_args
لتحديد المؤسسة، واسم المستودع، ورؤية المستودع، وما إذا كان سيتم دفع النتائج والعينات إلى Hub - مجموعة البيانات النموذجية على HF Hub. على سبيل المثال:
lm_eval --model hf
--model_args pretrained=model-name-or-path,autogptq=model.safetensors,gptq_use_triton=True
--tasks hellaswag
--log_samples
--output_path results
--hf_hub_log_args hub_results_org=EleutherAI,hub_repo_name=lm-eval-results,push_results_to_hub=True,push_samples_to_hub=True,public_repo=False
يتيح لك ذلك تنزيل النتائج والعينات بسهولة من Hub باستخدام:
from datasets import load_dataset
load_dataset ( "EleutherAI/lm-eval-results-private" , "hellaswag" , "latest" )
للحصول على قائمة كاملة بالوسائط المدعومة، راجع دليل الواجهة في وثائقنا!
يمكنك تصور وتحليل نتائج عمليات التقييم الخاصة بك بسلاسة باستخدام كل من الأوزان والتحيزات (W&B) وZeno.
يمكنك استخدام Zeno لتصور نتائج عمليات التقييم الخاصة بك.
أولاً، توجه إلى hub.zenoml.com لإنشاء حساب والحصول على مفتاح API في صفحة حسابك. أضف هذا المفتاح كمتغير بيئة:
export ZENO_API_KEY=[your api key]
ستحتاج أيضًا إلى تثبيت الحزمة lm_eval[zeno]
الإضافية.
لتصور النتائج، قم بتشغيل أداة التقييم باستخدام علامتي log_samples
و output_path
. نتوقع أن يحتوي output_path
على مجلدات متعددة تمثل أسماء نماذج فردية. وبالتالي يمكنك إجراء تقييمك على أي عدد من المهام والنماذج وتحميل جميع النتائج كمشروعات على Zeno.
lm_eval
--model hf
--model_args pretrained=EleutherAI/gpt-j-6B
--tasks hellaswag
--device cuda:0
--batch_size 8
--log_samples
--output_path output/gpt-j-6B
بعد ذلك، يمكنك تحميل البيانات الناتجة باستخدام البرنامج النصي zeno_visualize
:
python scripts/zeno_visualize.py
--data_path output
--project_name " Eleuther Project "
سيؤدي هذا إلى استخدام جميع المجلدات الفرعية في data_path
كنماذج مختلفة وتحميل جميع المهام داخل مجلدات النماذج هذه إلى Zeno. إذا قمت بتشغيل أداة التقييم على مهام متعددة، فسيتم استخدام project_name
كبادئة وسيتم إنشاء مشروع واحد لكل مهمة.
يمكنك العثور على مثال لسير العمل هذا في الأمثلة/visualize-zeno.ipynb.
من خلال تكامل الأوزان والتحيزات، يمكنك الآن قضاء المزيد من الوقت في استخلاص رؤى أعمق حول نتائج التقييم الخاصة بك. تم تصميم التكامل لتبسيط عملية تسجيل نتائج التجربة وتصورها باستخدام منصة الأوزان والتحيزات (W&B).
يوفر التكامل وظائف
results.json
كقطعة أثرية للتحكم في الإصدار،<task_name>_eval_samples.json
إذا تم تسجيل العينات، ستحتاج أولاً إلى تثبيت الحزمة lm_eval[wandb] الإضافية. قم pip install lm_eval[wandb]
.
قم بتوثيق جهازك باستخدام رمز W&B المميز الخاص بك. تفضل بزيارة https://wandb.ai/authorize للحصول على واحدة. قم wandb login
في محطة سطر الأوامر الخاصة بك.
قم بتشغيل أداة التقييم كالمعتاد باستخدام علامة wandb_args
. استخدم هذه العلامة لتوفير وسيطات لتهيئة تشغيل wandb (wandb.init) كوسيطات سلسلة مفصولة بفواصل.
lm_eval
--model hf
--model_args pretrained=microsoft/phi-2,trust_remote_code=True
--tasks hellaswag,mmlu_abstract_algebra
--device cuda:0
--batch_size 8
--output_path output/phi-2
--limit 10
--wandb_args project=lm-eval-harness-integration
--log_samples
في الملف القياسي، ستجد رابطًا لصفحة تشغيل W&B بالإضافة إلى رابط للتقرير الذي تم إنشاؤه. يمكنك العثور على مثال لسير العمل هذا في الأمثلة/visualize-wandb.ipynb، ومثال لكيفية دمجه خارج واجهة سطر الأوامر.
لمزيد من المعلومات حول المكتبة وكيف يتناسب كل شيء معًا، قم بمراجعة جميع صفحات الوثائق الخاصة بنا! نحن نخطط لنشر خريطة طريق أكبر لتحسينات المكتبة المرغوبة والمخطط لها قريبًا، مع مزيد من المعلومات حول كيفية مساعدة المساهمين.
لتنفيذ مهمة جديدة في أداة التقييم، راجع هذا الدليل.
بشكل عام، نتبع قائمة الأولويات هذه لمعالجة المخاوف المتعلقة بالمطالبة وتفاصيل التقييم الأخرى:
هذه إرشادات وليست قواعد، ويمكن نقضها في ظروف خاصة.
نحن نحاول إعطاء الأولوية للاتفاق مع الإجراءات التي تستخدمها المجموعات الأخرى لتقليل الضرر عندما يقارن الأشخاص حتمًا عمليات البحث عبر أوراق مختلفة، على الرغم من عدم تشجيعنا لهذه الممارسة. تاريخيًا، أعطينا أيضًا الأولوية للتنفيذ من "نماذج اللغة هي عدد قليل من المتعلمين المتميزين" حيث كان هدفنا الأصلي على وجه التحديد مقارنة النتائج بتلك الورقة.
أفضل طريقة للحصول على الدعم هي فتح مشكلة في هذا الريبو أو الانضمام إلى خادم EleutherAI Discord. قناة #lm-thunderdome
مخصصة لتطوير هذا المشروع وقناة #release-discussion
مخصصة لتلقي الدعم لإصداراتنا. إذا كنت قد استخدمت المكتبة وكانت لديك تجربة إيجابية (أو سلبية)، فنحن نحب أن نسمع منك!
يمكن تثبيت التبعيات الإضافية عبر pip install -e ".[NAME]"
اسم | يستخدم |
---|---|
واجهة برمجة التطبيقات | لاستخدام نماذج API (Anthropic، OpenAI API) |
عميق متفرق | لتشغيل نماذج DeepSparse الخاصة بـ NM |
ديف | لفحص العلاقات العامة والمساهمات |
gptq | لتحميل النماذج باستخدام GPTQ |
hf_transfer | لتسريع تنزيلات ملفات HF Hub |
com.ifeval | لتشغيل مهمة IFEval |
neuronx | للتشغيل على مثيلات AWS inf2 |
مامبا | لتحميل نماذج Mamba SSM |
الرياضيات | لتشغيل فحص الإجابة على مهمة الرياضيات |
متعدد اللغات | للرموز متعددة اللغات |
الأمثل | لتشغيل نماذج Intel OpenVINO |
موجه | لاستخدام مطالبات PromptSource |
الجملة | لاستخدام رمز الجملة |
sparseml | لاستخدام نماذج NM's SparseML |
اختبار | لتشغيل مجموعة اختبار المكتبة |
vllm | لتحميل النماذج باستخدام vLLM |
زينو | لتصور النتائج مع زينو |
--------------- | --------------------------------------- |
الجميع | تحميل كافة الإضافات (غير مستحسن) |
@misc{eval-harness,
author = {Gao, Leo and Tow, Jonathan and Abbasi, Baber and Biderman, Stella and Black, Sid and DiPofi, Anthony and Foster, Charles and Golding, Laurence and Hsu, Jeffrey and Le Noac'h, Alain and Li, Haonan and McDonell, Kyle and Muennighoff, Niklas and Ociepa, Chris and Phang, Jason and Reynolds, Laria and Schoelkopf, Hailey and Skowron, Aviya and Sutawika, Lintang and Tang, Eric and Thite, Anish and Wang, Ben and Wang, Kevin and Zou, Andy},
title = {A framework for few-shot language model evaluation},
month = 07,
year = 2024,
publisher = {Zenodo},
version = {v0.4.3},
doi = {10.5281/zenodo.12608602},
url = {https://zenodo.org/records/12608602}
}