استخدام Llamafiles لتبسيط تنفيذ LLM

استخدام Llamafiles لتبسيط تنفيذ LLM

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

المُقدّمة

لقد كان تشغيل نماذج اللغات الكبيرة دائمًا عملية شاقة. يتعين على المرء تنزيل مجموعة من برامج الطرف الثالث لتحميل LLMs أو تنزيل Python وإنشاء بيئة عن طريق تنزيل الكثير من مكتبات Pytorch وHuggingFace. في حالة اتباع نهج بايثون، يتعين على المرء أن يمر بعملية كتابة التعليمات البرمجية لتنزيل النموذج وتشغيله. سينظر هذا الدليل في طريقة أسهل لتشغيل برامج LLM هذه.

أهداف التعلم

  • فهم تحديات تنفيذ LLM التقليدي
  • فهم المفهوم المبتكر لملفات Llamafiles
  • تعلم كيفية تنزيل وتشغيل ملفات Llamafile التنفيذية الخاصة بك بسهولة
  • تعلم كيفية إنشاء Llamfiles من LLMs الكمية
  • التعرف على القيود المفروضة على هذا النهج

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

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

مشاكل مع نماذج اللغة الكبيرة

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

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

ما هي ملفات اللاما؟

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

تم تطوير llama.cpp بواسطة Georgi Gerganov لتشغيل نماذج اللغات الكبيرة بالتنسيق الكمي بحيث يمكن تشغيلها على وحدة المعالجة المركزية (CPU). llama.cpp عبارة عن مكتبة C تتيح لنا تشغيل LLMs الكمية على أجهزة المستهلك. من ناحية أخرى، تعد مكتبة libc العالمية مكتبة C أخرى تقوم ببناء ملف ثنائي يمكن تشغيله على أي نظام تشغيل (Windows وMac وUbuntu) دون الحاجة إلى مترجم. لذلك تم إنشاء Llamafile فوق هذه المكتبات، مما يتيح له إنشاء LLMs قابلة للتنفيذ في ملف واحد

النماذج المتاحة موجودة بالتنسيق الكمي GGUF. GGUF هو تنسيق ملف لنماذج اللغات الكبيرة تم تطويره بواسطة Georgi Gerganov، منشئ llama.cpp. GGUF هو تنسيق لتخزين نماذج اللغات الكبيرة ومشاركتها وتحميلها بفعالية وكفاءة على وحدات المعالجة المركزية (CPU) ووحدات معالجة الرسومات (GPU). يستخدم GGUF تقنية التكميم لضغط النماذج من النقطة العائمة الأصلية 16 بت إلى تنسيق عدد صحيح 4 بت أو 8 بت. يمكن تخزين أوزان هذا النموذج الكمي بتنسيق GGUF هذا

وهذا يجعل من السهل تشغيل نماذج 7 Billion Parameter على جهاز كمبيوتر مزود بذاكرة VRAM سعة 16 جيجابايت. يمكننا تشغيل نماذج اللغات الكبيرة دون الحاجة إلى وحدة معالجة الرسومات (على الرغم من أن Llamafile يسمح لنا بتشغيل LLMs على وحدة معالجة الرسومات). في الوقت الحالي، تتوفر ملفات اللاما الخاصة بنماذج اللغات الكبيرة مفتوحة المصدر الشهيرة مثل LlaVa وMistral وWizardCoder للتنزيل والتشغيل بسهولة.

الملفات التنفيذية طلقة واحدة

في هذا القسم، سنقوم بتنزيل LlaVa Llamafile متعدد الوسائط ونحاول تشغيله. هنا، لن نعمل مع وحدة معالجة الرسومات ونقوم بتشغيل النموذج على وحدة المعالجة المركزية. انتقل إلى مستودع Llamafile GitHub الرسمي بالنقر فوق هنا وتحميل نموذج LlaVa 1.5.

الملفات التنفيذية طلقة واحدة | ملفات لاما

قم بتنزيل النموذج

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

"

ثم افتح CMD، وانتقل إلى المجلد الذي تم تنزيل هذا النموذج فيه، واكتب اسم الملف الذي قمنا بتنزيله، ثم اضغط على Enter.

llava-v1.5-7b-q4.llamafile
"

لمستخدمي ماك ولينكس

بالنسبة لنظامي التشغيل Mac وLinux، يكون إذن التنفيذ متوقفًا افتراضيًا لهذا الملف. ومن ثم، يتعين علينا توفير إذن التنفيذ لملف llamafile، والذي يمكننا القيام به عن طريق تشغيل الأمر أدناه.

chmod +x llava-v1.5-7b-q4.llamafile

