TinyLlama 1.1B - الحجم لا يهم

TinyLlama 1.1B – الحجم لا يهم

عقدة المصدر: 3081711

المُقدّمة

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

تهدف هذه المقالة إلى تقديم تحليل لـ TinyLlama 1.1B، وهو نموذج لغة كبير ومدمج. وسوف نتعمق في جوانبها الأساسية، مثل كيفية تدريبها على معايير الأداء والتنفيذ العملي باستخدام منصة Hugging Face. سنقوم أيضًا بتشغيل هذا النموذج على Google Colab المجاني واختبار قدراته في الرياضيات والتفكير.

تايني لاما 1.1 ب

أهداف التعلم

  • احصل على فهم شامل لـ TinyLlama 1.1B
  • استكشف عملية التدريب المعقدة التي مر بها النموذج
  • تحليل الأداء والنتائج المرجعية لتقييم فعاليتها
  • تعرف على الخطوات العملية لتطبيق TinyLlama 1.1B باستخدام أمثلة البرمجة

تم نشر هذه المقالة كجزء من مدونة علوم البيانات.

جدول المحتويات

ما هو TinyLlama 1.1B؟

يعد TinyLlama 1.1B، وهو جزء من مشروع Llama الأوسع، بمثابة شهادة على التقدم في نمذجة اللغة. إنه نموذج يحتوي على 1.1 مليار معلمة، تم تدريبه على 3 تريليون رمز مذهل، مما يضعه في موقع فريد في مشهد الذكاء الاصطناعي. على عكس نظيراته الأكبر حجمًا، تم تصميم TinyLlama 1.1B ليكون أكثر كفاءة وقابلية للإدارة، مما يجعله خيارًا جيدًا للتطبيقات ذات الموارد الحسابية المحدودة.

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

عملية تدريب TinyLlama 1.1B

عملية التدريب في TinyLlama 1.1B رائعة، مثل النموذج نفسه. تم تدريب TinyLlama لمدة 90 يومًا فقط، وتم تدريبه على 16 وحدة معالجة رسوميات A100-40G. وتم إجراء التدريب المسبق على 3 تريليون رمز، وقام فريق TinyLlama بنشر النموذج المتوسط ​​بين كل نصف تريليون. 

أما بالنسبة للبيانات، فقد تم أخذ Slimpajama وStarcoderdata بحجم مجموعة بيانات مجمعة يبلغ 950 مليار رمز. تم الحفاظ على نسبة اللغة الطبيعية إلى الكود عند 7:3، أي أن 70% من البيانات كانت لغة طبيعية، و30% عبارة عن كود. وبالتالي، لتحقيق علامة 3 تريليون رمز للضبط الدقيق، خضعت TinyLlama لثلاث فترات من التدريب على مجموعة البيانات هذه. 

حتى أن هناك نسخة دردشة من TinyLlama تسمى TinyLlama-Chat تم إصدارها. في البداية، خضع هذا النموذج لضبط دقيق على مجموعة بيانات UltraChat، التي تحتوي على محادثات تركيبية متنوعة تم إنشاؤها بواسطة ChatGPT. كانت هذه الخطوة حاسمة في جعل النموذج يتعامل مع سياقات وأنماط المحادثة المختلفة.

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

يمكنك أيضا قراءة: الشروع في العمل مع LlaMA 2: دليل المبتدئين

الأداء والنتائج المعيارية

يكشف تقييم أداء TinyLlama 1.1B عن قدرته على تقديم استجابات عالية الجودة بسرعة. لقد منحها التدريب القدرة على تلبية احتياجات التطبيقات متعددة اللغات، وهي ميزة مهمة في عالمنا المعولم. على الرغم من حجمه الأصغر، لا يزال TinyLlama 1.1B يلحق بنظيراته الأكبر حجمًا فيما يتعلق بجودة الاستجابة والسرعة، مما يجعله أداة فعالة في تطبيقات الذكاء الاصطناعي المختلفة.

ومع أن معايير TinyLlama 1.1B أقل شمولاً من تلك الخاصة بالنماذج الأكبر حجمًا، إلا أنها لا تزال تثبت كفاءتها في التعامل مع المهام اللغوية المعقدة. إن قدرتها على توليد استجابات متماسكة وذات صلة بالسياق بلغات متعددة أمر مثير للإعجاب بشكل خاص. تم اختبار النموذج على معايير مختلفة مثل HellaSwag، وWinoGrande، وARC، وMMLU، وغيرها. بلغ متوسط ​​​​الدرجات المجمعة 52.99. وهذا أفضل بكثير من نموذج المليار معلمة الآخر، أي نموذج Pythia 1B، الذي حقق متوسط ​​نقاط قدره 1. ويوضح الجدول الدرجات الفردية لكل معيار

