الصورة الرمزية الخاصة بـ Morgan Funtowicz


أحدثت نماذج اللغات الكبيرة (LLMs) ثورة في معالجة اللغات الطبيعية ويتم نشرها بشكل متزايد لحل المشكلات المعقدة على نطاق واسع. يعد تحقيق الأداء الأمثل باستخدام هذه النماذج أمرًا صعبًا نظرًا لمتطلباتها الحسابية الفريدة والمكثفة. يعد الأداء الأمثل لـ LLMs ذا قيمة لا تصدق للمستخدمين النهائيين الذين يبحثون عن تجربة سريعة وسريعة الاستجابة، بالإضافة إلى عمليات النشر الموسعة حيث تترجم الإنتاجية المحسنة إلى دولارات يتم توفيرها.

وهنا يأتي دور مكتبة الاستدلال Optimum-NVIDIA. المتوفرة على Hugging Face، تعمل Optimum-NVIDIA على تسريع استدلال LLM بشكل كبير على منصة NVIDIA من خلال واجهة برمجة تطبيقات بسيطة للغاية. بالتغيير مجرد سطر واحد من التعليمات البرمجية، يمكنك فتح ما يصل إلى استدلال أسرع بمقدار 28 مرة و1200 رمزًا في الثانية على منصة NVIDIA.

Optimum-NVIDIA هي أول مكتبة استدلال Hugging Face التي تستفيد من الجديد float8 التنسيق مدعوم في بنيات NVIDIA Ada Lovelace وHopper. يعمل FP8، بالإضافة إلى إمكانات التجميع المتقدمة لبرنامج NVIDIA TensorRT-LLM، على تسريع استدلال LLM بشكل كبير.

كيفية التشغيل

يمكنك البدء في تشغيل LLaMA بسرعات استدلال سريعة للغاية في 3 أسطر فقط من التعليمات البرمجية مع خط أنابيب من Optimum-NVIDIA. إذا قمت بالفعل بإعداد خط أنابيب من مكتبة محولات Hugging Face لتشغيل LLaMA، فأنت بحاجة فقط إلى تعديل سطر واحد من التعليمات البرمجية لفتح أعلى مستوى من الأداء!

- from transformers.pipelines import pipeline
+ from optimum.nvidia.pipelines import pipeline

# everything else is the same as in transformers!
pipe = pipeline('text-generation', 'meta-llama/Llama-2-7b-chat-hf', use_fp8=True)
pipe("Describe a real-world application of AI in sustainable energy.")

يمكنك أيضًا تمكين تكميم FP8 بعلامة واحدة، مما يسمح لك بتشغيل نموذج أكبر على وحدة معالجة رسومات واحدة بسرعات أعلى ودون التضحية بالدقة. تستخدم العلامة الموضحة في هذا المثال إستراتيجية معايرة محددة مسبقًا بشكل افتراضي، على الرغم من أنه يمكنك توفير مجموعة بيانات المعايرة الخاصة بك والترميز المخصص لتخصيص القياس الكمي وفقًا لحالة الاستخدام الخاصة بك.

تعد واجهة خط الأنابيب رائعة للتشغيل والتشغيل بسرعة، ولكن يمكن للمستخدمين المتميزين الذين يريدون تحكمًا دقيقًا في إعداد معلمات أخذ العينات استخدام Model API.

- from transformers import AutoModelForCausalLM
+ from optimum.nvidia import AutoModelForCausalLM
from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-13b-chat-hf", padding_side="left")

model = AutoModelForCausalLM.from_pretrained(
  "meta-llama/Llama-2-13b-chat-hf",
+ use_fp8=True,  
)

model_inputs = tokenizer(
    ["How is autonomous vehicle technology transforming the future of transportation and urban planning?"], 
    return_tensors="pt"
).to("cuda")

generated_ids, generated_length = model.generate(
    **model_inputs, 
    top_k=40, 
    top_p=0.7, 
    repetition_penalty=10,
)

tokenizer.batch_decode(generated_ids[0], skip_special_tokens=True)

لمزيد من التفاصيل، راجع وثائقنا

تقييم الأداء

عند تقييم أداء LLM، فإننا نأخذ في الاعتبار مقياسين: زمن الاستجابة الأول للرمز والإنتاجية. يقوم First Token Latency (المعروف أيضًا باسم Time to First Token أو زمن الاستجابة للملء المسبق) بقياس المدة التي تنتظرها من وقت إدخال المطالبة الخاصة بك إلى الوقت الذي تبدأ فيه تلقي المخرجات، لذلك يمكن لهذا المقياس أن يخبرك بمدى استجابة النموذج. توفر Optimum-NVIDIA زمن استجابة أول رمز أسرع بما يصل إلى 3.3x مقارنةً بالمحولات المتوفرة:

الشكل 1. الوقت المستغرق لإنشاء الرمز المميز الأول (بالمللي ثانية)

من ناحية أخرى، تقيس الإنتاجية مدى سرعة النموذج في إنشاء الرموز المميزة وتكون ذات صلة بشكل خاص عندما تريد تجميع الأجيال معًا. على الرغم من وجود عدة طرق لحساب الإنتاجية، فقد اعتمدنا طريقة قياسية لتقسيم زمن الوصول من طرف إلى طرف على إجمالي طول التسلسل، بما في ذلك رموز الإدخال والإخراج المجمعة على جميع الدُفعات. توفر Optimum-NVIDIA إنتاجية أفضل بما يصل إلى 28 مرة مقارنة بالمحولات المتوفرة:

الشكل 2. الإنتاجية (الرمز المميز / الثانية)

تظهر التقييمات الأولية لوحدة معالجة الرسومات NVIDIA H200 Tensor Core التي تم الإعلان عنها مؤخرًا زيادة إضافية بمقدار 2x في الإنتاجية لنماذج LLaMA مقارنة بوحدة معالجة الرسومات NVIDIA H100 Tensor Core. نظرًا لأن وحدات معالجة الرسومات H200 أصبحت متاحة بسهولة أكبر، فسنشارك بيانات الأداء الخاصة بـ Optimum-NVIDIA التي تعمل عليها.

الخطوات التالية

يوفر Optimum-NVIDIA حاليًا أعلى أداء لمهمة LLaMAForCausalLM architecture +، لذا فإن أي نموذج يعتمد على LLaMA، بما في ذلك الإصدارات المضبوطة بدقة، يجب أن يعمل مع Optimum-NVIDIA خارج الصندوق اليوم. نحن نعمل بنشاط على توسيع الدعم ليشمل بنيات ومهام نماذج إنشاء النص الأخرى، كل ذلك من داخل Hugging Face.

نحن نواصل دفع حدود الأداء ونخطط لدمج تقنيات التحسين المتطورة مثل In-Flight Batching لتحسين الإنتاجية عند مطالبات البث وتكميم INT4 لتشغيل نماذج أكبر على وحدة معالجة رسومات واحدة.

جربه: لقد قمنا بإصدار مستودع Optimum-NVIDIA مع تعليمات حول كيفية البدء. يرجى مشاركة ملاحظاتك معنا! 🤗

شاركها.
اترك تعليقاً