هذا لتفعيل إذن التنفيذ لملف llava-v1.5-7b-q4.llamafile. أضف أيضًا "./" قبل اسم الملف لتشغيل الملف على نظامي التشغيل Mac وLinux. بعد الضغط على كلمة الإدخال الأساسية، سيتم دفع النموذج إلى ذاكرة الوصول العشوائي للنظام وإظهار الإخراج التالي.

لمستخدمي ماك ولينكس | ملفات لاما

بعد ذلك سينبثق المتصفح وسيتم تشغيل النموذج على عنوان URL http://127.0.0.1:8080/

"
"

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

أدناه، يمكننا أيضًا التحقق من معلمات LLM الفائقة القابلة للتكوين مثل Top P وTop K ودرجة الحرارة وغيرها. وحتى هذه، سنتركها افتراضية في الوقت الحالي. الآن دعنا نكتب شيئًا ما ونضغط على إرسال.

"

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

وحدة المعالجة المركزية | TinyLlama

على الرغم من أنه ليس صحيحًا بنسبة 100%، إلا أن النموذج يمكنه تقريبًا الحصول على معظم الأشياء بشكل صحيح من الصورة. الآن دعونا نجري محادثة متعددة الأدوار مع LlaVa لاختبار ما إذا كان يتذكر سجل الدردشة.

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

إنشاء ملفات لاما

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

اختر LLM

سنبدأ أولاً باختيار نموذج لغة كبير. في هذا العرض التوضيحي، سنختار نسخة كمية من TinyLlama. هنا، سنقوم بتنزيل نموذج GGUF المكمّم ذو 8 بتات من TinyLlama (يمكنك النقر فوق هنا للذهاب إلى HuggingFace وتنزيل النموذج)

TinyLlama

قم بتنزيل أحدث ملف Llamafile

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

"

الآن انقل النموذج الكمي TinyLlama 8 بت الذي تم تنزيله إلى مجلد الحاوية هذا. لإنشاء الملفات التنفيذية ذات الملف الواحد، نحتاج إلى إنشاء ملف .args في مجلد bin الخاص بـ llamafile. نحتاج إلى إضافة المحتوى التالي إلى هذا الملف:

-m
tinyllama-1.1b-chat-v0.3.Q8_0.gguf
--host
0.0.0.0
...
  • يشير السطر الأول إلى العلامة -m. هذا يخبر ملف اللاما بأننا نقوم بتحميل أوزان النموذج.
  • في السطر الثاني، نحدد اسم النموذج الذي قمنا بتنزيله، والموجود في نفس الدليل الذي يوجد به ملف .args، أي مجلد bin الخاص بملف llamafile.
  • في السطر الثالث، نضيف علامة المضيف، للإشارة إلى أننا نقوم بتشغيل الملف القابل للتنفيذ ونريد استضافته على خادم الويب.
  • أخيرًا، في السطر الأخير، نذكر العنوان الذي نريد استضافته، والذي يرتبط بالمضيف المحلي. تليها النقاط الثلاث، التي تحدد أنه يمكننا تمرير الوسائط إلى ملف llamafile الخاص بنا بمجرد إنشائه.
  • أضف هذه السطور إلى ملف .args واحفظه.

لمستخدمي ويندوز

الآن، الخطوة التالية لمستخدمي Windows. إذا كنا نعمل على Windows، كنا بحاجة إلى تثبيت Linux عبر WSL. إذا لم يكن الأمر كذلك، فانقر فوق هنا لمتابعة خطوات تثبيت Linux من خلال WSL. في نظامي التشغيل Mac وLinux، لا توجد خطوات إضافية مطلوبة. افتح الآن مجلد bin الخاص بمجلد llamafile في الوحدة الطرفية (إذا كنت تعمل على نظام Windows، فافتح هذا الدليل في WSL) واكتب الأوامر التالية.

cp llamafile tinyllama-1.1b-chat-v0.3.Q8_0.llamafile

هنا، نقوم بإنشاء ملف جديد يسمى tinyllama-1.1b-chat-v0.3.Q3_0.llamafile؛ أي أننا نقوم بإنشاء ملف بامتداد .llamafile وننقل الملف llamafile إلى هذا الملف الجديد. الآن، بعد ذلك، سوف نقوم بكتابة الأمر التالي.

./zipalign -j0 tinyllama-1.1b-chat-v0.3.Q8_0.llamafile tinyllama-1.1b-chat-v0.3.Q8_0.gguf .args

نحن هنا نعمل مع ملف zipalign الذي جاء عندما قمنا بتنزيل ملف llamafile المضغوط من GitHub. نحن نعمل باستخدام هذا الأمر لإنشاء ملف llamafile لـ TinyLlama الكمي الخاص بنا. إلى أمر zipalign هذا، نمرر الملف tinyllama-1.1b-chat-v0.3.Q8_0.llamafile الذي أنشأناه في الخطوة السابقة، ثم نمرر الملف tinyllama-1.1b-chat-v0.3.Q8_0.llamafile النموذج الموجود لدينا في مجلد bin ثم نقوم أخيرًا بتمرير ملف .args الذي أنشأناه مسبقًا.

