اذهب إلى المحتوى

كل الأنشطة

تحدث تلقائيًا

  1. الساعة الماضية
  2. في السيناريوهات العمليّة غالبًا مانحتاج إلى تلخيص النصوص لاستخلاص المعلومات المفيدة من المستندات أو الوثائق المختلفة. بدءًا من المقالات البحثية المُعقّدة وتقارير الأرباح المالية إلى رسائل البريد الإلكتروني الطويلة والمقالات الإخباريّة. ويتطلّب تلخيص النصوص فهمًا دقيقًا للمقاطع الطويلة، والقدرة على تحليل المحتوى المعقد، والكفاءة في صياغة نص متماسك يُلخّص الموضوعات الأساسية للوثيقة الأصلية. خلال هذه المقالة سوف: نبحث عن نص لكي نُنفّذ عملية التلخيص عليه باستخدام تقنيات الذكاء الاصطناعي. نتعرّف على أفضل النماذج الموجودة حاليًّأ لتنفيذ هذه المهمة. نكتب بعض التعليمات البرمجية لتنفيذ ذلك. نُقيّم أداء النماذج باستخدام أدوات تقييم الأداء ذات الصلة بهذه المهمة. النص الذي سنؤدي عليه المهام الموضحة أعلاه هو عبارة عن نص يوضح مجموعة من الاعتبارات والمبادئ الأساسية لتطوير ونشر أنظمة الذكاء الاصطناعي، وقد جلبناه من أحد المواقع يدويًّا من أجل التجريب وتبسيط العمل، لكن في السيناريوهات العمليّة، قد نحتاج إلى استخراج هكذا نصوص من مواقع الويب، وهذا يتطلب استخدام أدوات ومكتبات إضافية أخرى. import textwrap content = """Mozilla's "Trustworthy AI" Thinking Points: PRIVACY: How is data collected, stored, and shared? Our personal data powers everything from traffic maps to targeted advertising. Trustworthy AI should enable people to decide how their data is used and what decisions are made with it. FAIRNESS: We’ve seen time and again how bias shows up in computational models, data, and frameworks behind automated decision making. The values and goals of a system should be power aware and seek to minimize harm. Further, AI systems that depend on human workers should protect people from exploitation and overwork. TRUST: People should have agency and control over their data and algorithmic outputs, especially considering the high stakes for individuals and societies. For instance, when online recommendation systems push people towards extreme, misleading content, potentially misinforming or radicalizing them. SAFETY: AI systems can carry high risk for exploitation by bad actors. Developers need to implement strong measures to protect our data and personal security. Further, excessive energy consumption and extraction of natural resources for computing and machine learning accelerates the climate crisis. TRANSPARENCY: Automated decisions can have huge personal impacts, yet the reasons for decisions are often opaque. We need to mandate transparency so that we can fully understand these systems and their potential for harm.""" نحن الآن جاهزون للبدء بتلخيص هذا النص. لكن دعنا نناقش بداية أبرز التحديات والحلول المرتبطة بتقنيات الذكاء الاصطناعي. التحديات والحلول في الوضع الراهن للذكاء الاصطناعي يتطلّب الوضع الراهن في الذكاء الاصطناعي أن يبقى مهندس الذكاء الاصطناعي يقظًا ومتابعًا لأهم الأعمال والتقنيات والأوراق البحثيّة الجديدة، فكل أسبوع نشاهد العديد من الاختراقات في هذا المجال، فمثلًا التقنيات التي كانت تُستخدم مع مهمةً ما منذ سنة، أصبحت الآن قديمة بكل معنى الكلمة، فربما كنت تستخدم فرضًا نموذج GPT 3 في مشروعك، لكن في لحظة كتابة هذا المقال لدينا GPT 3.5 و GPT 4، وهما نموذجان يُمثلان قفزة هائلة عن GPT 3 وفي المستقبل القريب ستظهر بالتأكيد نماذج أخرى أحدث وأكثر استقرارًا وكفاءة. نستنتج من ذلك أن البيئة الحاليّة للذكاء الاصطناعي هي بيئة ديناميكيّة تتغيّر باستمرار، لذا لن يكون من السهل على المهندسين الجدد المهتمين بهذا المجال مواكبة تلك التطورات السريعة، لذا فالأمر يتطلّب اجتهادًا وصبرًا طويلين، وهذا يتضمّن: التعرّف على النماذج مفتوحة المصدر المتوفرة. معرفة مدى مُلاءمة النماذج للمهام المحددة. مثلًا إذا كنت تعمل على مهام تتضمّن توليد اللغة مثل توليد النص أو تلخيصه، فالأفضل غالبًا هي النماذج التي تعتمد على بنية مُفكك التشفير Decoder من نموذج المحولات Transformers مثل GPT أو CTRL، أو بنيتي مُفكك التشفير والمُشفّر Encoder معًا كما في T5. فهم المعايير والمقاييس المستخدمة لتقييم هذه النماذج فبعض المقاييس مُصمّمة لمهام محددة فقط. معرفة النماذج التي تُحقّق أفضل النتائج على المهمة المطلوبة، وذلك وفقًا للمقاييس والمعايير النموذجيّة للمهمة المدروسة. ضمان التوافق مع الأجهزة المتوفرة، مثلًا ChatGPT لايدعم الآندرويد لحظة كتابة هذا المقال. أما بالنسبة للمهندسين المُنخرطين بالفعل في سوق العمل ويعملون في ظل مواعيد نهائية ضيقة، فربما سيكون من الصعب جدًا عليهم مواكبة أحدث التطورات، والذي يزيد من تعقيد المشكلة هو كثرة المواقع والمجلات والمؤتمرات التي تُنشر فيها أحدث التطورات أو يجري التحدث فيها عن أحدث التطورات، وهذا ما يجعل من الصعب على المهندسين الوصول إلى معلومات شاملة وموحدة. كيف يمكنني معرفة النماذج مفتوحة المصدر المتاحة لمهمة تلخيص النصوص؟ بالعودة لمهمة تلخيص النص التي تحدثنا عنها في بداية المقال مبدئيًّا، نوصي باستكشاف مكتبة HuggingFace التي تتضمّن دليلًا شاملًا للنماذج مفتوحة المصدر مُصنّفةً حسب المهمة، فهي ممتازة كنقطة انطلاق. يمكنك الدخول إلى هذا الرابط على سبيل المثال ورؤية العديد من النماذج الخاصة بهذه المهمة. طبعًا بعض هذه النماذج التي ستراها في القائمة بالتأكيد ستتضمّن نماذج اللغة الكبيرة LLMs، وكما تعلم فهذه النماذج تكون مصممة للأغراض العامة (النماذج اللغوية تُصمّم للتعامل مع العديد من المهام) وليس فقط مهمة تصنيف النص، لذا قد لاترغب بذلك، أو إذا كنت ترغب بذلك (الحل الأفضل)، فيتوجّب عليك تكييفها أو ضبطها Fine-tune على مهمة التلخيص المدروسة إن لم تكن مضبوطة عليها مُسبقًا. لكن في ظل هذا العدد الكبير جدًا من النماذج، قد تنتساءل: ما هي النماذج التي يجب أن أختارها؟ وتزداد الحيرة أكثر بسبب كون هذه النماذج مُدرّبة على أنواع مُختلفة من البيانات، فأحدها ربما يكون مُدرّبًا على تلخيص النشرات الإخباريّة، بالتالي يكون مُدرّبًا على بيانات تتضمّن نشرات أخبار؛ هذا يعني أن هذا النموذج يصلح فقط لتلخيص النصوص الإخباريّة وليس أي نوع آخر، والأسوأ أن بعض النماذج غير معروف ما نوع البيانات المُدرّبة عليها. والإجابة عن هذا السؤال هي "استخدام المقاييس metrics" التي تقيس جودة النموذج بالنسبة للمهمة المطلوبة. كيف يمكننا تقييّم أداء نماذج تلخيص النصوص؟ يمكن أن تكون الخطوات التالية بمثابة إطار عام لتقييم أي نموذج كان بغض النظر عن المهمة المدروسة، أي سواء كانت مهمة تلخيص النص أم غيرها. تجدر الملاحظة أنّه من أجل أن يكون التقييم دقيقًا، يجب علينا اختبار أداء النموذج على أكثر من مجموعة بيانات، لكن من أجل البساطة، سنجرّب حاليًا على مجموعة بيانات واحدة فقط. ابحث عن مجموعة بيانات معياريّة (نموذجيّة) تُستخدم في تقييم النموذج المدروس وفقًا للمهمة المطلوبة. طبعًا عندما نقول نموذجيّة أو معياريّة، فهذا يعني أنها مُعتمدة وموثوقة وصالحة وخالية من التحيزات (إلى أكبر حد ممكن) وذات جودة عالية، وذلك لتتماشى مع مبادئ الاستخدام المسؤول للذكاء الاصطناعي. على سبيل المثال يكمن استخدام موقع Paper with code، فهو يوفر أفضل النماذج ومجموعات البيانات التي يُجري الباحثون تقييماتهم عليها. مثلًا هنا يمكنك أن تجد أبرز المجموعات المناسبة لمهمة تلخيص النص (فمجموعات البيانات التي ستراها في الرابط وفي الموقع عمومًا هي مجموعات بيانات معياريّة). التعرّف على المقاييس المُستخدمة لتقييم المهمة المطروحة. طبعًا هناك مقاييس مُحددة لكل مهمة، وقد يكون مقياسًا ما صالحًا لمهمة واحدة أو عدة مهام. إجراء التقييم باستخدام مقياس واحد أو أكثر، وعلى مجموعة بيانات واحدة أو أكثر (يُفضّل أكثر من واحدة). العثور على مجموعات البيانات كما ذكرت في الفقرة السابقة؛ أفضل طريقة هي الذهاب إلى موقع Papers With Code، فهو موقع موثوق تٌنشر فيه أبرز الأوراق البحثيّة في الذكاء الاصطناعي مع مستودعات الشيفرات البرمجية المرتبطة بها. اذهب أولاً إلى الموقع ثم إلى انتقل لقسم Datasets، ثم ابحث عن "Text Summarization" ثم انتقل إلى قسم Datasets واضغط على "توسيع أو See all" ومن هناك تظهر جميع مجموعات البيانات ذات الصلة مع إمكانية فرزها أو تصفيتها وفق رغبتك. في حالتنا نريد أن نفرزها حسب عدد مرات الاقتباس cite. نختار الآن مجموعة البيانات الأكثر اقتباسًا والتي غالبًا ماتكون الأكثر شعبية، وهي مجموعة بيانات "CNN/DailyMail" في وقت كتابة هذه المقالة. لاداعي لتحميل مجموعة البيانات حاليًّا، وإنما سنراجع المعلومات المُتعلقة بمجموعة البيانات هذه والموجودة على موقع Papers With Code، وذلك من أجل الخطوة التالية. تجدر الملاحظة إلى أن مجموعة البيانات هذه متاحة أيضًا على Huggingface. الآن عليك التحقق من 3 أشياء: الترخيص license: مجموعة البيانات مُرخصة من معهد ماساتشوستس للتكنولوجيا MIT، أي يمكننا استخدامها لكل من المشاريع التجارية والشخصية. الأوراق البحثية الأحدث على هذه البيانات: وذلك لمعرفة فيما إذا كانت الأوراق البحثية التي تستخدم هذه البيانات حديثة أم قديمة. لمعرفة ذلك نفرز الأوراق تنازليًّا. في حالتنا فإن الأوراق التي تستخدم هذه البيانات حديثة (من عام 2023)، وهذا مانرغب به! مدى توفر المعلومات المتعلقة بأصل مجموعة البيانات وعملية جمعها وشفافية الأساليب (مدى صراحة وشمولية توثيق الأساليب المستخدمة لجمع ومعالجة وتنظيم مجموعة البيانات) المستخدمة في إنشائها: مجموعة البيانات مُنشئة من قبل شركة IBM بالشراكة مع جامعة مونتريال، وذلك عظيم! فهذه مصادر موثوقة تلتزم بهذه المتطلبات. دعونا الآن نستكشف المقاييس المُستخدمة في تقييم أداء النماذج على مجموعة البيانات هذه. تقييم النماذج في هذه المرحلة يجب علينا استكشاف المقاييس التي يُشاع استخدامها من قبل الباحثين في تقييّم نماذج التلخيص على مجموعات البيانات. طبعًا يُفترض أن يكون لديك فهم نظري لمهمة تلخيص النص، وإلا فلن تكون قادرًا على فهم هذه المقاييس. هناك نوعان مختلفان لمهمة تلخيص النص (يمكن اعتبار كل نوع بمثابة مهمة فرعيّة)، النوع الأول هو "تلخيّص النص التجريدي Abstractive Text Summarization" والثاني "تلخيّص النص الاستخراجي Extractive Text Summarization" في النوع الأول يكون الهدف هو تلخيص النص من حيث المعنى، وهذا يعني أن يكون لدينا جمل جديدة، أما في النوع الثاني فيكون عبارة عن استخلاص مقتطفات بسيطة من النص. بالنسبة لمجموعة البيانات التي سنعمل عليها (مقالات CNN)، فهي مرتبطة بالنوع الأول. نلاحظ هنا العديد من المصطلحات وهي ROUGE-1 و ROUGE-2 و ROUGE-3، وهي المقاييس الشائعة لهذه المهمة الفرعية، كما نلاحظ العديد من النماذج ونتائجها وفقًا لهذه المقاييس الثلاث، وهو ما نحتاجه. الآن إذا قارنا بين هذه النماذج وفقًا للمقياس الأول، فنلاحظ أن أول 3 نماذج نتائجها متقاربة، حيث نلاحظ أن جميعها تقترب من 50 وهي قيمة واعدة وفقًا لمقياس ROUGE. اختبار النموذج بعد أن تعرّفنا على المقاييس التي يجب أخذها بعين الاعتبار لتقييم النماذج ورؤيتنا لأفضل ثلاثة منها، يمكننا الانتقال إلى مرحلة اختبار النماذج. تجدر الملاحظة أن هذه النماذج يُفضّل أن تُشغّل على وحدة معالجة الرسومات GPU لكونها تنفذ المهام بصورة متزامنة لتحسين الأداء (وبعضها قد لا يعمل إلا عليها)، لكن يمكن أن يكون بعضها قادرًا على العمل على وحدات CPU وبأداء مقبول. دعونا نختار نموذج Pegasus من بين تلك الخيارات، والأمر الذي يجعل اختيارنا موفقًا هو أن هذا النموذج جرى تدريبه على مجموعة بيانات CNN التي نعمل معها بالنسبة لمهمة "استخلاص النص التجريدي". بعد ذلك لنكتب الكود التالي بلغة البرمجة بايثون والذي يستخدم إطار عمل باي توش PyTorch للغة بايثون ومكتبة Transformers من Hugging Face ونموذج Pegasus لتلخيص النصوص: # We start by installing the transformers library %pip install transformers sentencepiece بعد ذلك علينا الوصول إلى نموذج Pegasus من مكتبة المحولات (مكتبة Huggingface): from transformers import PegasusForConditionalGeneration, PegasusTokenizer import torch # Set the seed, this will help reproduce results. Changing the seed will # generate new results from transformers import set_seed set_seed(248602) # We're using the version of Pegasus specifically trained for summarization # using the CNN/DailyMail dataset model_name = "google/pegasus-cnn_dailymail" # If you're following along in Colab, switch your runtime to a # T4 GPU or other CUDA-compliant device for a speedup device = "cuda" if torch.cuda.is_available() else "cpu" # Load the tokenizer tokenizer = PegasusTokenizer.from_pretrained(model_name) # Load the model model = PegasusForConditionalGeneration.from_pretrained(model_name).to(device) # Tokenize the entire content batch = tokenizer(content, padding="longest", return_tensors="pt").to(device) # Generate the summary as tokens summarized = model.generate(**batch) # Decode the tokens back into text summarized_decoded = tokenizer.batch_decode(summarized, skip_special_tokens=True) summarized_text = summarized_decoded[0] # Compare def compare(original, summarized_text): print(f"Article text length: {len(original)}\n") print(textwrap.fill(summarized_text, 100)) print() print(f"Summarized length: {len(summarized_text)}") compare(content, summarized_text) عند تنفيذ الكود سنحصل على تلخيص النص الأصلي content المكون من 1427 حرفًا، وكما تلاحظ يحتوي التلخيص summarized_text على 320 حرفًا فقط ويركز على العبارات والجمل الهامة في النص الأصلي. Article text length: 1427 Trustworthy AI should enable people to decide how their data is used.<n>values and goals of a system should be power aware and seek to minimize harm.<n>People should have agency and control over their data and algorithmic outputs.<n>Developers need to implement strong measures to protect our data and personal security. Summarized length: 320 تعمل الأمور بطريقة صحيحة، لكن يبدو أن النص المُلخّص موجزًا جدًا ويحتاج إلى تضمين المزيد من التفاصيل أو السياق. لنرى فيما إذا كان بالإمكان جعل المُلخّص أكثر شمولًا وتفصيلًا. لنقم بإجراء بعض التعديلات على الكود بهدف تغيير طول ومحتوى التلخيص الناتج، بداية لنغير قيمة متغير "البذرة seed" من 248602 إلى 860912 لتوليد نتائج جديدة كما يلي: ملاحظة: نستخدم مفهوم البذور seeds لتهيئة مولّد الأرقام العشوائية، حيث أنّه يحتاج إلى رقم يبدأ به (قيمة أولية) حتى يتمكن من إنشاء رقم عشوائي. افتراضيًّا يستخدم وقت النظام الحالي. set_seed(860912) # Generate the summary as tokens, with a max_new_tokens summarized = model.generate(**batch, max_new_tokens=800) summarized_decoded = tokenizer.batch_decode(summarized, skip_special_tokens=True) summarized_text = summarized_decoded[0] compare(content, summarized_text) ستكون النتيجة على النحو التالي: Article text length: 1427 Trustworthy AI should enable people to decide how their data is used.<n>values and goals of a system should be power aware and seek to minimize harm.<n>People should have agency and control over their data and algorithmic outputs.<n>Developers need to implement strong measures to protect our data and personal security. Summarized length: 320 يبدو أن الأمر لم ينجح أيضًا. لنحاول تجريب أسلوب فك تشفير يُسمّى "أخذ العينات sampling"، حيث يختار النموذج الكلمة التالية في النص بناءً على توزيعها الاحتمالي الشرطي (أي احتمال اختيار كلمة ما، بالنظر إلى الكلمات السابقة). هنا يكون لدينا مُتغير يسمى "درجة الحرارة temperature" للتحكم في مستوى العشوائية والإبداع في المخرجات المولّدة. هذه المعلمة تُعدّل الاحتمالات قبل أخذ العينات. تؤدي درجة الحرارة المرتفعة إلى زيادة العشوائية (أي ليس من الضروري أن يأخذ الكلمة الأكبر احتمالًا دومًا)، بالتالي مخرجات أكثر تنوعًا وإبداعًا، والعكس من ذلك يجعل عملية أخذ العينات أكثر حتمية ودقة. set_seed(118511) summarized = model.generate(**batch, do_sample=True, temperature=0.8, top_k=0) summarized_decoded = tokenizer.batch_decode(summarized, skip_special_tokens=True) summarized_text = summarized_decoded[0] compare(content, summarized_text) سنحصل الآن على النتيجة التالية: Article text length: 1427 Mozilla's "Trustworthy AI" Thinking Points:.<n>People should have agency and control over their data and algorithmic outputs.<n>Developers need to implement strong measures to protect our data. Summarized length: 193 نلاحظ أن الخرج أقصر، لكنه ذو جودة أعلى. ربما إذا رفعنا متغير درجة الحرارة temperature، ستكون النتيجة أفضل. set_seed(108814) summarized = model.generate(**batch, do_sample=True, temperature=1.0, top_k=0) summarized_decoded = tokenizer.batch_decode(summarized, skip_special_tokens=True) summarized_text = summarized_decoded[0] compare(content, summarized_text) هذا هو التخليص الناتج وهو كما تلاحظ أكثر وضوحًا من التلخيص السابق: Article text length: 1427 Mozilla's "Trustworthy AI" Thinking Points:.<n>People should have agency and control over their data and algorithmic outputs.<n>Developers need to implement strong measures to protect our data and personal security.<n>We need to mandate transparency so that we can fully understand these systems and their potential for harm. Summarized length: 325 دعونا نستخدم الآن طريقة فك تشفير تدعىtop_k`، وهي طريقة تعتمد على أخذ الكلمات k الأعلى احتمالًا (الكلمات المُرشّحة)، ثم الاختيار عشوائيًّا بينها. هذا النهج يهدف إلى السماح للنموذج بأن يكون دقيقًا مع هامش من الإبداع بفضل إدخال العشوائية في الاختيار. والمعلمة k هي معلمة يجب ضبطها بدقة لتحقيق التوازن بين الدقة والإبداع، فمع القيم الكبيرة لها قد يبدو النص بلا معنى وأقل تماسكًا، ومع القيم الصغيرة ستكون النتائج حتميّة وخاليّة من أي إبداع، وقد تتضمّن جملًا مكررة. set_seed(226012) summarized = model.generate(**batch, do_sample=True, top_k=50) summarized_decoded = tokenizer.batch_decode(summarized, skip_special_tokens=True) summarized_text = summarized_decoded[0] compare(content, summarized_text) بعد القيام بالتغييرات السابقة لاحظ التلخيص الناتج: Mozilla's "Trustworthy AI" Thinking Points look at ethical issues surrounding automated decision making.<n>values and goals of a system should be power aware and seek to minimize harm.People should have agency and control over their data and algorithmic outputs.<n>Developers need to implement strong measures to protect our data and personal security. Summarized length: 355 دعونا الآن نجرّب نهجًا يدعى top-p أو أخذ عينات النواة Nucleus sampling، وهنا تشير p إلى قيمة حديّة، عند تجاوزها نتوقف عن ترشيح كلمات جديدة. بمعنى أوضح، تُفرز الكلمات تنازليًّا وفقًا لاحتمالاتها، ثم نبدأ باختيار الكلمات واحدة تلو الأخرى حتى يصبح مجموع احتمالاتها أكبر من p، ثم بعد ذلك نختار إحدى الكلمات المُرشحة عشوائيًا. توفّر هذه الطريقة أيضًا التوازن بين العشوائية والحتمية. فقيم p القريبة من 1 تعطي خرجًا أكثر تنوعًا والقيم القريبة من 0 أكثر حتمية. الفرق بينه وبين top_k هو أن عدد الكلمات المُرشّحة يكون ديناميكيًّا وأكثر قابليّة للتكيّف وفقًا للتوزيع الاحتمالي للكلمة التالية على طول مجموعة المفردات. set_seed(21420041) summarized = model.generate(**batch, do_sample=True, top_p=0.9, top_k=50) summarized_decoded = tokenizer.batch_decode(summarized, skip_special_tokens=True) summarized_text = summarized_decoded[0] compare(content, summarized_text) # saving this for later. pegasus_summarized_text = summarized_text سيكون التخليص الآن على النحو التالي: Article text length: 1427 Mozilla's "Trustworthy AI" Thinking Points:.<n>People should have agency and control over their data and algorithmic outputs.<n>Developers need to implement strong measures to protect our data and personal security.<n>We need to mandate transparency so that we can fully understand these systems and their potential for harm. Summarized length: 325 قد نتساءل ما هي الطريقة الأفضل لفك التشفير. لسوء الحظ، لا توجد طريقة "أفضل" لفك التشفير، ويعتمد اختيار النهج الأفضل على طبيعة البيانات التي تُنشئ مُلخصًا لها ونوع هذه النصوص، وعلى درجة الإبداع و الحتمية التي تريد أن تراها في النص الناتج. وبذلك نكون قد وصلنا إلى نهاية المقالة، حيث تحدّثنا فيها عن مهمة تلخيص النص، وعن كيفية استخدام أحدث النماذج لإنجاز ذلك. ترجمة -وبتصرُّف- للمقال Mozilla AI Guide Launch with Summarization Code Example لصاحبه Melissa Thermidor. اقرأ أيضًا مدخل إلى الذكاء الاصطناعي وتعلم الآلة. تعلم الآلة Machine Learning - الذكاء الاصطناعي. عشرة مشاريع عملية عن الذكاء الاصطناعي. أدوات برمجة نماذج تعلم الآلة.
  3. شكراا جدا علي المعلوم ده وشكراا لحضرتك جدا
  4. اليوم
  5. في البداية عليك تحديد هل تريد تشغيل المكتبة على معالج أم كرت الشاشة، وكرت الشاشة يجب أن يكون من نوع nvidia. لأنها تعتمد على CUDA، وهي منصة حوسبة متوازية تم تطويرها بواسطة NVIDIA ومصممة خصيصًا لمعالجات الرسومات (GPUs) من NVIDIA، لذلك لا يمكن تشغيل PyTorch بشكل فعال على كروت شاشة من شركات أخرى مثل AMD أو Intel. وكحل بديل، تتوفر بعض محاكيات CUDA مثل Google Colab و Kaggle Notebooks التي تسمح لك بتشغيل PyTorch على كروت شاشة غير NVIDIA، ولكن أداء تلك المحاكيات أبطأ بكثير من كروت شاشة NVIDIA. وبينما لا ينصح باستخدام CPU لتشغيل PyTorch، إلا أنه ممكن، وسيكون الأداء أبطأ بكثير مقارنة بكروت شاشة NVIDIA. لذا لتثبيت المكتبة على نظام ويندوز لتعمل على المعالج استخدم الأمر: pip3 install torch torchvision torchaudio ولتعمل على CUDA 11.8 استخدم: pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 ولتعمل على CUDA 12.1 استخدم: pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 وتستطيع استيراد المكتبة كالتالي: import torch بالطبع يجب أن تكون CUDA مثبتة على جهازك: https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=11&target_type=exe_local وللعلم، PyTorch هي واجهة برمجة تطبيقات Python لمكتبة Torch أي مبنية عليها، وتم إنشاؤها بواسطة Facebook Research، وتم إصدار PyTorch لأول مرة في عام 2016، أي هي نسخة محسنة وبها مزايا أفضل وأسهل في التطوير.
  6. يعني انا لو كتاب الامر ده pip install troch هل انا كده ثبيت برد pytroch هو اي الفرق بين pip و conda
  7. يمكنك تثبيت PyTorch عن طريق استخدام أحد مديري الحزم مثل pip أو conda، باستخدام الأمر التالي: باستخدام pip: pip install torch torchvision باستخدام conda: conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c conda-forge والآن بالنسبة للفرق بين torch و PyTorch، فهما في الأساس نفس الشيء. PyTorch هو الاسم الذي يستخدمه المشروع لتسويق نفسه وللتأكيد على أنها واحدة من مكتبات Python الرائدة للتعلم العميق والحوسبة العلمية. ومع ذلك، قد تجد أحيانًا أن الناس يشيرون إلى المكتبة فقط بـ "torch" دون "Py". هذا يعود جزئياً إلى أن PyTorch كانت في الأصل جزءًا من مشروع Torch، وهو مشروع آخر للتعلم العميق ولكن باستخدام Lua بدلا من Python.
  8. السلام عليكم كيف اثبيت الPyTorch ؟ واي الفرق بين troch و PyTorch ؟
  9. يجب فهم أمر هام وهو أنه عند كتابة المسارات في بايثون عليك استخدام forward slash وهو / بدلاً من back slash وهو \ وذلك لأنّ back slash \ يستخدم في البرمجة كحرف أو رمز هروب أو تخطي escape character أي يخبر لغة البرمجة أن تعامل ذلك الحرف كحرف عادي بدلاً من معناه الخاص. فمثلاً ستحصل على خطأ لو قمت باستخدام علامتين اقتباس مزدوجة في نفس النفس لكن من خلال عامل الهروب تستطيع ذلك كالتالي: txt = "We are the so-called \"Vikings\" from the north." وفي المثال لديك أنت لم تقم باستخدام حرف أو رمز الهروب، بل أردت استخدام \n وهو رمز يُستخدم لتمثيل السطر الجديد أو التنقل إلى سطر جديد في النص. print("Line 1\nLine 2") والناتج: Line 1 Line 2
  10. نعم توجد العديد من المسابقات الوطنية والدولية التي تقام في مختلف أنحاء عالمنا العربي، فمثلا في الجزائر، توجد مسابقة وطنية برمجية للمبرمجين الطلاب بين الجامعات، تحت اسم ICPC Algerian Collegiate Programming Contest و المسابقة البرمجية للطلاب الجامعيين Alcpc. وهي عبارة عن مسابقة برمجة تقام على مستوى الجامعات الجزائرية. حيث يقوم الطلاب والطالبات بحل مجموعة من الخوارزميات باستعمال لغات برمجة من اختيارهم. والفرق المتأهلة تذهب للمنافسة النهائية الإقليمية التي تقام في دولة أخرى وتجمع فرقا من دول الشرق الأوسط وشمال إفريقيا أين تحتدم المنافسة أكثر فأكثر.
  11. بالطبع هو ليس كذلك، فمصطلح "تصميم البرمجيات" لا يقتصر فقط على العناصر التي ذكرتها بل يشمل أيضا جوانب أخرى مثل تصميم قواعد البيانات، وتحديد المتطلبات الوظيفية وغير الوظيفية، وتصميم الأنظمة والهندسة البرمجية. فهو عبارة عن عملية تخطيط وإنشاء برامج كمبيوتر تلبي احتياجات المستخدمين بشكل فعال، وهذا يشمل تحديد متطلبات البرنامج، وتصميم واجهة المستخدم، وتحديد هيكل البرنامج وتنظيم البيانات، وتطوير الخوارزميات والتنفيذ الفعلي للبرنامج. توجد عدة أنواع لتصميم البرمجيات وهي: تصميم واجهات المستخدم (UI):بحيث هنا يتم التركيز على كيفية تنظيم وتصميم العناصر التفاعلية التي يتفاعل معها المستخدم. تصميم تجربة المستخدم (UX): وهو النظر في كيفية تفاعل المستخدم مع البرنامج وتجربته الشاملة. تصميم البيانات والهندسة البرمجية: تصميم البيانات والهياكل التي تدعم البرنامج بشكل فعال. تصميم قواعد البيانات: من خلال تحديد كيفية تنظيم البيانات وتخزينها بشكل فعال وآمن. ومن المفترض أن يتعلم تصميم البرمجيات الأشخاص الذين يرغبون في تطوير برمجيات ذات جودة عالية وتجربة مستخدم مريحة وفعّالة. يمكن أن يتعلم التصميم المطورون البرمجيون، ومصممو واجهة المستخدم، ومهندسو البرمجيات، ومحللو النظم، وغيرهم. يمكنك الاستفادة أكثر من هنا عبر تصفح هذه المقالات:
  12. كما تفضل الزملاء في إجاباتهم فهذه المشكلة شائعة في PowerShell وأول خطوة يجب الانتباه لها، هي فتحه كمسؤول، وهذا الأمر: Set-ExecutionPolicy RemoteSigned عند تنفيذه في تلك الحالة سيعطي صلاحيات إضافية ويسمح له بالقيام بأعمال تتطلب صلاحيات مرتفعة، مثل تعديل الإعدادات النظامية أو تنفيذ أوامر تأثيرها يمتد إلى جميع المستخدمين على الجهاز. ففتح PowerShell كمسؤول يمنح الأمر "Set-ExecutionPolicy" الصلاحية الكافية لتعديل سياسة التنفيذ الافتراضية على النظام، مما يسمح للسكربتات بالتشغيل دون القيود التي كانت مفروضة بسبب السياسة السابقة. أين يقوم بتعيين سياسة التنفيذ لتسمح بتشغيل السكربتات الموقعة رقميا (مثل السكربتات المنشأة محليا على جهاز الكمبيوتر وغيرها). وأخيرا، تقوم بتنفيذ الأمر التالي: .\venv\Scripts\activate وهو يستخدم عادة في بيئات البيانات الافتراضية (virtual environments) في Python. فعند تنفيذ هذا الأمر، يتم تنشيط (أو تفعيل) البيئة الوهمية المسماة "venv" التي تم إنشاؤها في المجلد الحالي. عند تنشيط البيئة الوهمية، يتم تعيين المتغيرات البيئية بحيث يشير Python إلى المكتبات والأدوات المثبتة داخل هذه البيئة بدلا من البيئة الافتراضية للنظام. في حال واجهتك مشكلة مستقبلا في تثبيت البيئة الافتراضية يمكنك الرجوع لهذه المقالة التي تشرح الخطوات:
  13. يبدو أن الحرف الذي استخدمته للتحويل هو "/" وهو خاطئ، والصحيح والمستخدم للتحويل هو "\" لهذا يجب تصحيح أي استخدام غير صحيح لهذا الحرف. وعادة ما يكون ذلك بالتحقق من الترميز في الكود وإصلاح أي escaping characters بشكل صحيح. وأخيراً، لضمان حفظ التعديلات في ملف الكود، يجب استخدام اختصار الكيبورد "CTRL + S" للقيام بعملية الحفظ وهذا أمر مهم لأنه يضمن حفظ التغييرات وتطبيقها على الملف الذي تعمل عليه. وتختلف المشكلات التي قد تواجه مستخدمي VSCode لهذا يجب العودة بشكل دائم ومراجعة التوثيقات المطلوبة، يمكنك تصفح النقاش في هذه المقالة:
  14. في الأساس نعم، يمكن تحويل موقع ويب إلى تطبيق Android وحتى إلى تطبيق iOS وهذا الأمر يتم باستخدام تقنيات مختلفة. هناك العديد من الطرق الممكنة لتحقيق ذلك، منها استخدام الأطر البرمجية الهجينة مثل React Native أو Flutter، التي تسمح بكتابة كود واحد يمكن تشغيله على منصتي Android وiOS، وكذلك استخدام الأطر البرمجية المخصصة لكل منصة مثل Java/Kotlin لتطبيقات Android وSwift/Objective-C لتطبيقات iOS. الطريقة التي يتم فيها تحويل الموقع الويب إلى تطبيقات موبايل قد تكون سهلة أو صعبة اعتمادًا على عدة عوامل مثل تعقيد الموقع الويب، والميزات المطلوبة في التطبيقات المحمولة، والخبرة المتاحة لدى فريق التطوير. توجد أدوات مثل PhoneGap و Cordova، والتي تتيح تحويل مواقع الويب الحالية إلى تطبيقات هاتف ذكي، بالنسبة للشركات التي تقدم مميزات مختلفة في كل من تطبيق الجوال والموقع وتطبيق سطح المكتب، فهذا قد يكون بسبب احتياجات وتوقعات المستخدمين المختلفة على كل منصة. لأنه يمكن أن يكون لدى التطبيق المحمول ميزات تفاعلية مختلفة عن الموقع الويب لتحسين تجربة المستخدم على الهواتف الذكية، بينما قد يحتوي تطبيق سطح المكتب على ميزات مخصصة للأجهزة الكمبيوترية مثل استخدام الاختصارات للوحة المفاتيح والوصول إلى الملفات المحلية بسهولة. فمثلا في هذه المقالة يشرح الكيفية والطرق المستخدمة بشكل جيد: تحويل-موقع-الكترونى-الى-تطبيق-على-الهاتف
  15. الأسئلة ذات الطابع الاختباري لا نقوم بالإجابة عليها مباشرة، لكن سأحاول شرح الفكرة، يمكنك استخدام لغة برمجة مثل Python ومكتبة Flask لإنشاء واجهة ويب بسيطة فهنا ومن أجل قراءة ملف ذو امتداد PO يمكنك أن تستخدم مكتبة `polib تمكننا من استخراج النصوص والترجمة من الملف. ثم يمكن الشروع في إعداد تطبيق Flask لإنشاء صفحة ويب يمكن للمستخدمين تحميل ملف PO الخاص بهم وتحميله مرة أخرى بعد التعديل، لعرض المعلومات في الجدول يمكن أن نبسط الأمر من خلال استخدام HTML و CSS بحيث سيكون لكل كلمة اصلية وترجمتها حقل في الجدول، بعد ذلك تحاول تقسيم الجدول إلى صفحات وإضافة حقل إدخال للتعريبيمكن ذلك من خلال سكريبت JavaScript لتقسيم الجدول إلى صفحات وعرض 10 صفوف في كل صفحة كما أردت، كما يمكنك إضافة حقل إدخال لكل ترجمة لتسهيل التعديل وبعد التعديلات، تضيف زرا لتحميل الملف المعدل مباشرة من الصفحة. يمكنك تعلم كيفية البرمجة بلغة بايثون وبإطار العمل فلاسك أكثر من هنا كما توجد أداة للتعريب بالفعل تحمل اسم POEDIT يمكنك الاطلاع عليها من المقالة:
  16. نعم لكن سيعتمد عمل الأداة على نوع الفحص الذي تقومين به ويوجد نوعان من الفحص: فحص سطحي: مثل تحليل سرعة الموقع أو تحسين محركات البحث (SEO)، فسيتم تنفيذ الفحص على معالج وخادم الاستضافة الذي قمت بشرائه. وفحص عميق: مثل فحص ثغرات الأمان أو اختراق اختبارات النفاذية، فقد يتطلب ذلك معالجة أكثر قوة وقد لا يكون معالج وخادم الاستضافة كافيين. لهذا من الجيد اختيار خطة استضافة مناسبة تتضمن معالجا ذا قدرة كافية لاحتياجاتنا، مع توزيع عملية الفحص على فترات زمنية لتجنب إثقال كاهل خادم الاستضافة، كما توجد طريقة تستخدم شبكة توصيل المحتوى (CDN) لتوزيع الحمل على خوادم متعددة. بالنسبة لسؤالك الثاني، فيعتمد تشغيل الأداة على جهاز المستخدم من موقع ويب على نوع الفحص الذي تقومين به فإن كان سطحيا فيمكن تشغيله عادة من خلال موقع ويب دون الحاجة إلى تثبيت تطبيق وإن كان عميقا، فسيتطلب تثبيت تطبيق على جهاز المستخدم لمنح الأداة الصلاحيات اللازمة للوصول إلى المعلومات والقيام بالفحص.
  17. مشكلة النسيان معروفة جدا، خاصة عند المبتدئين في مجال البرمجة، وحتى في مرحلة تعلم أي مجال آخر، فمن الطبيعي جدا أن يكون لديك هذا الشعور، العبرة في التعلم ليست الحفظ أو التلقين والتكرار، إنما في الفهم والتطبيق المستمر مع المدرب الخاص بك، فمن أسرع الطرق المستخدمة للاستيعاب هو التطبيق مع المدرب مباشرة، وبعد إنهاء مسار دراسي معين من الدورة، التوجه لعمل مشاريع صغيرة تطبّق فيها ما تعلمته من معارف ومفاهيم خاصة الجوانب النظرية التي تكون مبهمة في البداية لكنها سرعان ما تتضح في المشاريع التطبيقية. تصفح هذه المصادر التي أرفقتها لك للاستفادة أكثر:
  18. عايز اى مصادر لشغل MANUAL TEST محتاج اتعلم اكتر عن المجال ده لو سمحتوا
  19. ايوه عشان كده ان بسال الان كانت متشيتيت جدا شكراا جد لحضرتكم ةانا برد كانت بقول اكيد الواحد مش بيكتب الكود علي طول كده اكيد في خط الاول المفروض ان نمشي عليها زي استخدم اي لغه لمشروع ده وبهد كده المفروض احد اطار العمل المناسب وهكذا يعني ايوه صح انا سالت عن architecture هنا علي الاكادميه
  20. ليس تماما فان وظيقة مصمم البرمجيات مختلفة عن مطور البرمجيات فهو لا يكتب اى شيفرات هو فقط ملم بعلم التصميم مهما كانت لغة البرمجة وليست لغه معينه . ولذلك اذا لم تكن تريد ان تكون مصمم برمجيات فلا يجب تعلم المجال بشكل موسع بل يكفى تعلم الاساسيات و النظريات التى تساعدك على فى مهنة تطوير البرمجيات مثل : قواعد البيانات هياكل بيانات "Data Structure" نماذج التصميم "Design Patterns" الخوارزميات "algotherms" OOP. ولكن مع الخبرة ستجد نفسك مع الوقت ملم اكثر بتفاصيل التصميم و انشاء المعماريات ولكن فى بداية مسيرتك المهنية انصحك بعدم الغوص عميقا فى تلك المفاهيم حيث من الممكن ان تسبب لك الاحباط و الملل بل يجب ان تاخذ مسيرتك تدريجيا
  21. بالطبع لا، فتصميم البرمجيات Software Design عبارة عن عملية حل المشكلات والتخطيط لبرنامج حاسوبي بعد تحديد الغاية لبناء برنامج متماسك وفعّال. أي بشكل بسيط، عملية تحويل المتطلبات الخاصة بالعميل إلى خطوات عملية ومناسبة للمبرمجين ليعملوا على تطوير البرنامج. والغرض من التصميم البرمجي هو تحديد التالي: مكونات البرمجيات، بتقسيم البرنامج إلى وحدات قابلة لإعادة الاستخدام. الخوارزميات وتحديد الخطوات المنطقية لحل المشكلات. المعمارية وهيكل البرنامج العام، بما في ذلك كيفية تفاعل المكونات. واجهات المستخدم وتصميم كيفية تفاعل المستخدم مع البرنامج. قواعد البيانات وتصميم كيفية تخزين واسترجاع البيانات. ومع خبرة قليلة، تستطيع البدء بتصميم وتطوير مشاريع صغيرة أو التعاون مع مبرمج أكثر خبرة، ومع بضع سنوات من الخبرة، بإمكانك التعامل مع مشاريع أكثر تعقيدًا بشكل مستقل. مع خبرة واسعة، ستصبح قادر على إدارة مشاريع كبيرة وتولي مسؤوليات معمارية البرمجيات، ولكن التصميم البرمجي هو مسؤولية الفريق ككل وليس فرد واحد فقط. لكن عليك تعلم الأمر بشكل صحيح، فمثلاً الـ flow chart يعتبر جزء من الـ Software Design، ويوجد مباديء خاصة بالتصميم البرمجي يجب تعلمها، ابحث عن "تصميم البرمجيات" على اليوتيوب. وللعلم يوجد فرق بين الـ Architecture وSoftware Design.
  22. توجد عدة اسباب لتلك المشكلة و لنتابع الخطوات معا لنرى اين توجد المشكلة . اولا يجب اغلاق xampp تمام حيث نضغط على زر Quit فى اقصى اليمين اسفل القائمة . والان لنحاول فتح البرنامج مرة اخرى كمسؤول run as administrator ولنحاول مرة اخرى تشغيل mysql . واذا لم يعمل فمن الممكن ان المنفذ (port) 3306 مستعمل من قبل برنامج اخر . لذلك لنحاول تغير المنفذ عن طريق فتح ملف my.ini والبحث عن السطر التالى port = 3306 ونقوم بتغيره الى 3360 مثلا port = 3360 ونقوم باعادة تشغيل الخدمة مرة اخرى . ويمكنك التاكد من ان المنفذ مستعمل ام لا عن طريق الضغط على زر Netstat فى xampp وسيقوم بفتح ناقذة للمنافذ المستخدمة والتاكد من عدم استخدام المنفذ الحالى 3306 واذا لم تعمل فهل يمكنك ارسال ملف تقارير الاخطاء لنرى اين تكم المشكلة
  23. السلام عليكم أحاول أن أعمل جدول باللغة العربية ولكن الداتا garbage كما أن الأرقام لا تظهر بالعربي بل بالانجليزية. مرفق الجدول والبرنامج جدول.pdf tables.py
  24. أولاً لا أنصحك بالعمل على Xampp فهي بيئة قديمة وبيئة تطوير لاراجون أفضل منها وأحدث، ويوجد أيضًا بيئة Laravel herd وهي أحدث من لاراجون. https://laragon.org/download/index.html https://herd.laravel.com/windows وإذا أردتي استخدام xampp، فكبداية لنقم بتجربة تثبيت الـ service الخاصة بـ mysql أولاً عليك تشغيل البرنامج كمسؤول: ثم ستجدي بجانب mysql علامة x اضغطي عليها ثم وافقي على التثبيت وستتحول العلامة إلى علامة صح كالتالي: حاول تشغيل mysql مرة أخرى، إن استمرت المشكلة، أرجو قراءة التالي:
  25. يعني دي حاجه يفضل ان اتعلمها اي كان المجال اي وانا برد بسمع ان البرمجه مش كود بس شكرااا جدا لحضرتك
  1. عرض المزيد
×
×
  • أضف...