مؤشر TinyLlama 1.1B النتيجة
هيلا سواج 59.2
عقبة 36.0
وينو غراندي 59.12
ARC_c 30.12
ARC_e 55.25
boolq 57.83
بيكا 73.29
المتوسط 52.9

TinyLlama – البدء

هنا، في هذا القسم، سنقوم بتنزيل الإصدار الكمي من TinyLlama Chat وتشغيله في Google Colab. قبل تنزيل النموذج، يتعين علينا تنزيل وتثبيت حزم Python التالية

!CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip3 install llama-cpp-python 
!pip3 install huggingface-hub 
  • CMAKE_ARGS=”-DLLAMA_CUBLAS=تشغيل” و FORCE_CMAKE=1، سيسمح لـ llama_cpp_python بالاستفادة من وحدة معالجة الرسومات Nvidia المتوفرة في إصدار colab المجاني.
  • ثم نقوم بتثبيت llama_cpp_python الحزمة من خلال pip3
  • نحن حتى تحميل Huggingface-hub، والتي من خلالها سنقوم بتنزيل TinyLlama 1.1B Chat الكمي

لاختبار نموذج TinyLlama 1.1B Chat، نحتاج أولاً إلى تنزيل النسخة الكمية منه. لتحميله سوف نقوم بتشغيل الكود التالي

from huggingface_hub import hf_hub_download

# specifying the model name
model_name = "TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF"
# specifying the type of quantization of the model
model_file = "tinyllama-1.1b-chat-v1.0.Q8_0.gguf"

# download the model by specifying the model name and quantized model name
model_path = hf_hub_download(model_name, filename=model_file)

هنا، و Hugging_face_hub ستتولى المكتبة عملية تنزيل النموذج الكمي. لهذا، نقوم باستيراد hf_hub_download الذي يأخذ في المعلمات التالية:

  • اسم النموذج: إلى هذا المتغير نقوم بتمرير النموذج الذي نرغب في تنزيله. نرغب هنا في تنزيل نموذج TinyLlama 1.1B Chat GGUF.
  • ملف_النموذج: نحدد هنا نوع النموذج الكمي الذي نريد تنزيله. سنقوم هنا بتنزيل الإصدار الكمي 8 بت من TinyLlama 1.1B Chat.
  • وأخيرا، نقوم بتمرير هذه المعلمات إلى hf_hub_download، الذي يأخذ هذه المعلمات ويقوم بتنزيل النموذج المحدد. بعد التنزيل، يقوم بإرجاع المسار الذي تم تنزيل النموذج منه.
  • يتم حفظ هذا المسار الذي تم إرجاعه في ملف نموذج_المسار المتغير.

الآن يمكننا تحميل هذا النموذج من خلال llama_cpp_python مكتبة. سيكون رمز تحميل النموذج مثل الكود أدناه.

from llama_cpp import Llama
llm = Llama(
    model_path=model_path,
    n_ctx=512,  # the number of i/p tokens the model can take
    n_threads=8, # the number of threads to use
    n_gpu_layers=40# how many layers of the model to offload to the GPU
)

نحن نستورد اللاما نوع من الجمال الطبقة من llama_cpp، والذي يأخذ في المعلمات التالية

  • مسار_النموذج: يأخذ هذا المتغير المسار الذي يتم فيه تخزين نموذجنا. لقد حصلنا على المسار من الخطوة السابقة والذي سنقدمه هنا
  • ن_ctx: هنا، نعطي طول السياق للنموذج. في الوقت الحالي، نقدم 512 رمزًا مميزًا كطول السياق
  • ن_الخيوط: ونذكر هنا عدد الخيوط التي سيستخدمها اللاما نوع من الجمال فئة
  • طبقات n_gpu: نحدد هذا إذا كان لدينا GPU قيد التشغيل، وهو ما نقوم به في حالة الكولاب المجاني. لهذا نمرر 40، مما يعني أننا نريد إلغاء تحميل النموذج بأكمله في وحدة معالجة الرسومات ولا نريد تشغيل أي جزء منه في ذاكرة الوصول العشوائي للنظام
  • وأخيرا، نقوم بإنشاء كائن من هذا اللاما نوع من الجمال class واعطائه للمتغير llm

سيؤدي تشغيل هذا الرمز إلى تحميل النموذج الكمي TinyLlama 1.1B Chat على وحدة معالجة الرسومات وتعيين طول السياق المناسب. الآن، حان الوقت لإجراء بعض الاستنتاجات على هذا النموذج. لهذا، نحن نعمل مع الكود أدناه

output = llm(
  "<|im_start|>usernWho are you?<|im_end|>n<|im_start|>assistantn", # User Prompt
  max_tokens=512,  # Number of output tokens generated
  stop=["</s>"],   # Token which tells the LLM to stop
)
print(output['choices'][0]['text']) # Model generated text