سيؤدي هذا أخيرًا إلى إنتاج ملفنا الفردي القابل للتنفيذ tinyllama-1.1b-chat-v0.3.Q8_0.llamafile. للتأكد من أننا على نفس الصفحة، يحتوي مجلد bin الآن على الملفات التالية.

الملفات التنفيذية | ملفات لاما

الآن، يمكننا تشغيل الملف tinyllama-1.1b-chat-v0.3.Q8_0.llama بنفس الطريقة التي قمنا بها من قبل. في نظام التشغيل Windows، يمكنك أيضًا إعادة تسمية الملف .llamafile إلى .exe وتشغيله بالنقر المزدوج فوقه.

خادم متوافق مع OpenAI

سيتناول هذا القسم كيفية خادم LLMs من خلال Llamfile. لقد لاحظنا أنه عندما نقوم بتشغيل ملف اللاما، يتم فتح المتصفح، ويمكننا التفاعل مع LLM من خلال WebUI. وهذا في الأساس ما نسميه استضافة نموذج اللغة الكبير.

بمجرد تشغيل Llamafile، يمكننا التفاعل مع LLM المعني كنقطة نهاية لأنه يتم تقديم النموذج على المضيف المحلي في PORT 8080. يتبع الخادم بروتوكول OpenAI API، أي مشابه لـ OpenAI GPT Endpoint، مما يجعل من السهل التبديل بين نموذج OpenAI GPT وLLM الذي يعمل مع Llamafile.

هنا، سوف نقوم بتشغيل ملف TinyLlama llamafile الذي تم إنشاؤه مسبقًا. الآن، يجب أن يتم تشغيل هذا على المضيف المحلي 8080. وسنختبره الآن من خلال OpenAI API نفسه في Python