لاستنتاج النموذج، نقوم بتمرير المعلمات التالية إلى LLM:

  • نموذج المطالبة/الدردشة: هذا هو النموذج الفوري المطلوب للدردشة مع النموذج. القالب المذكور أعلاه(أي , ) هو النموذج الذي يعمل مع نموذج TinyLlama 1.1B Chat. في القالب، الجملة التي تأتي بعد المستخدم هي موجه المستخدم، وسيتم إنشاء التوليد بعد المساعد.
  • max_tokens: إلى هذا المتغير، نقوم بتمرير قيمة تحدد الحد الأقصى لعدد الرموز المميزة التي يمكن لنموذج اللغة الكبير إخراجها عند تقديم مطالبة. في الوقت الحالي، سنقتصر على 512 رمزًا.
  • توقف: إلى هذا المتغير، نقوم بتمرير رمز التوقف. يخبر رمز الإيقاف نموذج اللغة الكبير بالتوقف عن إنشاء المزيد من الرموز المميزة. بالنسبة لـ TinyLlama 1.1B Chat، رمز الإيقاف هو

يتم تخزين النص الذي تم إنشاؤه في متغير الإخراج عندما نقوم بتشغيل هذا. يتم إنشاء النتيجة بتنسيق مشابه لاستدعاء OpenAI API. وبالتالي، يمكننا الوصول إلى الجيل من خلال بيان الطباعة المحدد، على غرار كيفية الوصول إلى الجيل من استجابات OpenAI. يمكن رؤية الإخراج الناتج أدناه

تايني لاما 1.1 ب

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

output = llm(
  "<|im_start|>usernIf all students who study hard get good grades, 
  and John got good grades, can we conclude that John studied hard?
  <|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
تايني لاما 1.1 ب
output = llm(
  "<|im_start|>usernHow fast can a snake fly?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"

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

output = llm(
  "<|im_start|>usernJohn is twice as old as Sarah, and Sarah is three years 
  older than Mary. If Mary is 10 years old, how old is John?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"
output = llm(
  "<|im_start|>usernWhat is the missing number in this pattern: 
  1, 4, 9, 16, __, 36?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"

من الأمثلة التي رأيناها، من الواضح أن أداء TinyLlamaChat ضعيف للغاية في الإجابة على أسئلة الكفاءة البسيطة في الرياضيات. وهذا أمر متوقع لأنه لم يتم تدريب النموذج مسبقًا على أي مجموعة بيانات رياضية. يمكن تحسين جودة التوليد من خلال ضبطه على مجموعة البيانات الرياضية

فيما يتعلق بالضبط الدقيق، يعد TinyLlama خيارًا مناسبًا لأولئك الذين لديهم أجهزة محدودة ويرغبون في ضبط نماذج اللغات الكبيرة على مجموعة البيانات المحددة الخاصة بهم

حالات الاستخدام والتطبيقات المحتملة

نظرا للحجم الصغير من TinyLlama، التي تضم 1.1 مليار معلمة، فإن تطبيقاتها مناسبة بشكل أساسي للبيئات التي قد لا تكون فيها النماذج الأكبر ممكنة بسبب قيود الأجهزة أو زيادة الكفاءة. فيما يلي بعض حالات الاستخدام المحددة مع مراعاة حجمها:

تطبيقات الهاتف الجوال: الحجم الأصغر لـ TinyLlama يجعله خيارًا جيدًا للدمج في تطبيقات الهاتف المحمول حيث تكون المعالجة على الجهاز ضرورية. يتضمن ذلك تطبيقات ترجمة اللغات وميزات المساعد الشخصي وروبوتات الدردشة التي يمكنها العمل بكفاءة على الهواتف الذكية.

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

حوسبة الحافة: بالنسبة للتطبيقات التي تستفيد من معالجة البيانات بالقرب من المصدر وليس في بيئة سحابية مركزية، يمكن استخدام TinyLlama بشكل فعال. يتضمن ذلك معالجة اللغة في الوقت الفعلي في أنظمة السيارات ومعدات التصنيع وأجهزة الحافة الأخرى.

أبحاث اللغات منخفضة الموارد: نظرًا لصغر حجمها ومتطلباتها الحسابية المنخفضة، يمكن أن تكون TinyLlama أداة قيمة في البحث اللغوي، خاصة بالنسبة للغات ذات الموارد المحدودة حيث لا يكون التدريب على النماذج على نطاق واسع ممكنًا.

الأدوات التعليمية: في البيئات التعليمية، وخاصة تلك التي لديها وصول محدود إلى موارد الحوسبة المتطورة، يمكن استخدام TinyLlama لتطوير تطبيقات تعلم اللغة والأدوات التعليمية التفاعلية وغيرها من الوسائل التعليمية المساعدة.

إنشاء المحتوى للشركات الصغيرة: يمكن للشركات الصغيرة ذات الموارد المحدودة استخدام TinyLlama لإنشاء محتوى، مثل أوصاف المنتج، والنسخة التسويقية، ومراسلات العملاء، دون الحاجة إلى قوة حاسوبية واسعة النطاق.

النماذج الأولية والتجريب: يمكن للمطورين والباحثين الذين يرغبون في تجربة نماذج اللغة ولكنهم يفتقرون إلى الوصول إلى موارد الحوسبة عالية الطاقة استخدام TinyLlama لإنشاء نماذج أولية وتطوير تطبيقات البرمجة اللغوية العصبية الجديدة.

تحليل البيانات بكفاءة: يمكن استخدام TinyLlama لتحليل النص واستخراج البيانات في السيناريوهات التي تتطلب معالجة سريعة وفعالة، مثل تحليل تعليقات العملاء أو استجابات الاستطلاع أو تفاعلات الوسائط الاجتماعية.

وفي الختام

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

تشمل الوجبات السريعة الرئيسية من هذه المقالة

  • تم تصميم TinyLlama 1.1B لتحقيق الكفاءة، وهو متاح لجمهور أوسع، بما في ذلك أولئك الذين لديهم موارد حسابية محدودة، مما يجعله مناسبًا للعديد من التطبيقات.
  • خضع النموذج لعملية تدريب مكثفة، بما في ذلك التدريب على 3 تريليون رمز على مدار 90 يومًا باستخدام 16 وحدة معالجة رسوميات A100-40G.
  • على الرغم من صغر حجمه، يقدم TinyLlama 1.1B استجابات عالية الجودة وذات صلة بالسياق بلغات متعددة، مما يجعله نموذجًا يجب أخذه في الاعتبار.
  • إنه خيار جيد لتطبيقات الهاتف المحمول، ومعدات إنترنت الأشياء، والأدوات التعليمية، والمزيد، حيث يسمح حجمه الصغير وكفاءته بتطبيقات واسعة.
  • إن متطلباتها الحسابية المنخفضة تجعلها أداة قيمة في البحث اللغوي، خاصة بالنسبة للغات قليلة الموارد.
  • يعد هذا النموذج خيارًا جيدًا لأولئك الذين يقومون بتجربة نماذج اللغة أو تطوير تطبيقات البرمجة اللغوية العصبية (NLP) الجديدة، خاصة في الإعدادات ذات القوة الحسابية المحدودة.

الأسئلة المتكررة

Q1. ما هو TinyLlama 1.1B؟

A. TinyLlama 1.1B هو نموذج لغة كبير الحجم ومدمج وفعال يحتوي على 1.1 مليار معلمة، تم تدريبه على 3 تريليون رمز، وهو مناسب للتطبيقات ذات الموارد الحسابية المحدودة.

Q2. كيف تم تدريب TinyLlama 1.1B؟

A. تم تدريبه على مدار 90 يومًا باستخدام 16 وحدة معالجة رسوميات A100-40G على مجموعات البيانات بما في ذلك Slimpajama وStarcoderdata، مع نسبة لغة طبيعية إلى رمز تبلغ 7:3.

Q3. ما هي معايير أداء TinyLlama 1.1B؟

A. يُظهر TinyLlama 1.1B مهاراته في التعامل مع المهام اللغوية المعقدة، حيث سجل متوسط ​​52.99 عبر معايير مثل HellaSwag، وMMLU، وWinoGrande.

Q4. ما هي بعض حالات الاستخدام المحتملة لـ TinyLlama 1.1B؟

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

Q5. هل TinyLlama 1.1B مناسب للمطورين ذوي الموارد المحدودة؟

A. بالتأكيد، إنه خيار مثالي للمطورين والباحثين الذين يفتقرون إلى الوصول إلى موارد الحوسبة عالية الطاقة لإنشاء نماذج أولية وتطوير تطبيقات البرمجة اللغوية العصبية الجديدة. يمكن تشغيل نموذج TinyLlama على جهاز Raspberry Pi.

Q6. كيف يؤدي TinyLlama 1.1B في مهام التفكير الرياضي؟

A. في حين أنها تتفوق حقًا في المهام اللغوية المختلفة، إلا أنها تظهر قيودًا في التفكير الرياضي، والتي يمكن تحسينها من خلال ضبط مجموعات البيانات ذات الصلة.

الوسائط الموضحة في هذه المقالة ليست مملوكة لـ Analytics Vidhya ويتم استخدامها وفقًا لتقدير المؤلف.

الطابع الزمني:

اكثر من تحليلات Vidhya