from openai import OpenAI
client = OpenAI(
    base_url="http://localhost:8080/v1", 
    api_key = "sk-no-key-required"
)
completion = client.chat.completions.create(
    model="TinyLlama",
    messages=[
        {"role": "system", "content": "You are a usefull AI 
        Assistant who helps answering user questions"},
        {"role": "user", "content": "Distance between earth to moon?"}
    ]
)
print(completion.choices[0].message.content)
  • هنا، نحن نعمل مع مكتبة OpenAI. ولكن بدلاً من تحديد نقطة نهاية OpenAI، نحدد عنوان URL الذي تتم استضافة TinyLlama فيه ونعطيه ""sk-no-token-required"" لapi_key
  • وبعد ذلك، سيتم توصيل العميل بنقطة نهاية TinyLlama الخاصة بنا
  • الآن، على غرار الطريقة التي نعمل بها مع OpenAI، يمكننا استخدام الرمز للدردشة مع TinyLlama.
  • ولهذا نعمل مع الاكمال فئة OpenAI. نحن نصنع الجديد الاكمال مع الالجائزة .يخلق() الكائن وتمرير التفاصيل مثل اسم النموذج والرسائل.
  • تكون الرسائل على شكل قائمة من القواميس، حيث لدينا الدور الذي يمكن أن يكون النظام أو المستخدم أو المساعد، ولدينا المحتوى.
  • وأخيرا، يمكننا استرداد المعلومات التي تم إنشاؤها من خلال بيان الطباعة أعلاه.

يمكن رؤية الناتج لما سبق أدناه.

لامافايلز | انتاج |

بهذه الطريقة، يمكننا الاستفادة من ملفات اللاما واستبدال OpenAI API بسهولة بملف اللاما الذي اخترنا تشغيله.

قيود ملفات اللاما

على الرغم من أن ملفات اللاما ثورية، إلا أنها لا تزال قيد التطوير. بعض القيود تشمل:

  • اختيار نموذج محدود: في الوقت الحالي، لا تتوفر جميع شهادات LLM في شكل ملفات llamafiles. لا يزال الاختيار الحالي لملفات Llamafiles المعدة مسبقًا في ازدياد. تتوفر حاليًا ملفات Llamafiles لـ Llama 2 وLlaVa وMistral وWizard Coder.
  • متطلبات الأجهزة: لا يزال تشغيل LLMs، حتى من خلال Llamafiles، يتطلب الكثير من الموارد الحسابية. على الرغم من أن تشغيلها أسهل من الطرق التقليدية، إلا أن أجهزة الكمبيوتر القديمة أو الأقل قوة قد تحتاج إلى مساعدة لتشغيلها بسلاسة.
  • مخاوف أمنية: إن تنزيل الملفات التنفيذية وتشغيلها من مصادر غير موثوقة ينطوي على مخاطر كامنة. لذلك يجب أن يكون هناك نظام أساسي جدير بالثقة يمكننا من خلاله تنزيل ملفات اللاما هذه.

Llamafiles مقابل الباقي

قبل Llamafiles، كانت هناك طرق مختلفة لتشغيل نماذج اللغات الكبيرة. كان واحدا من خلال llama_cpp_python. هذه هي نسخة Python من llama.cpp التي تتيح لنا تشغيل نماذج لغة كبيرة كمية على الأجهزة الاستهلاكية مثل أجهزة الكمبيوتر المحمولة وأجهزة الكمبيوتر المكتبية. ولكن لتشغيله، يجب علينا تنزيل وتثبيت Python وحتى مكتبات التعلم العميق مثل torch، وhuggingface، والمحولات، وغيرها الكثير. وبعد ذلك، تضمن الأمر كتابة العديد من أسطر التعليمات البرمجية لتشغيل النموذج.

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

ثم هناك أولاما. لقد حقق Ollama نجاحًا كبيرًا في مجتمع الذكاء الاصطناعي لسهولة استخدامه لتحميل نماذج اللغات الكبيرة وتشغيلها بسهولة، خاصة النماذج الكمية. Ollama هو نوع من TUI (واجهة المستخدم الطرفية) لـ LLMs. والفرق الوحيد بين Ollama وLlamafile هو إمكانية المشاركة. أي أنه إذا أردت ذلك، يمكنني مشاركة ملف model.llamafi الخاص بي مع أي شخص ويمكنه تشغيله دون تنزيل أي برامج إضافية. لكن في حالة Ollama، أحتاج إلى مشاركة ملف model.gguf، والذي يمكن للشخص الآخر تشغيله فقط عند تثبيت برنامج Ollama أو من خلال مكتبات Python المذكورة أعلاه.

فيما يتعلق بالموارد، تتطلب جميعها نفس القدر من الموارد لأن كل هذه الطرق تستخدم llama.cpp الموجود بالأسفل لتشغيل النماذج الكمية. يتعلق الأمر فقط بسهولة الاستخدام حيث توجد اختلافات بينها.

وفي الختام

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

الوجبات السريعة الرئيسية

  • ملفات Llamafiles هي ملفات تنفيذية ذات ملف واحد تجعل تشغيل نماذج اللغات الكبيرة (LLMs) أسهل وأكثر سهولة.
  • إنها تلغي الحاجة إلى عمليات إعداد وتكوينات معقدة، مما يسمح للمستخدمين بتنزيل LLMs وتشغيلها مباشرةً دون الحاجة إلى متطلبات Python أو GPU.
  • تتوفر ملفات Llamafiles حاليًا لمجموعة محدودة من حاملي شهادات LLM مفتوحة المصدر، بما في ذلك LlaVa وMistral وWizardCoder.
  • على الرغم من أن ملفات Llamafiles ملائمة، إلا أنها لا تزال تعاني من قيود، مثل متطلبات الأجهزة والمخاوف الأمنية المرتبطة بتنزيل الملفات التنفيذية من مصادر غير موثوقة.
  • على الرغم من هذه القيود، تمثل Llamafiles خطوة مهمة نحو إضفاء الطابع الديمقراطي على الوصول إلى LLM للمطورين والباحثين وحتى المستخدمين العاديين.

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

س1. ما هي فوائد استخدام Llamafiles؟

A. توفر Llamafiles العديد من المزايا مقارنة بطرق تكوين LLM التقليدية. إنها تجعل إعداد وتنفيذ LLM أسهل وأسرع لأنك لا تحتاج إلى تثبيت Python أو الحصول على وحدة معالجة الرسومات. وهذا يجعل LLMs متاحة بسهولة أكبر لجمهور أوسع. بالإضافة إلى ذلك، يمكن تشغيل Llamafiles عبر أنظمة تشغيل مختلفة.

س2. ما هي القيود المفروضة على Llamafiles؟

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

س3. كيف يمكنني البدء مع Llamafiles؟

ج: للبدء في استخدام Llamafiles، يمكنك زيارة مستودع Llamafile GitHub الرسمي. هناك، يمكنك تنزيل Llamafile لنموذج LLM الذي تريد استخدامه. بمجرد تنزيل الملف، يمكنك تشغيله مباشرة كملف قابل للتنفيذ.

س 4. هل يمكنني استخدام نموذج LLM الخاص بي مع Llamafiles؟

ج: لا. في الوقت الحالي، تدعم Llamafiles فقط نماذج محددة تم إنشاؤها مسبقًا. تم التخطيط لإنشاء ملفات Llamafiles الخاصة بنا في الإصدارات المستقبلية.

س5. ما هي آفاق Llamafiles؟

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

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

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

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