<?xml version="1.0"?>
<rss version="2.0"><channel><title>&#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;: &#x630;&#x643;&#x627;&#x621; &#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A;</title><link>https://academy.hsoub.com/programming/artificial-intelligence/page/3/?d=2</link><description>&#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;: &#x630;&#x643;&#x627;&#x621; &#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A;</description><language>ar</language><item><title>&#x62A;&#x639;&#x631;&#x641; &#x639;&#x644;&#x649; &#x647;&#x646;&#x62F;&#x633;&#x629; &#x627;&#x644;&#x630;&#x643;&#x627;&#x621; &#x627;&#x644;&#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A; &#x648;&#x637;&#x631;&#x642; &#x62F;&#x631;&#x627;&#x633;&#x62A;&#x647;&#x627;</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%87%D9%86%D8%AF%D8%B3%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%88%D8%B7%D8%B1%D9%82-%D8%AF%D8%B1%D8%A7%D8%B3%D8%AA%D9%87%D8%A7-r2453/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_11/1537193126_.png.509e3fef9e0b91ae3cc1acc28fcb209a.png" /></p>
<p>
	لا شك أن <strong>هندسة الذكاء الاصطناعي</strong> أصحبت مجالًا رائدًا ومرتفع الطلب وترجع أهميتها لأهمية تخصص الذكاء الاصطناعي الذي اختصر علينا نحن البشر كثيرًا من العمل، ووفر الكثير من وقتنا وجهدنا في مختلف المجالات مثل دعم عملية التعليم، وإدارة العمليات التجارية، وتشخيص الأمراض، وتصميم الصور وصناعة مقاطع الفيديو وغيرها الكثير، فما هي هندسة الذكاء الاصطناعي؟ وما أهميتها؟ وما طرق درستها المختلفة؟ وما أهم تطبيقاتها العملية؟ هذا ما سنعرفه في مقال اليوم.
</p>

<h2 id="-1">
	ما هو تخصص الذكاء الاصطناعي؟
</h2>

<p>
	قبل التعرف على هندسة الذكاء الاصطناعي لنوضح بداية <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%A7-%D9%87%D9%88-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">ما هو الذكاء الاصطناعي</a> الذي يعد مجالًا حديثًا يهتم ببناء آلات وحواسيب وأنظمة تستطيع التعلم والتفكير ومحاكاة الأدمغة البشرية، وتستطيع تأدية الوظائف التي كانت تتطلب ذكاءً بشريًا للتعامل معها، بل وصل الأمر إلى ما هو أبعد من ذلك فصارت الآلات والحواسيب المبنية بالذكاء الاصطناعي قادرة على التعامل مع بيانات ضخمة لم يكن البشر ليتعاملوا معها ويستطيعوا تحليلها لضخامة حجمها، فساعد الذكاء الاصطناعي على تحليلها والخروج بنتائج مفيدة منها.
</p>

<p>
	ويعتمد تخصص الذكاء الاصطناعي بشكل أساسي على البيانات، إذ يتعلم منها ويكتسب خبراته من تحليل أحجام ضخمة من البيانات واكتشاف ما تخفيه هذه البيانات من أنماط وعلاقات بالاعتماد على <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">خوارزمية الذكاء الاصطناعي</a>.
</p>

<ul>
</ul>

<h2 id="-6">
	ما هي هندسة الذكاء الاصطناعي
</h2>

<p>
	هندسة الذكاء الاصطناعي AI-Engineering أحد التخصصات الهندسية الرائدة التي تهدف إلى تصميم وتطوير وإدارة الأنظمة التي تعتمد على تقنيات الذكاء الاصطناعي، فهي مجال حيوي يهتم باستخدام الأساليب الحديثة والأدوات المتطورة لتطبيق حلول الذكاء الاصطناعي وحل المشكلات المعقدة وأتمتة العمليات في مختلف الصناعات كالتعليم والنقل والتمويل والرعاية الصحية.
</p>

<p>
	وهي تخصص حديث ومهم يجمع بين عدة مجالات رئيسية من بينها <a href="https://academy.hsoub.com/programming/general/%D9%87%D9%86%D8%AF%D8%B3%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA/" rel="">هندسة البرمجيات</a> وعلوم الحاسوب وعلم البيانات والتحليل الإحصائي، ويركز بشكل خاص على على برمجة الآلات وجعلها قادرة على التفكير بطريقة مشابهة لطريقة الدماغ البشري. ويعنى بتطوير خوارزميات ونماذج <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D9%85%D9%81%D8%A7%D9%87%D9%8A%D9%85-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9-r1009/" rel="">تعلم الآلة ML</a> وبناء أدوات وحلول قائمة على الذكاء الاصطناعي لمنح الآلات قدرة على التفكير واتخاذ القرارات المنطقية بكفاءة.
</p>

<p>
	تختلف هندسة الذكاء الاصطناعي عن الهندسة التقليدية لأن الأنظمة الذكية تعتمد على البيانات لتحديد سلوكها النهائي فهي تتعلم من البيانات وتحسن أدائها بمرور الوقت، ولا تعتمد على البرمجة الصريحة المباشرة، وما يميز مهندسي الذكاء الاصطناعي عن مهندسي البرمجيات التقليديين هو قدرتهم على العمل مع هياكل البيانات المعقدة والشبكات العصبية وشبكات التعلم العميق، ونماذج تعلم الآلة المتطورة والاستفادة من قدراتها لحل المشكلات بدل طرق البرمجة التقليدية العادية.
</p>

<p>
	كما تهتم هندسة الذكاء الاصطناعي بإجراء الأبحاث الأساسية في مجالات الذكاء الاصطناعي وتعلم الآلة وتبني جسرًا بينها وبين العلوم الهندسية، وتسعى لجعل تخصصات الذكاء الاصطناعي وتعلم الآلة سهلة الاستخدام وتضمن تطبيقها الآمن والفعال في مختلف المجالات.
</p>

<h2>
	تخصصات هندسة الذكاء الاصطناعي
</h2>

<p>
	تتضمن هندسة الذكاء الاصطناعي العديد من التخصصات الفرعية، ومن أهمها:
</p>

<ul>
	<li>
		<strong>تعلم الآلة Machine Learning</strong>: يركز هذا التخصص على جعل الأجهزة ذكية وقابلة للتعلم من البيانات وتحسين أدائها تلقائيًا دون برمجة صريحة وهو يستخدم في التنبؤ وتصنيف البيانات وأنظمة التوصية.
	</li>
	<li>
		<strong>التعلم العميق Deep Learning</strong>: فرع متقدم من تعلم الآلة يحاكي عمل الدماغ البشري من خلال استخدام شبكات عصبية اصطناعية متعددة الطبقات، ويستخدم في تطبيقات التعرف على الوجوه، وتحويل النصوص المكتوبة إلى كلام منطوق، وتشخيص الأمراض.
	</li>
	<li>
		<strong>التعلم بواسطة التعزيز  Reinforcement Learning</strong><span>: </span>أحد أساليب تعلم الآلة يركز على تدريب الأنظمة على اتخاذ القرارات والتعلم بالاعتماد على أسلوب المكافأة والعقاب لتحسين سلوكها، وهو يستخدم في <a href="https://academy.hsoub.com/programming/game-development/%D8%AF%D9%84%D9%8A%D9%84%D9%83-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-%D8%A5%D9%84%D9%89-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%A3%D9%84%D8%B9%D8%A7%D8%A8-r2304/" rel="">تطوير الألعاب</a> والتحكم الآلي والتنبؤات المالية.
	</li>
	<li>
		<strong>معالجة اللغات الطبيعية Natural language processing</strong>: يركز هذا التخصص على تمكين الآلات من فهم ومعالجة وإنتاج اللغة البشرية ويستخدم في <a href="https://academy.hsoub.com/apps/cat/" rel="">الترجمة الآلية</a> وأنظمة الدردشة الذكية و<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%AD%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%85%D8%B4%D8%A7%D8%B9%D8%B1-%D9%81%D9%8A-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D8%A7%D9%84%D8%B9%D8%B1%D8%A8%D9%8A%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%B9%D9%85%D9%8A%D9%82-r1476/" rel="">تحليل المشاعر</a>.
	</li>
	<li>
		<strong>الرؤية الحاسوبية Computer Vision</strong>: يهتم بتمكين الأجهزة من فهم وتحليل الصور والفيديو يستخدم في التعرف على الوجوه والسيارات ذاتية القيادة والفحص الطبي.
	</li>
	<li>
		<strong>علم الروبوتات Robotics</strong>: يهتم بدمج الذكاء الاصطناعي في الأنظمة الفيزيائية للتفاعل مع العالم الحقيقي ويستخدم في التصنيع والرعاية الصحية.
	</li>
</ul>

<h2 id="-7">
	مهام مهندس الذكاء الاصطناعي
</h2>

<p>
	تتضمن المهام الرئيسية لمهندسي الذكاء الاصطناعي تصميم وبناء تطبيقات ونماذج ذكية يمكنها معالجة كميات ضخمة من البيانات، والتعلم منها لاتخاذ عن قرارات صائبة باستخدام <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">لغات برمجة الذكاء الاصطناعي</a> والشبكات العصبية التي تحلل هذه البيانات وتستخرج الأنماط والتنبؤات منها، بالإضافة إلى نشر التطبيقات الذكية في بيئات الإنتاج وصيانة وتحديث أنظمة الذكاء الاصطناعي بصورة مستمرة وتحسين أدائها لضمان فعاليتها وملاءمتها.
</p>

<p>
	من الأمثلة على التطبيقات التي يمكن لمهندس الذكاء الاصطناعي تطويرها تطبيقات الترجمة بمساعدة الذكاء الاصطناعي، وروبوتات الدردشة الذكية مثل <a href="https://academy.hsoub.com/apps/web/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A8%D9%88%D8%AA-%D8%A7%D9%84%D9%85%D8%AD%D8%A7%D8%AF%D8%AB%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D9%8A-%D8%B4%D8%A7%D8%AA-%D8%AC%D9%8A-%D8%A8%D9%8A-%D8%AA%D9%8A-chatgpt-r863/" rel="">ChatGPT</a>، وتطبيقات الرؤية الحاسوبية التي تتعرف على الوجوه أو الصور، وتطبيقات تحليل المشاعر، وأنظمة التوصية التي تقترح الأفلام أو المنتجات بناءً على تفضيلات المستخدم والألعاب المعتمدة على الذكاء الاصطناعي التي تتكيف مع أساليب اللعب المختلفة وتحسن تجربة اللاعبين وغيرها الكثير.
</p>

<h2 id="-8">
	مهارات هندسة الذكاء الاصطناعي
</h2>

<p>
	تحتاج دراسة هندسة الذكاء الاصطناعي لامتلاك العديد من المهارات التقنية من أهمها:
</p>

<ul>
	<li>
		إلمام بمبادئ علوم الحاسوب وأساسيات لغات البرمجة مثل بايثون <a href="https://academy.hsoub.com/programming/python/" rel="">Python</a> أو R أو <a href="https://academy.hsoub.com/programming/java/" rel="">جافا Java</a>
	</li>
	<li>
		معرفة بخوارزميات تعلم الآلة والتعلم العميق ومعالجة اللغة الطبيعية لبناء واختبار النماذج المناسبة واستخدامها في مشاريعهم وتطبيقاتهم
	</li>
	<li>
		خبرة في استخدام أطر عمل ومكتبات الذكاء الاصطناعي مثل بايتورش <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-%D8%A8%D8%A7%D9%8A-%D8%AA%D9%88%D8%B1%D8%B4-pytorch-%D9%88%D8%A3%D9%87%D9%85%D9%8A%D8%AA%D9%87-%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2311/" rel="">PyTorch</a>   وتنسرفلو TensorFlow التي تسهل تنفيذ النماذج.
	</li>
	<li>
		امتلاك أساس في الإحصاء والجبر الخطي لفهم أنماط البيانات وإجراء التنبؤات.
	</li>
	<li>
		الإلمام بمفاهيم قواعد البيانات لإدارة واسترجاع البيانات بكفاءة.
	</li>
	<li>
		بالإضافة المهارات التقنية، هناك عدة مهارات شخصية للنجاح في مجال هندسة الذكاء الاصطناعي كالتفكير الإبداعي وحل المشكلات وفهم مجال العمل التي يحتاج لأن يطور لها أنظمة ذكية.
	</li>
	<li>
		أخيرًا يحتاج مهندس الذكاء الاصطناعي لفهم أساسيات أخلاقيات الذكاء الاصطناعي وتأثيره على المجتمع لتطوير مشاريع ذكاء اصطناعي آمنة وموثوقة.
	</li>
</ul>

<h2 id="-9">
	مستقبل هندسة الذكاء الاصطناعي
</h2>

<p>
	تزداد سرعة تطور الذكاء الاصطناعي يومًا بعد الآخر من تقنيات ومسائل أمنية وأخلاقية ووظائف، وتتحسن أدواته وتزيد دقتها، بل تظهر أدوات جديدة هي أكثر تطورًا من سابقاتها وتزداد الحاجة إلى تطوير حلول ذكية قابلة للتطبيق في مختلف المجالات.
</p>

<p>
	وهذا سيفتح المجال لظهور فرص واسعة للمهندسين والمبرمجين الخبراء بتطوير التطبيقات والأدوات الذكية والقادرين على استخدام <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">خوارزميات الذكاء الاصطناعي</a> وتعلم الآلة، ولغات البرمجة، و<a href="https://academy.hsoub.com/programming/general/%D9%87%D9%8A%D8%A7%D9%83%D9%84-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-data-structures/" rel="">هياكل البيانات</a> بكفاءة لبناء واختبار ونشر نماذج ذكاء اصطناعي عالية الكفاءة وقادة على أداء المهام التي تتطلب ذكاءً مشابهًا للذكاء البشري.
</p>

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

<h2>
	طرق دراسة هندسة الذكاء الاصطناعي
</h2>

<p>
	إذا قررت <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%83%D9%84-%D9%85%D8%A7-%D8%AA%D9%88%D8%AF-%D9%85%D8%B9%D8%B1%D9%81%D8%AA%D9%87-%D8%B9%D9%86-%D8%AF%D8%B1%D8%A7%D8%B3%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2362/" rel="">دراسة الذكاء الاصطناعي</a> وتعلم التقنيات الضرورية لهذا التخصص فأمامك مساران:
</p>

<ul>
	<li>
		<strong>الدراسة الجامعية:</strong> تتميز بوضوح المسار والمنهج وتوافر الدعم من الأساتذة الخبراء، وكذلك وجود مجتمع من الأصدقاء الداعمين السائرين في نفس الطريق، وسهولة الالتزام والاستمرارية في هذا المسار، وتحصيل شهادة مهنية تشهد لك بدراستك للمجال، أما عيوبها فطول مدة الدراسة، ونظرية المناهج دون التركيز على التطبيق العملي وسوق العمل.
	</li>
	<li>
		<strong>الدراسة الذاتية:</strong> تتفوق على الدراسة الجامعية في المرونة والقدرة على انتقاء الأستاذ الذي تعجبك طريقته، وتتميز أيضًا بالتركيز على سوق العمل والتطبيقات العملية المفيدة، وأنَّ مدة دراستها أقل من مدة الدراسة الجامعية، ولكن يعيب الدراسة الذاتية صعوبة الانضباط، وصعوبة الوصول الدائم إلى خبير يرشدك ويعينك في طريقك.
	</li>
</ul>

<p>
	واحرص أثناء دراسة هندسة الذكاء الاصطناعي على تطوير <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D9%87%D9%85-%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2372/" rel="">مشاريع ذكاء اصطناعي</a> والتطبيق العملي على كل ما تدرسه، فأصل دراسة المجالات التقنية عمومًا هو التطبيق العملي. وإن أردت الجمع بين مميزات الدراسة الجامعية من دعم ومنهج واضح والتزام وشهادة معتمدة ومميزات الدراسة الذاتية من تطبيق عملي ومرونة ومواكبة لسوق العمل؛ فستساعدك <a href="https://academy.hsoub.com/store/12-%D8%AF%D9%88%D8%B1%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">دورة الذكاء الاصطناعي من أكاديمية حسوب</a> على دراسة المجال من الصفر حتى الاحتراف مع مدربين محترفين يجيبون على كل تساؤلاتك ويشرحون لك ما يصعب عليك فهمه.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة الذكاء الاصطناعي
		</p>

		<p class="banner-subtitle">
			احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة.
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/artificial-intelligence" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<a href="https://academy.hsoub.com/learn/artificial-intelligence" rel=""><img alt="دورة الذكاء الاصطناعي" src="https://academy.hsoub.com/learn/assets/images/courses/artificial-intelligence.png"></a>
	</div>
</div>

<p>
	وكذلك ستجد في أكاديمية حسوب مصادر عديدة مجانية تساعدك على البدء في تعلم هندسة الذكاء الاصطناعي من مقالات ودروس متخصصة، و<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D9%87%D9%85-%D9%83%D8%AA%D8%A8-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A7%D9%84%D9%85%D8%AC%D8%A7%D9%86%D9%8A%D8%A9-r2330/" rel="">كتبٍ شاملة</a>، وإن كان التشتت والخشية من البداية الخاطئة ، ولا تدري أين نقطة البداية في هذا المجال الفسيح، فابدأ من صفحة <a href="https://academy.hsoub.com/artificial-intelligence/" rel="">تعلم الذكاء الاصطناعي</a> التي تحوي جميع المعلومات والإرشادات التي تحتاجها للبداية في مجال الذكاء الاصطناعي، وتذكر أن الذكاء الاصطناعي هو مجال سريع التطور لذا من الضروري متابعة آخر التطورات، بما في ذلك نماذج تعلم الآلة الجديدة، وتقنيات تطوير الذكاء الاصطناعي، وتتابع أحدث التقنيات الناشئة وتوظفها في عملك.
</p>
<iframe allowfullscreen="" class="ipsEmbed_finishedLoading" data-controller="core.front.core.autosizeiframe" data-embedauthorid="3889" data-embedcontent="" data-embedid="embed3209348276" src="https://academy.hsoub.com/files/29-%D8%B9%D8%B4%D8%B1%D8%A9-%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D8%B9%D9%85%D9%84%D9%8A%D8%A9-%D8%B9%D9%86-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/?do=embed" style="overflow: hidden; height: 469px; max-width: 500px; margin: auto;"></iframe>

<h2 id="-10">
	الخلاصة
</h2>

<p>
	تعرفنا في مقال اليوم على هندسة الذكاء الاصطناعي وطرق دراسته المختلفة ومستقبله المتوقع ، فإن كنت مهتمًا بهذا المجال الحيوي فلا تتردد في البدء في دراسة المجال أو أدواته وتطبيقاته في مجالك، وتجهيز نفسك لمستقبل مهني مشرق يسوقه أصحاب المهارات التقنية الذكية ويفضلون على غيرهم من الموظفين في سوق العمل.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%B3%D8%AA%D9%82%D8%A8%D9%84-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">مستقبل الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%83%D9%8A%D9%81-%D8%A3%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-%D8%AA%D9%82%D9%86%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%81%D9%8A-%D8%B9%D9%85%D9%84%D9%8A%D8%9F-r2416/" rel="">كيف أستخدم تقنيات الذكاء الاصطناعي في عملي؟</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D8%B3%D8%A3%D9%84-%D9%85%D9%87%D9%86%D8%AF%D8%B3-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A3%D8%B3%D8%A6%D9%84%D8%A9-%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D8%AD%D9%88%D9%84-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2313/" rel="">اسأل مهندس الذكاء الاصطناعي: أسئلة شائعة حول الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A3%D9%85%D8%AB%D9%84%D8%A9-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2396/" rel="">أمثلة على الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%85%D8%B3%D8%AA%D9%82%D8%A8%D9%84-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">مستقبل البرمجة</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2453</guid><pubDate>Sun, 24 Nov 2024 15:00:00 +0000</pubDate></item><item><title>&#x645;&#x627; &#x647;&#x64A; &#x645;&#x646;&#x635;&#x629; Hugging Face &#x644;&#x644;&#x630;&#x643;&#x627;&#x621; &#x627;&#x644;&#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A;</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%A7-%D9%87%D9%8A-%D9%85%D9%86%D8%B5%D8%A9-hugging-face-%D9%84%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2449/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_11/HuggingFace.png.2edf5c154b7fc1be9cbdf5deda6a431b.png" /></p>
<p>
	كان بناء نموذج ذكاء اصطناعي متطور صعبًا، ومقتصرًا على الشركات الكبيرة، مثل جوجل و OpenAI نظرًا لصعوبة تجميع مجموعات بياناتٍ كبيرةٍ لتدريب النموذج عليها والحاجة إلى بنية تحتية حاسوبية قوية لتشغيل تلك النماذج. حتى ظهرت منصة Hugging Face التي غيرت المشهد. فقد أصبحت منصة Hugging Face واحدة من أبرز المنصات التي تسهل بناء النماذج الذكية وتطويرها وتوفر للمطورين نماذج ذكاء اصطناعي ومجموعات بيانات مفتوحة المصدر وتمكنهم من إنجاز مشاريع ذكار اصطناعي خاصة بهم دون العناء في تجميع البيانات وتنقيحها، ودون الحاجة لدفع مبالغ طائلة، فما هي منصة Hugging Face؟ وما أهم استخداماتها؟ وما النماذج التي توفرها؟ هذا ما سنعرفه في مقال اليوم.
</p>

<h2 id="huggingface-1">
	ما هي منصة Hugging Face
</h2>

<p>
	تعد Hugging Face منصة مختصة في <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">الذكاء الاصطناعي</a> و<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9/" rel="">تعلم الآلة</a> ومعالجة اللغات الطبيعية وعلوم البيانات، فهي توفر العديد من المكتبات مفتوحة المصدر مثل مكتبة المحولات Transformers، التي توفر نماذج جاهزة يمكن استخدامها مباشرةً أو تحسينها، كما توفر منصات لتجربة النماذج دون الحاجة إلى إعداد بيئة برمجية معقدة.
</p>

<p>
	بالإضافة إلى ذلك، تسهل Hugging Face الوصول إلى مجموعات بيانات متنوعة من خلال مكتبة Datasets، مما يقلل من عبء إعداد البيانات اللازمة للتدريب. كما أن دعمها القوي لدمج النماذج في التطبيقات المختلفة عبر واجهات برمجية (APIs) جعلها الخيار الأمثل للمطورين، ومن خلال هذه الأدوات والخدمات، تمكنت Hugging Face من إزالة الحواجز التقنية أمام بناء النماذج، مما ساهم في تعزيز انتشار الذكاء الاصطناعي في العديد من المجالات مثل معالجة اللغات الطبيعية، وتحليل الصور والتعرف على الأصوات وغيرها..
</p>

<p>
	وتؤمن لك المنصة بنية تحتية لتطبيقات الذكاء الاصطناعي، فتستطيع باستخدامها بناء نموذج ذكاء اصطناعي وتدريبه واختباره وإطلاقه، وكذلك توفر مستودعًا يضم كثيرًا من نماذج الذكاء الاصطناعي مفتوحة المصدر، وتطبيقات تفاعلية جاهزة تُسمى Spaces، والتي يمكنك من خلالها بناء نماذج جديدة محسنة، وستجد فيها أيضًا مجتمعًا ضخمًا يجمع كافة المهتمين بمجال الذكاء الاصطناعي وتعلم الآلة ويسمح بتبادل الخبرات وتطوير وتحسين هذا المجال الحيوي بطريقة تعاونية.
</p>

<h2 id="huggingface-2">
	ما أهم مميزات منصة Hugging Face؟
</h2>

<p>
	تتميز منصة Hugging Face بمجموعةٍ من الخواص، ومنها:
</p>

<ul>
	<li>
		<strong> توفر نماذج ذكاء اصطناعي متنوعة مفتوحة المصدر</strong>: إذ يحوي مستودع Hugging Face آلاف نماذج ذكاء اصطناعي <a href="https://huggingface.co/models" rel="external nofollow">models</a> يمكنك الاطلاع عليها واستخدامها في بناء نموذجك الخاص بخلاف النماذج مغلقة المصدر مثل ChatGPT من OpenAI أو Bard من جوجل حيث تتيح Hugging Face للمطورين عرض ومشاركة الشيفرة البرمجية للنماذج، مما يجعلها مكانًا ديناميكيًا للنماذج المتجددة باستمرار، وعدد هذه النماذج في تزايد مستمر، كما توفر المنصة إمكانية رفع نماذجك الخاصة ومشاركتها مع المطورين الآخرين عبر المنصة، ووتنوع مجالات هذه النماذج، فمنها نماذج معالجة لغات طبيعية NLP Models، ومنها نماذج تعلم آلة Machine Learning Models، ومنها نماذج معالجة صور Image Processing Models.
	</li>
</ul>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="PNG" data-fileid="162339" href="https://academy.hsoub.com/uploads/monthly_2024_11/models-huggingface.PNG.e540d5da589b5ffab9fd9269d97752d1.PNG" rel=""><img alt="models huggingface" class="ipsImage ipsImage_thumbnailed" data-fileid="162339" data-unique="1rb38d1hk" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_11/models-huggingface.thumb.PNG.dda14f9630b960c7079f38ef010ccede.PNG"> </a>
</p>

<ul>
	<li>
		<strong>تتضمن مجموعات بيانات تغطي مجالات متعددة:</strong> توفر منصة Hugging Face أيضًا مكتبة ضخمة من مجموعات البيانات <a href="https://huggingface.co/Datasets" rel="external nofollow">Datasets</a> مفتوحة المصدر؛ وهي منظمة وجاهزة لتدريب نماذج الذكاء الاصطناعي عليها، ما يختصر على المطور وقتًا وجهدًا عظيمًا يبذله في جمع البيانات وتنقيحها وتنظيمها وتدريبها.
	</li>
</ul>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="PNG" data-fileid="162338" href="https://academy.hsoub.com/uploads/monthly_2024_11/Datasets-huggingface.PNG.d72e7425113597f2c4474b4bfc6b03cd.PNG" rel=""><img alt="datasets huggingface" class="ipsImage ipsImage_thumbnailed" data-fileid="162338" data-unique="ipgiuwf8p" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_11/Datasets-huggingface.thumb.PNG.17b3c7b982a68a722bbd36e6975b7575.PNG"> </a>
</p>

<ul>
	<li>
		<strong>تحتوي تطبيقات جاهزة للاستخدام:</strong> منصة Hugging Face ليست موجهة لمهندسي ومطوري الذكاء الاصطناعي فقط، بل يمكن لغير المختصين الاستفادة منها من خلال المساحات <a href="https://huggingface.co/Spaces" rel="external nofollow">Spaces</a> وهي عبارة عن تطبيقات أو نماذج ذكاء اصطناعي جاهزة متاحة للاستخدام إذ يستطيع المستخدم العادي استخدامها في تنفيذ مهامه المختلفة مثل توليد الصور واستنساخ الأصوات، وتحليل البيانات.<br>
		وفي كل أسبوع، تعرض مساحات متميزة لتلهم المجتمع وتستخدم بشكل فعال للتجارب والأبحاث والأعمال الإبداعية، وبهذا يمكن للمستخدمين استكشاف التطبيقات المميزة والوصول لها بسهولة من أعلى الصفحة. ومن الأمثلة على مساحات مفيدة مساحة <a href="https://huggingface.co/spaces/sczhou/CodeFormer" rel="external nofollow">CodeFormer</a> المستخدمة في استعادة وتحسين ملامح الوجه في الصور القديمة، ومساحة <a href="https://huggingface.co/spaces/MohamedRashad/arabic-auto-tashkeel" rel="external nofollow">Arabic Tashkeel</a> لتشكيل النصوص العربية وغيرها من المساحات التي يمكنك استكشافها والإفادة منها.
	</li>
</ul>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="162340" href="https://academy.hsoub.com/uploads/monthly_2024_11/Spaces-HuggingFace.png.9de62841e128df50d7b8027d9ff910a6.png" rel=""><img alt="spaces  hugging face" class="ipsImage ipsImage_thumbnailed" data-fileid="162340" data-unique="flzvzpw61" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_11/Spaces-HuggingFace.thumb.png.a6351d1292f2479717f6a069bc65ceaa.png"> </a>
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة الذكاء الاصطناعي
		</p>

		<p class="banner-subtitle">
			احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة.
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/artificial-intelligence" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<a href="https://academy.hsoub.com/learn/artificial-intelligence" rel=""><img alt="دورة الذكاء الاصطناعي" src="https://academy.hsoub.com/learn/assets/images/courses/artificial-intelligence.png"></a>
	</div>
</div>

<h2 id="huggingface-3">
	ما أهم استخدامات منصة Hugging Face؟
</h2>

<p>
	يستخدم مهندسو الذكاء الاصطناعي منصة Hugging Face بطرق مختلفة، وأهمها:
</p>

<ul>
	<li>
		<strong>صقل وتحسين النماذج Fine-Tuning:</strong> تختص تقنية الصقل بتكييف نموذج ذكاء اصطناعي مدرب مسبقًا لأداء مجموعة من المهام المحددة المندرجة تحت قسمٍ واحدٍ، ما يوفر الموارد المبذولة في تدريب نموذجٍ جديدٍ من الصفر، ويوفر كذلك من الوقت والجهد كثيرًا. ومع توفير منصة Hugging Face لكثيرٍ من نماذج الذكاء الاصطناعي العامة بشكلٍ مجانيٍّ ومفتوح المصدر؛ صارت المنصة مقصدًا لكل من أراد صقل نموذجٍ وتخصيصه في مجالٍ محددٍ.
	</li>
	<li>
		<strong>الاطلاع على نماذج تعلم الآلة ومشاركتها:</strong> تسمح منصة Hugging Face بالاطلاع على عدد ضخم من نماذج الذكاء الاصطناعي المختلفة، فقد تستوحي أفكارًا لمشاريع ذكاء اصطناعي خاصة من تصفح هذه النماذج والبحث فيها والتعلم منها، واستخدامها في التطبيق العملي، وكذلك فيمكنك مشاركة نماذج الذكاء الاصطناعي التي طورتها بنفسك مع مطورين خبراء على المنصة، فتختبرها وتعرف نقاط الضعف والقوة.
	</li>
	<li>
		<strong>الاطلاع على مجموعات بيانات ومشاركتها:</strong> توفر منصة Hugging Face كثيرًا من مجموعات البيانات Datasets المختلفة كما شرحنا سابقًأ، والتي يمكنك مباحثتها واختيار أنسبها لمشروعك الخاص ولتدريب نموذجك عليه، ويمكنك أيضًا مشاركة مجموعات البيانات التي نظمتها مع المطورين الآخرين، ليساعدوك في تحسينها وتعزيزها.
	</li>
	<li>
		<strong>البحث العلمي:</strong> تعرض منصة Hugging Face جمعًا من الأوراق والمواضيع البحثية في المجالات المختلفة من الذكاء الاصطناعي، مثل: معالجة اللغات الطبيعية Natural Language Processing و<a href="https://academy.hsoub.com/programming/general/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D9%85%D9%81%D9%87%D9%88%D9%85-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D8%A7%D9%84%D8%B6%D8%AE%D9%85%D8%A9-big-data-r1579/" rel="">البيانات الضخمة Big Data</a>، وتستطيع المشاركة في هذه الأبحاث مع مجموعة من مهندسي الذكاء الاصطناعي الخبراء للارتقاء بمجال الذكاء الاصطناعي والمضي به قدمًا.
	</li>
</ul>

<h2 id="huggingface-4">
	ما أهم مصطلحات منصة Hugging Face؟
</h2>

<p>
	تتعدد المصطلحات المهمة في منصة Hugging Face، ومنها:
</p>

<ul>
	<li>
		<strong>المحولات Transformers:</strong> تعد المحولات نوعًا من الشبكات العصبية المشهورة في مجال معالجة اللغات الطبيعية، وتتميز بقدرتها على فهم الكلام المكتوب بشكلٍ أفضل من غيرها من الشبكات العصبية، أمَّا <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D9%88%D9%91%D9%84%D8%A7%D8%AA-transformers-%D9%85%D9%86-%D9%85%D9%86%D8%B5%D8%A9-hugging-face-r2340/" rel="">المحولات Transformers</a> في سياق منصة Hugging Face فهي مكتبة مفتوحة المصدر مطورة <a href="https://academy.hsoub.com/python/" rel="">بلغة بايثون</a>، توفر مجموعة من نماذج معالجة اللغات الطبيعية المبنية على الشبكات العصبية من نوع المحولات.
	</li>
	<li>
		<strong>المكتبات Libraries:</strong> تحوي المكتبات مقاطع من الشيفرات البرمجية التي يستخدمها المطورون بكثرة، وتختلف استخدامات المكتبات، فمثلًا تحتوي مكتبات <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D9%84%D9%85-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D9%8A%D8%A8/" rel="">تطوير مواقع الويب</a> على أهم الشيفرات التي يستخدمها مطورو الويب باستمرار في غالب مشروعاتهم.
	</li>
	<li>
		<strong>مستودع Hugging Face Hub:</strong> تتشابه مستودعات Hugging Face Hub إلى حد ما مع منصة جيت هاب GitHub، ولكن مع تخصيص أكبر لمجال الذكاء الاصطناعي، إذ تحتوي على عددٍ ضخمٍ من نماذج تعلم آلة مدربة مسبقًا مفتوحة المصدر، وكذلك تحتوي على مجموعات بياناتٍ كثيرةٍ يمكن للمطور استخدامها لبناء نموذج الذكاء الاصطناعي الخاص به.
	</li>
	<li>
		<strong>الدفتر Notebook:</strong> تعد تطبيقاتٍ تفاعليةٍ تساعد <a href="https://academy.hsoub.com/programming/general/%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/" rel="">علماء البيانات</a> وخبراء تعلم الآلة على كتابة الشيفرات الجاهزة للتنفيذ واختبارها فورًا، مع كتابة نصوص توضيحية لهذه الشيفرات، ومشاركتها عبر المنصة مع خبراء آخرين.
	</li>
</ul>

<h2 id="huggingface-5">
	مميزات منصة Hugging Face
</h2>

<p>
	تتعدد مزايا منصة Hugging Face، ومن أهمها:
</p>

<ul>
	<li>
		<strong>سهولة التطوير:</strong> جعلت منصة Hugging Face بناء نماذج الذكاء الاصطناعي سهلًا بتوفيرها لنماذج مدربة مسبقًا يمكن صقلها، وبتوفيرها كذلك <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D9%88%D8%A7%D8%AC%D9%87%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A9-api-r1314/" rel="">لواجهات برمجية</a> ذات خواصٍ تساعد مهندسي الذكاء الاصطناعي على تطوير نماذج معالجة لغات طبيعية ونماذج تعلم آلة متطورة، مما يرفع عن المطورين تحدياتٍ كانت تواجههم من صعوبة تدريب نماذج الذكاء الاصطناعي نظرًا للموارد الحاسوبية الكبيرة التي تحتاجها، وكذاك جمع البيانات لتدريب هذه النماذج.
	</li>
	<li>
		<strong>سهولة النمذجة الأولية:</strong> مع تقنية الصقل ونماذج الذكاء الاصطناعي مفتوحة المصدر بمنصة Hugging Face، باتت النمذجة الأولية لأي فكرة مشروع ذكاء اصطناعي غاية في السهولة ولا يحتاج إلى وقت كثير وجهد كبير، ولا يتطلب كذلك دفع مبالغ طائلة من المال.
	</li>
	<li>
		<strong>المجتمع الداعم:</strong> توفر منصة Hugging Face مجتمعًا داعمًا لمطوري الذكاء الاصطناعي، وتوفر مصادر كثيرة لهم لتطوير مهاراتهم، فمجتمع Hugging Face مملوء بالدورات والوثائق Documentations المجانية التي تزيد من مهارات مهندسي البرمجيات.
	</li>
	<li>
		<strong>منصة مجانية:</strong> تعد منصة Hugging Face مجانية بالأصل، ورغم أنها تتضمن بعض الخطط المدفوعة التي توفر ميزاتٍ إضافية للأعمال، ولكن حتى هذه الخطط المدفوعة ليست باهظة الثمن، ما يجعلها منصة فعالة من حيث التكاليف لاستخدامها في مشروعات الذكاء الاصطناعي الخاصة.
	</li>
</ul>

<h2 id="huggingface-6">
	عيوب منصة Hugging Face
</h2>

<p>
	رغم مميزات منصة Hugging Face الكثيرة إلَّا أنَّ بها تحدياتٍ ستواجهك عند استخدامها كذلك، وأهمها:
</p>

<ul>
	<li>
		<strong>تحيز النماذج:</strong> تعاني بعض نماذج الذكاء الاصطناعي على منصة Hugging Face من تحيز الذكاء الاصطناعي AI Bias، وهو توليد النماذج لنتائج تسيء لفئة معينة أو تنحاز لطرف على حساب آخر، فيجب أن تحرص على اختبار النموذج الذي ستبني عليه نموذج الخاص قبل بنائه، لتتأكد أن ليس هذا النموذج متحيزًا.
	</li>
	<li>
		<strong>كثرة النماذج:</strong> كما أنَّ كثرة النماذج على المنصة ميزةٌ، فإنه بذات الوقت عيبٌ لصعوبة الوصول إلى النموذج المناسب لاحتياجاتك الخاصة، لذا توفر منصة Hugging Face توفر كثيرًا من المحددات Filters التي يمكنك استخدامها أثناء البحث لتسهيل وتسريع الوصول إلى النموذج المناسب لك.
	</li>
	<li>
		<strong>ضعف الأمان:</strong> تتفاوت درجات الأمان في نماذج الذكاء الاصطناعي على منصة Hugging Face نظرًا لتفاوت مستويات مطوريها، فيجب أن تحرص أثناء اختيارك للنموذج المناسب لمشروعك على بحث معايير الأمان لدى المطور واختبار النموذج أمنيًا مرارًا وتكرارًا للتيقن من سلامة وخصوصية العملاء والحرص على نماذج طورتها جهات معروفة.
	</li>
</ul>

<h2 id="">
	الخلاصة
</h2>

<p>
	سرنا خلال رحلتنا في هذا المقال عبر مواضيعٍ متعددة، بدءًا من تعريف منصة Hugging Face وتوضيح ماهيتها، مرورًا بإيضاح مميزات المنصة واستخداماتها، وصولًا إلى تبسيط أهم مصطلحات المنصة وتبيان مزاياها وعيوبها، والآن دورك لتجرب هذه المنصة وتشاركنا في التعليقات بانطباعاتك عنها وخططك لاستخدام منصة Hugging Face وتضمينها في أعمالك.
</p>

<h2 id="-1">
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D8%B3%D8%A3%D9%84-%D9%85%D9%87%D9%86%D8%AF%D8%B3-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A3%D8%B3%D8%A6%D9%84%D8%A9-%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D8%AD%D9%88%D9%84-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2313/" rel="">اسأل مهندس الذكاء الاصطناعي: أسئلة شائعة حول الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%B4%D8%A7%D8%B1%D9%83%D8%A9-%D9%86%D9%85%D9%88%D8%B0%D8%AC-%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%B9%D9%84%D9%89-%D9%85%D9%86%D8%B5%D8%A9-hugging-face-r2378/" rel="">مشاركة نموذج ذكاء اصطناعي على منصة Hugging Face</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%83%D9%8A%D9%81-%D8%A3%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-%D8%AA%D9%82%D9%86%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%81%D9%8A-%D8%B9%D9%85%D9%84%D9%8A%D8%9F-r2416/" rel="">كيف أستخدم تقنيات الذكاء الاصطناعي في عملي؟</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">تطبيقات الذكاء الاصطناعي</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2449</guid><pubDate>Sat, 16 Nov 2024 15:02:01 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641; &#x623;&#x633;&#x62A;&#x62E;&#x62F;&#x645; &#x62A;&#x642;&#x646;&#x64A;&#x627;&#x62A; &#x627;&#x644;&#x630;&#x643;&#x627;&#x621; &#x627;&#x644;&#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A; &#x641;&#x64A; &#x639;&#x645;&#x644;&#x64A;&#x61F;</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D9%83%D9%8A%D9%81-%D8%A3%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-%D8%AA%D9%82%D9%86%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%81%D9%8A-%D8%B9%D9%85%D9%84%D9%8A%D8%9F-r2416/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_09/------.png.d279495138da77204af49f4c6070ffc0.png" /></p>
<p>
	تقنيات الذكاء الاصطناعي هي مجال يثير الفضول ويحمل منذ بدايته تحولًا ضخمًا في ساحة العمل. ويتساءل كثيرون عن طبيعة هذه التقنيات وكيف يمكن أن تلعب دورًا حيويًا في تطوير أداء الأفراد في مختلف المجالات المهنية. سنستكشف في هذا المقال أهم تقنيات الذكاء الاصطناعي، ونتعرف على كيفية استثمارها بشكل فعّال لتعزيز كفاءة العمل ورفع مستوى الأداء الشخصي.
</p>

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

<h2 id="-1">
	مفهوم تقنيات الذكاء الاصطناعي
</h2>

<p>
	يعد الذكاء الاصطناعي تفوقًا ذهنيًا آليًا يسمح للأنظمة بفهم البيانات، والتعلم منها، واتخاذ قرارات بناءً على هذا الفهم. فالذكاء الاصطناعي يمثل مجالًا من مجالات <a href="https://academy.hsoub.com/computer-science/" rel="">علوم الحاسوب</a> يهدف إلى تطوير أنظمة ذكية قادرة على محاكاة القدرات الذهنية البشرية، مثل التعلم، و<a href="https://academy.hsoub.com/programming/general/%D8%A3%D9%87%D9%85%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D9%81%D9%83%D9%8A%D8%B1-%D8%A7%D9%84%D9%85%D9%86%D8%B7%D9%82%D9%8A-%D9%81%D9%8A-%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-r2095/" rel="">التفكير المنطقي</a>، وفهم اللغة الطبيعية.
</p>

<h3 id="-2">
	أساسيات تقنيات الذكاء الاصطناعي
</h3>

<p>
	تقوم تقنيات الذكاء الاصطناعي بالأساس على عدة أسس تتمثل في كل من <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9/" rel="">تعلم الآلة Machine Learning</a>، و<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D8%B3%D8%AA%D9%83%D8%B4%D9%81-%D9%85%D8%B5%D8%B7%D9%84%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A7%D9%84%D8%AA%D9%88%D9%84%D9%8A%D8%AF%D9%8A-r2399/#naturallanguageprocessingnlp" rel="">معالجة اللغة الطبيعية NLP</a> و<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D8%B3%D8%AA%D9%83%D8%B4%D9%81-%D9%85%D8%B5%D8%B7%D9%84%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A7%D9%84%D8%AA%D9%88%D9%84%D9%8A%D8%AF%D9%8A-r2399/#artificialneuralnetworkann" rel="">الشبكات العصبية الصناعية ANN</a>، والتي سنذكرها جميعًا في الآتي بالتفصيل واحدة واحدة، حتى تكون لديك دراية أوضح عن كيفية عمل هذه التقنيات ويسهل عليك فهمها:
</p>

<ol>
	<li>
		<strong>تعلم الآلة Machine Learning</strong><span>:</span> يعد تعلم الآلة أو التعلم الآلي جزءًا أساسيًا من <a href="https://academy.hsoub.com/artificial-intelligence/" rel="">الذكاء الاصطناعي</a>، حيث يتيح للأنظمة تطوير القدرة على التعلم من البيانات وتحسين أدائها بشكل تلقائي. هذا يعني أنها قادرة على الاستفادة من المعطيات والبيانات المتاحة أمامها لتحسين أدائها دون الحاجة إلى تدخل بشري مستمر<strong>.</strong>
	</li>
	<li>
		<strong>معالجة اللغة الطبيعية Natural Language Processing</strong>: تعني تمكين الأنظمة من فهم وتفسير اللغة البشرية بطريقة تقارب الفهم البشري، وذلك عن طريق استخدام تقنيات وأدوات متنوعة مثل تحليل النصوص، وفهم السياق، واستخراج المعلومات الرئيسية، وتحليل الصوت، وتوليد اللغة، وغيرها حيث تسمح هذه التقنيات للأنظمة بفهم ما يقرأه المستخدمون أو يقولونه، وبالتالي تتمكن من التفاعل الفعّال مع المحتوى اللغوي، سواءً كان ذلك من خلال الردود التلقائية، أو فهم الأوامر، أو توليد المحتوى النصي بشكل طبيعي وسلس.
	</li>
	<li>
		<strong>الشبكات العصبية الاصطناعية Artificial Neural Networks</strong>: تُستخدم الشبكات العصبية الاصطناعية لمحاكاة العمليات الذهنية بطريقة مشابهة للشبكات العصبية في الدماغ البشري، حيث تُدرَّب الشبكات العصبية الاصطناعية على مجموعة وافرة من البيانات المعروفة، مما يمكّنها من تحديد الأنماط والعلاقات والتنبؤ بالبيانات الجديدة. يتم ذلك من خلال تكرار تعديل الوزن والمعاملات داخل الشبكة العصبية بحيث تتطابق إخراجها مع المعطيات المعروفة. بعد التدريب الجيد، فتصبح الشبكة العصبية الاصطناعية قادرة على التعرف على الأنماط في البيانات الجديدة وتطبيق الاستنتاجات المعقولة بناءً على الخبرات السابقة.
	</li>
</ol>

<p>
	تُحدد بنية الشبكة العصبية من خلال عدد الطبقات وعدد الخلايا العصبية في كل طبقة و الوصلات بين الخلايا العصبية. حيث تتكون الشبكة العصبية عادةً من طبقة إدخال وطبقة مخفية واحدة أو أكثر وطبقة إخراج.
</p>

<ul>
	<li>
		<strong>طبقة الإدخال Input Layer</strong>: هي الطبقة الأولى من الشبكة العصبية التي تتلقى بيانات الإدخال. عدد الخلايا العصبية في طبقة الإدخال يساوي عدد الميزات في بيانات الإدخال.
	</li>
	<li>
		<strong>الطبقات المخفية Hidden Layers</strong><span>: </span>هي الطبقات الوسيطة بين طبقات الإدخال والإخراج. يطلق عليها مخفية لأن قيمها لا يتم ملاحظتها في بيانات الإدخال أو الإخراج. عدد الطبقات المخفية وعدد الخلايا العصبية في كل طبقة مخفية هو حلقة تشعبية تحتاج إلى ضبط.
	</li>
	<li>
		<strong>طبقة الإخراج Output Layer</strong>: هي الطبقة الأخيرة من الشبكة العصبية، والتي تنتج الإخراج. يعتمد عدد الخلايا العصبية في طبقة الإخراج على المشكلة. على سبيل المثال ، إذا كانت المشكلة عبارة عن مشكلة تصنيف ثنائي، فسيكون هناك خلية عصبية واحدة في طبقة الإخراج، وإذا كانت المشكلة مشكلة تصنيف متعدد الفئات، فستكون هناك خلايا عصبية متعددة في طبقة الإخراج.
	</li>
</ul>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="158539" href="https://academy.hsoub.com/uploads/monthly_2024_09/582503016_.png.61b241fe53cb6e44395b5229546b74cf.png" rel=""><img alt="نموذج عام لشبكة عصبية متعددة الطبقات.png" class="ipsImage ipsImage_thumbnailed" data-fileid="158539" data-ratio="54.78" data-unique="ypiac5eg7" style="width: 600px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2024_09/.thumb.png.1a606906598c3328476f200b9eb4b3ac.png"></a><a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="158540" href="https://academy.hsoub.com/uploads/monthly_2024_09/643143853_.png.1ccb79a20b28e1ebba4e21107d0dba49.png" rel=""><img alt="هياكل الشبكات العصبية.png" class="ipsImage ipsImage_thumbnailed" data-fileid="158540" data-ratio="55.78" data-unique="jd2qakn72" style="width: 600px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2024_09/.thumb.png.f5d6b51b9d1b35bee1b9a07c312ceb7c.png"></a>
</p>

<p>
	بعد أن اطلعنا على كيفية عمل تقنيات الذكاء الاصطناعي، لنتعرف على كيفية الاستفادة من هذه التقنيات في بيئة العمل لتحسين الأداء وتسهيل العمليات.
</p>

<h2 id="-3">
	تطبيقات تقنيات الذكاء الاصطناعي في مجال العمل
</h2>

<p>
	كما هو متعارف عليه، تستخدم تقنيات الذكاء الاصطناعي بأكثر من مجال وظيفي، فبالرغم من كونها قائمة على أسس برمجية، لكن يمكن استخدامها في المجالات البرمجية وغير البرمجية، وفيما يلي توضيح لهذه الاستخدامات.
</p>

<h3 id="-4">
	أولًا: الاستفادة من تقنيات الذكاء الاصطناعي بالنسبة للمبرمجين
</h3>

<p>
	يستخدم المبرمج الذكاء الاصطناعي لتحسين الأداء وتسهيل عمليات البرمجة في العديد من السيناريوهات كأن يكون هناك حاجة <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%AD%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/" rel="">لتحليل البيانات</a> بشكل فعّال، أو التصحيح التلقائي للأخطاء، أو تطوير نماذج التنبؤ، أو تحسين تجربة المستخدم. فتحديد متى يتم استخدام الذكاء الاصطناعي يعتمد على متطلبات المشروع والأهداف التي يرغب المبرمج في تحقيقها. إليك بعض التقنيات الأساسية التي يمكن للمبرمج استخدامها، وكيف تستخدم؟
</p>

<h4 id="-5">
	1. الاستفادة من الذكاء الاصطناعي في تطوير تطبيقات ومواقع الويب
</h4>

<p>
	يستفيد المبرمجون من نماذج الذكاء الاصطناعي في <a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D8%A7%D9%84%D9%88%D9%8A%D8%A8/" rel="">برمجة مواقع الويب</a> وفي <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-r1827/" rel="">تطوير التطبيقات</a> بسرعة أكبر، حيث تقدم بعض النماذج الجاهزة أكواداً تتماشى مع احتياجات المبرمج بشكل كبير، ويجب التأكيد على أن هذه النماذج تعتبر أدوات للمساعدة فقط وليس لاستبدال عمل المبرمج بالكامل. لذا، يجب أن يكون المبرمج متقناً لتمييز الأمور الصحيحة من الخاطئة في الأكواد ومعرفة النواقص وضبطها حسب الحاجة.
</p>

<h4 id="-6">
	2. تحليل البيانات باستخدام الذكاء الاصطناعي
</h4>

<p>
	يستخدم المبرمجون تقنيات تحليل البيانات لفحص أنماط البيانات واستخلاص المعلومات المهمة منها. يمكن استخدام خوارزميات <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%86%D8%B8%D8%B1%D8%A9-%D8%B3%D8%B1%D9%8A%D8%B9%D8%A9-%D8%B9%D9%84%D9%89-%D9%85%D8%AC%D8%A7%D9%84-%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9-r1933/" rel="">تعلم الآلة</a> مثل الشبكات العصبية لتحليل بيانات ضخمة والكشف عن اتجاهات وتصورات التطبيق، إذ يمكن للمبرمج تطوير برامج باستخدام الذكاء الاصطناعي ويساعده تحليل البيانات في فهم احتياجات العملاء ومستخدمي التطبيقات، مما يمكنه من تصميم وتطوير حلول برمجية تلبي احتياجاتهم بشكل أفضل. ويمكن لتحليل البيانات مساعدة المبرمج في تحسين أداء التطبيقات أو المواقع الإلكترونية من خلال تحديد المواضع التي تحتاج لتحسين والعمل على تحسين الوظائف الحالية بناءً على البيانات المتاحة. ويمكن لتحليل البيانات مساعدة المبرمج في اتخاذ القرارات الاستراتيجية المستندة إلى البيانات، مثل تحديد الاتجاهات السائدة وتحديد الخطط المستقبلية لتطوير التطبيقات أو المواقع الإلكترونية.
</p>

<h4 id="-7">
	3. تصحيح الأخطاء البرمجية تلقائيًا
</h4>

<p>
	يُستخدم الذكاء الاصطناعي لتطوير أدوات تلقائية لتحديد وتصحيح <a href="https://academy.hsoub.com/programming/general/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%A7%D9%84%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A9-r1342/" rel="">الأخطاء البرمجية</a>. على سبيل المثال، يمكن استخدام تقنيات تعلم الآلة لتحديد أخطاء البرمجة المتكررة وتوفير تصحيحات فورية. على سبيل المثال لنفترض أن المبرمج يعمل على تطبيق مالي ينجز عمليات حسابية معقدة. وقد تنشأ أخطاء برمجية غير متوقعة تؤثر على دقة النتائج وهنا يمكن استخدام تعلم الآلة لتطوير نظام يتعلم من الأخطاء البرمجية السابقة ويُصححها تلقائيًا. فإذا كان هناك خطأ في حساب الفوائد، سيُصحح بشكل آلي دون تدخل يدوي.
</p>

<h4 id="-8">
	4. تطوير نماذج التنبؤ باستخدام تعلم الآلة
</h4>

<p>
	يمكن للمبرمجين استخدام تقنيات <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D9%85%D9%81%D8%A7%D9%87%D9%8A%D9%85-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9-r1009/" rel="">تعلم الآلة</a> لتطوير نماذج ذكاء اصطناعي قوية تستند إلى البيانات السابقة ليتمكنوا من تطوير ما يناسب احتياجات عملائهم، ويرفعوا من جودة أعمالهم وكفاءتها. على سبيل المثال، يستطيع المبرمج عبر الذكاء الاصطناعي وتقنيات تعلم الآلة تحديدًا تطوير نموذج يتنبأ بسلوك المستخدم في تطبيق معين، كأن يطور تطبيق لخدمة توصيل الطعام ويحسن من توقعات وقت التوصيل بناءً على الظروف المحيطة، هنا سيستخدم المبرمج تقنيات التعلم الآلة لتطوير نموذج قادر على التنبؤ بوقت التوصيل الأمثل بناءً على متغيرات عديدة مثل حركة المرور، والطلبات الحالية، مما يتيح له تحسين تجربة مستخدمي التطبيق وتقديم تقديرات أدق.
</p>

<h4 id="-9">
	5. تطوير الروبوتات والأنظمة الذكية
</h4>

<p>
	يُمكن للمبرمجين استخدام التقنيات الذكية لتحسين أدائهم بالاستعانة بالروبوتات الذكية عن طريق <a href="https://academy.hsoub.com/programming/os-embedded-systems/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%B1%D9%88%D8%A8%D9%88%D8%AA-%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-r1855/" rel="">برمجة روبوتات</a> تستخدم تقنيات الذكاء الاصطناعي مثل تعلم الآلة، والتعرف على الصور والنصوص لأداء مهام متنوعة. يمكن لهذه الروبوتات التفاعل مع المبرمجين والبشر والبيئة المحيطة بها بشكل متطور، مما يجعلها قادرة على تنفيذ مجموعة واسعة من المهام ومساعدة المبرمجين في تسريع أداء المهام البرمجية.
</p>

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

<p>
	تستخدم هذه الروبوتات تقنيات التعلم الآلي لتحليل سلوك التطبيق واكتشاف الأخطاء والمشاكل المحتملة بشكل فعال، وبالتالي توفير ردود فعل سريعة للمبرمجين لتصحيح الأخطاء وتحسين جودة التطبيق مما يساعد في تقليل وقت التطوير وتحسين الكفاءة العامة لفريق البرمجة في الشركة.
</p>

<h4 id="-10">
	6. تسهيل عمليات اختبار البرمجيات
</h4>

<p>
	يمكن استخدام تقنيات الذكاء الاصطناعي في تطوير أنظمة اختبار البرمجيات. حيث تمكّن هذه التقنيات الأنظمة من تحليل البرمجيات بشكل أعمق وأدق وتنفيذ اختبارات تلقائية بناءً على الاستنتاجات التي تستخلصها. هذا يوفر وقت وجهد المبرمجين ويقلل من أخطاء البرمجة، مما يتيح لهم الفرصة للتركيز على المهام الأكثر تحديًا بدلاً من القيام بالاختبارات الروتينية. وبهذا تتيح هذه التقنيات للمبرمجين الاستفادة من إمكانيات أوسع وتحسين كفاءتهم في عمليات البرمجة، مما يسهم في تحقيق نتائج أفضل وتقديم تطبيقات تلبي احتياجات المستخدمين بشكل أفضل.
</p>

<h3>
	ثانيًا: الاستفادة من تقنيات الذكاء الاصطناعي لغير المبرمجين
</h3>

<p>
	تعتبر التقنيات الذكية أدوات حيوية في عالم الأعمال الحديث، ولكن ليس من الضروري أن تكون <a href="https://academy.hsoub.com/programming/general/%D8%A7%D9%84%D9%85%D8%A8%D8%B1%D9%85%D8%AC-%D8%A7%D9%84%D9%85%D8%AD%D8%AA%D8%B1%D9%81/" rel="">مبرمجًا محترفًا</a> للاستفادة منها. فمع التطورات الحديثة، أصبح من الممكن للموظفين أو العاملين غير المبرمجين استخدام هذه التقنيات بسهولة وفعالية للتخلص من المهام الروتينية والمملة التي تستغرق منهم وقتًا طويلًا وتسهيل المهام التي تحتاج إلى بعض الجهد.
</p>

<p>
	إليك توضيحًا أوسع لكيفية استخدام تلك التقنيات في بعض الأمور اليومية للعاملين غير المبرمجين:
</p>

<h4>
	1. استخدام الذكاء الاصطناعي في بيئة العمل للتطوير وزيادة الكفاءة
</h4>

<p>
	حين نتحدث عن جانب الموظف أو العامل الحر غير المبرمج، يتعين علينا التركيز على أمور تتعلق بسياق العمل. على سبيل المثال، يُمكن استخدام نماذج الذكاء الاصطناعي لاقتراح توصيات وتوفير تحديثات حول مستجدات مجال العمل، مما يساعد الموظف أو العامل الحر على مراقبة ومتابعة التطورات الموجودة في المجال.
</p>

<p>
	وفي سياق الإنتاجية الشخصية، تقدم تطبيقات التعلم الآلي توقعات حول جداول الأحداث والمواعيد، مما يساعد الأفراد في تنظيم وتحسين إدارة وقتهم. بالاستعانة بتطبيقات مثل To do list أو Any.do، حيث يمكن للأفراد تنظيم مهامهم بفعالية وتحقيق الإنتاجية المثلى.
</p>

<p>
	بالإضافة إلى ذلك، يُمكنهم مطالعة مقالات من أنواع محددة مبرمجة للاقتراح يوميًا ليتم اقتراحها يوميًا في أوقات معينة، وذلك للمساهمة في تطوير الموظف أو العامل الحر وظيفيًا ومعرفيًا. كما يمكنه استخدام الذكاء الاصطناعي في الأعمال المكتبية لتنظيم المهام وجدولتها بشكل أفضل، مما يساعده على زيادة الإنتاجية وتحسين إدارة الوقت.
</p>

<h4>
	2. فهم البيئة المحيطة
</h4>

<p>
	يمكن استخدام تقنيات الذكاء الاصطناعي في الحياة اليومية لتحسين قدرة العامل أو الموظف على التحكم في الوقت وتقليل التوتر وزيادة التركيز في العمل وتفادي الأمور الجانبية المحيطة بظروف التوجه للعمل أو العمل نفسه، يمكن للموظف أو العامل الحر الاستفادة من نماذج الذكاء الاصطناعي في تسهيل يوم عمله.
</p>

<p>
	على سبيل المثال، يمكنه الاستعانة بتقنيات قائمة على استخدام تطبيقات الطقس والمرور لتحديد أفضل وقت وطريقة للوصول إلى العمل إذ تحدد التفاصيل آليًا دون الحاجة لتدخله وتفكيره في الأمر وذلك لتفادي الازدحام والظروف الجوية السيئة.
</p>

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

<h4>
	3. تحسين تجربة التسوق عبر الإنترنت
</h4>

<p>
	عند استخدام تقنيات الذكاء الاصطناعي، يمكن للشركات -عن طريق موظفيها- تحليل سلوك المستخدمين عبر الإنترنت، مثل الاهتمامات والتفضيلات والعادات التسويقية. ويمكن الاستفادة من هذه البيانات والاعتماد عليها لتقديم إعلانات مستهدفة بشكل أكبر تلبي احتياجات الجمهور المستهدف بدقة أكبر وبالتالي زيادة فعالية الإعلانات وربحية <a href="https://academy.hsoub.com/marketing/performance-marketing/%D8%AF%D9%84%D9%8A%D9%84%D9%83-%D8%AE%D8%B7%D9%88%D8%A9-%D8%A8%D8%AE%D8%B7%D9%88%D8%A9-%D9%84%D8%B9%D9%85%D9%84-%D8%AD%D9%85%D9%84%D8%A9-%D8%AA%D8%B3%D9%88%D9%8A%D9%82%D9%8A%D8%A9-%D9%86%D8%A7%D8%AC%D8%AD%D8%A9-9-%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D8%AA%D8%B3%D8%A7%D8%B9%D8%AF%D9%83-%D9%81%D9%8A-%D8%B0%D9%84%D9%83-r91/" rel="">الحملات التسويقية</a>.
</p>

<h4>
	4. تحسين التواصل مع العملاء بمختلف اللغات
</h4>

<p>
	يمكن <a href="https://academy.hsoub.com/apps/cat/" rel="">لتطبيقات الترجمة الذكية</a> أن تكون ذات أهمية كبيرة في حالات التواصل مع عملاء يتحدثون لغات مختلفة، حيث تساعد على تجاوز حاجز اللغة وتحقيق فهم أفضل. على سبيل المثال، يمكن استخدام تطبيقات الترجمة الذكية مثل Google Translate أو <a href="https://academy.hsoub.com/apps/cat/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%AE%D8%AF%D9%85%D8%A9-%D8%A7%D9%84%D8%AA%D8%B1%D8%AC%D9%85%D8%A9-%D8%A7%D9%84%D8%A2%D9%84%D9%8A%D8%A9-%D9%85%D9%86-%D9%85%D8%A7%D9%8A%D9%83%D8%B1%D9%88%D8%B3%D9%88%D9%81%D8%AA-%D9%88%D9%85%D8%AA%D8%B1%D8%AC%D9%85-bing-r932/" rel="">Microsoft Translator</a> عند التواصل مع شركات أجنبية أو مع عملاء أجانب يتحدثون لغات مختلفة. وتساعد هذه التطبيقات في ترجمة الرسائل والمحادثات بسهولة، وتبادل المعلومات بدون عوائق لغوية أو الحاجة إلى مترجم مخصص، مما يسهل عملية التواصل ويعزز التفاهم بين الأطراف المشاركة في الحوار.
</p>

<p>
	وعندما يكون هناك حاجة <span ipsnoautolink="true">لترجمة</span> مستندات العمل أو رسائل البريد الإلكتروني، يمكن للأفراد استخدام <a href="https://academy.hsoub.com/apps/cat/%D8%A3%D8%B4%D9%87%D8%B1-%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D8%B1%D8%AC%D9%85%D8%A9-%D8%A8%D9%85%D8%B3%D8%A7%D8%B9%D8%AF%D8%A9-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8-cat-tools-r537/" rel="">أدوات الترجمة الذكية</a> لترجمة النصوص بسهولة ودقة. وهذا يوفر الوقت والجهد اللازمين لإنتاج المحتوى بلغة مستهدفة ويساهم في تحسين فعالية التواصل وتقديم الخدمات باحترافية وشمولية. وبذلك، تلعب هذه التطبيقات دورًا مهمًا في تحسين جودة الخدمة المقدمة للعملاء وتعزيز تجربتهم في التفاعل مع الشركة أو المؤسسة.
</p>

<h4>
	5. تسهيل المهام اليومية
</h4>

<p>
	يمكننا استخدام التقنيات الذكية لتوفير المساعدة للعاملين أيضًا. ففي بيئة العمل، يمكن للموظفين الاستفادة من هذه التقنيات لتنظيم أعمالهم وتسهيل العمليات اليومية. على سبيل المثال، يمكن للموظف استخدام تطبيقات الذكاء الاصطناعي لتذكيره بالمواعيد الهامة أو تنظيم جدوله اليومي، كما يمكن للموظف استخدام نماذج الذكاء الاصطناعي لطلب السيارة أو طلب وجبات الطعام في حالات الضيق الزمني أو عند الحاجة إلى خدمات خارجية.
</p>

<p>
	على سبيل المثال، إذا كان الموظف لن يتمكن من الحضور للعمل في يوم ما، يمكنه تجهيز النظام مسبقًا لإرسال رسالة تلقائية إلى مديره تُعلمه بذلك في حالة عدم تسجيل دخوله للحاسوب في وقت محدد. وبهذه الطريقة، يمكن أن يكون الموظف مسبوقًا بترتيباته وإبلاغ الجهات المعنية بالغياب المحتمل. من الجدير بالذكر أيضًا أن بإمكانه استخدام تقنيات المساعدة الصوتية (مثل سيري Siri وكورتانا Cortana) لتنفيذ المهام الروتينية في البيئة المكتبية. يمكن للأفراد استخدام هذه المساعدات لإرسال رسائل، وضبط المنبهات، والحصول على تحديثات فورية بشكل مريح وفعال.
</p>

<h2>
	التحديات والمخاوف لاستخدام تقنيات الذكاء الاصطناعي
</h2>

<p>
	بالرغم من الفوائد الكبيرة التي تقدمها تقنيات الذكاء الاصطناعي في مكان العمل، إلا أنها تُثير أيضًا بعض التحديات والمخاوف التي يجب التعامل معها ومواجهتها بحذر لضمان الاستفادة منها بناحيتها الإيجابية والابتعاد عن الجوانب السلبية لها. تشمل بعض هذه التحديات النقاط التالية:
</p>

<h3>
	1. الخصوصية والأمان
</h3>

<p>
	قد يتسبب استخدام تقنيات الذكاء الاصطناعي في تجميع كميات هائلة من البيانات الشخصية، مما تُثير قضايا الخصوصية والأمان إذا لم يتم التعامل معها بحرص وحذر، إلا أن الخصوصية والأمان ترتبط بشكل رئيسي بالأنظمة والبيانات المشاركة مع نماذج الذكاء الاصطناعي، وملفات العمل، ومعلومات حسابات الشركة والدفع وغيرها. من المهم الإشارة لأن عدم توخي الحذر اللازم في التعامل مع هذه البيانات قد يؤدي إلى مشكلات في العمل، مثل الفصل في حالة كان الشخص موظف، أو تقليل ثقة العملاء، خاصة بالنسبة للعاملين في مجال <a href="https://academy.hsoub.com/freelance/" rel="">العمل الحر</a>.
</p>

<h3>
	2. تأثير الوظائف والعمل البشري
</h3>

<p>
	قد تتسبب التقنيات الذكية في إحداث تغييرات في الطبيعة وطريقة أداء بعض الوظائف، وهذا قد يؤثر على بعض العمال البشريين ويتطلب تكييفهم مع التقنيات الجديدة. ففي مجال التصنيع، قد تعتمد الشركات على الروبوتات والذكاء الاصطناعي لتحسين عمليات الإنتاج. ومع ذلك، يمكن أن يتسبب ذلك في تقليل عدد الوظائف المُنفذّة يدويًا، مما يتطلب تطوير مهارات جديدة للعمال لمواكبة هذه التطورات التقنية.
</p>

<h3>
	3. التعامل الأخلاقي مع التقنيات الذكية
</h3>

<p>
	يثير استخدام التقنيات الذكية في مكان العمل تساؤلات أخلاقية حول مدى استخدامها بطريقة عادلة ومنصفة وسليمة وآمنة، وتجنب التمييز أو <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%B5%D8%B7%D9%84%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-r2363/#bias" rel="">التحيز</a> في اتخاذ القرارات. ففي مجال التسويق، قد تستخدم الشركات تقنيات الذكاء الاصطناعي لاستهداف الإعلانات وتحديد استراتيجيات التسويق. ويتوجب على هذه الشركات مراعاة القوانين والأخلاقيات في استخدام البيانات وتجنب التمييز في استهداف العملاء.
</p>

<h3>
	4. التكاليف والاستثمار
</h3>

<p>
	قد تكون تكلفة تطبيق تقنيات الذكاء الاصطناعي في بعض الأحيان باهظة، وتتطلب استثمارات مالية كبيرة للتدريب وتطوير الأنظمة والتحديثات المستمرة. ففي مجال البنوك على سبيل المثال، قد تستثمر الشركات الكثير من الأموال في تطوير تقنيات الذكاء الاصطناعي لتحليل سلوك عملائها وتقديم خدمات مالية مخصصة. ومع ذلك، يجب أخذ هذه التكاليف في الاعتبار بما في ذلك تكلفة تطوير البرمجيات، وتدريب الموظفين على الاستخدام الفعّال لهذه التقنيات، كما أن هناك الكثير من الأمثلة في مجالات أخرى.
</p>

<h2>
	سلبيات إساءة الاستخدام أو عدم الاستيعاب الكامل للتقنيات الذكية
</h2>

<p>
	هناك الكثير من التأثيرات السلبية المحتملة لاستخدام تقنيات الذكاء الاصطناعي على المبرمج وغير المبرمج في حال عدم وجود استيعاب كامل لها أو اساءة استخدامها، ويمكن أن يشمل ذلك ما يلي:
</p>

<h3>
	1. بالنسبة للمبرمجين
</h3>

<p>
	هناك بعض النقاط السلبية التي قد يقع فيها المبرمج في حال الاعتماد الكامل على نماذج الذكاء الاصطناعي، فيجب أن ندرك أنها يمكن قد تواجههم في مجال عملهم ، ومن هذه النقاط السلبية:
</p>

<ul>
	<li>
		<strong>زيادة في الأخطاء</strong>: قد يؤدي الاعتماد الكلي على تقنيات الذكاء الاصطناعي إلى زيادة في حجم الأخطاء، حيث أن هذه التقنيات ليست خالية من العيوب وقد لا تقوم بأداء وظائفها بشكل دقيق بنسبة 100٪. وهذا قد يؤدي إلى تقليل ثقة العملاء وزيادة احتمالية وقوع أخطاء مهمة في البرمجيات.
	</li>
	<li>
		<strong>مخاطر أمن المعلومات</strong>: فترك كامل البيانات بيد أدوات الذكاء الاصطناعي يمكن أن يشكل مخاطر كبيرة على أمن المعلومات، خاصة عندما يتعلق الأمر بالبيانات الحساسة أو الشخصية. قد يتعرض المبرمج والعملاء لخطر الاختراقات أو التسريبات الغير مصرح بها لهذه البيانات، مما يؤثر سلباً على سمعتهم وأمان معلوماتهم.
	</li>
	<li>
		<strong>نقص المهارات</strong>: قد يؤدي الاعتماد الكبير على تقنيات الذكاء الاصطناعي إلى نقص في المهارات التقنية لدى المبرمج. إذا تم استخدام هذه التقنيات كأداة لتوليد الحلول دون فهم الخوارزميات والمفاهيم الأساسية وراءها، فقد يؤدي ذلك إلى تراجع مستوى المعرفة والمهارات البرمجية.
	</li>
</ul>

<h3>
	2. بالنسبة لغير المبرمجين
</h3>

<p>
	هناك أيضًا نقاط سلبية التي قد يقع فيها غير المبرمجين عند اعتمادهم على التقنيات الذكية من أبزرها:
</p>

<ul>
	<li>
		<strong>ارتكاب الأخطاء</strong>: قد يعتمد غير المبرمجين بشكل كامل على التقنيات الذكية دون فهم كامل للعمليات الخلفية، مما قد يؤدي إلى ارتكاب أخطاء في التحليل، أو الاستنتاجات، أو حتى في اتخاذ القرارات.
	</li>
	<li>
		<strong>فقدان التحكم</strong>: قد يجد غير المبرمجين أنفسهم في وضع لا يستطيعون فيه التحكم بالتقنيات الذكية التي يستخدمونها، مما قد يؤدي إلى اعتمادهم بشكل كبير على النظام دون القدرة على التدخل في العمليات أو التحكم في النتائج.
	</li>
	<li>
		<strong>عدم فهم النتائج</strong>: قد يواجه غير المبرمجين صعوبة في فهم النتائج والتحليلات التي تنجزها التقنيات الذكية، مما قد يقلل من قدرتهم على اتخاذ القرارات الصائبة بناءً على البيانات والمعلومات التي تقدمها هذه التقنيات.
	</li>
	<li>
		<strong>أمن البيانات</strong>: من المهم بالنسبة لغير المبرمجين تعمل أساسيات <a href="https://academy.hsoub.com/apps/general/%D9%85%D9%81%D8%A7%D9%87%D9%8A%D9%85-%D8%AA%D8%A3%D8%B3%D9%8A%D8%B3%D9%8A%D8%A9-%D8%B9%D9%86-%D8%A7%D9%84%D8%A3%D9%85%D8%A7%D9%86-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A-r370/" rel="">الأمان الرقمي</a> وأفضل الممارسات لحماية بياناتهم الشخصية وبيانات العمل. كما يجب عليهم فهم كيفية استخدام التقنيات الذكية بشكل آمن ومدروس، وتطبيق الإجراءات الأمنية اللازمة مثل استخدام كلمات المرور القوية وتحديث البرمجيات بانتظام وتشفير البيانات المهمة لتقليل المخاطر المحتملة والحفاظ على سلامة بياناتهم وسرية معلوماتهم.
	</li>
</ul>

<p>
	لمواجهة هذه التحديات يتوجب على العامل -المبرمج وغير المبرمج- الاستفادة من الإرشادات الأخلاقية والقوانين اللازمة لضمان استخدام التقنيات الذكية بطريقة مسؤولة وآمنة في بيئة العمل.
</p>

<h2>
	في الختام
</h2>

<p>
	يُظهر تكامل تقنيات الذكاء الاصطناعي أهميته البالغة في محيط العمل، حيث يمثل عاملًا حاسمًا في تعزيز الإنتاجية وتحسين جودة الخدمات المقدمة. ومن خلال استخدام التحليلات الذكية والتعلم الآلي وتطبيقات التوصية، يمكن للمؤسسات والعاملين الاستفادة من قدرات الذكاء الاصطناعي لتحسين أداء العمل وتطوير العمليات. ومع ذلك، يجب على العاملين أن يكونوا حذرين و متيقظين للتحديات المحتملة مثل الخصوصية والأمان والتأثير على الوظائف البشرية. يشجع هذا الاستخدام المتوازن والمسؤول لتقنيات الذكاء الاصطناعي الأفراد على استكشاف واعتماد هذه التقنيات بشكل فعّال، مما يسهم في تعزيز تجربتهم المهنية وتطوير بيئة العمل بشكل شامل ومبتكر لتحقيق تطور مستدام ونجاح متبادل في مجتمعنا وفي محيطنا العملي.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" id="ips_uid_6916_6" referrerpolicy="strict-origin-when-cross-origin" src="https://academy.hsoub.com/applications/core/interface/index.html" title="YouTube video player" width="560" data-embed-src="https://www.youtube.com/embed/DzIablU_mXY?si=wmwOjzrpswqqqGbR"></iframe>
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-r2239/" rel="">أساسيات الذكاء الاصطناعي: دليل المبتدئين</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A3%D9%85%D8%AB%D9%84%D8%A9-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2396/" rel="">أمثلة على الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">تطبيقات الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%83%D9%84-%D9%85%D8%A7-%D8%AA%D9%88%D8%AF-%D9%85%D8%B9%D8%B1%D9%81%D8%AA%D9%87-%D8%B9%D9%86-%D8%AF%D8%B1%D8%A7%D8%B3%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2362/" rel="">كل ما تود معرفته عن دراسة الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">برمجة الذكاء الاصطناعي: بناء مستقبل الآلات الذكية</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2416</guid><pubDate>Thu, 12 Sep 2024 15:00:00 +0000</pubDate></item><item><title>&#x627;&#x633;&#x62A;&#x643;&#x634;&#x641; &#x645;&#x635;&#x637;&#x644;&#x62D;&#x627;&#x62A; &#x627;&#x644;&#x630;&#x643;&#x627;&#x621; &#x627;&#x644;&#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A; &#x627;&#x644;&#x62A;&#x648;&#x644;&#x64A;&#x62F;&#x64A;</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D8%B3%D8%AA%D9%83%D8%B4%D9%81-%D9%85%D8%B5%D8%B7%D9%84%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A7%D9%84%D8%AA%D9%88%D9%84%D9%8A%D8%AF%D9%8A-r2399/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_08/().png.0f4a6d7cf45539a5d23c7115c412e3f8.png" /></p>
<p>
	وصولك إلى هذه المقالة يعني أنك تعاني من كثرة المصطلحات والمفردات اللغوية المستخدمة عند النقاش حول <span ipsnoautolink="true">الذكاء الاصطناعي عمومًا AI</span> <span ipsnoautolink="true"> التوليدي Generative AI</span> على وجه الخصوص، فبعض هذه المصطلحات تستخدم بمفردات أجنبية وقد لا تكون ترجمتها الحرفية ذات دلالة كافية لفهم المعلومات التقنية التي تعبر عنها، لا داعي للقلق فعندما تنتهي من قراءة هذا المقال ستتمكن من فهم كافة المصطلحات والمفردات شائعة الاستخدام عند مناقشة الذكاء الاصطناعي التوليدي Gen AI والمشاركة في النقاشات الدائرة حول هذه التقنية الرائدة سواءً في عملك أو في أي مكانٍ آخر.
</p>

<p>
	لقد بدأ النمو المتسارع لتقنيات الذكاء الاصطناعي التوليدي Generative AI -أو Gen AI اختصارًا- يؤثر بشكل جليّ على نمط حياتنا فَـغير طريقة إنجازنا للمهام المختلفة، لذا كان لزامًا على كافة الأشخاص العاملين في المجال التقني اكتساب معرفة كافية بالمصطلحات الأساسية لهذا المجال، وفهم كيفية عملها كي لا يشعر بالتشتت والاستغراب عند سماع مصطلحات مثل نموذج الأساس Foundation Model أو النماذج اللغوية الضخمة Large Language Models أو مصطلح هندسة المُوجّهات Prompt engineering أو غيرها من مصطلحات الذكاء الاصطناعي الشائعة اليوم.
</p>

<p>
	سنبدأ في هذه المقالة بشرح المصطلحات الأساسية للذكاء الاصطناعي والمجالات المشتقة منه، ثم سنتدرج بعد ذلك لشرح المصطلحات المتقدمة بهذا المجال الرائد، وللسهولة سنصنف المصطلحات وفق ثلاثة تصنيفات على النحو التالي:
</p>

<ul>
	<li>
		أولًا: مصطلحات أساسية حول الذكاء الاصطناعي.
	</li>
	<li>
		ثانيًا: مصطلحات متقدمة في الذكاء الاصطناعي.
	</li>
	<li>
		ثالثًا: مصطلحات تتعلق بآلية عمل الذكاء الاصطناعي.
	</li>
</ul>

<h2 id="1">
	أولًا: مصطلحات أساسية حول الذكاء الاصطناعي
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156985" href="https://academy.hsoub.com/uploads/monthly_2024_08/().png.2e1b5c2ef455297d5636ab6a26004de0.png" rel=""><img alt="استكشاف مصطلحات الذكاء الاصطناعي التوليدي (الجزء الثاني).png" class="ipsImage ipsImage_thumbnailed" data-fileid="156985" data-ratio="62.60" data-unique="v4sy1uq8f" style="width: 500px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2024_08/().thumb.png.558624e1e0b42407a85923a695073306.png"></a>
</p>

<p>
	نشرح في القسم الأول المصطلحات الأساسية التالية حول الذكاء الاصطناعي ومجالاته المختلفة:
</p>

<ul>
	<li>
		الذكاء الاصطناعي (Artificial intelligence (AI
	</li>
	<li>
		تعلم الآلة (Machine Learning (ML
	</li>
	<li>
		الشبكات العصبية الاصطناعية (Artificial Neural Network (ANN
	</li>
	<li>
		التعلم العميق (Deep Learning (DL
	</li>
	<li>
		الذكاء الاصطناعي التوليدي (Generative AI (GAI
	</li>
	<li>
		نموذج الأساس (Foundation Model (FM
	</li>
	<li>
		نماذج اللغة الضخمة (Large Language Models (LLMs
	</li>
	<li>
		معالجة اللغات الطبيعية (Natural Language Processing (NLP
	</li>
	<li>
		النماذج المحولة Transformers Models
	</li>
	<li>
		النموذج مسبق التدريب المبني على المحولات (Generative Pretrained Transformer (GPT
	</li>
</ul>

<h3 id="artificialintelligenceai">
	الذكاء الاصطناعي (Artificial intelligence (AI
</h3>

<p>
	يمكن تعريف <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">الذكاء الاصطناعي</a> على أنه محاكاة الآلات لذكائنا البشري، الذكاء الاصطناعي يمكن أن يكون تطبيقًا صغيرًا مدمجًا في هاتفك، أو ربما نظام أكثر تعقيدًا وأكبر حجمًا يعمل على خوادمٍ سحابية تستخدمها شركة لاستضافة نظامها الذكي الذي يستخدمه ملايين الأشخاص، في كلتا الحالتين، يمتلك الذكاء الاصطناعي القدرة على القيام بالمهام والأنشطة التي كانت تتطلب في السابق ذكاءً بشرياً لإتمامها.
</p>

<h3 id="machinelearningml">
	تعلم الآلة (Machine Learning (ML
</h3>

<p>
	<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%A7%D8%B0%D8%A7-%D9%8A%D8%B9%D9%86%D9%8A-%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9%D8%9F-r2074/" rel="">تعلم الآلة</a> هو تخصص فرعي من الذكاء الاصطناعي، ويستخدم كوسيلة لمنح الأنظمة الحاسوبية القدرة على التعلم من التجربة والبيانات باستخدام نماذج رياضية، يتحسن أداء هذه النماذج بمرور الوقت مع تعرض نموذج التعلم الآلي لمزيد من البيانات التي تُمكّنه من استخلاص الأنماط المتكررة التي يستخدمها النموذج في توقع نتائج تجاربٍ أخرى، هذا يخلق دورة مستمرة تُمكّن النماذج الآلية من التعلم والنمو والتطور دون الحاجة للتدخل البشري.
</p>

<h3 id="artificialneuralnetworkann">
	الشبكات العصبية الاصطناعية (Artificial Neural Network (ANN
</h3>

<p>
	الشبكات العصبية هي خوارزميات متفرعة من تعلم الآلة تستخدم في توجيه وتدريب الآلات على تعلم التعرف على الأنماط باستخدام شبكة مصممة لتحاكي طريقة عمل الشبكات العصبية البشرية في مخ الإنسان. باستخدام هذه الشبكات المكونة من طبقاتٍ يمكن أن تتصل ببعضها على التوالي أو التوازي أو بشكل ملتف وتتكون الطبقات من عدد من الخلايا العصبية الاصطناعية تدعى بالعصبون neuron، تصبح الآلات قادرة على التعامل مع مختلف المدخلات لتوليد أفضل الإجابات والنتائج الممكنة، وتكتسب هذه الآلات القدرة على التعلم من الأخطاء من أجل تحسين دقة النتائج.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156981" href="https://academy.hsoub.com/uploads/monthly_2024_08/ANN(1).png.8e503ddad5e7431018c4a7f511909ce5.png" rel=""><img alt="الشبكات العصبية الاصطناعية" class="ipsImage ipsImage_thumbnailed" data-fileid="156981" data-ratio="56.40" data-unique="6tupi7sea" style="width: 500px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2024_08/ANN(1).thumb.png.27ddbb2d9de84798edcae2651b82fd92.png"></a>
</p>

<h3 id="deeplearningdl">
	التعلم العميق Deep Learning
</h3>

<p>
	يستخدم التعلم العميق الشبكات العصبية الاصطناعية من أجل اكتشاف الأنماط أو تحديدها أو تصنيفها، على نطاقٍ متنوع من البيانات، مثل البيانات النصية والمرئية والصوتية، فيمكنه تحديد ووصف العناصر الموجودة بالصورة، أو يمكنه تحويل ملف صوتي إلى ملفٍ نصّيٍ يحتوى الكلمات المنطوقة، ويمكن لخوارزميات التعلم العميق أن تصبح في غاية التعقيد عن طريق إضافة عدد مهول من طبقات الشبكات العصبية المتصلة بطرقٍ مختلفة تمكن الخوارزمية من اكتشاف الأنماط والعلاقات العميقة في البيانات.
</p>

<h3 id="generativeaigai">
	الذكاء الاصطناعي التوليدي Generative AI
</h3>

<p>
	الذكاء الاصطناعي التوليدي Generative AI أو GAI اختصارًا ،هو تخصص فرعي من التعلم العميق وهو يعبر عن قدرة النموذج على توليد وإنتاج محتوى جديد لم يوجد من قبل، قد يكون هذا المحتوى صورة أو نصَا أو تسجيلات صوتية أو فيديو أو غير ذلك، ويحتاج توليد المحتوى من خلال الذكاء الاصطناعي إلى استخدام كميات هائلة من البيانات في مرحلة التدريب المسبق لنموذج الأساس Foundation Model حتى يكون النموذج قادراً على توليد مثل هذا المحتوى المشابه للبيانات الموجودة التى قد ينخدع البعض بها ويظن أنها من صنع الإنسان.
</p>

<h3 id="foundationmodelfm">
	نموذج الأساس Foundation Model
</h3>

<p>
	نماذج الأساس هي نماذج تعلم عميق دُرّبت على كميات ضخمة من البيانات الغير موسومة unlabeled data والشاملة، وهي النماذج التي تعتمد عليها قدرات الذكاء الاصطناعي التوليدي، تكون هذه النماذج في الغالب ضخمة للغاية مقارنة بنماذج التعلم الآلي التقليدي التي تتخصص في مهام معينة وتُدرّب على بيانات مرتبطة بتلك المهمة فقط، تستخدم نماذج الأساس كنقطة بداية لتطوير نماذج تقوم بمهام أكثر تعقيداً، قد يكون نموذج الأساس قادرًا على فهم اللغة حيث تم تدريبه على كميات ضخمة من النصوص فيمكن استخدامه كأساس لنماذج أكثر تخصصاً تستفيد من قدرته على فهم اللغة للقيام ببعض المهام مثل القيام بمحادثات أو تلخيص النصوص أو توليد النصوص المختلفة، مثال على هذا النوع من النماذج هو (GPT-4) وهو نموذج الأساس المستخدم لتشغيل تشات جي بي تي ChatGPT، ولا يتوقف الأمر على النصوص فبعض النماذج قادرة على توليد الصور مثل نموذج الانتشار <a href="https://stability.ai/news/stable-diffusion-3" rel="external nofollow">Stable Diffusion model</a> القادر على توليد محتوى مرئي قوي، ونماذج الأساس قادرة على إنتاج طيف واسع من المخرجات اعتمادًا على الأوامر النصية prompts بمستوى عالٍ من الدقة.
</p>

<h3 id="largelanguagemodelsllms">
	النماذج اللغوية الضخمة Large Language Models
</h3>

<p>
	تستخدم نماذج الذكاء الاصطناعي التوليدي نماذج اللغة الضخمة LLMs لتوليد النصوص اعتمادًا على سلسلة من الاحتمالات تمكنها من توقع وتحديد وفهم السياق، تُدرّب النماذج اللغوية باستخدام معمارية المحولات Transformers architecture تصل معاملات parameters في مثل هذه النماذج إلى مليارات، وتركز النماذج اللغوية الضخمة على محاكاة فهم البشر للغة من خلال معالجة اللغات الطبيعية<br>
	Natural Language Processing.تستخدم النماذج اللغوية الضخمة في تلخيص النصوص أو تصنيف النصوص وتحليل المشاعر التي تعبر عنها الكلمات، وتستخدم أيضاً في أنظمة المحادثات الآلية chatbots والمساعدات الذكية.
</p>

<h3 id="naturallanguageprocessingnlp">
	معالجة اللغات الطبيعية (Natural Language Processing (NLP
</h3>

<p>
	معالجة اللغات الطبيعية هي العلم الذي يهتم بدراسة اللغات وتزويد الآلات بالقدرة على معالجة وتفسير اللغات البشرية سواءً كانت هذه اللغات مكتوبة أو منطوقة، كما لو أن إنسانًا يتحدث أو يكتب، ويهتم تخصص فهم اللغات الطبيعية Natural Language Understanding -أو NLU اختصارًا- بفهم المشاعر والقصد من وراء اللغة المستخدمة، بينما في توليد اللغات الطبيعية Natural Language Generation  أو NLG اختصارًا فيكون الهدف هو توليد النصوص بشكل كتابي أو منطوق، مما يسمح بتحويل النص إلى النطق text-to-speech و النطق إلى نص speech_to_text.
</p>

<h3 id="transformersmodels">
	نماذج المحولات Transformers Models
</h3>

<p>
	تعد معمارية المحولات Transformers architecture من معماريات التعلم العميق وهي الأكثر استخدامًا في تطوير النماذج اللغوية الضخمة، يعود هذا لقدرتها على معالجة النصوص باستخدام نماذج رياضية وقدرتها على فهم الكلمات في السياقات المختلفة وفهم كيفية ارتباط الكلمات ببعضها حتى وإن كانت الكلمات متباعدة (أي يمكن للنموذج الاحتفاظ بمعلومات من الأجزاء السابقة للنص وتذكرها واستخدامها لفهم الأجزاء اللاحقة)، وهذا النوع من الذاكرة طويلة الأمد يسمح للنموذج أن ينقل فهمه بين اللغات المختلفة، ولم يتوقف الأمر عند اللغات فيمكنه نقل معرفته بين الوسائط media المختلفة، فيمكنه تحويل النصوص إلى صور.
</p>

<h3 id="generativepretrainedtransformergpt">
	االمحوِّل التوليدي مسبق التدريب (Generative Pretrained Transformer (GPT
</h3>

<p>
	النموذج التوليدي مسبق التدريب المبني على معمارية المحولات Generative pre-trained transformers GPT يستخدم معمارية المحولات Transformer Architecture من أجل إكساب الآلات قدرات مشابه للبشر في توليد المحتوى من النصوص، والصور، والتسجيلات الصوتية باستخدام تقنيات معالجة اللغات الطبيعية مثل <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D9%84%D8%AE%D9%8A%D8%B5-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2315/" rel="">تلخيص النصوص text summarization</a>، وروبوتات الدردشة الآلية chatbots وغيرها من التطبيقات الأخرىي، ولعل أشهرها هو تشات جي بي تي Chat GPT الذي يستخدم نموذج توليدي مسبق التدريب مبني بمعمارية المحولات.
</p>

<h2 id="2">
	ثانيًا مصطلحات متقدمة في الذكاء الاصطناعي
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156983" href="https://academy.hsoub.com/uploads/monthly_2024_08/().png.df4d936d7857cc4402716b5ec3b69dc1.png" rel=""><img alt="استكشاف مصطلحات الذكاء الاصطناعي التوليدي (الجزء الأول).png" class="ipsImage ipsImage_thumbnailed" data-fileid="156983" data-ratio="62.60" data-unique="uy67kyjb3" style="width: 500px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2024_08/().thumb.png.b995c289e67325227f2ba5c9e97ab503.png"></a>
</p>

<p>
	سنوضح في الفقرات التالية المصطلحات المتقدمة التالية حول الذكاء الاصطناعي التوليدي:
</p>

<ul>
	<li>
		الذكاء الاصطناعي المسؤول Responsible AI
	</li>
	<li>
		البيانات الموسومة Labelled Data
	</li>
	<li>
		التعلم الخاضع للإشراف Supervised learning
	</li>
	<li>
		التعلم غير الخاضع للإشراف Unsupervised learning
	</li>
	<li>
		التعلم شبه الخاضع للإشراف Semi-supervised learning
	</li>
	<li>
		هندسة المُوجَّهات Prompt engineering
	</li>
	<li>
		سَلسَلة المُوجَّهات Prompt chaining
	</li>
	<li>
		التوليد المعزز بالاسترجاع (Retrieval Augmented Generation (RAG
	</li>
	<li>
		معاملات التحكم بنماذج الذكاء الاصطناعي parameters
	</li>
	<li>
		صقل نماذج تعلم الآلة fine-tuning for learning models
	</li>
</ul>

<h3 id="responisbleai">
	الذكاء الاصطناعي المسؤول Responisble AI
</h3>

<p>
	الذكاء الاصطناعي المسؤول مصمم ليتبع بعض المبادئ والممارسات التي تضمن عند تفعيلها استخدامًا آمنًا وأخلاقيًا للذكاء الاصطناعي لا يكسر أي قوانين، مما يعطي المصداقية والثقة لدى العملاء والأنشطة التجارية المختلفة لاستخدامه، بسبب <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A5%D9%8A%D8%AC%D8%A7%D8%A8%D9%8A%D8%A7%D8%AA-%D9%88%D8%B3%D9%84%D8%A8%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2248/" rel="">المخاطر</a> المحتملة لاستخدام الذكاء الاصطناعي والطرق التي سيؤثر بها الذكاء الاصطناعي على البشرية لا بد من وضع قواعد حاكمة تضمن مصداقيته، القدرة على أن تثق في إجابات الذكاء الاصطناعي ونتائجه أمرٌ هام للغاية في أي تطبيق للذكاء الاصطناعي.
</p>

<h3 id="labeleddata">
	البيانات الموسومة Labeled data
</h3>

<p>
	تساعد البيانات الموسومة Labeled data نماذج التعلم الآلي على معالجة البيانات والتعلم منها، ويشير مصطلح وسم البيانات إلى الحالة التي تحتوي فيها البيانات على الوسم أو التسمية المراد تعلم التعرف عليها أو تصنيفها بشكلٍ دقيق من خلال البيانات فمثلا يمكن وسم الصور بما تحويه من عناصر تساعد النموذج على تعلم الروابط والأنماط المشتركة بين كل الصور التي تحمل هذا الوسم، إن كان لديك صورة لنمر يمكن أن توسم هذه الصورة بوسم "نمر" مما يساعد النموذج على الربط بين الأنماط الموجودة في الصورة والأنماط الموجودة في صور جديدة للنمور.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156982" href="https://academy.hsoub.com/uploads/monthly_2024_08/supervised_learning(1).png.94446595c518fbec484d46afe864953d.png" rel=""><img alt="supervised_learning(1).png" class="ipsImage ipsImage_thumbnailed" data-fileid="156982" data-ratio="56.40" data-unique="llgciwrsn" style="width: 500px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2024_08/supervised_learning(1).thumb.png.5fd325413ed47918e190559de78ec30f.png"></a>
</p>

<h3 id="supervisedlearning">
	التعلم الخاضع للإشراف Supervised Learning
</h3>

<p>
	<strong>ا</strong>لتعلم الخاضع للإشراف أو التعلم مع إشراف Supervised learning هو طريقة تدريب لِنماذج التعلم الآلي تستخدم كميات كبيرة من البيانات الموسومة Labeled data لتوقع مخرجات التعلم، ومع تكرار مرات التدريب يصبح النموذج أكثر قدرة على الوصول لدالة معبرة بصورة أفضل عن العلاقة بين المدخلات والمخرجات المتوقعة من النموذج، حيث تُصحّح أخطاء النموذج عن طريق تعديل معاملات parameters الدالة المستخدمة في ربط المدخلات بِالمخرجات المتوقعة لتحسين التوقعات.
</p>

<p>
	يسمى هذا النوع من التدريب بأنه خاضع للإشراف لأن الوسم المعطى للبيانات يستخدم <strong>كمشرف</strong> لتقييم توقعات النموذج، على سبيل المثال إن كانت الصورة المدخلة لنموذج تعلم آلي صورة "أسد" وقام النموذج بوسمها على أنها "نمر" سيُقيّم هذا التوقع بأنه خاطئ وسوف يصحح في الدورات التالية من عملية التدريب.
</p>

<h2 id="unsupervisedlearning">
	التعلم غير الخاضع لإشراف Unsupervised Learning
</h2>

<p>
	يتميز التعلم غير الخاضع للإشراف أو التعلم دون إشراف Unsupervised Learning بأنه لا يستخدم بياناتٍ موسومة تشرف على توقعاته، حيث يمنح النموذج الاستقلالية ليقوم باكتشاف الأنماط المشتركة للبيانات المدخلة وتصنيفها حسب درجة تشابه خواص تلك البيانات، على سبيل المثال إن كانت البيانات المدخلة هي صور نمور وفيلة وزرافات سيحتاج النموذج إلى تصنيف هذه الصور بناءً على الخواص المشتركة بينها مثل اللون أو اختلاف الحجم أو الشكل أو شكل الوجه وغيرها من الخواص التي يمكن للنموذج تعلمها من الصور.
</p>

<h2 id="semisupervisedlearning">
	التعلم شبه الخاضع للإشراف Semi-supervised learning
</h2>

<p>
	تجمع هذه الطريقة في تدريب نماذج التعلم الآلي بين استخدام البيانات الموسومة Labeled data كما في التعلم الخاضع للإشراف Supervised Learning والبيانات غير الموسومة Unlabeled data كما في التعلم الغير الخاضع للإشراف Unsupervised Learning، في الغالب تُتٌستخدم هذه الطريقة عندما لا تتوفر بيانات موسومة كافية مقارنةً بقاعدة بيانات أكبر من البيانات الغير موسومة، توفر هذه الطريقة عناء وسم البيانات الضخمة بشكلٍ يدوي، حيث يمكنك استخدام البيانات الموسومة الأقل حجمًا لتساعد النموذج في مرحلة التدريب على التعرف على بعض التصنيفات الموجودة في البيانات وتدريب النموذج على البيانات الأكبر حجماً دون استخدام وسمٍ أو إشراف.
</p>

<h3 id="promptengineering">
	هندسة المُوجَّهات Prompt Engineering
</h3>

<p>
	هندسة المُوجَّهات Prompt Engineering تسهل عملية إعطاء الأوامر للنماذج اللغوية الضخمة Large language models عن طريق تعديل النص المدخل من أجل الحصول على مخرجات مناسبة، حيث تساعد هذه التقنية على تحسين أداء نماذج الذكاء الاصطناعي التوليدي لتنفيذ بعض المهام الدقيقة والمحددة عن طريق تحسين المُوجهات أو الأوامر المدخلة للنموذج، و<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A3%D9%81%D8%B6%D9%84-%D9%85%D9%85%D8%A7%D8%B1%D8%B3%D8%A7%D8%AA-%D9%87%D9%86%D8%AF%D8%B3%D8%A9-%D8%A7%D9%84%D9%85%D9%8F%D9%88%D8%AC%D9%91%D9%90%D9%87%D8%A7%D8%AA/" rel="">تهدف هندسة المُوجِّهات</a> لجعل نتائج النموذج أكثر صلة ومناسبة للمهمة المطلوبة، وتشكل هذه التقنية تحولاً في طريقة تفاعل البشر مع الذكاء الاصطناعي.
</p>

<h3 id="promptchaining">
	سَلسَلة المُوجَّه Prompt Chaining
</h3>

<p>
	سَلسَلة المُوجَّه Prompt Chaining هي تقنية تعمل مع نماذج اللغات الضخمة LLMs ومعالجة اللغات الطبيعية NLP وتسمح بالقيام بمحادثات تفاعلية تعتمد على المُوجَّهات والردود السابقة، تنشئ هذه الطريقة وعياً بالسياق خلال المحادثة، وهو أمر أساسي لجعل المحادثات مع الآلة شبيهة بمحادثات البشر التفاعلية، تظهر أهمية هذه الطريقة في أنظمة الدردشة الآلية chatbots فبدلًا من التعامل مع أمر نصي ضخم يصعب التعامل معه والرد عليه، يمكننا بدلًا من ذلك تقسيمه إلى سلسلة متتالية من الأوامر أو المُوجَّهات التي يسهل التعامل معها والإجابة عليها.
</p>

<h3 id="retrievalaugmentedgenerationrag">
	التوليد المعزز بالاسترجاع (Retrieval augmented generation (RAG
</h3>

<p>
	<strong>ا</strong>لتوليد المعزز بالاسترجاع (Retrieval augmented generation (RAG هو طريقة تعزز من قدرة نماذج الأساس بِتعزيزها باسترجاع الحقائق من مصادر خارجية لمساعدتها على توليد ردود حديثة ومدعومة بمصادر، نموذج الأساس يمتلك معرفة محدودة فقط بالبيانات التي تدرب عليها، لذا إذا كان هناك نقص أو تأخر في تاريخ هذه البيانات لن تصبح ذات فائدة، لذلك تعزيز النموذج بالحقائق والمعلومات من مصادر خارجية حديثة سوف يحسن من مصداقية ودقة المعلومات المولدة، على سبيل المثال لا يمكنك توقع إجابة دقيقة عن سعر سهمٍ في شركة من نموذج معرفته محدودة زمنياً وغير قادر على الوصول إلى البيانات الحديثة لهذا السهم، أما باستخدام التوليد المعزز باستراجاع الحقائق RAG فسوف يمكن بكل سهولة تعزيز معرفة النموذج من مصادر موثوقة ليصبح قادرًا على توفير إجابة محدثة عن السهم، لن تُخزّن هذه المعلومات لدى نموذج الأساس فقط تستخدم لتعزيز الإجابات بالحقائق.
</p>

<h3 id="parameters">
	المعاملات Parameters
</h3>

<p>
	إن معاملات parameters نماذج الذكاء الاصطناعي وتعلم الآلة هي عبارة عن متغيرات تُعدَّل قيمها أثناء تدريب النموذج من أجل تحسين أدائه في اكتشاف الأنماط الموجودة في البيانات، وبالتالي جعلها أكثر كفاءة، وتتحكم هذه المعاملات في تصرف النموذج وتقلل الفرق بين القيم المتوقعة والقيم الحقيقية الصحيحة وتجعله أدق في التنبؤ أو تصنيف البيانات.
</p>

<p>
	لنفرض أننا نريد تصنيف الحيوانات والتمييز بين الكلب والقطة بناءً على بعض الخصائص مثل الوزن والطول ووجود الفرو باستخدام نموذج يسمى الانحدار اللوجستي <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D9%85%D9%81%D8%A7%D9%87%D9%8A%D9%85-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9-r1009/" rel="">Logistic Regression</a> الذي يعتمد على معادلة تجمع بين الخصائص (الوزن، الطول، وجود الفرو) لحساب احتمال أن يكون الحيوان كلبًا أو قطة. سيبدأ النموذج بمعاملات عشوائية تحدد أهمية كل خاصية (مثل الوزن أو الطول) في تحديد نوع الحيوان، ويقارن التوقعات مع النوع الحقيقي للحيوان (كلب أو قطة) ويعدل المعاملات لتقليل الأخطاء في التوقعات، وبعد العديد من المحاولات والتعديلات يصبح النموذج أكثر دقة في التمييز بين الكلب والقطة. وبهذا يتعلم النموذج القيم المثلى للمعاملات التي تمكنه من التنبؤ بنوع الحيوان بدقة أكبر بناءً على خصائصه.
</p>

<h3 id="finetuninglearningmodels">
	صقل نماذج التعلم الآلي Fine Tuning Learning models
</h3>

<p>
	<strong>صقل نماذج التعلم الآلي Fine Tuning Learning models</strong> هي تقنية لتعديل <strong>النماذج مسبقة التدريب pre-trained</strong> على مهام متخصصة ودقيقة، تصقل نماذج التعلم باستخدام بيانات تناسب المهمة المتخصصة التي نرغب في تحسين أداء نموذج الأساس عليها، يمتلك نموذج الأساس فهمًا عامًا للبيانات التي يتعامل معها ومع عملية الصقل باستخدام قاعدة بيانات صغيرة تناسب المهمة المتخصصة يصبح النموذج أكثر كفاءةً في أداء هذه المهمة، تمنح هذه التقنية نماذج التعلم الآلي القدرة على التأقلم على مهام جديدة عن طريق تعديل معاملاتها parameters لتناسب المهمة المتخصصة مما يزيد من دقة النموذج وفعاليته في تنفيذ هذه المهمة.
</p>

<h2 id="-4">
	ثالثًا: مصطلحات تتعلق بآلية عمل الذكاء الاصطناعي
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156984" href="https://academy.hsoub.com/uploads/monthly_2024_08/().png.97d8e79d1b364a95a555456d5225c314.png" rel=""><img alt="استكشاف مصطلحات الذكاء الاصطناعي التوليدي (الجزء الثالث والأخير).png" class="ipsImage ipsImage_thumbnailed" data-fileid="156984" data-ratio="62.60" data-unique="oy70hee0y" style="width: 500px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2024_08/().thumb.png.437ad855199365bbef258463dc8d1096.png"></a>
</p>

<p>
	في هذا القسم نشرح بعض المصطلحات المتعلقة بآلية عمل الذكاء الاصطناعي:
</p>

<ul>
	<li>
		التحيز Bias
	</li>
	<li>
		الهلوسة Hallucinations
	</li>
	<li>
		درجة الحرارة Temperature 
	</li>
	<li>
		التشبيه بالإنسان Anthropomorphism
	</li>
	<li>
		الإكمال Completion
	</li>
	<li>
		الوحدات اللغوية Tokens 
	</li>
	<li>
		الطفرات غير المتوقعة في الذكاء الاصطناعي  Emergence in AI
	</li>
	<li>
		التضمينات Embeddings
	</li>
	<li>
		تصنيف النصوص Text Classification
	</li>
	<li>
		نافذة السياق Context Window 
	</li>
</ul>

<h3>
	التحيز Bias
</h3>

<p>
	عندما يأتي الأمر لذكر تعلم الآلة تظهر مشكلة التحيز كنتيجة لاستخدام بيانات منحازة في التدريب لا تعبر بشكلٍ إحصائي جيد عن الواقع، هذا يؤدي بشكلٍ غير عادل وغير دقيق إلى ميول النموذج إلى القيام بتوقعات تحاكي هذا التشوه في بيانات التدريب، وبالتالي توليد نتائج منحازة، يُبرز هذا الأمر أهمية جودة البيانات المستخدمة في تدريب النماذج، حيث أن البيانات غير المكتملة أو ذات الجودة المنخفضة يمكن أن تولد نماذج لا تستحق الثقة نتيجة الافتراضات الخاطئة.
</p>

<h3>
	الهلوسة Hallucination
</h3>

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

<h3>
	درجة الحرارة Temperature
</h3>

<p>
	درجة الحرارة Temperature هي معامل parameter يستخدم في نماذج الذكاء الاصطناعي، للتحكم في درجة عشوائية أو إبداع الردود المولدة من النموذج، تتراوح القيم الممكنة لِمعامل الحرارة بين الصفر والواحد، القيمة الافتراضية لهذا المعامل هي 0.7، وكلما كانت قريبة إلى الصفر أكثر، كلما كانت الردود أكثر واقعية وثباتًا، بينما كلما ارتفعت قيمة المعامل كلما زادت إبداعية الردود المولدة وتفرّدها.
</p>

<h3>
	التشبه بالإنسان Anthropomorphism
</h3>

<p>
	<a href="https://ar.wikipedia.org/wiki/%D8%AA%D8%AC%D8%B3%D9%8A%D9%85" rel="external nofollow">التشبيه بالإنسان أو التجسيم Anthropomorphism</a> هو إعطاء الصفات والمشاعر والنوايا البشرية على الكيانات غير البشرية، فبعض الكيانات التي يمكن <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A8%D8%B4%D8%B1%D9%8A-%D9%85%D9%82%D8%A7%D8%A8%D9%84-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r1813/" rel="">تشبيها بالبشر</a> مثل الآلات، والحيوانات، والجمادات وغيرها من الأمثلة، ومن خلال استخدام الذكاء الاصطناعي الذي يتطور بشكل أكثر تعقيدًا يومًا عن يوم، وبعد فترة قصيرة للغاية من التعرض لأدوات الذكاء الاصطناعي، سيبدأ البشر في وصف برامج الحواسيب بصفاتٍ بشرية والتعامل معها كأنها تمتلك مشاعر إنسانية وهذا يمكن أن يؤثر على تصرفات وتفاعلات البشر مع الآلة.
</p>

<h3>
	الإكمال Completion
</h3>

<p>
	يٌستخدم مصطلح الإكمال Completion في معالجة اللغات الطبيعية NLP لوصف مخرجات النماذج الناتجة كرد، على سبيل المثال عند طرح سؤال على تشات جي بي تي Chat GPT سوف تعتبر الإجابة المولدة من النموذج اللغوي إكمالاً Completion لسياق السؤال المطروح.
</p>

<h3>
	الوحدات اللغوية Tokens
</h3>

<p>
	قد تكون الوحدة اللغوية Token تكون كلمة، أو مجموعة رموز للتميز بين بدايات الجمل ونهايتها والمسافات والحروف المميزة، تستخرج الوحدات اللغوية Tokens من النصوص المدخلة للنموذج اللغوي ليتمكن من التعامل مع التصريفات المختلفة للكلمات و الرموز المميزة وتسمى هذه العملية بِتقطيع النص إلى وحداتٍ لغوية Tokenization، توجد عدة طرق للقيام بعملية التقطيع تختلف في الغالب حسب النموذج المستخدم، تعتبر هذه الوحدات اللغوية الوحدات الأساسية لنماذج اللغات الضخمة حيث تستخدمها لمعالجة النصوص المختلفة واكتشاف الأنماط بها، وتستخدم أيضا كوحدة معيارية لِتحديد القدرة الاستيعابية للنموذج في المدخلات والمخرجات مما يساهم في تحديد نافذة السياق Context window.
</p>

<h3 id="emergenceinai">
	الطفرات غير المتوقعة في الذكاء الاصطناعي Emergence in AI
</h3>

<p>
	هو قدرة الذكاء الاصطناعي على اكتساب قدرات ومهارات غير مقصودة أو غير مبرمجة من البداية، تحدث هذه الظاهرة بسبب تعقيد النماذج وزيادة عدد المعاملات Parameters مما يؤدي إلى تأثيراتٍ جانبية تجعل النموذج قادراً على تأدية بعض المهام الغير مدرب عليها بشكلٍ صريح، لن تحدث هذه الظاهرة في النماذج البسيطة والأصغر حجمًا، لكن هناك مخاوف من إمكانية ظهور بعض المخاطر والتعقيدات الناتجة عند حدوث هذه الظاهرة في نماذج الذكاء الاصطناعي المتقدمة، على سبيل المثال يمكن أن نفقد السيطرة على هذه النماذج بحيث تنتج ردوداً تخالف القواعد العامة أو ردودًا مؤذية أو عنصرية بشكلٍ غير مقصود من المطور ولم تُدرّب عليها.
</p>

<h3>
	التضمينات Embeddings
</h3>

<p>
	التضمينات Embedding هي تمثيلات رقمية تعبر عن الكائنات، والكلمات في <a href="https://ar.wikipedia.org/wiki/%D9%85%D8%AA%D8%AC%D9%87" rel="external nofollow">متجهات</a> متعددة الأبعاد، تنتج عن طريق خوارزميات التعلم الآلي، وتمتلك القدرة على فهم معاني الكلمة في السياقات المختلفة وتَشابُه التمثيلات الرقمية للكلمات يدل على تشابه في المعنى، وبالمثل في معالجة الصور image processing يمكن ترميز الصور رقمياً كمتجهات ومصفوفات ليسهل تحليلها والقيام بالعمليات الرياضية عليها، تساعد هذه الترميزات الرقمية على القيام بالحسابات اللازمة ، مما يمّكن أنظمة <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%A7-%D9%87%D9%88-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">الذكاء الاصطناعي</a> من القيام بمهامٍ مثل فهم اللغات، والتعرف على الصور، وتقديم الاقتراحات بكفاءةً عالية.
</p>

<h3 id="textclassification">
	تصنيف النصوص Text Classification
</h3>

<p>
	يتضمن تصنيف النصوص Text classification تدريب النموذج على تصنيف النصوص وإعطائها الوسم المناسب من قائمة من الوسوم المعرفة مسبقًا، باستخدام تقنيات مثل معالجة اللغات الطبيعية، يمتلك النظام القدرة على تعلم الأنماط وتحليل السياق التي وردت به الكلمات، من أجل إعطاء توقعات دقيقة على المشاعر التي تعبر عنها النصوص، أو الموضوع، أو القصد من الكلام، وتتمتع مصنفات الذكاء الاصطناعي النصية بالقدرة على معالجة وفهم لغات وسياقات مختلفة للنصوص، مما يمّكنها من التعامل مع مهام مختلفة عابرة للغات بشكلٍ فعال.
</p>

<h3 id="contextwindow">
	نافذة السياق Context Window
</h3>

<p>
	نافذة السياق context window هو مصطلح يشير إلى كمية النصوص أو المعلومات التي يمكن لنموذج الذكاء الاصطناعي معالجتها والرد عليها من خلال إدخالها بشكلٍ نصي، يرتبط هذا المصطلح بشكلٍ وثيق بعدد الوحدات اللغوية Tokens المستخدمة في النموذج، تختلف حجم نوافذ السياق context windows باختلاف النموذج المستخدم، تلعب هندسة النصوص المدخلة prompt engineering دورًا هامًا عند التعامل مع نموذج نافذة سياق محددة، حيث تحتاج لوصف الأوامر المطلوبة بشكلٍ دقيق دون تجاوز الحجم الأقصى لنافذة السياق من الوحدات اللغوية Tokens.
</p>

<p>
	ترجمة-وبتصرٌّف-للمقالات <a href="https://cloudacademy.com/blog/navigating-vocabulary-of-generative-ai-series-1-of-3/" rel="external nofollow">Navigating the Vocabulary of Generative AI Series (1 of 3)</a> و <a href="https://cloudacademy.com/blog/navigating-the-vocabulary-of-generative-ai-series-2-of-3/" rel="external nofollow">( Navigating the Vocabulary of Generative AI Series (2 of 3</a> و  <a href="https://cloudacademy.com/blog/navigating-the-vocabulary-of-generative-ai-series-3-of-3/" rel="external nofollow"> (Navigating the Vocabulary of Generative AI Series (3 of 3</a> لصاحبها STUART SCOTT.
</p>

<h2 id="-5">
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%83%D9%84-%D9%85%D8%A7-%D8%AA%D9%88%D8%AF-%D9%85%D8%B9%D8%B1%D9%81%D8%AA%D9%87-%D8%B9%D9%86-%D8%AF%D8%B1%D8%A7%D8%B3%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2362/" rel="">كل ما تود معرفته عن دراسة الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A3%D9%87%D9%85%D9%8A%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2243/" rel="">أهمية الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D9%86-%D9%87%D9%88-%D9%85%D9%87%D9%86%D8%AF%D8%B3-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%88%D9%85%D8%A7-%D8%A3%D8%A8%D8%B1%D8%B2-%D9%85%D9%87%D8%A7%D9%85%D9%87-r2319/" rel="">من هو مهندس الذكاء الاصطناعي وما أبرز مهامه</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">خوارزميات الذكاء الاصطناعي</a><span style="display: none;"> </span><span style="display: none;"> </span>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D8%AA%D9%88%D9%84%D9%8A%D8%AF%D9%8A%D9%91%D8%A9-generative-models-%D9%84%D8%AA%D9%88%D9%84%D9%8A%D8%AF-%D8%A7%D9%84%D8%B5%D9%88%D8%B1-r2240" rel="">استخدام النماذج التوليديّة Generative models لتوليد الصور</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2399</guid><pubDate>Wed, 04 Sep 2024 15:00:00 +0000</pubDate></item><item><title>&#x62A;&#x648;&#x644;&#x64A;&#x62F; &#x627;&#x644;&#x646;&#x635;&#x648;&#x635; &#x628;&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; &#x627;&#x644;&#x646;&#x645;&#x627;&#x630;&#x62C; &#x627;&#x644;&#x644;&#x63A;&#x648;&#x64A;&#x629; &#x627;&#x644;&#x643;&#x628;&#x64A;&#x631;&#x629; LLMs</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D9%88%D9%84%D9%8A%D8%AF-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D9%84%D8%BA%D9%88%D9%8A%D8%A9-%D8%A7%D9%84%D9%83%D8%A8%D9%8A%D8%B1%D8%A9-llms-r2380/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_08/------LLMs.png.5ef0e07a10d3be33414452e4208e635e.png" /></p>
<p>
	نناقش في مقال اليوم النماذج اللغوية الكبيرة LLMs وهي صاحبة الدور الرئيسي في توليد النصوص، فهي تتكون من نماذج ذكاء اصطناعي كبيرة من نوع المحولات transformer، ومُدَرَّبة مُسبقًا على مهمة التنبؤ بالكلمة التالية أو token التالي من أي مُوجه يعطى لها، فهي إذًا تتنبأ بكلمات فردية بمقدار كلمة واحدة في كل مرة، لذا فإن توليد الجمل الكاملة سيحتاج تقنيةً أوسع تسمى توليد الانحدار الذاتي autoregressive generation.
</p>

<p>
	ويُعرَّف توليد الانحدار الذاتي بأنه إجراءٌ استدلالي متكرر مع الزمن، يستدعي نموذج LLM مراتٍ متكررة وفي كل مرة يُمرر له المخرجات التي وَلَّدها في المرة السابقة كمدخلات وهكذا، وبطبيعة الحالة يحتاح إلى مدخلات ابتدائية نقدمها له ليستخدمها في الاستدعاء الأول للنموذج، وتوفر <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D9%88%D9%91%D9%84%D8%A7%D8%AA-transformers-%D9%85%D9%86-%D9%85%D9%86%D8%B5%D8%A9-hugging-face-r2340/" rel="">مكتبة المحولات Transformers</a> تابعًا خاصًا لهذا الغرض هو <a href="https://huggingface.co/docs/transformers/v4.39.2/en/model_doc/phi#transformers.PhiForCausalLM.generate" rel="external nofollow"><code>generate()‎</code></a>، يعمل جميع النماذج ذات الإمكانات التوليدية generative.
</p>

<p>
	نسعى في هذا المقال لتحقيق ثلاثة أهداف رئيسية:
</p>

<ul>
	<li>
		شرح كيفية توليد نص باستخدام نموذج لغوي كبير LLM
	</li>
	<li>
		الإضاءة على بعض المخاطر الشائعة لتتجنبها
	</li>
	<li>
		اقتراح بعض المصادر التي ستساعدك على تحقيق أقصى استفادة ممكنة من نماذج LLMs
	</li>
</ul>

<p>
	تأكد في البداية من تثبيت المكتبات الضرورية للعمل قبل أن نبدأ بالتفاصيل، وذلك وفق التالي:
</p>

<pre class="ipsCode">pip install transformers bitsandbytes&gt;=0.39.0 -q
</pre>

<h2 id="">
	توليد النص
</h2>

<p>
	يأخذ النموذج اللغوي المُدَرَّب على <a href="https://huggingface.co/docs/transformers/tasks/language_modeling" rel="external nofollow">النمذجة اللغوية السببية</a> سلسلة من الرموز النصية كمدخلات inputs ويرجع بناءً عليها التوزع الاحتمالي للرمز التالي المتوقع، ألقِ نظرة على الصورة التوضيحية التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="155015" href="https://academy.hsoub.com/uploads/monthly_2024_08/img01-text-generation-LLM.jpg.8014e48def2dd42ef4bbe89f954148c7.jpg" rel=""><img alt="img01 text generation llm" class="ipsImage ipsImage_thumbnailed" data-fileid="155015" data-unique="69b0al42o" style="width: 598px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_08/img01-text-generation-LLM.thumb.jpg.76d3ef3fa6582d38a2c5f23c94ed730d.jpg"> </a>
</p>

<p>
	أما عن كيفية اختيار الرمز التالي من هذا التوزع الاحتمالي الناتج، فهي تختلف حسب الحالة، فقد تكون بسيطةً تتمثل بانتقاء الرمز الأكثر احتمالية من ضمن رموز التوزع الاحتمالي، أو معقدة لدرجة نحتاج معها لتطبيق عشرات التحويلات قبل الاختيار، وبصرف النظر عن طريقة الاختيار فإننا سنحصل بعد هذه المرحلة على رمز جديد نستخدمه في التكرار التالي أو الاستدعاء التالي للنموذج كما هو موضح في الصورة التالية لتوليد الانحدار الذاتي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="155016" href="https://academy.hsoub.com/uploads/monthly_2024_08/img02-autoregressive-generation.jpg.c13abf1d4fd2c2f6fede5810faeb0b2a.jpg" rel=""><img alt="img02 autoregressive generation" class="ipsImage ipsImage_thumbnailed" data-fileid="155016" data-unique="ft96q10k2" style="width: 598px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_08/img02-autoregressive-generation.thumb.jpg.f9ff74a1c286830c0513586e9d6665f4.jpg"> </a>
</p>

<p>
	تستمر عملية توليد الكلمات حتى نصل إلى أحد شروط التوقف التي يُحددها النموذج، ويتعلم النموذج متى ينبغي أن يرجع رمز نهاية السلسلة (EOS) الذي يُعدّ الإنهاء المثالي لعملية توليد النص، وفي حال لم يرجع النموذج هذا الرمز فسيظل العمل مستمرًا لحين الوصول إلى الحد الأقصى المسموح به من الرموز.
</p>

<p>
	إذًا فلديك أمرين مهمين ينبغي أن تهتم بهما ليعمل نموذجك التوليدي بالطريقة المرجوة، الأمر الأول هو كيفية اختيار الرمز التالي من بين رموز التوزع الاحتمالي، والأمر الثاني هو تحديد شرط إنهاء التوليد، تُضبط هذه الإعدادات في <a href="https://huggingface.co/docs/transformers/v4.39.2/en/main_classes/text_generation#transformers.GenerationConfig" rel="external nofollow">ملف إعدادات التوليد GenerationConfig</a> الخاص بكل نموذج توليدي، يُحَمَّل هذا الملف مع النموذج وهو يتضنت معاملاتٍ افتراضية مناسبة له.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		<strong>تنويه</strong>: تُعدّ واجهة <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%AE%D8%B7%D9%88%D8%B7-%D8%A7%D9%84%D8%A3%D9%86%D8%A7%D8%A8%D9%8A%D8%A8-pipelines-%D9%84%D9%84%D8%A7%D8%B3%D8%AA%D8%AF%D9%84%D8%A7%D9%84-%D9%81%D9%8A-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2353/" rel="">خط الأنابيب Pipeline</a> بدايةً جيدة لمن يرغب باستخدام أساسيات النماذج اللغوية الكبيرة (LLM)، لكنها لن تفي تمامًا بالغرض إذا رغبت باستخدام ميزات متقدمة مثل التكميم quantization والتحكم الدقيق بخطوة اختيار الرمز التالي وغيرها، فستحتاج عندها لاستخدام التابع <code>generate()‎</code> فهو الأنسب، وتجدر الإشارة أيضًا إلى نماذج LLMs المعتمدة على توليد الانحدار الذاتي تستهلك كثيرًا من الموارد الحاسوبية لذا ينبغي تشغيلها على وحدة معالجة الرسوميات (GPU) للحصول على إنتاجية مقبولة.
	</p>
</blockquote>

<p>
	لنبدأ الآن بالتطبيق العملي، حَمِّل أولًا النموذج كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_9113_10" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoModelForCausalLM</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoModelForCausalLM</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="pln">
    </span><span class="str">"mistralai/Mistral-7B-v0.1"</span><span class="pun">,</span><span class="pln"> device_map</span><span class="pun">=</span><span class="str">"auto"</span><span class="pun">,</span><span class="pln"> load_in_4bit</span><span class="pun">=</span><span class="kwd">True</span><span class="pln">
</span><span class="pun">)</span></pre>

<p>
	استخدمنا في الاستدعاء <code>from_pretrained</code> السابق معاملين <code>device_map</code> و <code>load_in_4bit</code>:
</p>

<ul>
	<li>
		<p>
			يضمن المعامل <code>device_map</code> أن حمل النموذج سيتوزع تلقائيًا على وحدات GPU المتاحة.
		</p>
	</li>
	<li>
		<p>
			يساعد المعامل <code>load_in_4bit</code> على تقليل استخدام الموارد الحاسوبية إلى أقصى حد ممكن عبر تطبيق التكميم الديناميكي 4 بت.
		</p>
	</li>
</ul>

<p>
	توجد طرق أخرى عديدة لتهيئة نموذج LLM عند تحميله، عرضنا إحداها في الأمر السابق، وهي أساسية وبسيطة.
</p>

<p>
	نحتاج الآن لمعالجة النص معالجةً مسبقة قبل إدخاله للنموذج وذلك باستخدام <a href="https://huggingface.co/docs/transformers/tokenizer_summary" rel="external nofollow">المُرَمِّز Tokenizer</a> وهو نوع المعالجة المناسب للنصوص كما تعلمنا في مقال <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D9%85%D8%B9%D8%A7%D9%84%D8%AC%D8%A9-%D8%A7%D9%84%D9%85%D9%8F%D8%B3%D8%A8%D9%82%D8%A9-%D9%84%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%82%D8%A8%D9%84-%D8%AA%D9%85%D8%B1%D9%8A%D8%B1%D9%87%D8%A7-%D9%84%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2365/" rel="">المعالجة المُسبقة للبيانات قبل تمريرها لنماذج الذكاء الاصطناعي</a>:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_9113_12" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"mistralai/Mistral-7B-v0.1"</span><span class="pun">,</span><span class="pln"> padding_side</span><span class="pun">=</span><span class="str">"left"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model_inputs </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">([</span><span class="str">"A list of colors: red, blue"</span><span class="pun">],</span><span class="pln"> return_tensors</span><span class="pun">=</span><span class="str">"pt"</span><span class="pun">).</span><span class="pln">to</span><span class="pun">(</span><span class="str">"cuda"</span><span class="pun">)</span></pre>

<p>
	سيُخَزَّن خرج المُرَمِّز (وهو عبارة عن النص المُرَمَّز وقناع الانتباه attention mask) في المتغير <code>model_inputs</code>، ويوصى عادةً بتمرير بيانات قناع الانتباه ما أمكن ذلك للحصول على أفضل النتائج، رغم أن التابع <code>generate()‎</code> سيسعى لتخمين قيمة قناع الانتباه عند عدم تمريره.
</p>

<p>
	<strong>ملاحظة</strong>: قناع الانتباه attention mask هو أداة تساعد النموذج اللغوي على معرفة الأجزاء المهمة في النص الذي يعالجه وتجاهل الأجزاء غير المهمة كرموز الحشو التي تُضاف لجعل طول النصوص موحدًا. يوجه هذا القناع النموذج ليركز فقط على الكلمات الفعلية في النص ويهمل الرموز لا تعني شيئًا للحصول على نتائج دقيقة.
</p>

<p>
	بعد انتهاء الترميز يُستدعى التابع <code>generate()‎</code> الذي سيُرجع الرموز tokens المتنبأ بها، والتي ستتحول إلى نص قبل إظهارها في خرج النموذج.
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_9113_15" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> generated_ids </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">generate</span><span class="pun">(**</span><span class="pln">model_inputs</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer</span><span class="pun">.</span><span class="pln">batch_decode</span><span class="pun">(</span><span class="pln">generated_ids</span><span class="pun">,</span><span class="pln"> skip_special_tokens</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)[</span><span class="lit">0</span><span class="pun">]</span><span class="pln">
</span><span class="str">'A list of colors: red, blue, green, yellow, orange, purple, pink,'</span></pre>

<p>
	ننوه أخيرًا إلى أنك لست مضطرًا لتمرير مدخلاتك إلى النموذج على شكل جمل مفردة، جملة واحدة في كل مرة، إذ يمكنك تجميع أكثر من جملة وتمريرها بهيئة دفعات batches مع استخدام الحشو padding لجعلها متساوية الطول، كما في المثال التالي، يزيد هذا الأسلوب من إنتاجية النموذج ويقلل الزمن والذاكرة المستهلكين:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_9113_17" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer</span><span class="pun">.</span><span class="pln">pad_token </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">.</span><span class="pln">eos_token  </span><span class="com"># لا تملك معظم النماذج اللغوية الكبيرة رمزًا للحشو افتراضيًا</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model_inputs </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">(</span><span class="pln">
    </span><span class="pun">[</span><span class="str">"A list of colors: red, blue"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Portugal is"</span><span class="pun">],</span><span class="pln"> return_tensors</span><span class="pun">=</span><span class="str">"pt"</span><span class="pun">,</span><span class="pln"> padding</span><span class="pun">=</span><span class="kwd">True</span><span class="pln">
</span><span class="pun">).</span><span class="pln">to</span><span class="pun">(</span><span class="str">"cuda"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> generated_ids </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">generate</span><span class="pun">(**</span><span class="pln">model_inputs</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer</span><span class="pun">.</span><span class="pln">batch_decode</span><span class="pun">(</span><span class="pln">generated_ids</span><span class="pun">,</span><span class="pln"> skip_special_tokens</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)</span><span class="pln">
</span><span class="pun">[</span><span class="str">'A list of colors: red, blue, green, yellow, orange, purple, pink,'</span><span class="pun">,</span><span class="pln">
</span><span class="str">'Portugal is a country in southwestern Europe, on the Iber'</span><span class="pun">]</span></pre>

<p>
	إذًا ببضع أسطر برمجية فقط استفدنا من أحد النماذج اللغوية الكبيرة LLM واستطعنا توليد نصوص مكلمة للجمل التي أعطيناها للنموذج.
</p>

<h2 id="-1">
	بعض المشكلات المحتمل وقوعها
</h2>

<p>
	لا تناسب القيم الافتراضية لمعاملات النماذج التوليدية جميع المهام فلكل مشروع خصوصيته، والاعتماد عليها قد لا يعطينا نتائج مرضية في العديد من حالات الاستخدام، سنعرض لك أشهرها مع طرق تجنبها:
</p>

<p>
	لنبدأ أولًا بتحميل النموذج والمُرَمِّز ثم نتابع بقية أجزاء الشيفرة ضمن الأمثلة تباعًا:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_9113_21" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoModelForCausalLM</span><span class="pun">,</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"mistralai/Mistral-7B-v0.1"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer</span><span class="pun">.</span><span class="pln">pad_token </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">.</span><span class="pln">eos_token  </span><span class="com"># لا تمتلك معظم النماذج اللغوية الكبيرة رمزًا للحشو افتراضيًا</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoModelForCausalLM</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="pln">
    </span><span class="str">"mistralai/Mistral-7B-v0.1"</span><span class="pun">,</span><span class="pln"> device_map</span><span class="pun">=</span><span class="str">"auto"</span><span class="pun">,</span><span class="pln"> load_in_4bit</span><span class="pun">=</span><span class="kwd">True</span><span class="pln">
</span><span class="pun">)</span></pre>

<h3 id="-2">
	توليد خرج أطول أو أقصر من اللازم
</h3>

<p>
	يُرجع التابع <code>generate</code> عشرين tokens كحد أقصى افتراضيًا، طالما أننا لم نحدد ما يخالف ذلك في ملف إعدادات التوليد Generation-config، ولكن ما ينبغي الانتباه له أن نماذج LLMs وخاصة النماذج من نوع <a href="https://huggingface.co/learn/nlp-course/chapter1/6?fw=pt" rel="external nofollow">decoder models</a> مثل GPT و CTRL تُرجع مُوجَّه الدخل input prompt أيضًا مع كل خرج تعطيه، لذا ننصحك بتحديد الحد الأقصى لعدد الـ tokens الناتجة يدويًا، وعدم الاعتماد على الحد الافتراضي، وذلك ضمن المتغير <code>max_new_tokens</code> المرافق لاستدعاء <code>generate</code>، ألقِ نظرة على المثال التالي ولاحظ الفرق في الخرج بين الحالتين، الحالة الافتراضية، وحالة تحديد العدد الأقصى للرموز الناتجة:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_9113_26" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model_inputs </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">([</span><span class="str">"A sequence of numbers: 1, 2"</span><span class="pun">],</span><span class="pln"> </span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> return_tensors</span><span class="pun">=</span><span class="str">"pt"</span><span class="pun">).</span><span class="pln">to</span><span class="pun">(</span><span class="str">"cuda"</span><span class="pun">)</span><span class="pln">

</span><span class="com"># الحالة الافتراضية الحد الأقصى لعدد الرموز الناتجة هو 20 رمز</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> generated_ids </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">generate</span><span class="pun">(**</span><span class="pln">model_inputs</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer</span><span class="pun">.</span><span class="pln">batch_decode</span><span class="pun">(</span><span class="pln">generated_ids</span><span class="pun">,</span><span class="pln"> skip_special_tokens</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)[</span><span class="lit">0</span><span class="pun">]</span><span class="pln">
</span><span class="str">'A sequence of numbers: 1, 2, 3, 4, 5'</span><span class="pln">

</span><span class="com"># عند ضبط قيمة المتغير الذي سيحدد العدد الأقصى للرموز الناتجة</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> generated_ids </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">generate</span><span class="pun">(**</span><span class="pln">model_inputs</span><span class="pun">,</span><span class="pln"> max_new_tokens</span><span class="pun">=</span><span class="lit">50</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer</span><span class="pun">.</span><span class="pln">batch_decode</span><span class="pun">(</span><span class="pln">generated_ids</span><span class="pun">,</span><span class="pln"> skip_special_tokens</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)[</span><span class="lit">0</span><span class="pun">]</span><span class="pln">
</span><span class="str">'A sequence of numbers: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,'</span></pre>

<h3 id="-3">
	نمط توليد غير مناسب
</h3>

<p>
	افتراضيًا يختار التابع <code>generate</code> الرمز الأكثر احتمالية من بين الرموز الناتجة في كل تكرار ما لم نحدد طريقة مغايرة للاختيار في ملف إعدادات التوليد GenerationConfig، يسمى هذا الأسلوب الافتراضي فك التشفير الشره greedy decoding، وهو لا يناسب المهام الإبداعية التي تستفيد من بعض العينات، مثل: بناء روبوت دردشة لمحادثة العملاء أو كتابة مقال متخصص، لكنه من ناحية أخرى يعمل جيدًا مع المهام المستندة إلى المدخلات، نحو: التفريغ الصوتي والترجمة وغيره، لذا اضبط المتغير على القيمة <code>do_sample=True</code> في المهام الإبداعية، كما يبين المثال التالي الذي يتضمن ثلاث حالات:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_9113_28" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="com"># استخدم هذا السطر إذا رغبت بالتكرار الكامل</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> set_seed
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> set_seed</span><span class="pun">(</span><span class="lit">42</span><span class="pun">)</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model_inputs </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">([</span><span class="str">"I am a cat."</span><span class="pun">],</span><span class="pln"> return_tensors</span><span class="pun">=</span><span class="str">"pt"</span><span class="pun">).</span><span class="pln">to</span><span class="pun">(</span><span class="str">"cuda"</span><span class="pun">)</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="com"># LLM + فك التشفير الشره = مخرجات متكررة ومملة</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> generated_ids </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">generate</span><span class="pun">(**</span><span class="pln">model_inputs</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer</span><span class="pun">.</span><span class="pln">batch_decode</span><span class="pun">(</span><span class="pln">generated_ids</span><span class="pun">,</span><span class="pln"> skip_special_tokens</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)[</span><span class="lit">0</span><span class="pun">]</span><span class="pln">
</span><span class="str">'I am a cat. I am a cat. I am a cat. I am a cat'</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="com"># مع تفعيل أخذ العينات، تصبح المخرجات أكثر إبداعًا</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> generated_ids </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">generate</span><span class="pun">(**</span><span class="pln">model_inputs</span><span class="pun">,</span><span class="pln"> do_sample</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer</span><span class="pun">.</span><span class="pln">batch_decode</span><span class="pun">(</span><span class="pln">generated_ids</span><span class="pun">,</span><span class="pln"> skip_special_tokens</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)[</span><span class="lit">0</span><span class="pun">]</span><span class="pln">
</span><span class="str">'I am a cat.  Specifically, I am an indoor-only cat.  I'</span></pre>

<h3 id="-4">
	الحشو في الجانب الخاطئ
</h3>

<p>
	ذكرنا سابقًا أنك عندما تقوم بإدخال جمل أو نصوص ذات أطوال مختلفة للنموذج، فقد تحتاج إلى جعل هذه المدخلات بطول موحد ليتمكن النموذج من معالجتها بشكل صحيح من خلال إضافة رموز الحشو (padding tokens) التي تجعل جميع المدخلات بطول متساوٍ.
</p>

<p>
	لكن النماذج اللغوية الكبيرة LLMs هي بنى لفك التشفير فقط decoder-only فهي تكرر الإجراءات نفسها على مدخلاتك، لكنها غير مُدَرَّبة على الاستمرار بالتكرار على رموز الحشو، لذا عندما تكون مدخلاتك مختلفة الأطوال وتحتاج للحشو لتصبح بطول موحد، فاحرص على إضافة رموز الحشو على الجانب الأيسر left-padded (أي قبل بداية النص الحقيقي) ليعمل التوليد بطريقة سليمة، وتأكد من تمرير قناع الانتباه attention mask للتابع <code>generate</code> حتى لا تترك الأمر للتخمين:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_9113_30" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="com"># المُرَمِّز المستخدم هنا يحشو الرموز على الجانب الأيمن افتراضيًا، والسلسلة النصية الأولى هي</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="com"># السلسلة الأقصر والتي تحتاج لحشو، وعند حشوها على الجانب الأيمن سيفشل النموذج التوليدي في التنبؤ بمنطقية</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model_inputs </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">(</span><span class="pln">
    </span><span class="pun">[</span><span class="str">"1, 2, 3"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"A, B, C, D, E"</span><span class="pun">],</span><span class="pln"> padding</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">,</span><span class="pln"> return_tensors</span><span class="pun">=</span><span class="str">"pt"</span><span class="pln">
</span><span class="pun">).</span><span class="pln">to</span><span class="pun">(</span><span class="str">"cuda"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> generated_ids </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">generate</span><span class="pun">(**</span><span class="pln">model_inputs</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer</span><span class="pun">.</span><span class="pln">batch_decode</span><span class="pun">(</span><span class="pln">generated_ids</span><span class="pun">,</span><span class="pln"> skip_special_tokens</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)[</span><span class="lit">0</span><span class="pun">]</span><span class="pln">
</span><span class="str">'1, 2, 33333333333'</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="com"># لاحظ الفرق عند تعديل الحشو ليصبح على الجانب الأيسر</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"mistralai/Mistral-7B-v0.1"</span><span class="pun">,</span><span class="pln"> padding_side</span><span class="pun">=</span><span class="str">"left"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer</span><span class="pun">.</span><span class="pln">pad_token </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">.</span><span class="pln">eos_token  </span><span class="com"># Most LLMs don't have a pad token by default</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model_inputs </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">(</span><span class="pln">
    </span><span class="pun">[</span><span class="str">"1, 2, 3"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"A, B, C, D, E"</span><span class="pun">],</span><span class="pln"> padding</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">,</span><span class="pln"> return_tensors</span><span class="pun">=</span><span class="str">"pt"</span><span class="pln">
</span><span class="pun">).</span><span class="pln">to</span><span class="pun">(</span><span class="str">"cuda"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> generated_ids </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">generate</span><span class="pun">(**</span><span class="pln">model_inputs</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer</span><span class="pun">.</span><span class="pln">batch_decode</span><span class="pun">(</span><span class="pln">generated_ids</span><span class="pun">,</span><span class="pln"> skip_special_tokens</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)[</span><span class="lit">0</span><span class="pun">]</span><span class="pln">
</span><span class="str">'1, 2, 3, 4, 5, 6,'</span></pre>

<h3 id="-5">
	مُوجَّهات خاطئة
</h3>

<p>
	يتراجع أداء بعض النماذج عندما لا نمرر لها مُوجَّهات input prompt بالتنسيق الصحيح الذي يناسبها، يمكنك الحصول على مزيد من المعلومات عن طبيعة الدخل المتوقع للنماذج مع كل مهمة بالاطلاع على <a href="https://huggingface.co/docs/transformers/tasks/prompting" rel="external nofollow">دليل المُوجَّهات في نماذج LLMs على منصة Hugging Face</a>، ألقِ نظرة على المثال التالي الذي عن استخدام نموذج LLM للدردشة باستخدام <a href="https://huggingface.co/docs/transformers/chat_templating" rel="external nofollow">قوالب الدردشة</a>:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_9113_32" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"HuggingFaceH4/zephyr-7b-alpha"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoModelForCausalLM</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="pln">
    </span><span class="str">"HuggingFaceH4/zephyr-7b-alpha"</span><span class="pun">,</span><span class="pln"> device_map</span><span class="pun">=</span><span class="str">"auto"</span><span class="pun">,</span><span class="pln"> load_in_4bit</span><span class="pun">=</span><span class="kwd">True</span><span class="pln">
</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> set_seed</span><span class="pun">(</span><span class="lit">0</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> prompt </span><span class="pun">=</span><span class="pln"> </span><span class="str">"""How many helicopters can a human eat in one sitting? Reply as a thug."""</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model_inputs </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">([</span><span class="pln">prompt</span><span class="pun">],</span><span class="pln"> return_tensors</span><span class="pun">=</span><span class="str">"pt"</span><span class="pun">).</span><span class="pln">to</span><span class="pun">(</span><span class="str">"cuda"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> input_length </span><span class="pun">=</span><span class="pln"> model_inputs</span><span class="pun">.</span><span class="pln">input_ids</span><span class="pun">.</span><span class="pln">shape</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> generated_ids </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">generate</span><span class="pun">(**</span><span class="pln">model_inputs</span><span class="pun">,</span><span class="pln"> max_new_tokens</span><span class="pun">=</span><span class="lit">20</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">tokenizer</span><span class="pun">.</span><span class="pln">batch_decode</span><span class="pun">(</span><span class="pln">generated_ids</span><span class="pun">[:,</span><span class="pln"> input_length</span><span class="pun">:],</span><span class="pln"> skip_special_tokens</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)[</span><span class="lit">0</span><span class="pun">])</span><span class="pln">
</span><span class="str">"I'm not a thug, but i can tell you that a human cannot eat"</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="com"># لم يتبع النموذج تعليماتنا هنا فهو لم يرد على السؤال كما ينبغي أن يرد أي شخص عنيف</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="com"># سنقدم الآن دخلًا أفضل يناسب النموذج باستخدام قوالب الدردشة، ونرى الفرق النتيجة</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> set_seed</span><span class="pun">(</span><span class="lit">0</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> messages </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="str">"role"</span><span class="pun">:</span><span class="pln"> </span><span class="str">"system"</span><span class="pun">,</span><span class="pln">
        </span><span class="str">"content"</span><span class="pun">:</span><span class="pln"> </span><span class="str">"You are a friendly chatbot who always responds in the style of a thug"</span><span class="pun">,</span><span class="pln">
    </span><span class="pun">},</span><span class="pln">
    </span><span class="pun">{</span><span class="str">"role"</span><span class="pun">:</span><span class="pln"> </span><span class="str">"user"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"content"</span><span class="pun">:</span><span class="pln"> </span><span class="str">"How many helicopters can a human eat in one sitting?"</span><span class="pun">},</span><span class="pln">
</span><span class="pun">]</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model_inputs </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">.</span><span class="pln">apply_chat_template</span><span class="pun">(</span><span class="pln">messages</span><span class="pun">,</span><span class="pln"> add_generation_prompt</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">,</span><span class="pln"> return_tensors</span><span class="pun">=</span><span class="str">"pt"</span><span class="pun">).</span><span class="pln">to</span><span class="pun">(</span><span class="str">"cuda"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> input_length </span><span class="pun">=</span><span class="pln"> model_inputs</span><span class="pun">.</span><span class="pln">shape</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> generated_ids </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">generate</span><span class="pun">(</span><span class="pln">model_inputs</span><span class="pun">,</span><span class="pln"> do_sample</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">,</span><span class="pln"> max_new_tokens</span><span class="pun">=</span><span class="lit">20</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">tokenizer</span><span class="pun">.</span><span class="pln">batch_decode</span><span class="pun">(</span><span class="pln">generated_ids</span><span class="pun">[:,</span><span class="pln"> input_length</span><span class="pun">:],</span><span class="pln"> skip_special_tokens</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)[</span><span class="lit">0</span><span class="pun">])</span><span class="pln">
</span><span class="str">'None, you thug. How bout you try to focus on more useful questions?'</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="com"># كما تلاحظ فقد تغير أسلوب الرد واتبع تعليماتنا بطريقة أفضل فكان رده أقرب للأسلوب المطلوب</span></pre>

<h2 id="-6">
	مصادر مفيدة للاستفادة من نماذج LLMs
</h2>

<p>
	ستحتاج لتعميق معرفتك بالنماذج اللغوية الكبيرة (LLMs) إذا رغبت بتحقيق أقصى استفادة منها، وإليك بعض الأدلة المفيدة من منصة Hugging Face المتخصصة في المجال:
</p>

<h3 id="generate">
	أدلة الاستخدام المتقدم للتوليد Generating
</h3>

<ul>
	<li>
		<a href="https://huggingface.co/docs/transformers/generation_strategies" rel="external nofollow">دليل استراتيجيات توليد النصوص باستخدام الذكاء الاصطناعي</a> الذي يساعدك في تعلم كيفية التحكم بتوابع توليد مختلفة، وضبط مخرجاتها، وملفات الإعدادات الخاصة بها.
	</li>
	<li>
		<a href="https://huggingface.co/docs/transformers/chat_templating" rel="external nofollow">دليل لاستخدام قوالب الدردشة</a> مع نماذج LLMs.
	</li>
	<li>
		<a href="https://huggingface.co/docs/transformers/tasks/prompting" rel="external nofollow">دليل LLM prompting</a> يتضمن الأساسيات وأفضل الممارسات في كتابة المُوجَّهات.
	</li>
	<li>
		توثيقات واجهة برمجة التطبيقات  <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> لكل من <a href="https://huggingface.co/docs/transformers/v4.39.2/en/main_classes/text_generation#transformers.GenerationConfig" rel="external nofollow">ملف إعدادات التوليد GenerationConfig</a> و <a href="https://huggingface.co/docs/transformers/v4.39.2/en/model_doc/phi#transformers.PhiForCausalLM.generate" rel="external nofollow">التابع ()generate</a> و <a href="https://huggingface.co/docs/transformers/internal/generation_utils" rel="external nofollow">الأصناف clasess المرتبطة</a> مع المعالجة المسبقة والعديد من الأمثلة التوضيحية.
	</li>
</ul>

<h3 id="llm">
	أشهر نماذج LLMs
</h3>

<ul>
	<li>
		النماذج مفتوحة المصدر التي تُركِّز على الجودة <a href="https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard" rel="external nofollow">Open LLM Leaderboard</a>.
	</li>
	<li>
		النماذج التي تهتم بالإنتاجية <a href="https://huggingface.co/spaces/optimum/llm-perf-leaderboard" rel="external nofollow">Open LLM-Perf Leaderboard</a>.
	</li>
</ul>

<h3 id="-7">
	أدلة حول تحسين السرعة والإنتاجية وتقليل استخدام الذاكرة
</h3>

<ul>
	<li>
		دليل <a href="https://huggingface.co/docs/transformers/llm_tutorial_optimization" rel="external nofollow">تحسين السرعة والذاكرة في نماذج LLMs</a>.
	</li>
	<li>
		دليل <a href="https://huggingface.co/docs/transformers/main_classes/quantization" rel="external nofollow">التكميم Quantization</a> باستخدام تقنيات مثل bitsandbytes و autogptq، لتخفيض متطلبات استخدام الذواكر.
	</li>
</ul>

<h3 id="-8">
	مكتبات مرتبطة بالنماذج اللغوية الكبيرة
</h3>

<ul>
	<li>
		المكتبة <a href="https://github.com/huggingface/text-generation-inference" rel="external nofollow"><code>text-generation-inference</code></a>، وهي بمثابة خادم إنتاج جاهز للعمل مع نماذج LLMs.
	</li>
	<li>
		المكتبة <a href="https://github.com/huggingface/optimum" rel="external nofollow"><code>optimum</code></a>، وهي امتداد لمكتبة <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AC%D9%88%D9%84%D8%A9-%D8%B3%D8%B1%D9%8A%D8%B9%D8%A9-%D9%84%D9%84%D8%A8%D8%AF%D8%A1-%D9%85%D8%B9-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D9%88%D9%91%D9%84%D8%A7%D8%AA-transformers-r2351/" rel="">المحوّلات Transformers</a> تساعدك في تحسين استخدام <a href="https://academy.hsoub.com/apps/operating-systems/%D9%85%D9%83%D9%88%D9%86%D8%A7%D8%AA-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D8%A8/" rel="">مكونات الحاسوب</a> وموارده.
	</li>
</ul>

<p>
	كما تساعدك <a href="https://academy.hsoub.com/store/12-%D8%AF%D9%88%D8%B1%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">دورة الذكاء الاصطناعي من أكاديمية حسوب</a> في فهم طريقة التعامل مع النماذج اللغوية الكبيرة LLMs وربط الذكاء الاصطناعي مع تطبيقاتك المختلفة، كما يمكنك الحصول على معلومات مفيدة من <a href="https://academy.hsoub.com/programming/artificial-intelligence/" rel="">دروس ومقالات قسم الذكاء الاصطناعي</a> على أكاديمية حسوب.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة الذكاء الاصطناعي
		</p>

		<p class="banner-subtitle">
			احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة.
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/artificial-intelligence" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<a href="https://academy.hsoub.com/learn/artificial-intelligence" rel=""><img alt="دورة الذكاء الاصطناعي" src="https://academy.hsoub.com/learn/assets/images/courses/artificial-intelligence.png"></a>
	</div>
</div>

<h2 id="-9">
	الخلاصة
</h2>

<p>
	وصلنا إلى ختام المقال وقد عرضنا فيه طريقة استخدام النماذج اللغوية الكبيرة LLMs لتوليد النصوص الطويلة تلقائيًا من نص بسيط مُدخل، مع بيان بعض المخاطر الشائعة التي تعترض مستخدميها وكيفية تجنبها، بالإضافة لتعداد أشهر نماذج LLM، وبعض المصادر الموثوقة لمن يريد تعلمها بتعمقٍ أكبر.
</p>

<p>
	ترجمة -وبتصرف- لقسم <a href="https://huggingface.co/docs/transformers/llm_tutorial#generation-with-llms" rel="external nofollow">Generation with LLMs</a> من توثيقات Hugging Face.
</p>

<h2 id="-4">
	اقرأ أيضًا
</h2>

<ul>
	<li>
		المقال السابق: <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%88%D9%83%D9%84%D8%A7%D8%A1-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D9%88%D9%84%D8%A7%D8%AA-transformers-agents-%D9%81%D9%8A-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A7%D9%84%D8%AA%D9%88%D9%84%D9%8A%D8%AF%D9%8A-r2379/" rel="">استخدام وكلاء مكتبة المحولات Transformers Agents في الذكاء الاصطناعي التوليدي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D8%A7%D9%84%D9%85%D9%8B%D9%83%D9%8A%D9%91%D9%8E%D9%81%D8%A7%D8%AA-peft-adapters-%D8%A8%D8%AF%D9%84-%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A8%D8%A7%D9%84%D9%83%D8%A7%D9%85%D9%84-r2377/" rel="">تدريب المًكيَّفات PEFT Adapters بدل تدريب نماذج الذكاء الاصطناعي بالكامل</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/python/%D8%A8%D9%86%D8%A7%D8%A1-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D8%A8%D8%A7%D9%8A%D8%AB%D9%88%D9%86-%D9%8A%D8%AC%D9%8A%D8%A8-%D8%B9%D9%84%D9%89-%D8%A3%D8%B3%D8%A6%D9%84%D8%A9-%D9%85%D9%84%D9%81-pdf-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2265/" rel="">بناء تطبيق بايثون يجيب على أسئلة ملف PDF باستخدام الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/javascript/nodejs/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D8%A7%D8%AE%D8%AA%D8%A8%D8%B1%D9%86%D9%8A-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-chatgpt-%D9%88%D9%84%D8%BA%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D8%A8%D8%AA-%D9%85%D8%B9-nodejs-r2018/" rel="">تطوير تطبيق 'اختبرني' باستخدام ChatGPT ولغة جافاسكربت مع Node.js</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%B5%D8%B7%D9%84%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-r2363/" rel="">مصطلحات الذكاء الاصطناعي للمبتدئين</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2380</guid><pubDate>Wed, 28 Aug 2024 15:00:00 +0000</pubDate></item><item><title>&#x623;&#x641;&#x636;&#x644; &#x645;&#x645;&#x627;&#x631;&#x633;&#x627;&#x62A; &#x647;&#x646;&#x62F;&#x633;&#x629; &#x627;&#x644;&#x645;&#x64F;&#x648;&#x62C;&#x651;&#x650;&#x647;&#x627;&#x62A; Prompt Engineering: &#x646;&#x635;&#x627;&#x626;&#x62D; &#x648;&#x62D;&#x64A;&#x644; &#x648;&#x623;&#x62F;&#x648;&#x627;&#x62A;</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D8%A3%D9%81%D8%B6%D9%84-%D9%85%D9%85%D8%A7%D8%B1%D8%B3%D8%A7%D8%AA-%D9%87%D9%86%D8%AF%D8%B3%D8%A9-%D8%A7%D9%84%D9%85%D9%8F%D9%88%D8%AC%D9%91%D9%90%D9%87%D8%A7%D8%AA/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_08/108120582_.png.4a8308fbc8a2b4ac46d7cd59e136f636.png" /></p>
<p>
	أصبحت أدوات الذكاء الاصطناعي حجر الزاوية في ثورة الذكاء الاصطناعي من <span ipsnoautolink="true">تشات جي بي تي Chat GPT</span> إلى <span ipsnoautolink="true">كلود Claude 3</span>، وشقت هذه الأدوات طريقها إلى الحياة اليومية والأنشطة التجارية،وقد تمكن كل من الهواة والمحترفين على حدٍ سواء من الاستفادة من هذا التطور في أنظمة المحادثات الآلية chatbots الهواة والمحترفين على حدٍ سواء.
</p>

<p>
	فحسب <a href="https://www.digitalocean.com/currents/november-2023#AI-ML" rel="external nofollow">استبيان حديث أجرته شركة DigitalOcean لعام 2023</a> حول أشهر التقنيات السحابية المستخدمة من قبل المطورين والشركات الصغيرة والمتوسطة رأى 45% من المشاركين في الاستبيان أن أدوات الذكاء الاصطناعي سهلت أداء وظائفهم بشكل كبير، بالمقابل وجد 43% منهم أن هناك تضخيمًا مبالغًا فيه في فعالية هذه الأدوات.
</p>

<p>
	يمكن إرجاع هذا التباين الشاسع في آراء المستخدمين لأحد العوامل الأساسية، ألا وهو <strong>هندسة الموجهات أو ما يعرف باسم Prompt engineering</strong>، فالمُوجَّه أو الأمر الذي تدخله لنموذج الذكاء الاصطناعي يصنع الفارق في جودة الردود التي تحصل عليها وهو ما سيجعل تعاملك معك أكثر سلاسة، أو يجعلك تعاني منه وتحبط من الردود التي لا تحقق لك مبتغاك، ويجبرك على القيام بالمهمة بنفسك دون استخدام أدواته، ومع تقدم ثورة الذكاء الاصطناعي بشكل متسارع، تزداد أهمية مهارة هندسة المُوجِّهات كمجالٍ متميز، حيث أصبحت <a href="https://time.com/6272103/ai-prompt-engineer-job/" rel="external nofollow">وظيفة مهندس الموجهات Prompt engineering من الأكثر طلباً ودخلاً</a> في أوساط الشركات.
</p>

<p>
	سنتعمق في مقال اليوم في الحديث عن هندسة المُوجِّهات Prompt engineering، ونوفر لك دليلاً شاملاً عن أفضل الممارسات، وبعض الأمثلة التي ستساعد نشاطك التجاري على استخراج أقصى فائدة ممكنة من تلك النماذج اللغوية الضخمة (large language models).
</p>

<h2 id="">
	ما هي هندسة المُوجِّهات؟
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156841" href="https://academy.hsoub.com/uploads/monthly_2024_08/1553883735_.png.b90a48c912854242b8a82c46d36a7e84.png" rel=""><img alt="هندسة النصوص المُدخلة أفضل الممارسات نصائح وخدع وأدوات.png" class="ipsImage ipsImage_thumbnailed" data-fileid="156841" data-ratio="62.60" data-unique="6034khiwr" style="width: 500px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2024_08/.thumb.png.6e0d2c6514a74494ec7349c4f6d2c17b.png"></a>
</p>

<p>
	هندسة المُوجِّهات prompt engineering هي طريقة تصميم وتحسين صياغة الأوامر النصية أو التوجيات المُدخلة للنموذج اللغوي بحيث تحسن من النتائج التي ينتجها النموذج لتناسب احتياجات وأهداف المستخدم، وتتطلب مزيجاً من القدرة على الإبداع وإدراك قدرات النموذج، واستخدام استراتيجيات لصياغة وهيكلة السؤال بطريقة توجه <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">الذكاء الاصطناعي</a> لتوفير ردٍ دقيق ومفيد، ولا يقع خارج سياق التوجيه المُدخل له، تحسن هندسة المُوجِّهات من التفاعل الجيد بين البشر والآلات بحيث تضمن جودة وفعالية التفاعل مع الآلة.
</p>

<h2 id="-1">
	ما أهمية هندسة المُوجِّهات؟
</h2>

<p>
	تنبع أهمية هندسة المُوجِّهات Prompt engineering من قدرتها على التأثير على أداء نماذج الذكاء الاصطناعي، فجودة الأوامر التي تدخلها للنموذج ستضمن لك الحصول على ردود أكثر دقة وصلةً بالسؤال المطروح، وهذا يجعل هندسة المُوجِّهات مهارة جوهرية اليوم لأي شخص يحاول الاستفادة من أدوات الذكاء الاصطناعي بشكلٍ فعال، ولا تقتصر هندسة المُوجِّهات على من يتخذها وظيفةً، حيث يمكن لأي شخص يطمح في استخدام أدوات الذكاء الاصطناعي للحصول على أفكار وملاحظات أو حل مشكلات معينة أن يستخدم تقنيات هندسة المدخلات لِيتفاعل مع تلك الأدوات بشكلٍ احترافي.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="360" id="ips_uid_1274_5" referrerpolicy="strict-origin-when-cross-origin" src="https://academy.hsoub.com/applications/core/interface/index.html" title="مجالات العمل بالذكاء الاصطناعي" width="640" data-embed-src="https://www.youtube.com/embed/tU5YcxMebHA"></iframe>
</p>

<p>
	<strong>بعض الأسباب التي تجعل هندسة المُوجِّهات في غاية الأهمية:</strong>
</p>

<ul>
	<li>
		<strong>تحسين الدقة</strong>: فالمٌدخلات المكتوبة بطريقةٍ متقنة توجه النموذج لتوليد إجابات أكثر دقة وأيضاً أكثر صلة بالمدخلات والسؤال المطروح.
	</li>
	<li>
		<strong>توفير الوقت</strong>: تُسهّل عملية هندسة المُوجِّهات Prompt engineering من الوصول إلى النتيجة المرغوبة في عدد رسائلٍ أقل، مما يوفر معاناة شرح المطلوب وتعديل أخطاء النموذج في محادثة لانهائية قد لا تقودك لنتيجة مرضية.
	</li>
	<li>
		<strong>تسهيل القيام بالمهام المعقدة</strong>: تتطلب المهام المعقدة فهمًا عميقًا للمتطلبات واستيعابًا لتعقيد المشكلة، فالمُوجّهات النصية الجيدة تسهل على النموذج التعامل مع المطلوب بشكلٍ أوضح.
	</li>
	<li>
		<strong>تحسين تجربة المستخدم</strong>: عن طريق توفير إجابات ذات صلة بالموضوع وموثوقة.
	</li>
	<li>
		<strong>مخرجات أكثر قيمة</strong>: يساعد استخدام هندسة المُوجِّهات Prompt engineering بشكل صحيح في بعض المجالات كالبرمجة، وصناعة المحتوى، وتحليل البيانات إلى توليد نتائج وردود أكثر قيمةً وجودة.
	</li>
	<li>
		<strong>الاستخدام الفعال</strong>: من خلال تعزيز فهمنا لكيفية التواصل مع الذكاء الاصطناعي، يمكننا تجاوز القيود الحالية وابتكار حلول إبداعية توسع قدرات الذكاء الاصطناعي وتزيد كفاءته.
	</li>
	<li>
		<strong>توفير التكلفة</strong>: بعض النماذج والأدوت متاحة للاستخدام بشكلٍ محدود أو بتكلفة مادية، لذا فإن القدرة على الوصول لردٍ ذي صلة ودقيق بعدد محاولات أقل يمكن أن يوفر عليك التكلفة المادية.
	</li>
</ul>

<h2 id="10">
	أفضل 10 ممارسات في هندسة المُوجِّهات
</h2>

<p>
	إن صياغة أوامر أو توجيهات نصية prompts فعالة لنماذج الذكاء الاصطناعي من شأنها تحسين جودة الردود المنتجة، وزيادة صِلتها بالمُوجّه أو السؤال المطروح، ولأجل اكتساب هذه الخبرة في صياغة المدخلات النصية أنت بحاجة لفهمٍ جيدٍ لكيفية معالجة الذكاء الاصطناعي لهذه الموجهات وتفسيرها. في النقاط العشرة التالية، سنكتشف معاً أفضل الممارسات التي سوف تساعدك في التواصل الفعال مع الذكاء الاصطناعي وكيف تكتب موجهات prompts عالية الجودة.
</p>

<h3 id="1">
	1. كن محدداً قدر المستطاع
</h3>

<p>
	احرص على كتابة مُوجِّه محدد بشكلٍ واضح ودقيق، فهذا هو المفتاح للحصول على أكثر المعلومات دقة وصلة من الذكاء الاصطناعي، فتحديد المتطلبات يزيل الغموض ويُضيّق نطاق البحث لدى الذكاء الاصطناعي، ولتحقيق هذا الشرط أنت بحاجة لإرفاق أكبر قدر من المعلومات ذات الصلة دون تحميل الذكاء الاصطناعي أية معلومات غير ضرورية، فإرفاق معلوماتٍ ليست ذات صلة بطلبك الحالي من شأنه أن يشتت ردود الذكاء الاصطناعي ويبعده عن مرادك، فالتوازن في كتابة مُوجِّه Prompt محدد يوجه الذكاء الاصطناعي إلى استخدام المعلومات الكافية فقط وتوليد إجابة دقيقة وذات صلة بالموضوع المطروح.
</p>

<p>
	<strong>بعض الأشياء الضرورية التي عليك توضيحها في المدخلات النصية</strong>
</p>

<ul>
	<li>
		<strong>توضيح السياق</strong>: قم بتوضيح خلفية الموضوع وتوفير المعلومات الكافية لفهم مجرى الأحداث التي تتساءل عنها، هذا يشمل الموضوع، وحجم الموضوع، وأية معلومات ذات صلة عن القيود المفروضة كأن تطلب منه على سبيل المثال توفير معلومات مقيدة بفترة زمنية معينة (آخر 5 سنوات على سبيل المثال).
	</li>
	<li>
		<strong>التنسيق المطلوب</strong>: قم بتوضيح التنسيق الذي ترغب فيه، مثلًا يمكن أن تكون الإجابة مرتبة على هيئة قائمة من النقاط، أو تقرير مفصلٌ، أو تلخيص، أو شيفرة برمجية، أو غيرها من التنسيقات وأنواع الملفات، وضح أيضاً تفضيلاتك عن العناوين والعناوين الفرعية وحجم الفقرات وغيرها من التفاصيل التنسيقية.
	</li>
	<li>
		<strong>حجم الإجابة المطلوبة</strong>: هل ترغب في إجاباتٍ مطولة أم إجابات مختصرة تتكون من نقاط واضحة عليك تحديد كل هذه التفاصيل كأن تطلب على سبيل المثال توليد ثلاثة فقرات أو إجابة بطول 250 كلمة.
	</li>
	<li>
		<strong>مستوى التفصيل</strong>: قم بتحديد مدى تعمق الإجابات، فيمكن أن تكون الإجابة سطيحة للتعريف بالموضوع بشكلٍ عام، ويمكن أن تكون تحليلًا متعمقًا في الموضوع، هذه النقطة مهمة لضمان توفير النموذج للقدر الذي تحتاجه من المعلومات.
	</li>
	<li>
		<strong>أسلوب الصياغة وطريقة الكتابة</strong>: حدد أسلوب الكتابة المناسب لاحتياجاتك، قد تكون الكتابة بشكلٍ رسمي، أو غير رسمي، أو بشكلٍ علمي، أو بشكلٍ أدبي، أو بشكل محادثة، أو غير ذلك، حيث تختلف الأساليب الممكنة باختلاف الجمهور المستهدف ونوع الكتابة.
	</li>
	<li>
		<strong>أمثلة ومقارنات</strong>: اطلب من الذكاء الاصطناعي توفير أمثلة ومقارنات من أجل توضيح المفاهيم المعقدة بشكلٍ أفضل، وتوفير معلومات مبسطة وذات صلة يسهل فهمها.
	</li>
</ul>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		<strong>مثال على prompt محددة بطريقة جيدة </strong>
	</p>

	<p>
		وفر العناوين الأساسية لتقرير مفصل عن تحليل التقنيات التسويقية الرائجة حاليًا على شبكات التواصل الاجتماعي، مركزاً على التطورات الحادثة من عام 2020 وحتى الوقت المعاصر. يجب أن تحتوي العناوين الأساسية على مقدمة، وثلاث مواضيع أساسية تناقش محاور مختلفة عن التقنيات الرائجة للتسويق على المنصات الاجتماعية، وأضف فقرة تلخص ما توصلت إليه، اقترح أيضًا أنواع الرسومات البيانية التي يمكن رسمها لتوضيح تفاعل المستخدمين مع الاستراتيجيات الرائجة ولخص الاستراتيجيات التسويقية بشكل قائمة نقطية.
	</p>
</blockquote>

<h3 id="2">
	2. عزز الذكاء الاصطناعي بالأمثلة
</h3>

<p>
	إن إرفاق الأمثلة في المُوجِّهات يعد تقنية قوية لتوجيه استجابات الذكاء الاصطناعي نحو المطلوب. فمن خلال توفيرأمثلة ضمن المُوجِّه فإنك تحدد مسبقًا نوع المعلومات أو الاستجابة التي تتوقعها وتربط بين المعلومات المتاحة لدى النموذج عن المثال الموجود بالفعل وطلبك. وهذه الطريقة مفيدة بشكل خاص للمهام المعقدة التي يكون المطلوب فيها غامضًا، وللمهام الإبداعية التي تحتوي على أكثر من إجابة صحيحة.
</p>

<p>
	وعندما تزود الذكاء الاصطناعي بهذه الأمثلة، تأكد من أنها تراعي جودة وأسلوب النتيجة المطلوبة وبهذا تساعد الذكاء الاصطناعي على نمذجة استجاباته بناء على هذه الأمثلة المقدمة، مما يؤدي إلى ردود ومخرجات أكثر دقة وتفصيلاً.
</p>

<p>
	إليك بعض أنواع الأمثلة التي يمكنك توفيرها للذكاء الاصطناعي لتساعده في توليد أفضل استجابة ممكنة:
</p>

<ul>
	<li>
		<strong>أرفق عينات من النص</strong>: يمكنك أن توفر عينة نصية تتبع الأسلوب الكتابي الذي ترغب من النموذج أن يتبعه عند توليد إجابة.
	</li>
	<li>
		<strong>وضح تنسيق البيانات</strong>: يمكنك توضيح تنسيق البيانات المخرجة وهياكلها، مثلًا يمكن أن تطلب منه وضع المعلومات في جداول أو قوائم.
	</li>
	<li>
		<strong>وفر القوالب الجاهزة:</strong> يمكنك توفير قالب جاهز لضمان توليد إجابات تتبع التنسيق والهيكل المطلوب.
	</li>
	<li>
		<strong>اكتب مقتطفات من الشيفرة البرمجية</strong>: إذا كان سؤالك متعلقًا بمشكلةٍ برمجية فمن الجيد توفير مقتطفات من الشيفرة البرمجية لضمان اتباع النموذج لقواعد اللغة البرمجية وتوليد شيفرات برمجية لهذه اللغة وليس لغيرها.
	</li>
	<li>
		<strong>وفر الرسومات البيانية والتوضيحية</strong>: إذا كنت ترغب في جعل الذكاء الاصطناعي يولد لك رسمًا بيانيًا فعليك توفير رسوماتٍ بيانية أو توضيحيةٍ مشابهة لما تحاول الوصول إليه.
	</li>
	<li>
		<strong>وفر المعلومات التسويقية</strong>: إذا كنت تستخدم الذكاء الاصطناعي لتوليد محتوى تسويقي، وفر له المعلومات التسويقية عن المنتج الخاص بك لتناسب النتائج التي يولدها هوية النشاط التجاري الذي تصمم له محتوى تسويقي.
	</li>
</ul>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		<strong>مثال على مُوجِّه prompt معزز بالأمثلة لمساعدته في توليد نتائج أفضل:</strong>
	</p>

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

	<table>
		<thead>
			<tr>
				<th>
					الميزة
				</th>
				<th>
					الأداة ( أ)
				</th>
				<th>
					الأداة (ب)
				</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td>
					السعر
				</td>
				<td>
					$X لكل مستخدم/شهرياً
				</td>
				<td>
					$Y لكل مستخدم/شهرياً
				</td>
			</tr>
			<tr>
				<td>
					الميزات الرئيسية
				</td>
				<td>
					توزيع المهام
				</td>
				<td>
					مشاركة الملفات
				</td>
			</tr>
			<tr>
				<td>
					تقييمات المستخدمين
				</td>
				<td>
					X نجوم
				</td>
				<td>
					Y نجوم
				</td>
			</tr>
			<tr>
				<td>
					الدعم الفني
				</td>
				<td>
					دردشة مباشرة 24/7، بريد إلكتروني
				</td>
				<td>
					هاتف خلال ساعات العمل، بريد إلكتروني
				</td>
			</tr>
		</tbody>
	</table>

	<p>
		تأكد أن يكون الجدول الذي تعده مناسبًا للإرفاق في التقرير.
	</p>
</blockquote>

<h3 id="3">
	3. وفر البيانات لتحصل على إجابات أفضل
</h3>

<p>
	يساعد توفير المعلومات والبيانات ذات الصلة بالموضوع على تحسين جودة الإجابات المولدة بشكلٍ ملحوظ، حيث توفر البيانات أساسًا قويًا للذكاء الاصطناعي ليفهم السياق وِيتمكن من صياغة إجابة دقيقة، كما يسمح توفير البيانات التي تحتوي أرقامًا، وتواريخًا، وتصنيفات بشكلٍ منسق وهيكلٍ واضح بتوفير إجابات مفصلة تحليلية تساعد في اتخاذ القرارات، لذا من الضروري وضع البيانات في السياق المناسب لها، وتوفيرها عندما تكون متاحة، مع إرفاق مصدرها، فهذا يضيف نوعًا من المصداقية والثقة في المقارنات والتحليلات الكمية للبيانات.
</p>

<p>
	ولتتأكد من أن الذكاء الاصطناعي قادر على توفير إجابات مفيدة وذات صلة، استخدم دائماً بيانات ومعلومات محدثة ومنظمة بشكلٍ جيد، وفي حالة المقارنات تأكد من توضيع عوامل المقارنة. فتوفير البيانات في السياق المناسب لها يزود الذكاء الاصطناعي بالقدرة على توفير إجابات قابلة للتنفيذ، واتخاذ قرارات فعالة مبنية على الأرقام، فالمدخلات النصية المرتكزة على البيانات قيّمة للغاية في المهام التي تتطلب تعمقاً تحليلياً للأرقام، وهي تُمكّن الذكاء الاصطناعي من توليد مخرجات مفيدة للنشاط التجاري وتوافق استراتيجياته التجارية.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		<strong>مثال على مُوجِّه prompt معزز بالبيانات:</strong>
	</p>

	<p>
		حلل بيانات المبيعات من الربع الأول لعام 2024 المرفقة في ملف PDF. أنا بحاجة إلى ملخص يوضح أفضل المنتجات مبيعاً، والمبيعات الكلية، وأي من الملاحظات على مشتريات العملاء.
	</p>

	<p>
		يحتوي ملف PDF هذا على المبيعات الشهرية لثلاثة منتجات، المنتج أ والمنتج ب والمنتج ج، بعد مراجعة البيانات وتلخيصها، لخص ملاحظاتك في فقرة موجزة مناسبة للعرض في اجتماع الشركة، حدد الزيادة الملحوظة في المبيعات، أو الانخفاض في المبيعات موضحا العوامل التي أدت لهذا.
	</p>
</blockquote>

<h3 id="4">
	4. حدد هيئة النتائج التي تفضلها
</h3>

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

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		<strong>مثال على مُوجِّه prompt يحدد هيئة الاستجابات:</strong>
	</p>

	<p data-gramm="false">
		أريد مراجعة شاملة عن أهم الأحداث في تاريخ تطوير البرمجيات، أرغب أن يكون تنسيق الإجابة على هيئة خط زمني يستخدم قائمة من النقاط، كل نقطة تشمل العام، والحدث، ووصفًا مختصرًا لأهميته، ابدأ من الثمانينات 1980s واستخدم أسلوب كتابةٍ تعليمي، ولا تتجاوز في المخطط الزمني عشرة أحداثٍ تاريخية.
	</p>
</blockquote>

<h3 id="5">
	5. استخدم صيغة "افعل" بدلاً من "لا تفعل"
</h3>

<p>
	عند صياغة المُوجِّهات للذكاء الاصطناعي من الأفضل توجيه الذكاء الاصطناعي نحو الفعل المناسب بدلاً من شرح ما عليه تجنبه، حيث يقلل هذا الأسلوب من الغموض ويُمكّن الذكاء الاصطناعي من توليد إجابات مفيدة وذات صلة بالموضوع، حيث تطلب التعليمات السلبية من الذكاء الاصطناعي أن يفهم الأمر ويقوم بعكسه، مما قد يزيد من احتمالية حدوث سوء فهم أو تشتت النموذج بالتركيز على ما نهي عنه، لذا كن واضحاً في تحديد الأفعال المطلوبة، لتمكن الذكاء الاصطناعي من الوصول للإجابة بشكلٍ فعال ومباشر.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		<strong>بعض الموجهات التي عليك تجنبها:</strong>
	</p>

	<ul data-gramm="false">
		<li>
			<p>
				تجنب استخدام عبارة "لا تكتب بتفاصيل كثيرة." واستخدم بدلاً من ذلك "وفر ملخصًا موجز."
			</p>
		</li>
		<li>
			<p>
				تجنب استخدام عبارة "تجنب استخدام المصطلحات التقنية." استخدم بدلاً منها عبارة "استخدم مصطلحات شعبية ولغة بسيطة سهلة الفهم"
			</p>
		</li>
		<li>
			<p>
				تجنب استخدام عبارة مثل "لا تعطي أمثلة قبل عام 2000." واستخدم بدلاً من ذلك عبارة "وفر أمثلة من عام 2000 فصاعدًا."
			</p>
		</li>
	</ul>
</blockquote>

<h3 id="6">
	6. اجعل الذكاء الاصطناعي يتقمص دور شخصية أو مرجعية محددة
</h3>

<p>
	من المفيد توجيه الذكاء الاصطناعي لِيتقمص شخصية أو دورًا محددًا بحيث تكون هذه الشخصية هي المرجع له، تزيد هذه الاستراتيجية من فعالية ودقة مخرجات الذكاء الاصطناعي، وتساعد على توجيه الذكاء الاصطناعي لتوليد إجاباتٍ ذات صلة بهذه الشخصية.
</p>

<p>
	تفيد هذه الطريقة للغاية في سياق الأنشطة التجارية التي تتطلب معرفة بالمجال والسوق، وتمّكنك من توجيه الذكاء الاصطناعي لِيستخدم المصطلحات والأساليب المناسبة للسياق وبالتالي لِلمجال المطلوب بما يتوافق مع مجرى الأحداث، يساعد تحديد الشخصية أو المرجعية أيضاً في توضيح التوقعات والتفاعلات المناسبة مع الذكاء الاصطناعي ويحسن تجربة المستخدم.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		<strong>مثال على مُوجِّه prompt يحدد الشخصية:</strong>
	</p>

	<p>
		تخيل أنك خبير تسويق محترف، اكتب بريدًا إلكترونيًا لشركة ناشئة، موضحاً ثلاث خطط تسويقية مصممة خصيصاً لتلبي احتياجاتهم التسويقية للمنتج الذي سيطلقونه قريباً، اطلع على الملف المرفق لمزيدٍ من التفاصيل.
	</p>

	<p>
		أرفق أي مؤشرات أداء سوف تساعد الشركة الناشئة على مراقبة أداء الحملات التسويقية، وتأكد من جعل أسلوب الكتابة احترافياً ومشجعاً، اجعلهم يشعرون بثقتك وخبرتك التسويقية.
	</p>
</blockquote>

<h3 id="7">
	7. جرب تسلسل المُوجِّهات
</h3>

<p>
	سَلسَلة المُوجِّهات Prompt chaining هي تقنية تعتمد على دفع الذكاء الاصطناعي لتفسير إجاباته وتفصيلها بشكلٍ أوضح، عن طريق توجيهه من خلال الأوامر النصية ليناقش الخطوات التي اتخذها للوصول للإجابة واستنتاجها، تمكنك هذه الطريقة المستخدمين من فهم المنطق ومدى صحة الإجابة.
</p>

<p>
	يفيدك هذا الأسلوب للغاية عند التعامل مع المشكلات المعقدة أو مناقشة الأسباب التي أدت لتوليد الإجابة، حيث تضمن مستوى أعمق من حل المشكلات وفهمها ومراحل التوصل إليها، مما يُمكّن المستخدم من التعلم من طريقة إيجاد الذكاء الاصطناعي للحل.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		<strong>مثال على مُوجِّه prompt يعتمد تسلسل المراحل:</strong>
	</p>

	<p>
		تخيل أنك مهندس برمجيات وتسلمت مهمة تحسين شيفرة برمجية لتحسين الأداء:
	</p>

	<p>
		[ الصق الشيفرة البرمجية هنا]
	</p>

	<ul>
		<li>
			<strong>استخدم تسلسل الأفكار التالية لتوجيه عملك</strong>
		</li>
		<li>
			<strong>تحديد المشاكل</strong>: حدد المشاكل التي تؤثر على الأداء.
		</li>
		<li>
			<strong>تحسين</strong> :ناقش التقنيات التي سوف تستخدمها لحل مشكلات الأداء، مثل تحسين الخوارزميات أو إعادة كتابة بعض الشيفرات البرمجية، أو تسريع قدرات الحواسيب المستخدمة.
		</li>
		<li>
			اختبر وتحقق: حدد الطرق التي يمكننا بها اختبار وتقييم التحسن في الأداء لضمان أن التغييرات التي أجريتها كانت فعالة.
		</li>
		<li>
			<strong>التشغيل</strong>: وضح كيف يمكننا أن نطبق التحديثات التي أجريناها في بيئة الإنتاج.
		</li>
		<li>
			<strong>توثيق وتلخيص الخطوات</strong>: لخص ما قمت به من خطوات، ووثق التحسينات التي أجريتها.
		</li>
	</ul>
</blockquote>

<h3 id="8">
	8. قَسِّم المهام المعقدة إلى مهام أبسط
</h3>

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

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

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		<strong>مثال على مُوجِّه prompt يقسم المهام:</strong>
	</p>

	<p>
		تجنب استخدام موجه واحد يشمل كل شيء كالموجه التالي.
	</p>

	<ul>
		<li>
			"اكتب مقالًا من 1500 كلمة عن تأثير الذكاء الاصطناعي على العمل من بعد."
		</li>
	</ul>

	<p>
		يمكنك بالمقابل استخدام أمر نصي مبدأي يتبعه عدد من المدخلات النصية المحسنة كالتالي:
	</p>

	<ul>
		<li>
			"اكتب مقالًا مفصلًا من 1500 كلمة بعنوان "ثورة في عالم العمل عن بعد: دور الذكاء الاصطناعي في دعم محترفي التقنية"، ينبغى أن يحتوي المقال على مقدمة مثيرة للاهتمام، وثلاثة مواضيع رئيسية بالعناوين التالية "تحسين الانتاجية بالذكاء الاصطناعي"، و"تحسين التواصل باستخدام الذكاء الاصطناعي" و"إدارة المشاريع باستخدام الذكاء الاصطناعي"، بالإضافة إلى خاتمة تلخص ما توصلت إليه في المقال.
		</li>
		<li>
			"اكتب مقدمة مفصلة عن "ثورة في عالم العمل عن بعد: دور الذكاء الاصطناعي في دعم محترفين التقنية" المقدمة ينبغي أن تكون بين 150 إلى 200 كلمة، وتهيئ السياق لشرح كيف سيغير الذكاء الاصطناعي العمل عن بعد في شركات التقنية، وتوفر المقدمة محاولة لجذب انتباه القراء واهتمامهم لإكمال القراءة.
		</li>
	</ul>
</blockquote>

<h3 id="9">
	9. أدرك حدود نموذج الذكاء الاصطناعي وقدراته
</h3>

<p>
	عند صياغة مُوجِّهات الذكاء الاصطناعي، من الضروري أن تعرف جيدًا حدود إمكانيات نموذج الذكاء الاصطناعي لوضع توقعات واقعية، فتكليف الذكاء الاصطناعي بمهام ليس مصممًا للقيام بها، مثل التفاعل مع قواعد بيانات خارجية أو توفير تحليل بيانات في الوقت الحقيقي سوف يؤدي إلى إجابات غير دقيقة وتعاني من ظاهرة تسمى <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%B5%D8%B7%D9%84%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-r2363/#aihallucination" rel="">الهلوسة Hallucination</a>.
</p>

<p>
	<strong>بعض حدود إمكانيات الذكاء الاصطناعي:</strong>
</p>

<ul>
	<li>
		لا يمتلك الذكاء الاصطناعي القدرة على الوصول إلى معلومات في الوقت الحقيقي، فمعرفة النموذج تنتهي إلى آخر تحديث تم تدريبه فيه.
	</li>
	<li>
		لا يمتلك القدرة على الوصول إلى البيانات الشخصية ما لم توفرها بشكل صريح خلال التفاعل مع النظام.
	</li>
	<li>
		لا يمتلك القدرة المباشرة على التفاعل أو استخدام برامج خارجية مثل قواعد البيانات، أو المتصفحات
	</li>
	<li>
		يولد إجابات غير مفيدة في حال عدم توفر سياق واضح عند التعامل مع المواقف المعقدة.
	</li>
	<li>
		لا يمتلك القدرة على امتلاك المشاعر أو التعاطف بشكل حقيقي ولا يمتلك القدرة على تكوين تجربة شخصية.
	</li>
</ul>

<h3 id="10-1">
	10. استخدم الأسلوب التجريبي في تحسين نموذج الذكاء الاصطناعي
</h3>

<p>
	يعتمد مجال هندسة المُوجِّهات Prompt engineering الصاعد بشكلٍ كبير على عقلية التجربة المستمرة، تجربة دائمة لطرق جديدة وصياغات مختلفة، حيث من الأفضل أن تُطور صياغة المدخلات النصية في دورات متتالية تتحسن فيها الصياغة وجودة الردود بشكل متتابع، لاحظ بدقة تأثير التغيرات التي تجربها في الصياغة على أداء نماذج الذكاء الاصطناعي وتعلم كيف تتغير إجابات النماذج بتجربة المدخلات المختلفة وتأثير التعديلات عليها.
</p>

<p>
	لا تتردد في استكشاف الاحتمالات المختلفة لصياغات مختلفة لتكتشف المدخلات النصية الأكثر فعالية للقيام بمهمة محددة دون أن تخالف أخلاقيات الذكاء الاصطناعي أو خصوصية البيانات، فاستراتيجية المحاولات التجريبية والتعلم من الأخطاء تساعدك في إتقان هندسة الموجهات وتمكنك من صياغة موجهات أكثر كفاءةً وتزيد من فهمك بشكلٍ عام لكيفية عمل نماذج اللغات الضخمة وطريقة تفسيرها للأوامر وتفاعلها مع التعليمات المختلفة.
</p>

<h2 id="-2">
	الخلاصة
</h2>

<p>
	تعرفت في مقال اليوم على المقال يبرز أهمية هندسة المُوجِّهات (Prompt Engineering) ودورها في رفع كفاءة أدوات الذكاء الاصطناعي وأهم النصائح والممارسات التي تساعدك على صياغة مُوجِّهات عالية الجودة تمكنك من الحصول على نتائج دقيقة وملاءمة لمتطلباتك. احرص على تطبيق هذه الممارسات في تفاعلك مع نماذج الذكاء الاصطناعي، فمن شأنها أن تعزز استفادتك من هذه النماذج وتزيد إنتاجيتك وتحسن كفاءة عملك.
</p>

<p>
	ترجمة-وبتصرٌّف-للمقال <a href="https://www.digitalocean.com/resources/article/prompt-engineering-best-practices" rel="external nofollow">Prompt Engineering Best Practices: Tips, Tricks, and Tools</a>
</p>

<h2 id="-3">
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%B5%D8%B7%D9%84%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-r2363/" rel="">مصطلحات الذكاء الاصطناعي للمبتدئين</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">تعلم الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A3%D9%87%D9%85%D9%8A%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2243/" rel="">أهمية الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A5%D9%8A%D8%AC%D8%A7%D8%A8%D9%8A%D8%A7%D8%AA-%D9%88%D8%B3%D9%84%D8%A8%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2248/" rel="">إيجابيات وسلبيات الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">برمجة الذكاء الاصطناعي</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2397</guid><pubDate>Tue, 27 Aug 2024 15:06:01 +0000</pubDate></item><item><title>&#x623;&#x645;&#x62B;&#x644;&#x629; &#x639;&#x644;&#x649; &#x627;&#x644;&#x630;&#x643;&#x627;&#x621; &#x627;&#x644;&#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A;</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D8%A3%D9%85%D8%AB%D9%84%D8%A9-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2396/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_08/883748872_.png.92d2d294b3e938c6fec4964464d0e86c.png" /></p>
<p>
	نستعرض في مقال اليوم أمثلة على الذكاء الاصطناعي ونسلط الضوء على الاستخدامات المتنوعة لهذه التقنية الرائدة في حياتنا اليومية وفي مختلف الصناعات. فقد ازداد الاعتماد على الذكاء الاصطناعي بشكل كبير في الآونة الأخيرة وأصبح من المهم معرفة الطرق المختلفة لاستخدام الذكاء الاصطناعي في تأدية مهامنا المختلفة والاستعانة به لزيادة كفاءتنا وإنتاجيتنا.
</p>

<h2 id="-1">
	زيادة الاعتماد على الذكاء الاصطناعي
</h2>

<p>
	وفق <a href="https://www.ibm.com/downloads/cas/GVAGA3JP" rel="external nofollow">مؤشر شركة IBM لتبني تطبيقات الذكاء الاصطناعي الصادر في نوفمبر من العام 2022</a> تبنت أغلب الشركات تقنيات الذكاء الاصطناعي في أعمالها بنسبة بلغت 43% من الشركات المشاركة في الاستبيان، في حين تدرس 40% من الشركات الباقية استخدام الذكاء الاصطناعي في أعمالها، ولا شك أن هذه الإحصائيات تدل على إدراك شركات الأعمال لأهمية استخدام الذكاء الاصطناعي في تطوير أعمالها وزيادة أرباحها، وضرورة استخدام التقنيات الذكية لتعزيز التنافسية في السوق المتنامي للذكاء الاصطناعي واستثمار الفرص الواعدة فيه.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156817" href="https://academy.hsoub.com/uploads/monthly_2024_08/ai_adaption_in_business.png.c2bb408eec7bbeb60ace1b040f9574a6.png" rel=""><img alt="ai adaption in business" class="ipsImage ipsImage_thumbnailed" data-fileid="156817" data-unique="73ittrn1o" style="width: 500px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_08/ai_adaption_in_business.thumb.png.b3edffa3277525f40504780da8a05930.png"> </a>
</p>

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

<h2 id="-2">
	تطور الذكاء الاصطناعي
</h2>

<p>
	وضحنا في <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%A7-%D9%87%D9%88-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">مقال سابق</a> ما هو الذكاء الاصطناعي (AI) وتاريخ تطوره وذكرنا أنه تقنية تُمكّن الحواسيب وغيرها من الآلات القابلة للبرمجة على محاكاة الذكاء البشري في القدرة على الفهم والإدراك وربط الأسباب ببعضها البعض والتعلم والتفاعل مع بيئتها، والتكيف مع التغيرات لحل المشكلات بشكلٍ إبداعي.
</p>

<p>
	وقد تطور <a href="https://academy.hsoub.com/artificial-intelligence/" rel="">الذكاء الاصطناعي</a> بشكل كبير في السنوات الأخيرة، وأجريت الكثير من الأبحاث العلمية المتعلقة بتقنياته مع التركيز على النماذج اللغوية الضخمة Large Language models التي مكنت الحواسيب من التفاعل بسهولة مع البشر وفهم لغتهم بشكل أفضل، هذا فتح الباب على مصراعيه لظهور أمثلة على الذكاء الاصطناعي المتطور القادر على التفاعل مع البشر إجراء محادثات ذكية معه بلغتهم، مثل <a href="https://academy.hsoub.com/apps/web/chatgpt-r863" rel="">تطبيق المحادثة الذكي ChatGPT</a> الذي استحوذ على نسبة كبيرة من سوق أدوات الذكاء الاصطناعي.
</p>

<p>
	ولم يقتصر هذا التطور فقط على قدرات الذكاء الاصطناعي اللغوية، بل شمل أيضاً القدرات البصرية والقدرة على إنشاء محتوى جديد ما أكسبه نوعاً من الإبداع، فيمكنك بمجرد وصف الصورة التي في مخيلتك، وكتابة هذا الوصف للنموذج التوليدي على هيئة مُوجّه (prompt) الحصول على صورة احترافية إبداعية قريبة مما تخيلته وربما تتجاوز توقعاتك في غضون ثوانٍ! فالآلات اليوم باتت ذكية جدًا وقادرة على فهم المعاني وراء الكلمات والنصوص، كما أنها واستخراج المعلومات من البيانات البصرية كالصور ومقاطع الفيديو بل وحتى إنشاء المحتوى المكتوب والمرئي والمسموع بجودة جيدة وتتحسن بشكل سريع للغاية.
</p>

<p>
	وبفضل الاستثمارات الضخمة التي تحاول ضمان حصة قوية في سوق الذكاء الاصطناعي فإن هذا التخصص في حالة تطور متسارع، حتى أنه يعد اليوم أحد أسرع التقنيات نموًا ويتوقع أن يزداد نموه، وتزاد أهميته والاعتماد عليه في <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%B3%D8%AA%D9%82%D8%A8%D9%84-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">المستقبل</a>.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة الذكاء الاصطناعي
		</p>

		<p class="banner-subtitle">
			احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة.
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/artificial-intelligence" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<a href="https://academy.hsoub.com/learn/artificial-intelligence" rel=""><img alt="دورة الذكاء الاصطناعي" src="https://academy.hsoub.com/learn/assets/images/courses/artificial-intelligence.png"></a>
	</div>
</div>

<p>
	دعنا نستعرض تاليًا أهم الأمثلة على الذكاء الاصطناعي وتقنياته المطبقة في مختلف المجالات.
</p>

<h2 id="-3">
	أمثلة على تطبيقات معالجة اللغات الطبيعية بالذكاء الاصطناعي
</h2>

<p>
	تتنوع الأمثلة على تشغيل الذكاء الاصطناعي ومجالاته المختلفة في مختلف القطاعات، ومن أبرز هذه المجالات معالجة اللغات الطبيعية Natural Language Processing (NLP)‎ التي تعني فهم الآلات للغة البشرية وقدرتها على معالجتها ويفيد تطبيق هذا المجال في العديد من المهام المتعلقة بمعالجة النصوص أو الكلام البشري كتحليل المشاعر للنصوص المكتوبة، وتلخيص الفقرات الطويلة، وإنتاج أو توليد محتوى نصي، وفهم الأسئلة والإجابة عليها، والترجمة الآلية للنصوص وغير ذلك من الأمثلة.
</p>

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

<h2 id="-4">
	أمثلة على تطبيقات الرؤية الحاسوبية بالذكاء الاصطناعي
</h2>

<p>
	تعد الرؤية الحاسوبية Computer Vision من المجالات المتقدمة للذكاء الاصطناعي، وهناك الكثير من الأمثلة على الاستفادة منها مثل تصنيف الصور Image Classification بسهولة، والتعرف على الكائنات المختلفة وتمييزها في الصور object detection and recognition، وفصلها عن بعضها Image segmentation إلى مجموعات تملك سمات متشابهة، كما يمكن الاستفادة منها في تحسين جودة الصور كإزالة التشويش، أو تحسين الألوان، وكذلك في التعامل مع النماذج ثلاثية الأبعاد التي تشهد تأثيرًا كبيرًا في مختلف الصناعات.
</p>

<p>
	ولعل ما يميز مجال الرؤية الحاسوبية اليوم هو قدرتها على معالجة الصور والفيديوهات بسرعة ودقة، واستغلال التطور في المجالات الأخرى للذكاء الاصطناعي مثل معالجة اللغات الطبيعية والذكاء الاصطناعي التوليدي Generative AI في تحسين عمل خوارزميات الذكاء الاصطناعي وتمكنها من أداء مهامها مثل تحديده كائن في الصورة أو إزالته بشكل ذكي للغاية دون الحاجة لتدريب النموذج على صور جديدة ويعرف هذا الأسلوب بالتعلم بصفر أمثلة (zero-shot learning). ولعل نموذج شركة ميتا Meta المعروف باسم نموذج "افصل أي شيء يا سام Segment Anything Model SAM" من أبرز الأمثلة على التطور الكبير في مجال الرؤية الحاسوبية حيث يتيح هذا النموذج القدرة على تحليل وتفسير الصور بشكل متقدم وتحديد وفصل الكائنات بدقة، دون الحاجة لتدريبه على بيانات محددة لهذه الكائنات مسبقاً. ويمكنك تجربة استخدام هذا النموذج في هذا <a href="https://segment-anything.com/demo" rel="external nofollow">الموقع التجريبي</a>.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156827" href="https://academy.hsoub.com/uploads/monthly_2024_08/sam_example_low_quality.png.5181d3bb4c7a187f75ad241cf73b9dca.png" rel=""><img alt="sam example low quality" class="ipsImage ipsImage_thumbnailed" data-fileid="156827" data-unique="y80rtb1nf" style="width: 498px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_08/sam_example_low_quality.thumb.png.92872cade3e70c9fb0450c1f70e7512a.png"> </a>
</p>

<h2 id="-5">
	أمثلة على الذكاء الاصطناعي في التعليم
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156821" href="https://academy.hsoub.com/uploads/monthly_2024_08/AI_in_education.png.0e1676dd4310b0b5f45998aeed66fe1f.png" rel=""><img alt="ai in education" class="ipsImage ipsImage_thumbnailed" data-fileid="156821" data-unique="kxomabbcv" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_08/AI_in_education.thumb.png.5a2e2edf3d3be8b0b973c9f1c4e5be4c.png"></a>
</p>

<p>
	لا تراعي معظم أنظمة التعلم التقليدية الفروق الفردية بين المتعلمين، وتفرض إطاراً موحداً لجميع أنواع الطلاب، وقد لا يكون هذا أفضل طريقة للتعليم، الذكاء الاصطناعي قادر على توفير عملية تعليمية بشكل مخصص مناسب للمتعلم بناءً على تفاعل الذكاء الاصطناعي مع المتعلم، فيمكنه توليد رسومات توضيحية والإجابة على أسئلة المتعلم، كما يمكنه تقييم أدائه وتقديم اقتراحات لتحسين مستواه الدراسي.
</p>

<p>
	ويمكن أن يساعد الذكاء الاصطناعي المعلم على تحديد نقاط الضعف في المقررات الدراسية التي يعاني الطلاب في فهمها بشكل جيد، مما يساعده على تحسين محتوى هذه المقررات بشكلٍ موجه وفعال، كما يمكن أن يوفر الذكاء الاصطناعي للمعلمين الوقت للعمل أكثر على تحسين جودة موادهم التعليمية ومحتواه ويساعد في الإجابة على كل تساؤلات الطلاب بشكلٍ فعال في أي وقت وبشكلٍ فوري.
</p>

<p>
	كما يمكن الاعتماد على أنظمة المساعدة الذكية (Intelligent Tutoring Systems) التي تعد أشبه بتوفير معلم خاصٍ لديه الخبرة بالمواضيع التي يتعلمها الطلاب ويجيب عن أسئلتهم ويساعدهم في إدراك المفاهيم الصعبة. وهذا قد يكون حلاً مناسباً لتعويض النقص في المعلمين في بعض البلاد والكثافة الطلابية العالية، وقد سارعت العديد من منصات التعلم على الإنترنت التي توفر مواد تعليمية وتدريبية إلى دمج أنظمة ذكاء اصطناعية لتحسن تجربة التعلم على منصاتها ووفرت نظام محادثة ذكي يستطيع الإجابة على أسئلة الطلاب المختلفة ويستفيد من الأسئلة التي يطرحونها في معرفة نقاط الضعف في المحتوى التعليمي وتحسينه. فالذكاء الاصطناعي يوفر حلولاً فعالة ومنخفضة التكلفة لتحسين تجربة التعلم وأساليب التقييم، ويسهل عملية التصحيح الآلي للاختبارات ويوفر تقييمًا دقيقًا لأداء الطلبة.
</p>

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

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

<h2 id="-6">
	أمثلة على الذكاء الاصطناعي في الطب
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156824" href="https://academy.hsoub.com/uploads/monthly_2024_08/AI_in_medicine.png.e860720490e9ed15eb2c09d6847a6f40.png" rel=""><img alt="ai in medicine" class="ipsImage ipsImage_thumbnailed" data-fileid="156824" data-unique="29vqnmsj0" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_08/AI_in_medicine.thumb.png.906a12b94bdbd368dde79c72f001891d.png"></a>
</p>

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

<h3 id="-7">
	أمثلة على الذكاء الاصطناعي في تشخيص الأمراض
</h3>

<p>
	يمكن استخدام خوارزميات الرؤية الحاسوبية المتقدمة في تحليل صور الأشعة الطبية ودمجها مع نظام تقارير يستخدم معالجة اللغات الطبيعية والذكاء الاصطناعي التوليدي لتقديم تقرير مفصل عن الحالة الطبية بعد تحليل الصور والملفات الطبية للمريض.
</p>

<p>
	وهناك بعض الأنظمة التي تستخدم أعراض المرض لتشخيص الأمراض وتوفر قائمة بالأمراض المحتملة حيث تستطيع إدخال الأعراض المرضية ليقوم النظام بتوفير قائمة بالأمراض المحتملة وتفاصيل عنها.
</p>

<h3 id="-9">
	الذكاء الاصطناعي والروبوتات الجراحية
</h3>

<p>
	تساعد أنظمة الذكاء الاصطناعي بدمجها مع الروبوتات المتخصصة بالقيام بعمليات جراحية في غاية الدقة، ويمكن تطوير روبوتات طبية متعددة الأغراض، قد يكون هذا حلاً مناسباً للغاية في الحالات الخطيرة للتعامل مع الأمراض المعدية والأوبئة لضمان أمان الطاقم الطبي.
</p>

<p>
	تستطيع الروبوتات الجراحية القيام بالعمليات من خلال فتحات صغيرة دون القيام بقطوع كبيرة بسبب قدرتها على استخدام المناظير المزودة بكاميرات والأدوات الدقيقة للقيام بالعمليات الصعبة بدقة بالغة مما يقلل من حجم الجروح ويقلل من الألم والوقت اللازم للتعافي.
</p>

<h2 id="-10">
	أمثلة على الذكاء الاصطناعي وتمكين ذوي الاحتياجات الخاصة
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156834" href="https://academy.hsoub.com/uploads/monthly_2024_08/AI_enpowering.png.390236e0fb04e30725a5fdd4b96dc363.png" rel=""><img alt="AI_enpowering.png" class="ipsImage ipsImage_thumbnailed" data-fileid="156834" data-ratio="24.71" data-unique="08i1488cx" style="width: 700px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2024_08/AI_enpowering.thumb.png.46077a2161c9cbe4126eec4ef19809cc.png"></a>
</p>

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

<p>
	وقد تطور الذكاء الاصطناعي اليوم وأصبح بمقدوره قراءة الأفكار، عن طريق تسجيل الإشارات الكهربية التي ينتجها المخ باستخدام جهاز رصد موجات المخ الكهربية electroencephalogram EEG فيمكن تسجيل الإشارات الكهربية التي ينتجها المخ أثناء التفكير في بعض الأشياء وتكوين قاعدة بيانات، ثم تدريب نماذج التعلم الآلي على التعلم من أنماط الإشارات المختلفة التي ينتجها المخ أثناء التفكير بشيء معين، يمكن أن تتم ترجمة هذه الأفكار إلى كلمات يتم عرضها على شاشات لتساعد الغير قادرين على التواصل أو الحركة على التعبير عن أنفسهم، تواجه هذا النهج بعض التحديات مثل التشويش الناتج أثناء تسجل الإشارات الكهربية للمخ وتبحث شركة <a href="https://neuralink.com/" rel="external nofollow">Neuralink</a> في تطوير هذه التقنية باستخدام شرائح تزرع داخل المخ لتسجيل الإشارات بشكل أنقى، هناك العديد من المخاطر لتطوير مثل هذه التقنيات ومخاوف قد تكون في محلها، فقدرة الآلة على أن تقرأ الأفكار قد تهدد الخصوصية ومن الممكن أن يساء استخدامها.
</p>

<p>
	وقد تم بالفعل تجريب شرائح شركة Neuralink على البشر بشكلٍ محدود وتطوعي، فقد ساعدت الشخص الذي استخدمها على ممارسة بعض الأنشطة مثل <a href="https://youtu.be/5SrpYZum4Nk" rel="external nofollow">لعب الشطرنج بالتحكم بالحاسوب الخاص به من خلال أفكاره</a> وغيرها من الأنشطه الأخرى، لكن لاتزال هذه تقنية تجريبية وخطيرة للغاية ولكنها تعد بالكثير من الإمكانات لتمكين ذوي الاحتياجات الحركية والذهنية.
</p>

<h2 id="-8">
	أمثلة على الذكاء الاصطناعي في مجال الصيدلة
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156820" href="https://academy.hsoub.com/uploads/monthly_2024_08/AI_in_drug.png.6df89cb6712ded07866078dfddf237b5.png" rel=""><img alt="ai in drug" class="ipsImage ipsImage_thumbnailed" data-fileid="156820" data-unique="y0awqbahj" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_08/AI_in_drug.thumb.png.a627678c084fcdbbeaa3bd919c953b92.png"></a>
</p>

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

<p>
	ويمكن استخدام الذكاء الاصطناعي في تطوير أنواع جديدة من الأدوية بتكلفة أقل وابتكار مركبات فعالة جديدة ودراسة تأثيراتها الجانبية المحتملة وفعاليتها في نظام محاكاة كما يمكن أن يساعد الذكاء الاصطناعي في توفير بيئة محاكاة لتجربة الكثير من المركّبات الدوائية واكتشاف تأثيرها على الأهداف الحيوية المختلفة إذ يصمم الدواء لاستهداف هدفٍ حيوي مثل أنواع معينة من الخلايا وتصميم هيكل المركبات العلاجية المناسبة لضمان تأثير الدواء على الهدف المحدد وتستخدم في هذه المهمة برامج المحاكاة مثل برامج تصميم هياكل الجزئيات بمساعدة الحاسوب Computer-Aided Molecular Design.
</p>

<p>
	وتستخدم نماذج التعلم العميق والذكاء الاصطناعي التوليدي لتصميم هياكل بروتينية جديدة قد تساهم في اختراع مركّبات دوائية فعالة، مثال على هذه النماذج <a href="https://alphafold.ebi.ac.uk/" rel="external nofollow">آلفا فولد AlphaFold</a> المتخصص في توقع هياكل البروتينات المختلفة، في الجدول التالي بعض الأمثلة لنماذج التعلم العميق المستخدمة في مجال الأدوية.
</p>

<table>
	<thead>
		<tr>
			<th>
				النموذج
			</th>
			<th>
				الاستخدام
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>
				<a href="https://alphafold.ebi.ac.uk/" rel="external nofollow">AlphaFold آلفا فولد</a>
			</td>
			<td>
				يتوقع هياكل البروتينات
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://zenodo.org/records/1481731" rel="external nofollow">Chemputer الحاسب الكميائي</a>
			</td>
			<td>
				يتوقع توافق المركبات الكيميائية مع بعضها
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://github.com/aspuru-guzik-group/ORGANIC" rel="external nofollow">ORGANIC عضوي</a>
			</td>
			<td>
				أداة تساعد على توليد مركبات بخواص مرغوبة
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://www.bioinf.jku.at/research/DeepTox/" rel="external nofollow">DeepTox السمية العميقة</a>
			</td>
			<td>
				توقع سمية المركبات الدوائية
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://github.com/deepchem/deepchem" rel="external nofollow">DeepChem الكيمياء العميقة</a>
			</td>
			<td>
				يساعد على تحليل التوافق الكيميائي بين المركبات المختلفة
			</td>
		</tr>
	</tbody>
</table>

<h2 id="-11">
	أمثلة على الذكاء الاصطناعي في التسويق وتحليل آراء العملاء
</h2>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156823" href="https://academy.hsoub.com/uploads/monthly_2024_08/AI_in_marketing.png.8cce8a1fff5740b0f18751881d20e445.png" rel=""><img alt="ai in marketing" class="ipsImage ipsImage_thumbnailed" data-fileid="156823" data-unique="ocwkb1alv" src="https://academy.hsoub.com/uploads/monthly_2024_08/AI_in_marketing.thumb.png.13924a394514b08b70170d240323c653.png"> </a>
</p>

<p>
	وتهتم الشركات اليوم بآراء عملائها وترغب دائماً في جعلهم عملاء مستمرين وضمان بقاء سمعة الشركة بشكل جيد، لذلك تحتاج الشركات لمتابعة ومراقبة أي تغير في آراء الجماهير، وهنا تساعد أدوات الذكاء الاصطناعي بتحليل بيانات مواقع التواصل الاجتماعي المختلفة والمنشورات التي تحمل كلماتٍ مفتاحية تعبر عن الشركة لفهم آراء العملاء والجماهير على هذا المنصات، فيمكن دراسة الآراء الإيجابية والسلبية عن منتجٍ معين لتحسين جودة المنتجات وضمان تجربة خدمة عملاء متميزة.
</p>

<p>
	كما تساعد أدوات الذكاء الاصطناعي التحليلية على متابعة أهداف الحملات التسويقية من ناحية فهم التعليقات والمشاعر التى تعبر عنها، ودراسة العوامل التي تدفع العميل لشراء منتجات الشركة، مما يساعد على تحديد استراتيجيات أفضل في التسويق والتركيز على نقاط القوة التى تهم العملاء ويبحثون عنها، كما تمكن مدير حملات التسويق من فهم أنواع العملاء بالتالي استهدافٌ أفضل.
</p>

<h3 id="-12">
	الذكاء الاصطناعي وإنشاء المحتوى التسويقي
</h3>

<p>
	يمكن لأدوات الذكاء الاصطناعي توليد محتوى تسويقي يناسب العملاء المختلفين بناءً على تعاملاتهم السابقة والبيانات التى تملكها الشركة أو تستطيع الوصول إليها من أجل استهدافٍ فعال ومناسب لكل عميل، فبدلاً من تصميم صورة واحدة يمكن تصميم عدد من الصور تناسب أنواع مختلفة من المستخدمين واستخدام الذكاء الاصطناعي في عرض الصورة المناسبة لكل نوعٍ من العملاء، ويمكنك الاطلاع على هذا المقال لفهم كيفية استغلال هذه التقنيات بشكلٍ عملي <a href="https://academy.hsoub.com/apps/web/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-chatgpt-api-%D9%84%D8%AA%D8%AD%D8%B3%D9%8A%D9%86-%D8%AE%D8%AF%D9%85%D8%A7%D8%AA%D9%83-%D8%B9%D8%A8%D8%B1-%D8%A7%D9%84%D8%A5%D9%86%D8%AA%D8%B1%D9%86%D8%AA-r909/" rel="">"دليل استخدام ChatGPT <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> لتحسين خدماتك عبر الإنترنت</a> "
</p>

<h3 id="-13">
	تحسين جودة خدمة العملاء باستخدام الذكاء الاصطناعي
</h3>

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

<p>
	يمكن للشركات على سبيل المثال استخدام نماذج تعلم الآلة لتوقع العملاء الذين يفكرون في إلغاء الاشتراكات ومحاولة تقديم عروض مغرية تشجعهم على البقاء مشتركين في الخدمات التي تقدمها الشركة، كما يمكن دراسة وتحديد احتياجات العملاء والمنتجات التي يبحثون عنها وتطويرها، والاستهداف الذكي باستخدام العروض المناسبة لكل عميل.
</p>

<h3 id="-14">
	أتمتة إدارة الإعلانات بالذكاء الاصطناعي
</h3>

<p>
	أتمتة إدارة الإعلانات أو الإعلانات المبرمجة Programmatic advertising هي طريقة تسمح للشركة بشراء مساحة لعرض الإعلانات أو بيع مساحة إعلانية بشكل آلي، من مزايا هذه الطريقة الإعلانية أنها تستخدم نماذج الذكاء الاصطناعي في توقع المواقع المناسبة لعرض الإعلانات المناسبة لفئات العملاء المستهدفة بشكلٍ آلي مما يوفر التكلفة بشكلٍ كبير مقارنة بطرق التسويق العادية المحكومة بمنصة واحدة وقد لا تصل إلى الجمهور المستهدف.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="360" referrerpolicy="strict-origin-when-cross-origin" src="https://academy.hsoub.com/applications/core/interface/index.html" title="مجالات العمل بالذكاء الاصطناعي" width="640" data-embed-src="https://www.youtube.com/embed/tU5YcxMebHA"></iframe>
</p>

<h2 id="-16">
	أمثلة على الذكاء الاصطناعي في القطاع المالي
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156832" href="https://academy.hsoub.com/uploads/monthly_2024_08/AI_in_fintech.png.c097b25dcbd3df3f146709bb384d93b6.png" rel=""><img alt="AI_in_fintech.png" class="ipsImage ipsImage_thumbnailed" data-fileid="156832" data-ratio="30.29" data-unique="f5zg4pvk9" style="width: 700px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2024_08/AI_in_fintech.thumb.png.f3a32508423e287c0f6c687e4f64203b.png"></a>
</p>

<p>
	لا شك أن تقنيات القطاع المالي financial technology (fintech)‎ تعد اليوم من المجالات الهامة والأسرع نمواً، حيث نجد اليوم أمثلة متنوعة على استخدام الذكاء الاصطناعي في خدمة العملاء وأنظمة تحليل البيانات المالية واتخاذ قرارات صائبة مثل تقرير إعطاء القروض من عدمه بناء على البيانات المستخدمة من قبل نماذج الذكاء الاصطناعي لتحديد المخاطر المحتملة من إقراضهم، ومن المتوقع أن يستمر الذكاء الاصطناعي في النمو والتقدم في هذا المجال، مما يعزز من كفاءة العمليات المالية ويقلل من حدوث الأخطاء البشرية.
</p>

<h2 id="-15">
	أمثلة على الذكاء الاصطناعي في الزراعة
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156833" href="https://academy.hsoub.com/uploads/monthly_2024_08/AI_in_agri.png.b15a293a0a6a5b8262dc0852e39130b5.png" rel=""><img alt="AI_in_agri.png" class="ipsImage ipsImage_thumbnailed" data-fileid="156833" data-ratio="28.71" data-unique="wa2b54gni" style="width: 700px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2024_08/AI_in_agri.thumb.png.7dd01a087b1c9173a56f08082a28ca4c.png"></a>
</p>

<p>
	تُستخدم تقنيات الذكاء الاصطناعي ولا سيما تقنية <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D9%87%D9%88-%D8%A5%D9%86%D8%AA%D8%B1%D9%86%D8%AA-%D8%A7%D9%84%D8%A3%D8%B4%D9%8A%D8%A7%D8%A1-iot-r1783/" rel="">إنترنت الأشياء IoT</a> في تطوير أنظمة الزراعة الذكية، فيمكن استخدام الرؤية الحاسوبية Computer Vision لاكتشاف الآفات الزراعية وأمراض النباتات ويمكن استخدام كاميرات عادية أو طائرات مسيرة تجمع الصور ومقاطع الفيديو للأراضي الزراعية، ويتم استخدام الذكاء الاصطناعي مدعوما بالبيانات التى تجمعها أدوات الاستشعار والقياس المختلفة في مراقبة نمو المحاصيل لضمان جودتها وخلو التربة أو النباتات من المشاكل التي قد تدمر المحصول أو تؤثر على جودته.
</p>

<h2 id="-17">
	الخاتمة
</h2>

<p>
	تعرفنا في هذا المقال على بعض الأمثلة لتطبيق الذكاء الاصطناعي في مجالات مختلفة مثل التعليم والطب والتسويق والزراعة والقطاع المالي، بعد الاطلاع على هذه الأمثلة المتنوعة، يمكن التنبؤ بزيادة انتشار استخدامات الذكاء الاصطناعي في المستقبل، وتعزيز تطبيق وتشغيل قدراته في توفير حلول ذكية لأغلب القطاعات الاقتصادية والبشرية لتحسين جودة الخدمات المقدمة والتنافسية وتوفير فرصٍ عمل جديدة.
</p>

<p>
	نأمل أن تكون هذه المقالة ملهمةً لك للتفكير في استخدامات جديدة للذكاء الاصطناعي في مجالك، ونرحب بأن تشاركنا في التعليقات المزيد من الأمثلة والأفكار.
</p>

<h2 id="-18">
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">تطبيقات الذكاء الاصطناعي</a>
	</li>
	<li>
		<p>
			<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%B5%D8%B7%D9%84%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-r2363/" rel="">مصطلحات الذكاء الاصطناعي للمبتدئين</a>
		</p>
	</li>
	<li>
		<p>
			<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D9%86-%D9%87%D9%88-%D9%85%D9%87%D9%86%D8%AF%D8%B3-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%88%D9%85%D8%A7-%D8%A3%D8%A8%D8%B1%D8%B2-%D9%85%D9%87%D8%A7%D9%85%D9%87-r2319/" rel="">من هو مهندس الذكاء الاصطناعي</a>
		</p>
	</li>
	<li>
		<p>
			<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D9%87%D9%85-%D9%83%D8%AA%D8%A8-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A7%D9%84%D9%85%D8%AC%D8%A7%D9%86%D9%8A%D8%A9-r2330/" rel="">تعرف على أهم كتب الذكاء الاصطناعي المجانية</a>
		</p>
	</li>
</ul>
]]></description><guid isPermaLink="false">2396</guid><pubDate>Sat, 24 Aug 2024 15:00:00 +0000</pubDate></item><item><title>&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; &#x648;&#x643;&#x644;&#x627;&#x621; &#x645;&#x643;&#x62A;&#x628;&#x629; &#x627;&#x644;&#x645;&#x62D;&#x648;&#x644;&#x627;&#x62A; Transformers Agents &#x641;&#x64A; &#x627;&#x644;&#x630;&#x643;&#x627;&#x621; &#x627;&#x644;&#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A; &#x627;&#x644;&#x62A;&#x648;&#x644;&#x64A;&#x62F;&#x64A;</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%88%D9%83%D9%84%D8%A7%D8%A1-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D9%88%D9%84%D8%A7%D8%AA-transformers-agents-%D9%81%D9%8A-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A7%D9%84%D8%AA%D9%88%D9%84%D9%8A%D8%AF%D9%8A-r2379/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_08/------Transformers-Agents.png.20dba3fd02a2f0d7d892464712ab48a4.png" /></p>
<p>
	نعرفكم في مقال اليوم على كيفية استخدام مكتبة المحولات Transformers في مهام الذكاء الاصطناعي التوليدي مثل توليد الصور أو تحويل النص إلى كلام أو الإجابة عن أسئلة متعلقة بالمستندات حيث يوفر الإصدار v4.29.0 من مكتبة المحوّلات Transformers واجهة برمجة تطبيقات <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D9%88%D8%A7%D8%AC%D9%87%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A9-api-r1314/" rel=""><abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr></a> اختبارية لعناصر مفيدة في الذكاء الاصطناعي التوليدي هي الوكلاء Agents والأدوات Tools، وسنناقشها بالتفصيل في فقراتنا التالية. يمكنك العمل مع هذه الواجهة البرمجية <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> من <a href="https://colab.research.google.com/drive/1c7MHD-T1forUPGcC_jlwsIptOzpG3hSj#scrollTo=wBYnnHzI4dhX" rel="external nofollow">رابط مخصص لها على جوجل كولاب Google Colab</a>، وهي تُركز على مهام فهم اللغة الطبيعية (اللغة البشرية)، فيعمل الوكيل agent على تفسير أوامر اللغة الطبيعية المعُطاة له مستخدمًا مجموعة من الأدوات الأساسية التي توفرها المكتبة؛ تحتاج لأن تبدأ عملك بتصميم الوكيل وتحديد أدواته المناسبة لمشروعك، ويمكنك في أي لحظة توسيع نطاق التصميم ليشمل أدواتٍ إضافية أنشأها وشاركها مطورون آخرون على<a href="https://huggingface.co/docs/transformers/community" rel="external nofollow"> مجتمع Hugging Face.</a>
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		<strong>تنويه</strong>: واجهة <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> السابقة لا زالت اختبارية، وهي عرضة للتطوير والتغيير في أي وقت، لذا قد تتغير النتائج التي تحصل عليها باستخدام الوكلاء Agents عن النتائج المعروضة في أمثلتنا تبعًا للتغيرات التي طرأت على النماذج.
	</p>
</blockquote>

<p>
	سنعرض بعضًا من الأمثلة عمّا يمكنك تحقيقه باستخدام هذه الواجهة البرمجية <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr>، وستلاحظ قوتها في المهام متعددة الأنماط multimodal، لذا سنبدأ أمثلتنا بتجربتها في مهام توليد الصور وقراءة النصوص صوتيًا.
</p>

<p>
	ألقِ نظرة على الأمر التالي فهو يوجه طلبًا مكتوبًا باللغة الإنكليزية للوكيل Agent ويطلب منه وضع تسمية توضيحية أو عنوان للصورة المعطاة له:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_3651_9" style=""><span class="pln">agent</span><span class="pun">.</span><span class="pln">run</span><span class="pun">(</span><span class="str">"Caption the following image"</span><span class="pun">,</span><span class="pln"> image</span><span class="pun">=</span><span class="pln">image</span><span class="pun">)</span></pre>

<p>
	لاحظ أن دخل الوكيل صورة والخرج تسمية توضيحية تناسبها:
</p>

<table>
	<thead>
		<tr>
			<th>
				الدخل
			</th>
			<th>
				الخرج
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align: center;">
				<img alt="img01 transformer agent exampels" class="ipsImage ipsImage_thumbnailed" data-fileid="154999" data-ratio="100.00" data-unique="g8j9t193r" style="width: 100px; height: 100px;" width="100" src="https://academy.hsoub.com/uploads/monthly_2024_08/img01-transformer-agent-exampels.png.6cbbeac259a352d109b3ac24f8f4ddd3.png">
			</td>
			<td style="text-align: center;">
				A beaver is swimming in the water
			</td>
		</tr>
	</tbody>
</table>

<p>
	الآن لنطلب من الوكيل Agent قراءة التسمية التوضيحية السابقة، سنمررها له ضمن <code>text</code>:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_3651_11" style=""><span class="pln">agent</span><span class="pun">.</span><span class="pln">run</span><span class="pun">(</span><span class="str">"Read the following text out loud"</span><span class="pun">,</span><span class="pln"> text</span><span class="pun">=</span><span class="pln">text</span><span class="pun">)</span></pre>

<p>
	وسيكون الدخل والخرج كما يلي:
</p>

<table>
	<thead>
		<tr>
			<th>
				الدخل
			</th>
			<th>
				الخرج
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>
				A beaver is swimming in the water
			</td>
			<td>
				ملف صوتي يقرأ النص باللغة الطبيعية وهي في مثالنا الإنجليزية
				<audio controls="" data-controller="core.global.core.embeddedaudio" data-fileid="155005" data-unique="huwwq5oij" src="https://academy.hsoub.com/applications/core/interface/file/attachment.php?id=155005&amp;key=af2fdbac54eb8f658b085ab0558f78b8" type="audio/wav">
					<a class="ipsAttachLink" data-fileext="wav" data-fileid="155005" href="https://academy.hsoub.com/applications/core/interface/file/attachment.php?id=155005&amp;key=af2fdbac54eb8f658b085ab0558f78b8" rel="">tts_example.wav</a>
				</audio>
				 

				<p>
					 
				</p>
			</td>
		</tr>
	</tbody>
</table>

<p>
	لنجرب أيضًا تمرير مستند <code>document</code> للوكيل Agent ونطرح عليه سؤالًا عن مضمون المستند:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_3651_13" style=""><span class="pln">agent</span><span class="pun">.</span><span class="pln">run</span><span class="pun">(</span><span class="pln">
    </span><span class="str">"In the following `document`, where will the TRRF Scientific Advisory Council Meeting take place?"</span><span class="pun">,</span><span class="pln">
    document</span><span class="pun">=</span><span class="pln">document</span><span class="pun">,</span><span class="pln">
</span><span class="pun">)</span></pre>

<p>
	في هذه الحالة سيكون الدخل والخرج كما يلي:
</p>

<table>
	<thead>
		<tr>
			<th>
				الدخل
			</th>
			<th>
				الخرج
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>
				صورة المستند
			</td>
			<td>
				نص يتضمن الإجابة عن السؤال المستنتجة من المستند
			</td>
		</tr>
	</tbody>
</table>

<p>
	أكمل معنا قراءة المقال لتعرف الأساسيات، ثم ادخل إلى <a href="https://colab.research.google.com/drive/1c7MHD-T1forUPGcC_jlwsIptOzpG3hSj#scrollTo=nVYRCGx4x3vH" rel="external nofollow"> بيئة Google Colab الخاصة بالمكتبة</a> وجرب بعض المهام بنفسك حتى تتقن التعامل معها.
</p>

<h2 id="">
	مقدمة سريعة
</h2>

<p>
	الخطوة الأولى هي إدراج الوكيل الذي نود استخدامه بتعليمة <code>agent.run</code>، والوكيل هو نموذج لغوي كبير (LLM) يمكنك الحصول عليه من مصادر متنوعة، فمكتبة المحوّلات Transformers مثلًا تدعم النماذج اللغوية الخاصة بمنصات openAI و BigCode و OpenAssistant؛ تتمتع نماذج openAI بكفاءة أعلى من البقية لكنها بالمقابل غير مجانية إذ يتطلب استخدام واجهتها البرمجية مفتاحًا خاصًا "openAI <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> key"، أما نماذج منصتي BigCode و OpenAssistant فالوصول إليها متاح مجانًا عبر منصة Hugging Face يمكنك استخدامها بسهولة.
</p>

<p>
	لنُثَبِّت في البداية امتداد مكتبة المحوّلات الخاص بالوكلاء <code>agents</code> قبل تثبيت بقية الاعتماديات:
</p>

<pre class="ipsCode">pip install transformers[agents]
</pre>

<p>
	تعتمد خطوتنا التالية على نوع المنصة التي سنستخدم نماذجها.
</p>

<p>
	إذا رغبت باعتماد نماذج OpenAI فثَبِّت الاعتمادية <code>openai</code> لتتمكن من استخدامها وإنشاء المثيل <a href="https://huggingface.co/docs/transformers/v4.39.2/en/main_classes/agent#transformers.OpenAiAgent" rel="external nofollow">OpenAiAgent</a> ليكون وكيلًا:
</p>

<pre class="ipsCode">pip install openai
</pre>

<p>
	يمكنك الآن إدراج الوكيل OpenAiAgent كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_3651_16" style=""><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">OpenAiAgent</span><span class="pln">

agent </span><span class="pun">=</span><span class="pln"> </span><span class="typ">OpenAiAgent</span><span class="pun">(</span><span class="pln">model</span><span class="pun">=</span><span class="str">"text-davinci-003"</span><span class="pun">,</span><span class="pln"> api_key</span><span class="pun">=</span><span class="str">"&lt;your_api_key&gt;"</span><span class="pun">)</span></pre>

<p>
	أما إذا رغبت باستخدام نماذج BigCode أو OpenAssistant، فعليك في البداية تسجيل الدخول إلى منصة Hugging Face لتحصل على صلاحية الوصول إلى واجهة <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> الاستدلالية التي توفرها Hugging Face لهذه النماذج:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_3651_18" style=""><span class="kwd">from</span><span class="pln"> huggingface_hub </span><span class="kwd">import</span><span class="pln"> login

login</span><span class="pun">(</span><span class="str">"&lt;YOUR_TOKEN&gt;"</span><span class="pun">)</span></pre>

<p>
	وبعدها أدرج الوكيل agent:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_3651_20" style=""><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">HfAgent</span><span class="pln">

</span><span class="com"># Starcoder</span><span class="pln">
agent </span><span class="pun">=</span><span class="pln"> </span><span class="typ">HfAgent</span><span class="pun">(</span><span class="str">"https://api-inference.huggingface.co/models/bigcode/starcoder"</span><span class="pun">)</span><span class="pln">
</span><span class="com"># StarcoderBase</span><span class="pln">
</span><span class="com"># agent = HfAgent("https://api-inference.huggingface.co/models/bigcode/starcoderbase")</span><span class="pln">
</span><span class="com"># OpenAssistant</span><span class="pln">
</span><span class="com"># agent = HfAgent(url_endpoint="https://api-inference.huggingface.co/models/OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5")</span></pre>

<p>
	استخدمنا هنا واجهة <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> المجانية (حاليًا) التي توفرها Hugging Face للوصول إلى النماذج اللغوية الكبيرة، لكن يمكنك بالطبع استخدام أي واجهة <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> أخرى متوفرة لديك وعندها ستستبدل عنوان URL الذي استخدمناه بعنوان URL لنقطة الاتصال endpoint المتوفرة لديك.
</p>

<p>
	<strong>ملاحظة</strong>: تعمل النماذج المجانية لكل من OpenAssistant و StarCoder جيدًا في المهام البسيطة لكن أداءها يتراجع للأسف كلما ازداد تعقيد المهام الموكلة لها، لذا ننصحك باستخدام نماذج OpenAI في المشاريع الكبيرة فبالرغم من كونها غير مفتوحة المصدر لكنها مناسبة.
</p>

<p>
	لننتقل إلى الخطوة التالية، ونتعرف عن قرب على واجهتي <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> المتوفرتين لدينا الآن.
</p>

<h3 id="run">
	التنفيذ الإفرادي باستخدام التابع run
</h3>

<p>
	يستخدم التنفيذ الإفرادي single execution التابع <code>()run</code> مع الوكيل agent كما في المثال التالي الذي يطلب من الوكيل توليد صورة تتضمن أنهارًا وبحيرات:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_3651_24" style=""><span class="pln">agent</span><span class="pun">.</span><span class="pln">run</span><span class="pun">(</span><span class="str">"Draw me a picture of rivers and lakes."</span><span class="pun">)</span></pre>

<p>
	أرجع الوكيل الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="155000" href="https://academy.hsoub.com/uploads/monthly_2024_08/img02-agent-run.png.f1781b6e23a62f6e2003809717467886.png" rel=""><img alt="img02 agent run" class="ipsImage ipsImage_thumbnailed" data-fileid="155000" data-unique="2thdowklo" src="https://academy.hsoub.com/uploads/monthly_2024_08/img02-agent-run.png.f1781b6e23a62f6e2003809717467886.png"> </a>
</p>

<p>
	سيُحَدِدْ الوكيل agent تلقائيًا الأداة tool أو الأدوات المناسبة للمهمة التي طلبنا تنفيذها، ويعمل على تشغيلها بالطريقة الصحيحة، علمًا أنه يستطيع تنفيذ أكثر من مهمة في آن واحد، لكن لا ننصحك بذلك فكلما ازداد تعقيد الأوامر الموجهة له ازدادت احتمالات الفشل.
</p>

<p>
	وهذا مثالٌ آخر لتوليد صورة تتضمن بحرًا ثم إضافة جزيرة عليها:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_3651_26" style=""><span class="pln">agent</span><span class="pun">.</span><span class="pln">run</span><span class="pun">(</span><span class="str">"Draw me a picture of the sea then transform the picture to add an island"</span><span class="pun">)</span></pre>

<p>
	وستكون الصورة التي ستحصل عليها كالتالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="155001" href="https://academy.hsoub.com/uploads/monthly_2024_08/img03-agent-run-2.png.c5b1f13164d956ff2a8d9dab8e5e9593.png" rel=""><img alt="img03 agent run 2" class="ipsImage ipsImage_thumbnailed" data-fileid="155001" data-unique="hvn9ru2uo" src="https://academy.hsoub.com/uploads/monthly_2024_08/img03-agent-run-2.png.c5b1f13164d956ff2a8d9dab8e5e9593.png"> </a>
</p>

<p>
	يمكنك تشغيل <a href="https://huggingface.co/docs/transformers/v4.39.2/en/main_classes/agent#transformers.Agent.run" rel="external nofollow"><code>()run</code></a> لمهام مختلفة عدة مرات متتالية، فكل تعليمة <code>()run</code> مستقلة تمامًا عن غيرها من التعليمات.
</p>

<p>
	تُعدّ دقة مطالبات الدخل prompts الموجهة للوكيل مهمة جدًا في الحصول على أفضل النتائج، فالاختلافات الصغيرة فيها تصنع فرقًا فالوكيل agent في نهاية الأمر مجرد نموذج لغوي كبير يستجيب للتوجيهات التي تُعطى له.
</p>

<p>
	كما يوفر الوكيل خياراتٍ مفيدة أخرى عبر المتغيرات التي يقبلها، فتستطيع مثلًا تمرير كائنات غير نصية له كتمرير الصور، أو توجيهه لحفظ حالة التنفيذ الأخيرة التي وصل إليها وتحديثها بإضافة عناصر جديدة، لنفترض أننا نريد من الوكيل أخذ صورة الأنهار والبحيرات التي ولدها في مثالنا السابق وإضافة جزيرة عليها، فستكون الأوامر وفق التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_3651_28" style=""><span class="pln">picture </span><span class="pun">=</span><span class="pln"> agent</span><span class="pun">.</span><span class="pln">run</span><span class="pun">(</span><span class="str">"Generate a picture of rivers and lakes."</span><span class="pun">)</span><span class="pln">
updated_picture </span><span class="pun">=</span><span class="pln"> agent</span><span class="pun">.</span><span class="pln">run</span><span class="pun">(</span><span class="str">"Transform the image in `picture` to add an island to it."</span><span class="pun">,</span><span class="pln"> picture</span><span class="pun">=</span><span class="pln">picture</span><span class="pun">)</span></pre>

<p data-gramm="false">
	تفيدك هذه الحالة عندما لا يكون النموذج قادرًا على فهم طلبك بوضوح أو عاجزًا عن مزج عدة أدوات معًا، كما في المثال التالي: &gt;
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_3651_30" style=""><span class="pln">agent</span><span class="pun">.</span><span class="pln">run</span><span class="pun">(</span><span class="str">"Draw me the picture of a capybara swimming in the sea"</span><span class="pun">)</span></pre>

<p>
	قد يُفسِّر الوكيل هذا الطلب بطريقتين:
</p>

<ul>
	<li>
		توليد صورة من النص <code>text-to-image</code> والنص هو: "ارسم لي صورة لحيوان كابيبارا يسبح في الماء".
	</li>
	<li>
		توليد صورة من النص <code>text-to-image</code> والنص هو: "ارسم لي صورة لحيوان كابيبارا"، ثم "استخدام أداة تحويل الصور <code>image-transformation</code> لجعل حيوان الكابيبارا يسبح".
	</li>
</ul>

<p>
	يمكنك حسم الموضوع وفرض السيناريو الأول بتمرير موجه prompt صريحة كمتغير للوكيل تتضمن بوضوح ما تريد وجوده في الصورة كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_3651_32" style=""><span class="pln">agent</span><span class="pun">.</span><span class="pln">run</span><span class="pun">(</span><span class="str">"Draw me a picture of the `prompt`"</span><span class="pun">,</span><span class="pln"> prompt</span><span class="pun">=</span><span class="str">"a capybara swimming in the sea"</span><span class="pun">)</span></pre>

<h3 id="chat">
	التنفيذ المستند إلى الدردشة باستخدام التابع chat
</h3>

<p>
	يعمل الوكيل agent بأسلوب الدردشة النصية chat-based بواسطة التابع <a href="https://huggingface.co/docs/transformers/v4.39.2/en/main_classes/agent#transformers.Agent.chat" rel="external nofollow"><code>()chat</code></a> كما في المثال التالي:
</p>

<p>
	سنطالبه أولًا بتوليد صورة أنهار وبحيرات:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_3651_42" style=""><span class="pln">agent</span><span class="pun">.</span><span class="pln">chat</span><span class="pun">(</span><span class="str">"Generate a picture of rivers and lakes"</span><span class="pun">)</span></pre>

<p>
	سيولد لنا الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="155000" href="https://academy.hsoub.com/uploads/monthly_2024_08/img02-agent-run.png.f1781b6e23a62f6e2003809717467886.png" rel=""><img alt="img02 agent run" class="ipsImage ipsImage_thumbnailed" data-fileid="155000" data-unique="2thdowklo" src="https://academy.hsoub.com/uploads/monthly_2024_08/img02-agent-run.png.f1781b6e23a62f6e2003809717467886.png"> </a>
</p>

<p>
	ثم سنطلب منه تحويل الصورة وإضافة عنصر إليها كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_3651_34" style=""><span class="pln">agent</span><span class="pun">.</span><span class="pln">chat</span><span class="pun">(</span><span class="str">"Transform the picture so that there is a rock in there"</span><span class="pun">)</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="155002" href="https://academy.hsoub.com/uploads/monthly_2024_08/img04-agent-chat-transform.png.d2b6d01b7f10c719fd4646124f4588a6.png" rel=""><img alt="img04 agent chat transform" class="ipsImage ipsImage_thumbnailed" data-fileid="155002" data-unique="nupaanohe" src="https://academy.hsoub.com/uploads/monthly_2024_08/img04-agent-chat-transform.png.d2b6d01b7f10c719fd4646124f4588a6.png"> </a>
</p>

<p>
	يساعدك هذا الأسلوب في الاختبارات وتنفيذ التعليمات الفردية التي تحافظ فيها على الحالة الأخيرة للتنفيذ عبر مجموعة من التعليمات، لكنه ليس الأسلوب الأمثل للتعليمات المعقدة، التي يناسبها التنفيذ المعتمد على <code>()run</code>.
</p>

<p>
	يقبل التنفيذ المعتمد على الدردشة تمرير وسيط غير نصي أو موجهات Prompts محددة للتابع <code>()chat</code>.
</p>

<h3 id="remoteexecution">
	التنفيذ عن بعد Remote execution
</h3>

<p>
	أنشأت منصة Hugging Face -باستخدام <a href="https://huggingface.co/inference-endpoints" rel="external nofollow">نقاط الاتصال الاستدلالية inference endpoints</a>- مُنَفِّذْين عن بعد remote executors للعديد من الأدوات الافتراضية التي يستخدمها الوكلاء agents، ستجدها معطلة حاليًا في هذا الإصدار لكننا ذكرناها هنا لتعرف أن الإمكانية متوفرة، وأن باستطاعتك إنشاء أدوات مخصصة لاحتياجات مشروعك وتخزينها في مستودع بعيد ثم استدعائها للتنفيذ عن بعد، اقرأ <a href="https://huggingface.co/docs/transformers/custom_tools" rel="external nofollow">دليل إنشاء الأدوات المخصصة</a> لتعرف أكثر عن الموضوع.
</p>

<h2 id="agentstools">
	الوكلاء Agents والأدوات Tools
</h2>

<p>
	بعد هذه المقدمة السريعة سنُعَرِّف الآن الوكلاء Agents والأدوات Tools، لكن اطّلع أولًا على المخطط التوضيحي التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="155003" href="https://academy.hsoub.com/uploads/monthly_2024_08/img05-transformer-agents-tools-diagram_.png.7853396220e69e06774fdc00a893374e.png" rel=""><img alt="img05 transformer agents tools diagram معرب" class="ipsImage ipsImage_thumbnailed" data-fileid="155003" data-ratio="49.00" data-unique="unl2z9tsl" style="width: 600px; height: auto;" width="600" src="https://academy.hsoub.com/uploads/monthly_2024_08/img05-transformer-agents-tools-diagram_.thumb.png.c68621abd7588ddee48f3112f672cd53.png"> </a>
</p>

<h3 id="agents">
	الوكلاء Agents
</h3>

<p>
	الوكيل agent هو نموذج لغوي كبير (LLM) نوجهه بواسطة مُوجّهات prompts ليستخدم مجموعة من الأدوات tools التي نحددها له بغرض تنفيذ المهمة المطلوبة.
</p>

<p>
	تُعَدُ النماذج اللغوية الكبيرة (LLMs) مناسبة لتوليد شيفرات برمجية صغيرة، لذا تستفيد الواجهة البرمجية <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> من هذه الميزة وتطلب من النموذج توليد شيفرة برمجية تتضمن التعليمات اللازمة لتنفيذ مهمة محددة مع استخدام أدوات معينة نَصِفُها له، فيأخذ الوكيل المهمة والوصف المقدم للأدوات، ويكمل المطلوب بإنشاء تعليمات متوافقة مع مدخلات الأدوات ومخرجاتها كما هو موضح في المخطط السابق.
</p>

<h3 id="tools">
	الأدوات Tools
</h3>

<p>
	تتكون الأداة tool من دالة واحدة لها وظيفة محددة؛ وتتميز كل أداة باسم ووصف، نستخدم وصف الأدوات في المُوجِّهات prompt الموجهة للوكيل agent، فيوضح له الوصف كيف يستفيد من كل أداة في تنفيذ المهمة المطلوبة.
</p>

<p>
	يستخدم الوكيل agent الأدوات tools بدلًا من خطوط الأنابيب pipelines بالرغم من تشابه المفهومين لأنه يقدم أداءً أفضل في كتابة الشيفرة البرمجية مع الأدوات المحددة والصغيرة، فالأدوات تتخصص بمهمة واحدة بسيطة، بينما تجمع خطوط الأنابيب مهام متعددة في آنٍ واحد.
</p>

<h3 id="-1">
	تنفيذ الشيفرة البرمجية
</h3>

<p>
	بعد توليد الوكيل الشيفرة البرمجية تُنَفَّذْ على المدخلات مباشرةً باستخدام مُفَسِّر أوامر بايثون المحدود والخاص في منصة Hugging Face، قد لا تطمئن لهذه الطريقة أو تظنها غير آمنة فالأوامر الناتجة عن الوكيل تذهب للمُفَسِّر مباشرةً وتُنَفَّذْ دون أن تراها.
</p>

<p>
	لكن ما يخفف مخاطرها أن التنفيذ يقتصر على الأدوات التي تستدعيها بنفسك فقط ، ولن تُنفذ أي تعليمات أخرى غيرها، لذا فهو يُعدّ آمنًا نوعًا ما، طالما أنك تلتزم باستخدام الأدوات التي تؤمنها منصة Hugging Face، فالمنصة تعتمد عددًا من الاحتياطات الأمنية فهي تمنع عمليات استخراج السمات من الشيفرات البرمجية أو استيرادها وتحميك من الهجمات الشهيرة.
</p>

<p>
	وإذا رغبت بحماية أكبر فيمكنك استخدام أسلوب التنفيذ المعتمد على التابع <code>()run</code> مع الوسيط <code>return_code=True</code> الذي سيعرض لك الشيفرة البرمجية التي وَلَّدها الوكيل لتتفحصها وتقرر بنفسك فيما إذا ما كنت تود تنفيذها أم لا.
</p>

<p>
	أما حالات توقف التنفيذ غير المتوقعة التي قد تصادفك، فهي ترجع عادةً لسببين: إما تنفيذك عملية غير مصرح بها، أو وجود خطأ ما في الشيفرة التي أنتجها الوكيل.
</p>

<h2 id="transformers">
	الأدوات التي توفرها مكتبة Transformers
</h2>

<p>
	هذه قائمة بأشهر الأدوات المدمجة في مكتبة المحوّلات Transformers والمستخدمة لتشغيل الوكلاء agents:
</p>

<ul>
	<li>
		<strong>الإجابة عن أسئلة حول محتوى المستند Document question answering</strong>: نمرر للنموذج مستندًا (ملف PDF مثلًا) بصيغة صورة ويستخدم الأداة للإجابة عن أي سؤال تطرحه حول محتوى المستند، ومن أمثلته النموذج (<a href="https://huggingface.co/docs/transformers/model_doc/donut" rel="external nofollow"><code>Donut</code></a>).
	</li>
	<li>
		<strong>الإجابة عن أسئلة حول النص Text question answering</strong>: تكون المدخلات هنا نص طويل وسؤال، والمخرجات هي الإجابة عن هذا السؤال من داخل النص، تعمل مع النموذج (<a href="https://huggingface.co/docs/transformers/model_doc/flan-t5" rel="external nofollow"><code>Flan-T5</code></a>).
	</li>
	<li>
		<strong>وضع تسمية توضيحية للصورة Unconditional image captioning</strong>: وضع تسميةً توضيحية للصور المدخلة، مثل النموذج (<a href="https://huggingface.co/docs/transformers/model_doc/blip" rel="external nofollow"><code>BLIP</code></a>).
	</li>
	<li>
		<strong>الإجابة عن أسئلة حول الصورة Image question answering</strong>: نمرر صورة لتتم الإجابة عن السؤال المطروح عنها، (<a href="https://huggingface.co/docs/transformers/model_doc/vilt" rel="external nofollow"><code>VILT</code></a>).
	</li>
	<li>
		<strong>تجزئة الصور Image segmentation</strong>: المدخلات في هذه الحالة: صورة، وموجه prompt بتجزئة الصورة، ويكون الخرج قناعًا لتجزئة الصورة حسب المعيار المحدد في الموجه prompt، ومن أمثلتها النموذج (<a href="https://huggingface.co/docs/transformers/model_doc/clipseg" rel="external nofollow"><code>CLIPSeg</code></a>)
	</li>
	<li>
		<strong>تحويل الكلام إلى نص Speech to text</strong>: نمرر ملفًا صوتيًا لشخص يتكلم، ويجري تحويله إلى نص، يناسبه مثلًا النموذج (<a href="https://huggingface.co/docs/transformers/model_doc/whisper" rel="external nofollow"><code>Whisper</code></a>).
	</li>
	<li>
		<strong>تحول النص إلى كلام Text to speech</strong>: العملية المعاكسة، الدخل هنا هو نص ويُحوّل إلى كلام، تعمل مع النموذج (<a href="https://huggingface.co/docs/transformers/model_doc/speecht5" rel="external nofollow"><code>SpeechT5</code></a>).
	</li>
	<li>
		<strong>تصنيف النصوص بدون تدريب مسبق Zero-shot text classification</strong>: نمرر للنموذج نصًا ومجموعة تسميات توضيحية labels لم تكن موجودة ضمن البيانات التي تَدَرَّبَ عليها سابقًا، وينبغي له تحديد التسمية التوضيحية الأكثر توافقًا مع النص، مثل النموذج (<a href="https://huggingface.co/docs/transformers/model_doc/bart" rel="external nofollow"><code>BART</code></a>).
	</li>
	<li>
		<strong>تلخيص النصوص Text summarization</strong>: تلخيص النص الطويل ببضع جمل فقط، مثل النموذج (<a href="https://huggingface.co/docs/transformers/model_doc/bart" rel="external nofollow"><code>BART</code></a>).
	</li>
	<li>
		<strong>الترجمة Translation</strong>: ترجمة النص المُعطى إلى اللغة المحددة، مثل النموذج (<a href="https://huggingface.co/docs/transformers/model_doc/nllb" rel="external nofollow"><code>NLLB</code></a>).
	</li>
</ul>

<p>
	هذه الأدوات مدمجة في مكتبة المحولات Transformers ويمكنك استدعائها واستخدامها يدويًا خارج الإطار السابق كما في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_3651_40" style=""><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> load_tool

tool </span><span class="pun">=</span><span class="pln"> load_tool</span><span class="pun">(</span><span class="str">"text-to-speech"</span><span class="pun">)</span><span class="pln">
audio </span><span class="pun">=</span><span class="pln"> tool</span><span class="pun">(</span><span class="str">"This is a text to speech tool"</span><span class="pun">)</span></pre>

<h2 id="-2">
	الأدوات المخصصة
</h2>

<p>
	بالرغم من توفر العديد من الأدوات الجاهزة في منصة Hugging Face إلّا أن الإمكانية متاحة أمامك لإنشاء أدوات مخصصة لاحتياجات عملك ومشاركتها على المنصة بسرعة وبسهولة.
</p>

<p>
	بعد الانتهاء من برمجة الأداة ارفع شيفرتها البرمجية إلى المنصة أو إلى <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%B4%D8%A7%D8%B1%D9%83%D8%A9-%D9%86%D9%85%D9%88%D8%B0%D8%AC-%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%B9%D9%84%D9%89-%D9%85%D9%86%D8%B5%D8%A9-hugging-face-r2378/" rel="">مستودع النموذج الخاص بك</a>، وستتمكن بعدها من استخدامها مع أي وكيل agent، وهذه بعض الأمثلة عن أدوات مخصصة موجودة في قسم <a href="https://huggingface.co/huggingface-tools" rel="external nofollow"> huggingface-tools</a> على منصة Hugging Face وهي مستقلة عن مكتبة Transformers:
</p>

<ul>
	<li>
		<p>
			<strong>تحميل النصوص Text downloader</strong>: تحميل نص من عنوان URL معين.
		</p>
	</li>
	<li>
		<p>
			<strong>تحويل النص إلى صورة Text to image</strong>: توليد صورة بناءً على النص المُدخل في الموجه prompt، وذلك باستخدام نموذج الذكاء الاصطناعي stable diffusion.
		</p>
	</li>
	<li>
		<p>
			<strong>تحويل الصور Image transformation</strong>: تكون المدخلات صورة مبدئية، وموجه prompt بتعديلها، ويجري تعديل الصورة بناءً على الموجه prompt، وذلك باستخدام تعليمات pix2pix stable diffusion.
		</p>
	</li>
	<li>
		<p>
			<strong>تحويل النص إلى فيديو Text to video</strong>: يُنشئ مقطع فيديو صغير بناءً على الموجه prompt المقدم له، وذلك بالاستفادة من damo-vilab.
		</p>
	</li>
</ul>

<p>
	بالمناسبة إن أداة تحويل النص إلى صورة <code>text-to-image</code> التي استخدمناها في أمثلة المقال هي أداة بعيدة مستضافة على منصة Hugging Face على الرابط <a href="https://huggingface.co/spaces/huggingface-tools/text-to-image" rel="external nofollow">huggingface-tools/text-to-image</a>، وستجد العديد من الأدوات الأخرى المستضافة هناك.
</p>

<p>
	يمكنك الاطلاع على <a href="https://huggingface.co/docs/transformers/custom_tools" rel="external nofollow">دليل إنشاء الأدوات المخصصة</a> لتتعرف أكثر على طريقة إنشاء الأدوات ومشاركتها، علمًا أن الوكلاء agents يتمتعون تلقائيًا بصلاحية الوصول إلى كافة الأدوات الموجودة على Hugging Face.
</p>

<h2 id="codegeneration">
	توليد الشيفرة البرمجية Code generation
</h2>

<p>
	استخدمنا في أمثلتنا السابقة الوكلاء agents لتنفيذ الإجراءات دون أي تدخل منا، فالوكيل يوّلِد الشيفرة البرمجية ثم تُنَفَّذ هذه الشيفرة باستخدام مُفَسِّر بايثون المحدود، وبالتالي إذا رغبت باستخدام الشيفرة البرمجية الموَّلدة بأي طريقة أخرى، يمكنك ذلك عبر مطالبة الوكيل بإرجاع الشيفرة البرمجية الناتجة جنبًا إلى جنب مع تعريف الأداة المستخدمة وعمليات الاستيراد imports الدقيقة.
</p>

<p>
	فالتعليمة المبينة أدناه على سبيل المثال:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_3651_36" style=""><span class="pln">agent</span><span class="pun">.</span><span class="pln">run</span><span class="pun">(</span><span class="str">"Draw me a picture of rivers and lakes"</span><span class="pun">,</span><span class="pln"> return_code</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)</span></pre>

<p>
	تُرجع الشيفرة التالية التي تستطيع تعديلها وتنفيذها يدويًا حسب ما تريد:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_3651_38" style=""><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> load_tool

image_generator </span><span class="pun">=</span><span class="pln"> load_tool</span><span class="pun">(</span><span class="str">"huggingface-tools/text-to-image"</span><span class="pun">)</span><span class="pln">

image </span><span class="pun">=</span><span class="pln"> image_generator</span><span class="pun">(</span><span class="pln">prompt</span><span class="pun">=</span><span class="str">"rivers and lakes"</span><span class="pun">)</span></pre>

<h2 id="-3">
	الخلاصة
</h2>

<p>
	تعرفنا في هذا المقال على الوكلاء agents والأدوات tools والأساليب المختلفة لاستخدامها في تحويل أوامر اللغة الطبيعية إلى تعليمات برمجية لتوليد الصور والنصوص والفيديوهات أو لترجمتها أو تلخيصها أو تحويلها حالة إلى أخرى، وتعلمنا أيضًا أننا أحرار في طريقة الاستفادة من هذه التعليمات البرمجية الناتجة، فيمكننا تركها لتُنَفَّذْ تلقائيًا أو استعراضها وتنفيذها يدويًا أو حتى استخدامها في أغراضٍ أخرى في برامج أوسع مثلًا أو غير ذلك. وفي الختام ندعوك لمتابعة مقالنا التالي حول <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D9%88%D9%84%D9%8A%D8%AF-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D9%84%D8%BA%D9%88%D9%8A%D8%A9-%D8%A7%D9%84%D9%83%D8%A8%D9%8A%D8%B1%D8%A9-llms-r2380/" rel="">توليد النصوص باستخدام النماذج اللغوية الكبيرة LLMs</a> لتعزز معرفتك أكثر بهذا المجال الحيوي.
</p>

<p>
	ترجمة -وبتصرف- لقسم <a href="https://huggingface.co/docs/transformers/transformers_agents" rel="external nofollow">Transformers Agents</a> من منصة Hugging Face.
</p>

<h2 id="-4">
	اقرأ أيضًا
</h2>

<ul>
	<li>
		المقال السابق: <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D8%A7%D9%84%D9%85%D9%8B%D9%83%D9%8A%D9%91%D9%8E%D9%81%D8%A7%D8%AA-peft-adapters-%D8%A8%D8%AF%D9%84-%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A8%D8%A7%D9%84%D9%83%D8%A7%D9%85%D9%84-r2377/" rel="">تدريب المًكيَّفات PEFT Adapters بدل تدريب نماذج الذكاء الاصطناعي بالكامل</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/python/%D8%A8%D9%86%D8%A7%D8%A1-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D8%A8%D8%A7%D9%8A%D8%AB%D9%88%D9%86-%D9%8A%D8%AC%D9%8A%D8%A8-%D8%B9%D9%84%D9%89-%D8%A3%D8%B3%D8%A6%D9%84%D8%A9-%D9%85%D9%84%D9%81-pdf-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2265/" rel="">بناء تطبيق بايثون يجيب على أسئلة ملف PDF باستخدام الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/javascript/nodejs/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D8%A7%D8%AE%D8%AA%D8%A8%D8%B1%D9%86%D9%8A-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-chatgpt-%D9%88%D9%84%D8%BA%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D8%A8%D8%AA-%D9%85%D8%B9-nodejs-r2018/" rel="">تطوير تطبيق 'اختبرني' باستخدام ChatGPT ولغة جافاسكربت مع Node.js</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%B5%D8%B7%D9%84%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-r2363/" rel="">مصطلحات الذكاء الاصطناعي للمبتدئين</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2379</guid><pubDate>Wed, 21 Aug 2024 15:01:00 +0000</pubDate></item><item><title>&#x645;&#x634;&#x627;&#x631;&#x643;&#x629; &#x646;&#x645;&#x648;&#x630;&#x62C; &#x630;&#x643;&#x627;&#x621; &#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A; &#x639;&#x644;&#x649; &#x645;&#x646;&#x635;&#x629; Hugging Face</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%B4%D8%A7%D8%B1%D9%83%D8%A9-%D9%86%D9%85%D9%88%D8%B0%D8%AC-%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%B9%D9%84%D9%89-%D9%85%D9%86%D8%B5%D8%A9-hugging-face-r2378/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_07/------Hugging-Face-Copie.png.095d2ccc61c1cf26d8ad6391670c3bce.png" /></p>
<p>
	تساهم مشاركة نماذج الذكاء الاصطناعي مع الآخرين في نشر المعرفة، وتوفير الوقت والموارد على الراغبين باستثمارها وبالأخص على المستخدمين الجدد، إذا كنت تتابع معنا هذه <a href="https://academy.hsoub.com/tags/huggingface/" rel="">السلسلة عن مكتبة المحولات Transformers</a> مفتوحة المصدر من منصة Hugging Face فقد تعلمت كيفية <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D8%A7%D9%84%D8%B5%D9%82%D9%84-fine-tune-%D9%84%D9%86%D9%85%D9%88%D8%B0%D8%AC-%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%85%D9%8F%D8%AF%D9%8E%D8%B1%D9%91%D9%8E%D8%A8%D9%92-%D9%85%D9%8F%D8%B3%D8%A8%D9%82%D9%8B%D8%A7-r2367/" rel="">صقل Fine-Tune نموذج ذكاء اصطناعي مُدَرَّبْ مُسبقًا</a> باستخدام كل من PyTorch و Keras وأيضًا كيفية <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D8%A7%D9%84%D9%85%D9%88%D8%B2%D8%B9-%D9%88%D9%85%D9%83%D8%AA%D8%A8%D8%A9-accelerate-%D9%84%D8%AA%D8%B3%D8%B1%D9%8A%D8%B9-%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2376/" rel="">تسريع تدريبه بواسطة التدريب الموزع والمكتبة Accelerate</a>، وستتعلم الآن كيف تشاركه مع المجتمع.
</p>

<p>
	سواء كنت قد دَرَّبتَ نموذجك من الصفر أو استخدمت نموذجًا مُسبق التدريب وصقلته fine-tune على بيانات محددة فلديك طريقتين لمشاركته على مستودع نماذج Hugging Face المسمى <a href="https://huggingface.co/models" rel="external nofollow">Model Hub</a>:
</p>

<ul>
	<li>
		<p>
			رفع الملفات إلى المستودع برمجيًا.
		</p>
	</li>
	<li>
		<p>
			رفع الملفات إلى المستودع بطريقة السحب والإفلات من واجهة الويب للمستودع.
		</p>
	</li>
</ul>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		تذكر أنك تحتاج حسابًا على <a href="https://huggingface.co/join" rel="external nofollow">huggingface.co</a> كي تستطيع مشاركة النماذج على المنصة.
	</p>
</blockquote>

<h2 id="modelhub">
	ميزات مستودع النماذج Model Hub
</h2>

<p>
	يتمتع كل مستودع repository في مستودع النماذج Model Hub بكافة المميزات الخاصة بمستودعات GitHub التقليدية، مثل: توفر نظام <a href="https://academy.hsoub.com/programming/workflow/git/%D9%81%D9%87%D9%85-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%AD%D9%83%D9%85-%D8%A8%D8%A7%D9%84%D8%A5%D8%B5%D8%AF%D8%A7%D8%B1%D8%A7%D8%AA-git-%D9%88%D8%A3%D9%87%D9%85%D9%8A%D8%A9-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85%D9%87-%D9%81%D9%8A-%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D8%A8%D8%A7%D9%8A%D8%AB%D9%88%D9%86-r2034/" rel="">التحكم بالإصدارات</a> versioning، وسجل تتبع التعديلات commit history، وإمكانية العرض المرئي للاختلافات بين الإصدارات visualize differences وغيرها.
</p>

<p>
	يعتمد نظام التحكم بالإصدار versioning المُضَمَّنْ في مستودع النماذج على كل من <a href="https://academy.hsoub.com/programming/workflow/git/%D9%85%D8%A7-%D9%87%D9%88-git%D8%9F-r1592/" rel="">git</a> و <a href="https://git-lfs.github.com/" rel="external nofollow">git-lfs</a>، فتستطيع التعامل مع النموذج على أنه مستودع مستقل، يزيد ذلك من قدرتك على التوسع، ويمنحك تحكمًا أكبر بإمكانية الوصول للنماذج، كما يسمح نظام التحكم بالإصدار بالمراجعات revisions أي تثبيت إصدار محدد من النموذج وتمييزه بعلامةٍ خاصة قد تكون رمزًا commit hash أو وسمًا tag أو فرعًا من المستودع branch.
</p>

<p>
	بالنتيجة يمكنك تحديد إصدار النموذج الذي تريده باستخدام المعامل <code>revision</code>:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8502_7" style=""><span class="pln">model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoModel</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="pln">
    </span><span class="str">"julien-c/EsperBERTo-small"</span><span class="pun">,</span><span class="pln"> revision</span><span class="pun">=</span><span class="str">"v2.0.1"</span><span class="pln">  </span><span class="com"># tag name, or branch name, or commit hash</span><span class="pln">
</span><span class="pun">)</span></pre>

<p>
	تُعَدَّل ملفات المستودع بسهولة، ويمكنك مشاهدة التعديلات التي طرأت عليعا والاختلافات التي أحدثتها في النموذج بمرونة تامة، كما في الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="154958" href="https://academy.hsoub.com/uploads/monthly_2024_07/img01-model-hub-visualize-differences.png.3e3b9b42c6dae5ae86e9fe63391e8731.png" rel=""><img alt="img01 model hub visualize differences" class="ipsImage ipsImage_thumbnailed" data-fileid="154958" data-unique="k24hpc2ho" src="https://academy.hsoub.com/uploads/monthly_2024_07/img01-model-hub-visualize-differences.thumb.png.a34f5032dd6cad8768c4c96d3c6852dc.png"> </a>
</p>

<h2 id="">
	إعداد متطلبات العمل
</h2>

<p>
	تحتاج إلى بيانات الاعتماد الخاصة بك على منصة Hugging Face قبل مشاركة أي نموذج على مستودع النماذج، إذا كنت تملك وصولًا لنافذة الطرفية terminal، فاكتب الأمر التالي ضمن البيئة الافتراضية التي أنشأناها عند <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D9%88%D9%91%D9%84%D8%A7%D8%AA-transformers-r2352/" rel="">تثبيت مكتبة المُحوّلات Transformers</a> وبمجرد تنفيذه ستُخَزَّن بيانات اعتمادك المتمثلة برمز الدخول access token في مجلد الذاكرة المخبئية الخاص بمنصة Hugging Face (وهو المجلد <code>/‎~/.cache</code> افتراضيًا):
</p>

<pre class="ipsCode">huggingface-cli login
</pre>

<p>
	أما إذا كنت تستخدم دفترًا للملاحظات notebook عبر الويب مثل: Jupyter أو Colaboratory فاحرص في البداية على تثبيت المكتبة <a href="https://huggingface.co/docs/hub/adding-a-library" rel="external nofollow"><code>huggingface_hub</code></a> التي تسمح لك بالتفاعل البرمجي مع مستودع النماذج:
</p>

<pre class="ipsCode">pip install huggingface_hub
</pre>

<p>
	ثم استخدم <code>notebook_login</code> كما يلي لتسجيل الدخول إلى مستودع النماذج، واتبع بعدها <a href="https://huggingface.co/login?next=%2Fsettings%2Ftoken" rel="external nofollow">الخطوات الخاصة بتوليد رمز الدخول token</a> لتستخدمه:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8502_9" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> huggingface_hub </span><span class="kwd">import</span><span class="pln"> notebook_login

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> notebook_login</span><span class="pun">()</span></pre>

<h2 id="-1">
	تحويل النموذج ليعمل مع أي إطار عمل
</h2>

<p>
	ننصحك بإنشاء نقطتي تحقق checkpoints لنموذجك قبل رفعه إلى المستودع واحدة باستخدام إطار العمل PyTorch وأخرى باستخدام TensorFlow، يُسَهِّل هذا الأمر استفادة الآخرين من النموذج بصرف النظر عن إطار العمل الذي يستخدمونه. ونشير هنا إلى المستخدمين سيظلون قادرين على تحميل نموذجك بأي إطار عمل يرغبون به حتى إذا تجاوزت هذه الخطوة ولم تحوّل نموذجك، لكنهم سيعانون عندها من بعض البطء في التحميل، لأن المحوّلات Transformers ستُحَوّل النموذج إلى صيغة تناسب إطار عملهم في أثناء التحميل فيزداد الوقت المستغرق له.
</p>

<p>
	أما تحويل نقطة التحقق الخاصة بنموذجك من إطار العمل الذي تعتمده إلى إطار عمل آخر فيُعَدُّ إجراءً سهلًا سنتعلمه معًا، لكن تأكد في البداية من تثبيت إطاري العمل باي تورش <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-%D8%A8%D8%A7%D9%8A-%D8%AA%D9%88%D8%B1%D8%B4-pytorch-%D9%88%D8%A3%D9%87%D9%85%D9%8A%D8%AA%D9%87-%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2311/" rel="">PyTorch</a> وتنسرفلو TensorFlow (يمكنك مراجعة مقال <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D9%88%D9%91%D9%84%D8%A7%D8%AA-transformers-r2352/" rel="">تثبيت مكتبة المحوّلات Transformers</a> من هذه السلسلة على أكاديمية حسوب لتتعرف على خطوات التثبيت)، ثم ابحث عن نموذج مهمتك في إطار العمل الآخر الذي ستحول نموذجك إليه لتتأكد أنه متوافق معه.
</p>

<p>
	تحويل نقطة التحقق من TensorFlow إلى PyTorch عبر ضبط قيمة المعامل <code>from_tf=True</code> وفق التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8502_11" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> pt_model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">DistilBertForSequenceClassification</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"path/to/awesome-name-you-picked"</span><span class="pun">,</span><span class="pln"> from_tf</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> pt_model</span><span class="pun">.</span><span class="pln">save_pretrained</span><span class="pun">(</span><span class="str">"path/to/awesome-name-you-picked"</span><span class="pun">)</span></pre>

<p>
	تحويل نقطة التحقق من PyTorch إلى TensorFlow عبر ضبط قيمة المعامل <code>from_pt=True</code> كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8502_14" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tf_model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">TFDistilBertForSequenceClassification</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"path/to/awesome-name-you-picked"</span><span class="pun">,</span><span class="pln"> from_pt</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)</span></pre>

<p>
	ثم احفظ نموذج TensorFlow الجديد بنقطة تحققه الجديدة:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8502_16" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tf_model</span><span class="pun">.</span><span class="pln">save_pretrained</span><span class="pun">(</span><span class="str">"path/to/awesome-name-you-picked"</span><span class="pun">)</span></pre>

<p>
	وإذا كان النموذج مدعومًا في Flax يمكنك تحويله من PyTorch إلى Flax وفق التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8502_18" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> flax_model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">FlaxDistilBertForSequenceClassification</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="pln">
    </span><span class="str">"path/to/awesome-name-you-picked"</span><span class="pun">,</span><span class="pln"> from_pt</span><span class="pun">=</span><span class="kwd">True</span><span class="pln">
</span><span class="pun">)</span></pre>

<h2 id="-2">
	رفع النموذج إلى المستودع في أثناء التدريب
</h2>

<p>
	يُعدّ رفع النماذج ومشاركتها على المستودع عملًا بسيطًا يماثل إضافة معامل أو رد نداء callback أو غيره من الخيارات المألوفة، فهو في نهاية الأمر أحد معاملات التدريب التي نُحددها ضمن الصنف <code>TrainingArguments</code> كما تعلمنا في مقال <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D8%A7%D9%84%D8%B5%D9%82%D9%84-fine-tune-%D9%84%D9%86%D9%85%D9%88%D8%B0%D8%AC-%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%85%D9%8F%D8%AF%D9%8E%D8%B1%D9%91%D9%8E%D8%A8%D9%92-%D9%85%D9%8F%D8%B3%D8%A8%D9%82%D9%8B%D8%A7-r2367/" rel="">صقل Fine-Tune نموذج ذكاء اصطناعي مُدَرَّبْ مُسبقًا</a> فكل ما عليك فعله هو ضبط المعامل <code>Push_to_hub=True</code> في الصنف <code>TrainingArguments</code> كما في الخطوات التالية، وسيُرفَع نموذجك مباشرةً إلى المستودع:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8502_20" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> training_args </span><span class="pun">=</span><span class="pln"> </span><span class="typ">TrainingArguments</span><span class="pun">(</span><span class="pln">output_dir</span><span class="pun">=</span><span class="str">"my-awesome-model"</span><span class="pun">,</span><span class="pln"> push_to_hub</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)</span></pre>

<p>
	نُمَرِّر هذه الخيارات الآن إلى <a href="https://huggingface.co/docs/transformers/v4.39.1/en/main_classes/trainer#transformers.Trainer" rel="external nofollow">المُدَرِّب Trainer</a>:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8502_22" style=""><span class="pln">trainer </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Trainer</span><span class="pun">(</span><span class="pln">
    model</span><span class="pun">=</span><span class="pln">model</span><span class="pun">,</span><span class="pln">
    args</span><span class="pun">=</span><span class="pln">training_args</span><span class="pun">,</span><span class="pln">
    train_dataset</span><span class="pun">=</span><span class="pln">small_train_dataset</span><span class="pun">,</span><span class="pln">
    eval_dataset</span><span class="pun">=</span><span class="pln">small_eval_dataset</span><span class="pun">,</span><span class="pln">
    compute_metrics</span><span class="pun">=</span><span class="pln">compute_metrics</span><span class="pun">,</span><span class="pln">
</span><span class="pun">)</span></pre>

<p>
	وبعد الانتهاء من صقل fine-tune النموذج نستدعي الدالة <code>call push_to_hub()‎</code> بواسطة المُدَرِّب Trainer لرفعه إلى مستودع النماذج، وستُضيف مكتبة المحوّلات Transformers تلقائيًا معلومات النموذج إلى بطاقة الوصف الخاصة به، وهي تتضمن مثلًا: المعاملات الفائقة hyperparameters للنموذج، ونتائج تدريبه، وإصدارات إطار العمل التي يعمل عليها وما إلى ذلك:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8502_24" style=""><span class="pln">trainer</span><span class="pun">.</span><span class="pln">push_to_hub</span><span class="pun">()</span></pre>

<p>
	وفي إطار العمل TensorFlow يمكنك مشاركة النماذج على المستودع بواسطة الدالة <code>PushToHubCallback</code> مع إضافة الخيارات التالية:
</p>

<ul>
	<li>
		<p>
			مجلد خرج النموذج.
		</p>
	</li>
	<li>
		<p>
			المُرَمِّز tokenizer.
		</p>
	</li>
	<li>
		<p>
			مُعَرِّف النموذج على المستودع <code>hub_model_id</code> وهو يتكون من اسم المستخدم مالك النموذج username واسم النموذج.
		</p>
	</li>
</ul>

<p>
	وستكون الأوامر كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8502_26" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">PushToHubCallback</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> push_to_hub_callback </span><span class="pun">=</span><span class="pln"> </span><span class="typ">PushToHubCallback</span><span class="pun">(</span><span class="pln">
    output_dir</span><span class="pun">=</span><span class="str">"./your_model_save_path"</span><span class="pun">,</span><span class="pln"> tokenizer</span><span class="pun">=</span><span class="pln">tokenizer</span><span class="pun">,</span><span class="pln"> hub_model_id</span><span class="pun">=</span><span class="str">"your-username/my-awesome-model"</span><span class="pln">
</span><span class="pun">)</span></pre>

<p>
	ثم أضف رد نداء callback للدالة <a href="https://keras.io/api/models/model_training_apis/" rel="external nofollow"><code>fit</code></a> وفق التالي وسترفع المحوّلات Transformers نموذجك إلى المستودع:
</p>

<pre class="ipsCode">&gt;&gt;&gt; model.fit(tf_train_dataset, validation_data=tf_validation_dataset, epochs=3, callbacks=push_to_hub_callback)
</pre>

<h2 id="push_to_hub">
	استخدام الدالة push_to_hub
</h2>

<p>
	يمكنك بدلًا من استخدام الطريقة السابقة استدعاء الدالة <code>push_to_hub</code> وتمرير اسم النموذج المطلوب رفعه إلى المستودع.
</p>

<p>
	حَدِّدْ اسم النموذج ضمن <code>push_to_hub</code> وفق التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8502_28" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> pt_model</span><span class="pun">.</span><span class="pln">push_to_hub</span><span class="pun">(</span><span class="str">"my-awesome-model"</span><span class="pun">)</span></pre>

<p>
	سينشأ الآن مستودعًا repository للنموذج على مستودع النماذج لمنصة Hugging Face يكون تحت اسمك، ويُسمى باسم النموذج وهو في مثالنا <code>my-awesome-model</code>، ويمكن للمستخدمين الآخرين بعد ذلك تحميله بواسطة الدالة <code>from_pretrained</code> كما يلي:
</p>

<pre class="ipsCode">&gt;&gt;&gt; from transformers import AutoModel

&gt;&gt;&gt; model = AutoModel.from_pretrained("your_username/my-awesome-model")
</pre>

<p>
	أما إذا كنت تنتمي لمؤسسة لديها حساب على Hugging Face وتريد رفع نموذجك تحت اسم المؤسسة فأضف مُعَرِّف مستودع المؤسسة <code>repo_id</code> مع اسم النموذج وفق التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8502_30" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> pt_model</span><span class="pun">.</span><span class="pln">push_to_hub</span><span class="pun">(</span><span class="str">"my-awesome-org/my-awesome-model"</span><span class="pun">)</span></pre>

<p>
	تساعدك الدالة <code>Push_to_hub</code> على رفع ملفات أخرى إلى مستودع النموذج نحو المُرَمِّز tokenizer مثلًا:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8502_32" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer</span><span class="pun">.</span><span class="pln">push_to_hub</span><span class="pun">(</span><span class="str">"my-awesome-model"</span><span class="pun">)</span></pre>

<p>
	أو نسخة TensorFlow من نموذج PyTorch المصقول fine-tuned كما يلي أو غير ذلك:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8502_34" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tf_model</span><span class="pun">.</span><span class="pln">push_to_hub</span><span class="pun">(</span><span class="str">"my-awesome-model"</span><span class="pun">)</span></pre>

<p>
	الآن عندما تفتح حسابك على منصة Hugging Face سترى المستودع الجديد الذي أنشأته، وبالضغط على تبويب الملفات Files ستستعرض جميع الملفات التي حَمَّلتها إلى المستودع.
</p>

<p>
	شرحنا هنا الأساسيات فقط، ولمزيد من المعلومات حول إنشاء الملفات ورفعها على مستودع Hugging Face راجع <a href="https://huggingface.co/docs/huggingface_hub/v0.22.2/guides/upload" rel="external nofollow">التوثيقات ذات الصلة على المنصة</a>.
</p>

<h2 id="-3">
	تحميل النماذج من واجهة الويب الخاصة بالمستودع
</h2>

<p>
	إذا كنت تفضل العمل مع الواجهات الرسومية بدلًا من <a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%A7-%D9%87%D9%88-%D8%B3%D8%B7%D8%B1-%D8%A7%D9%84%D8%A3%D9%88%D8%A7%D9%85%D8%B1-%D8%9F-r353/" rel="">سطر الأوامر</a> فيمكنك استخدام واجهة مستودع Hugging Face الموجودة على الرابط <a href="https://huggingface.co/login?next=%2Fnew" rel="external nofollow">huggingface.co/new</a> لإنشاء المستودع الجديد ورفع النماذج إليه كما في الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="154960" href="https://academy.hsoub.com/uploads/monthly_2024_07/img02-gui-model-repo.png.5ddd813cf637a005ba937e0249b6fa99.png" rel=""><img alt="img02 gui model repo" class="ipsImage ipsImage_thumbnailed" data-fileid="154960" data-unique="pmt01pcly" src="https://academy.hsoub.com/uploads/monthly_2024_07/img02-gui-model-repo.thumb.png.945c03f8b1b3ef76701038f53356efcd.png"> </a>
</p>

<p>
	بعدها أدخل المعلومات التالية المطلوبة في الصورة أعلاه وهي كالتالي:
</p>

<ul>
	<li>
		<p>
			حَدِّدْ مالك المستودع <strong>owner</strong>، سواء كنت أنت بصفتك الشخصية أو أي مؤسسة تنتمي إليها.
		</p>
	</li>
	<li>
		<p>
			اختر اسمًا مميزًا لنموذجك، والذي سيكون اسمًا للمستودع أيضًا.
		</p>
	</li>
	<li>
		<p>
			حَدِّدْ خصوصية مستودعك عامًا أم خاصًا.
		</p>
	</li>
	<li>
		<p>
			اختر رخصة استخدام نموذجك.
		</p>
	</li>
</ul>

<p>
	اضغط بعدها على تبويب <strong>الملفات Files</strong> ثم زر <strong>أضف ملف Add file</strong> وحَمِّل ملفك الجديد إلى المستودع بطريقة السحب والإفلات، وأخيرًا أضف رسالة التثبيت <strong>commit message</strong>، ألقِ نظرة على الصورة التوضيحية التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="154961" href="https://academy.hsoub.com/uploads/monthly_2024_07/img03-upload-file.png.1da79fd94f46a902aaab286f6df88eab.png" rel=""><img alt="img03 upload file" class="ipsImage ipsImage_thumbnailed" data-fileid="154961" data-unique="7z4uqi2bt" src="https://academy.hsoub.com/uploads/monthly_2024_07/img03-upload-file.thumb.png.94d2f560bb3195822a3b1625b4bbda59.png"> </a>
</p>

<h2 id="modelcard">
	إضافة بطاقة وصف للنموذج Model Card
</h2>

<p>
	تساعد البطاقات مستخدمي النماذج على معرفة مزايا كل نموذج وإمكاناته والاعتبارات الأخلاقية لاستخدامه وغير ذلك من التفاصيل، لذا احرص على إضافة بطاقة خاصة لنموذجك لترشد كل من يود الاستفادة منه أو لتعود إليها عند الحاجة؛ تُعَرَّفْ بطاقة وصف النموذج model card بواسطة الملف <code>README.md</code> ويمكنك إنجاز الأمر بطريقتين:
</p>

<ul>
	<li>
		<p>
			إنشاء الملف <code>README.md</code> وتحميله يدويًا.
		</p>
	</li>
	<li>
		<p>
			الضغط على زر <strong>تحرير بطاقة النموذج Edit model card</strong> من الواجهة الرسومية لمستودعك.
		</p>
	</li>
</ul>

<p>
	ألق نظرة على <a href="https://huggingface.co/distilbert/distilbert-base-uncased" rel="external nofollow">بطاقة وصف النموذج DistilBert</a> على سبيل المثال، واطَّلِع على المعلومات التي تتضمنها عادةً بطاقات النماذج، كما يفيدك أيضًا استعراض <a href="https://huggingface.co/docs/hub/model-cards" rel="external nofollow">قسم التوثيقات الخاص ببطاقات النماذج</a> على منصة Hugging Face لتعرف المزيد عن الخيارات المرتبطة بالملف <code>README.md</code> مثل البصمة الكربونية للنموذج model’s carbon footprint (التي تقيس استهلاك الطاقة المستخدمة في تشغيل الحواسيب اللازمة لتدريب النموذج، أو اختباره وتشغيله)، وبعض الأمثلة عن الأدوات الملحقة به widget examples.
</p>

<h2 id="-4">
	الخلاصة
</h2>

<p>
	تعلمنا في هذا المقال كيفية مشاركة نماذج الذكاء الاصطناعي على مستودع Hugging Face بعدة طرق برمجيًا وعبر واجهة الويب الرسومية لمستودع النماذج، برمجيًا لدينا طريقتين استخدام الدالة <code>push_to_hub</code> أو إضافة المعامل <code>Push_to_hub=True</code> إلى معاملات التدريب، أما عبر واجهة الويب فيمكنك إنشاء حسابك على المنصة ورفع نموذجك ببضع نقرات بسيطة، والنقطة الأهم أنك تستطيع تحويل النموذج إلى أطر العمل المختلفة قبل مشاركته على المستودع، وذلك بخطوات بسيطة عرضناها في المقال، فتُسهل على الآخرين تحميله بالصيغة التي يفضلونها مثل: <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-%D8%A8%D8%A7%D9%8A-%D8%AA%D9%88%D8%B1%D8%B4-pytorch-%D9%88%D8%A3%D9%87%D9%85%D9%8A%D8%AA%D9%87-%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2311/" rel="">PyTorch</a> أو TensorFlow أو Flax، ولا تنسَ إضافة بطاقة وصف دقيقة للنموذج توضح للراغبين بتحميله إمكاناته وخصائصه وشروط استخدامه.
</p>

<p>
	ترجمة -وبتصرف- لقسم <a href="https://huggingface.co/docs/transformers/model_sharing#share-a-model" rel="external nofollow">Share a model</a> من توثيقات Hugging Face.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		المقال السابق: <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D8%A7%D9%84%D9%85%D9%8B%D9%83%D9%8A%D9%91%D9%8E%D9%81%D8%A7%D8%AA-peft-adapters-%D8%A8%D8%AF%D9%84-%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A8%D8%A7%D9%84%D9%83%D8%A7%D9%85%D9%84-r2377/" rel="">تدريب المًكيَّفات PEFT Adapters بدل تدريب نماذج الذكاء الاصطناعي بالكامل</a>.
	</li>
	<li>
		<p>
			<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D9%87%D9%85-%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2372/" rel="">تعرف على أهم مشاريع الذكاء الاصطناعي</a>
		</p>
	</li>
	<li>
		<p>
			<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D9%83%D8%AA%D8%A8%D8%A7%D8%AA-%D9%88%D8%A3%D8%B7%D8%B1-%D8%B9%D9%85%D9%84-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">مكتبات وأطر عمل الذكاء الاصطناعي: القوة الكامنة خلف الأنظمة الذكية</a>
		</p>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D9%85%D8%B9%D8%A7%D9%84%D8%AC%D8%A9-%D8%A7%D9%84%D9%85%D9%8F%D8%B3%D8%A8%D9%82%D8%A9-%D9%84%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%82%D8%A8%D9%84-%D8%AA%D9%85%D8%B1%D9%8A%D8%B1%D9%87%D8%A7-%D9%84%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2365/" rel="">المعالجة المُسبقة للبيانات قبل تمريرها لنماذج الذكاء الاصطناعي</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2378</guid><pubDate>Thu, 15 Aug 2024 15:08:00 +0000</pubDate></item><item><title>&#x645;&#x627; &#x647;&#x648; &#x627;&#x644;&#x630;&#x643;&#x627;&#x621; &#x627;&#x644;&#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A;</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%A7-%D9%87%D9%88-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_08/194989822_.png.343ea61acec82dbe755e01fd22a8cfdf.png" /></p>
<p>
	قبل عقد من الزمن، كان مفهوم الذكاء الاصطناعي (AI) مقتصرًا على كونه تصنيفًا فرعيًّا لأفلام الخيال العلمي الذي تسيطر فيه الآلات وأنظمة الذكاء الاصطناعي المتطورة على البشر ويُنظر إليه على أنه مجرد خيال مستقبلي وليس شيئًا واقعًا يمكن التعامل معه في الحياة اليومية. أما اليوم فقد تطور الذكاء الاصطناعي وصار متاحًا للجميع، فلو سألت أي شخص اليوم ما هو الذكاء الاصطناعي فسيجيبك بأنه علم متطور يوفر العديد من التقنيات الذكية التي تتيح للآلات القيام بمهام عديدة تحتاج إلى ذكاء بشري، ويوفر أدوات عديدة تساعد البشر في إنجاز أعمالهم اليومية بأسلوب يحاكي ذكاءهم مثل التعرف على الصور، أو ترجمة المحتوى، أو تشخيص الأمراض، أو قيادة السيارات …إلخ.
</p>

<h2 id="-1">
	تطور الذكاء الاصطناعي من مساعد بسيط لمنافس للإنسان
</h2>

<p>
	اقتصر الذكاء الاصطناعي في بداياته على بعض التطبيقات التي بدت بعيدة جدًا عن منافسة ذكاء الإنسان، مثل مساعدته في إكمال الجمل بالكلمات المتوقعة، أو توفير نماذج يمكنها لعب بعض الألعاب والتغلب على البشر فيها مثل نموذج آلفا جو AlphaGo الذي تغلب على بطل العالم لي سيدول (Lee Sedol) في لعبة جو GO عام 2016<strong>، </strong>وآلفا جو AlphaGo هو برنامج حاسوبي طُوّرته شركة DeepMind البريطانية المتخصصة في الذكاء الاصطناعي وهدفه الأساسي لعب لعبة جو المعروفة بتعقيدها واحتوائها على عدد كبير جدًا من  الاحتمالات.
</p>

<p>
	حين تمكن حاسوب من التفوق على الإنسان في لعبة جو المعقدة للغاية التي تتضمن عدد احتمالات يفوق عدد ذرات الكون المرئي، عُدَّ هذا الأمر إنجازًا تقنيًا هائلًا وطرح الكثير من الأسئلة حول ماهية الذكاء الاصطناعي، وإلى أي مدى سيتطور الذكاء الاصطناعي؟ وهل من الممكن أن تتفوق علينا هذه التقنية التي طورناها بأيدينا؟
</p>

<p>
	لقد تمكن الذكاء الاصطناعي من انتزاع الانتصار أربع مراتٍ من أصل خمس من بطل العالم الأفضل على الإطلاق في هذه اللعبة، وهذا شكل هزيمة صادمة إذ كيف لنابغةٍ في أحد المجالات أن يُهزم مرات عديدة من قبل آلة؟
</p>

<p>
	لكن هل كان آلفا جو AlphaGo حقاً برنامجًا ذكياً أم مجرد برنامج حاسوبي قادر على حساب عدد كبير من الاحتمالات والتعمق فى شجرة من النقلات التى ضمنت انتصاره بسهولة؟ في النقلة ال 37 قام آلفا جو AlphaGo بلعب نقلة رابحة فرصة اختيارها 1 من 10000 وتخالف كل مبادئ البشر وطريقة تفكيرهم، وهذه الحركة التي قد لا يفكر بها أي بشري استطاعت تغيير موازين اللعبة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpeg" data-fileid="156601" href="https://academy.hsoub.com/uploads/monthly_2024_08/alphaGoVslee.jpeg.fca5220888e84d045736671266422f7b.jpeg" rel=""><img alt="AlphaGo vs Lee" class="ipsImage ipsImage_thumbnailed" data-fileid="156601" data-ratio="115.00" data-unique="dn34sj2re" style="width: 300px; height: auto;" width="300" src="https://academy.hsoub.com/uploads/monthly_2024_08/alphaGoVslee.thumb.jpeg.0814299fb575f88a290d9834d0be09a8.jpeg"> </a>
</p>

<p style="text-align: center;">
	<a href="https://upload.wikimedia.org/wikipedia/commons/5/59/Lee_Sedol_%28W%29_vs_AlphaGo_%28B%29_-_Game_2.jpg" rel="external nofollow">مصدر الصورة</a>
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		كنت أعتقد أن آلفا جو AlphaGo مجرد آلة تعتمد على حساب الاحتمالات وأنها مجرد آلة. لكن عندما رأيت هذا النقلة، تغير تصوري بالكامل ، بكل تأكيد آلفا جو AlphaGo كان مبدعاً.
	</p>

	<p>
		لي سيدول
	</p>
</blockquote>

<ul>
</ul>

<h3 id="-2">
	ما هو الذكاء الاصطناعي
</h3>

<p>
	قبل أن نستعرض ما هو الذكاء الاصطناعي (Artificial Intelligence) من الجيد أن نعرف بداية ما هو الذكاء الطبيعي (Natural Intelligence) أو الذكاء البشري (Human Intelligence) الذي يعبر عن قدرة ذهنية ناتجة من القدرة على التعلم من التجارب، والتأقلم في المواقف الجديدة، والقدرة على استيعاب المفاهيم المجردة، وتسخير المعرفة للتفاعل مع البيئة.
</p>

<p>
	وتحاول أنظمة الذكاء الاصطناعي محاكاة تعريف الذكاء البشري لتتمكن من التأقلم و التعامل مع مشكلات جديدة بشكلٍ إبداعي دون برمجة حل مسبق لها في هذه الأنظمة، فَالقدرة على التعميم واستخدام ما تعلمه من مواقف سابقة لتطبيقه على مواقف جديدة ومهامٍ جديدة لم يسبق للآلة التعامل معها يجعلها تستحق وسمها بالذكاء وإن كان اصطناعيًا.
</p>

<p>
	يمكننا الآن أن نصل إلى تعريف الذكاء الاصطناعي بعد أن فهمنا ما الذي نحتاجه لوصف الآلة أنها ذكية. فالذكاء الاصطناعي هو تقنية متطورة تُمكِّن الحواسيب والآلات من محاكاة الذكاء البشري في القدرة على الفهم والإدراك، وربط الأسباب ببعضها البعض، والتعلم والتفاعل مع بيئتها بشكل متكيف مع التغيرات لحل المشاكل بشكلٍ إبداعي.
</p>

<p>
	يمكننا أن نستخلص مما سبق عدة مفاهيم ينبغي أن تتصف بها أو تملكها الأنظمة الحاسوبية حتى توصف أنها <strong>أنظمة ذكية</strong>:
</p>

<ul>
	<li>
		القدرة على التعلم.
	</li>
	<li>
		القدرة على الإبداع.
	</li>
	<li>
		القدرة على التطور و تعميم التعلم.
	</li>
	<li>
		القدرة على الإدراك.
	</li>
	<li>
		القدرة على الفهم.
	</li>
	<li>
		القدرة على ربط الأسباب.
	</li>
</ul>

<h2 id="-3">
	نبذة عن تاريخ تطور الذكاء الاصطناعي
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156836" href="https://academy.hsoub.com/uploads/monthly_2024_08/AI_timeline.png.5a8f6086300012eda91824f6c7284d09.png" rel=""><img alt="AI_timeline.png" class="ipsImage ipsImage_thumbnailed" data-fileid="156836" data-ratio="31.86" data-unique="5u8yprem2" style="width: 700px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2024_08/AI_timeline.thumb.png.2556721b3272977be11904ec2a0998a6.png"></a>
</p>

<p>
	في عام 1950، بدأ وضع معايير لتحديد ما هو الذكاء الاصطناعي من خلال اختبار تورينغ Turing test الذي يهدف إلى تحديد إذا كانت الآلة حقاً تتمتع بالذكاء وهو اختبار قائم على قدرة الآلة الذكية أن تجري محادثةً بشكل طبيعي فيظن المختبر أنه يتحدث مع إنسان وليس آلة، لكن لم يستطع آلان تورينغ Alan turing تطبيق مفهومه في ذلك الوقت، فقد كانت القوة الحاسوبية والتخزينية في ذلك الوقت محدودة للغاية وباهظة التكاليف.
</p>

<p>
	في عام 1956 عُقد مؤتمر دارتموث الأول للبحث في الذكاء الاصطناعي (Dartmouth Summer Research Project on Artificial Intelligence) الذي ظهر فيه مصطلح الذكاء الاصطناعي بشكل علمي لأول مرة وعُدّ هذا المؤتمر الحدث التأسيسي الذي أطلق تخصص الذكاء الاصطناعي كمجال علمي قائم بذاته.
</p>

<p>
	وشهد الذكاء الاصطناعي فترة ازدهار بين عامي 1957 و عام 1974 نظرًا لتطور القدرات الحاسوبية والتخزينة وإتاحتها بشكل أكبر للعامة، وكانت هذه فترة التوقعات المتفائلة بشأن إمكانات الذكاء الاصطناعي، لكن النتائج لم تقابل التوقعات مما أدى إلى فترة ركود في تطور الذكاء الاصطناعي.
</p>

<p>
	في الثمانينيات عاد هذا المجال مجدداً للظهور نظرًا للتطور الملحوظ الذي حدث في خوارزميات <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9/" rel="">تعلم الآلة</a>، وبداية ظهور مفهوم التعلم العميق (Deep learning) الذي اقترح تنفيذ مهام الذكاء الاصطناعي بشكل مشابه للطريقة التي يعمل بها الدماغ البشري، لكن لم يدم هذا التطور لفترة طويلة فمازالت القدرات الحاسوبية وكمية البيانات المتوافرة لا تواكب الآمال المرجوة.
</p>

<p>
	لاحقًا في فترة التسعينات والألفية الجديدة عاد الذكاء الاصطناعي للساحة، وتحققت الكثير من التطورات والقفزات العلمية في الذكاء الاصطناعي في تلك الفترة، وسبب هذا التطور المتسارع هو التطور الهائل الحاصل في القدرات الحاسوبية والتخزينية التي مكّنت من الاستفادة من <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">خوارزميات الذكاء الاصطناعي</a> المتاحة لأقصى درجة ممكنة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156600" href="https://academy.hsoub.com/uploads/monthly_2024_08/AI_winters.png.836c21b38f3e8894f1bc76b04beaa40b.png" rel=""><img alt="ai winters" class="ipsImage ipsImage_thumbnailed" data-fileid="156600" data-ratio="38.60" data-unique="8pq56tmhj" style="width: 600px; height: auto;" width="500" src="https://academy.hsoub.com/uploads/monthly_2024_08/AI_winters.thumb.png.6ec0477bcaabc7d74e7c0f158495cd4c.png"> </a>
</p>

<p>
	وفي العصر الحالي أصبح الذكاء الاصطناعي من أكثر المجالات البحثية نمواً، وشهد سوق الذكاء الاصطناعي تطورًا متسارع الوتيرة، وأصبح من أكثر التقنيات طلبًا، فقدر حجم سوق تقنيات الذكاء الاصطناعي عام 2024 <a href="https://www.statista.com/forecasts/1474143/global-ai-market-size" rel="external nofollow">بحسب ستاتيستا statista</a> بحوالي 200 مليار دولار، ومن المتوقع نمو هذا المجال والطلب عليه في السنوات القادمة ليصل إلى ما يقارب 800 مليار دولار بحلول عام 2030.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156597" href="https://academy.hsoub.com/uploads/monthly_2024_08/AI_market_size.png.47b1bca07ffc521938e400a944b9d217.png" rel=""><img alt="ai market size" class="ipsImage ipsImage_thumbnailed" data-fileid="156597" data-unique="h6a1y8epm" style="width: 699px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_08/AI_market_size.thumb.png.18d5d80e8e4ab59978ce5001b3fff015.png"> </a>
</p>

<p>
	يُبرز هذا التطور المستمر مدى <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A3%D9%87%D9%85%D9%8A%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2243/" rel="">أهمية الذكاء الاصطناعي</a> وزيادة الاعتماد عليه في مختلف جوانب حياتنا اليومية، ويؤكد على دوره الحيوي في رسم ملامح <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%B3%D8%AA%D9%82%D8%A8%D9%84-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">المستقبل</a>، وتغيير طريقة تنفيذ أعمالنا اليومية وتفاعلنا مع العالم.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة الذكاء الاصطناعي
		</p>

		<p class="banner-subtitle">
			احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة.
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/artificial-intelligence" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<a href="https://academy.hsoub.com/learn/artificial-intelligence" rel=""><img alt="دورة الذكاء الاصطناعي" src="https://academy.hsoub.com/learn/assets/images/courses/artificial-intelligence.png"></a>
	</div>
</div>

<h2 id="-4">
	ما هي تصنيفات الذكاء الاصطناعي
</h2>

<p>
	بعد أن تعرفنا على ماهية الذكاء الاصطناعي وتطوره وما المتوقع من الأنظمة الذكية أن تتسم به، لنتعرف على تصنيف الذكاء الاصطناعي وأنواعه. إذ تصنف الأنظمة الذكية بناءً على تطور قدراتها أو الوظيفة التى تحتاج القيام بها إلى عدة تصنيفات كما توضح الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156599" href="https://academy.hsoub.com/uploads/monthly_2024_08/AI_types.png.ec248259d0985806772757b31cb8439b.png" rel=""><img alt="ai types" class="ipsImage ipsImage_thumbnailed" data-fileid="156599" data-unique="t74wsk735" style="width: 600px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_08/AI_types.thumb.png.55a73180c3f25521d366cd6afb41bd86.png"> </a>
</p>

<h3 id="-5">
	تصنيفات الذكاء الاصطناعي حسب القوة
</h3>

<p>
	تتفاوت قدرات الأنظمة الذكية فبعضها يتعامل مع مهام بسيطة وتكرارية لتوفير وقت الإنسان، والبعض الآخر مصمم ليتفاعل مع البشر ويقوم بطيف واسع من المهام لمساعدة الإنسان على اتخاذ القرارات، إذ يصنف الذكاء الاصطناعي بناء على قدرته على محاكاة ذكاء البشر إلى:
</p>

<ul>
	<li>
		الذكاء الاصطناعي الضعيف Weak AI
	</li>
	<li>
		الذكاء الاصطناعي القوي Strong AI
	</li>
</ul>

<p>
	لنكتشف ما هو الذكاء الاصطناعي الضعيف والقوي وما الفرق بينهما.
</p>

<h4 id="weakai">
	الذكاء الاصطناعي الضعيف Weak AI
</h4>

<p>
	الذكاء الاصطناعي الضعيف (Weak AI) المعروف أيضًا بالذكاء الاصطناعي الضيّق (Narrow AI) هو النوع الذي نتعامل معه حاليًا فهو مصمم لأداء مهام محددة أو مجموعة من المهام المرتبطة بها، لكن دون امتلاك وعي أو فهم لها، فهو محدود في نطاقه وقدراته ولا يمكنه امتلاك الإدراك أو التكيف والتفكير بشكل مستقل خارج نطاق المهام التي صمم للتعامل معها.
</p>

<p>
	تخيل أن لديك <a href="https://academy.hsoub.com/apps/general/%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D8%A8%D9%88%D8%AA-%D8%A7%D9%84%D9%85%D8%AD%D8%A7%D8%AF%D8%AB%D8%A9-chatgpt-%D9%88%D8%AA%D8%B9%D9%84%D9%8A%D9%85%D9%87-%D9%83%D9%8A%D9%81-%D9%8A%D8%AA%D8%AD%D8%AF%D8%AB-%D9%88%D9%8A%D8%AA%D8%B9%D9%84%D9%85-r897/" rel="">بوت محادثةٍ ذكي دربته كيف يتحدث مع العملاء</a> ويجيب على أسئلتهم المتكررة، سيكون هذا البوت قادراً على فهم اللغة والصيغ المختلفة لطرح السؤال والتعامل مع أسئلة مثل "ما هي ساعات الدوام لديكم؟" أو "هل يمكنني القدوم في الساعة العاشرة لشراء هذا المنتج ؟" وإدراك أنها أسئلة عن أوقات العمل لهذا النشاط التجاري بالتالي الرد على السؤالين رغم اختلاف صياغتهما بنفس الإجابة التي توضح أوقات العمل. لكنه لن يتمكن من الدخول في نقاشات مفتوحة حول النشاط التجاري أو حول مواضيع عامة لا تخص هذا النشاط.
</p>

<h4 id="weakai-1">
	الذكاء الاصطناعي القوي Strong AI
</h4>

<p>
	بالمقابل يتميز الذكاء الاصطناعي القوي (Strong AI) أو ما يعرف أيضاً بالذكاء الاصطناعي العام Artificial general intelligence (AGI)‎ بتطوره وقدرته على القيام بالعديد من المهام المتنوعة بكفاءة تعادل البشر وتحاكي طريقتهم في التعامل مع أي مهمة معرفية.
</p>

<p>
	لم تصل البشرية بعد إلى مستوى التعامل مع الذكاء الاصطناعي القوي (Strong AI) الذي يحاكي جميع القدرات البشرية الذهنية. ورغم التقدم الكبير في ماهية الذكاء الاصطناعي وتطور خوارزمياته ونماذجه التي تمكنت من الوصول إلى قدراتٍ مقاربة للبشر وربما تفوقت عليها في بعض المجالات المحددة، إلا أن هذه الأنظمة لا تزال تفتقر إلى الفهم والوعي العامين اللذين يميزان عقلنا البشري.
</p>

<h3 id="-6">
	تصنيفات الذكاء الاصطناعي حسب الوظيفة
</h3>

<p>
	تصنف الأنظمة الذكية حسب الوظيفة ودرجة التعقيد إلى أربعة مستويات، وتتطور تدريجيًا من الأنظمة البسيطة إلى أنظمة أكثر تعقيدًا وأقرب إلى الذكاء البشري وهي كالتالي:
</p>

<ul>
	<li>
		الآلات التفاعلية Reactive machines
	</li>
	<li>
		الأنظمة محدودة الذاكرة Limited memory
	</li>
	<li>
		أنظمة نظرية العقل Theory of mind
	</li>
	<li>
		أنظمة الوعي الذاتي Self-awareness
	</li>
</ul>

<p>
	لنوضح كل مستوى من هذه المستويات والوظائف التي يمكن القيام بها في كل منها.
</p>

<h4 id="reactivemachines">
	الآلات التفاعلية Reactive machines
</h4>

<p>
	هي أنظمة ذكية لا تحتاج لامتلاك ذاكرةٍ للقيام بحل المشكلة التي تواجها، على سبيل المثال عند تصميم نظام ذكي يلعب الشطرنج، سيتحتاج هذا النظام للتعامل مع الموقف المعطى له فقط، وقد يكون هذا الموقف من منتصف المباراة ولكنه يستطيع تقييم الرقعة وقوة تمركز القطع واختيار نقلة تعظم من المكاسب أو تختار موقع استراتيجي بناءً على الموقف الحالي فقط .
</p>

<h4 id="limitedmemory">
	الأنظمة محدودة الذاكرة Limited memory
</h4>

<p>
	هي الأنظمة الذكية التي تحتاج إلى تخزين البيانات بشكل مؤقت لاستخدامها في اتخاذ القرارات، فمثلًا عند تصميم نظام ذكي قادر على قيادة السيارات ذاتياً فأنت بحاجة لجمع بياناتٍ عن الطريق واللافتات المرورية والإشارات والسيارات الأخرى القريبة منك ليقوم النظام بالتحكم بالسيارة اعتماداً على البيانات الحالية والموقف الحالي، لن يكون النظام بحاجة للاحتفاظ بمعلومات عن السيارات التي ليست فى نطاق رويته أو سلكت طرقاً أخرى، فهذه الأنظمة تجمع البيانات بشكل مستمر لاتخاذ القرارات بشكلٍ فوري ولا تحتفظ سوى بما يلزم للتعامل مع الموقف الحالي.
</p>

<h4 id="theoryofmind">
	أنظمة نظرية العقل Theory of mind
</h4>

<p>
	هي الأنظمة الذكية المتطورة التي تحتاج إلى فهم الأفكار والمشاعر والتفاعل الإجتماعي للقيام بوظيفتها، يمكن اعتبار<a href="https://academy.hsoub.com/apps/web/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A8%D9%88%D8%AA-%D8%A7%D9%84%D9%85%D8%AD%D8%A7%D8%AF%D8%AB%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D9%8A-%D8%B4%D8%A7%D8%AA-%D8%AC%D9%8A-%D8%A8%D9%8A-%D8%AA%D9%8A-chatgpt-r863/" rel=""> روبوت المحادثة الذكي ChatGPT</a> نظاماً قادرًا على فهم السياق من النص المرسل له ومعرفة المشاعر وراء تلك الكلمات بدرجة لا بأس بها، فهو قادر على استنتاج الأنماط المرتبطة بمشاعر معينة، لكنه لازال آلة غير قادرةٍ على التعاطف أو الشعور بتلك المشاعر.
</p>

<h4 id="selfawareness">
	أنظمة الوعي الذاتي Self-awareness
</h4>

<p>
	هي أنظمة ذكاء اصطناعي تحتاج إلى فهم المشاعر وتكوين وعي ذاتي للقيام بوظيفتها واتخاذ قرارات بناءً على هذا الوعي وتبريرها، في الوقت الحالي لا توجد أنظمة ذكاء اصطناعي تمتلك وعيًا ذاتيًا حقيقيًا كالبشر، ولكن هناك أبحاث تجري في هذا المجال، فهناك <a href="https://arxiv.org/abs/2309.08395" rel="external nofollow">ورقة بحثية</a> نشرت هذا العام بعنوان التعلم من خلال الشرح الذاتي Learning by Self-Explaining اقترحت طريقة تُمكّن أنظمة المحادثات الذكية من تبرير إجابتها بل وحتى انتقادها في سبيل تحسين الردود التي تنتجها.
</p>

<h2 id="-7">
	تخصصات الذكاء الاصطناعي
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156596" href="https://academy.hsoub.com/uploads/monthly_2024_08/AI_fields.png.ea132ad97be7d44cc8f4e76ad0b5dca8.png" rel=""><img alt="ai fields" class="ipsImage ipsImage_thumbnailed" data-fileid="156596" data-ratio="64.33" data-unique="zr8tqs6ey" style="width: 399px; height: auto;" width="300" src="https://academy.hsoub.com/uploads/monthly_2024_08/AI_fields.thumb.png.abe804fe7317cbf06aba513bff1f7f52.png"> </a>
</p>

<p>
	لقد تطورت <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%AC%D8%A7%D9%84%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">مجالات الذكاء الاصطناعي</a> وتشعبت فروعه وتخصصصاته ولعل أبرزها:
</p>

<h3 id="machinelearning">
	1. تعلم الآلة Machine Learning
</h3>

<p>
	هو تخصصٌ فرعي من الذكاء الاصطناعي يعني قدرة الآلات على التعلم من خلال البيانات دون برمجتها بشكلٍ مباشر للقيام بمهمة معينة، ويتضمن تعلم الآلة تطوير خوارزميات يمكنها تحليل البيانات واستكشاف الأنماط الموجودة فيها لتكوين معرفة يمكن تعميمها على مهامٍ أخرى.
</p>

<p>
	تصنف مهام تعلم الآلة حسب البيانات المستخدمة في التعلم، فإن كانت البيانات المتاحة لديك موسومة Labeled تصبح مهمة التعلم مشرف عليها بشكلٍ آلي وتسمى التعلم مع إشراف Supervised learning حيث يتم استخدام الوسم الموجود في البيانات المستخدمة لتدريب النموذج في تقيم مخرجاته، وأما إن لم تكن البيانات المتاحة للتعلم موسومة تصبح مهمة التعلم دون إشراف Unsupervised learning حيث يحاول النموذج تعلم الأنماط الموجودة في البيانات وتجميع المتشابه منها فيما يعرف بالمجموعات أو العناقيد Clusters.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" id="ips_uid_9029_6" referrerpolicy="strict-origin-when-cross-origin" src="https://academy.hsoub.com/applications/core/interface/index.html" title="YouTube video player" width="560" data-embed-src="https://www.youtube.com/embed/7up0GP1Y8aM?si=kC5eUKmbnO4hhbwH"></iframe>
</p>

<p>
	لنفترض أن لديك مجموعة من صور القطط والكلاب وترغب في بناء نموذج تعلم آلة قادر على التفريق بين القطط والكلاب، فوسم البيانات سيكون له تأثير في تحديد نوع خوارزميات التعلم المستخدمة في هذه المهمة، إن استخدمت صورًا موسمة للقطط والكلاب بحيث تكون كل صورة مرفقٌ معها تصنيفها في عملية التدريب فصور القطط ستحمل الوسم قط، بينما صور الكلاب ستحمل الوسم كلب، بالتالي تكون عملية التعلم هنا بإشراف بإستخدام هذه الوسوم، فعندما يقوم النموذج بتوقع الصورة على أنها قط يقارنها بوسمِها الحقيقي لتقييم صحة إجابات النموذج وتحسينها.
</p>

<p>
	على النقيض إن قمت فقط بإعطاء النموذج التعلمي البيانات بدون تحديد وَسْم، فَسيتعلم الأنماط المشتركة للقطط ويتعلم أنها مجموعة أو عنقود<strong> </strong><a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%B9%D9%86%D9%82%D8%AF%D8%A9-%D9%84%D8%AA%D8%AC%D8%B2%D8%A6%D8%A9-%D8%B9%D9%85%D9%84%D8%A7%D8%A1-%D9%85%D8%AA%D8%AC%D8%B1-%D8%A5%D9%84%D9%83%D8%AA%D8%B1%D9%88%D9%86%D9%8A-r1477/" rel="">Cluster </a>منفصل وبالمثل للكلاب فَالمهمة هنا هو معرفة الأنماط المشتركة لكل مجموعة وعددها.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156604" href="https://academy.hsoub.com/uploads/monthly_2024_08/ML_data.png.00bb43a11da07590939458905425c4d6.png" rel=""><img alt="ml data" class="ipsImage ipsImage_thumbnailed" data-fileid="156604" data-unique="xv9ua5bh9" style="width: 600px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_08/ML_data.thumb.png.6978abd0f4da237a489e3c294374c26c.png"> </a>
</p>

<h3 id="deeplearning">
	2. التعلم العميق Deep Learning
</h3>

<p>
	هو تخصص فرعي من تعلم الآلة يتميز باستخدامه الشبكات العصبية الاصطناعية (ANN)‎ التي تحاكي طريقة عمل الدماغ البشري في معالجة البيانات، وتتميز خوارزميات التعلم العميق بقدرتها على الاستفادة من البيانات الضخمة لتحسين جودة نماذج تعلم الآلة، ويرجع هذا لقوة الشبكات العصبية الاصطناعية على تعلم أنماط أكثر تعقيداً من خوارزميات التعلم الآلي التقليدية، بحيث تصل خوارزميات التعلم التقليدية غير المعتمدة على الشبكات العصبية الاصطناعية إلى مرحلة ركود لا تستطيع فيها تعلم أي شيءٍ جديد من البيانات  وتواكب تعقيد المشكلة التي أمامها، فالأمر هنا لا يتعلق بجودة البيانات إنما بقدرة الخوارزمية على تعلم الأنماط المعقدة الموجودة في البيانات الضخمة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="156605" href="https://academy.hsoub.com/uploads/monthly_2024_08/mlvsdl.png.ec6ddaafec4e3a351200892c3ec43dc3.png" rel=""><img alt="mlvsdl" class="ipsImage ipsImage_thumbnailed" data-fileid="156605" data-ratio="66.40" data-unique="e9vyto2iq" style="width: 500px; height: 332px;" width="500" src="https://academy.hsoub.com/uploads/monthly_2024_08/mlvsdl.png.ec6ddaafec4e3a351200892c3ec43dc3.png"> </a>
</p>

<p>
	يقارن الرسم أعلاه بين أداء خوارزميات التعلم التقليدية وخوارزميات التعلم العميق في عدة نقاط
</p>

<ul>
	<li>
		عندما يتوفر لديك مقدار قليل من البيانات عليك استخدام التعلم الآلي التقليدي، لأن خوارزميات التعلم العميق تحتاج لحجم بيانات أكبر لتعطى نفس الدقة و الأداء.
	</li>
	<li>
		تصل خوارزميات التعلم التقليدي إلى مرحلة ركود في التعلم أو تطور تطفيف بالرغم من استخدام حجم بيانات أكبر ولا تتمكن من مواكبة تعقيد المشكلة.
	</li>
	<li>
		تتفوق خوارزميات التعلم العميق عندما توفر لها حجمًا هائلًا من البيانات، فكلما استخدمت بياناتٍ أكثر فيها كلما تمكنت من تحقيق أداءٍ أفضل.
	</li>
</ul>

<h3 id="reinforcementlearning">
	3. التعلم المعزز بالتجربة Reinforcement learning
</h3>

<p>
	هو نوع من مهام تعلم الآلة قائم على التعلم بالتجربة والتفاعل مع البيئة المحيطة، تتفاعل الأنظمة الذكية المدربة بهذه الطريقة مع بيئتها بشكل عشوائي في البداية وبناءً على هذا التفاعل تتوقع الآلة الحصول على مكافأة أو عقوبة، إذ نكافئ النظام على سلوكه اتجاهاً معيناً يضمن له أداءاً أفضل، ونعاقبه على القرارات التي لا ينجز فيها المهمة الموكلة إليه بشكل صحيح.
</p>

<p>
	ينتشر استخدام هذا النوع من التعلم الآلي في مجال الروبوتات <a href="https://academy.hsoub.com/programming/os-embedded-systems/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%B1%D9%88%D8%A8%D9%88%D8%AA-%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-r1855/" rel="">Robotics</a> وفي ألعاب الذكاء الاصطناعي والواقع الافتراضي وفي أنظمة المحاكاة حيث توجد بيئة يمكن للنظام التفاعل معها.
</p>

<h3 id="computervision">
	4. الرؤية الحاسوبية Computer Vision
</h3>

<p>
	هي أحد المجالات الرئيسية في الذكاء الاصطناعي، حيث تهدف لتعزيز الآلات والأنظمة الحاسوبية بالقدرة على التعامل مع المحتوى البصري مثل الصور ومقاطع الفيديو، ويستخدم هذا المجال تعلم الآلة والتعلم العميق بشكلٍ خاص لتحليل البيانات البصرية الضخمة وتعلم الأنماط المرئية من أجل تمييز هذا النوع من المحتوى وفهمه، وتطبيقات الرؤية الحاسوبية كثيرة للغاية ولعل أبرزها أنظمة تحديد الوجوه والتعرف عليها، وأنظمة تحليل الأشعة الطبية وتشخيص الأمراض.
</p>

<p>
	وتعد الشبكات العصبية الالتفافية Convolution Neural Networks أو اختصارًا CNN  أحد الأسباب التي ساهمت في تطور هذا المجال فهي تتميز بقدرتها الآلية على استخراج الأنماط الهامة وتعلم أي الأنماط البصرية تحتاج إلى التركيز عليها حتى تمتلك القدرة على التفريق بين الصور، وقبل اختراع هذا النوع من الشبكات العصبية كان على المطورين استخراج المعلومات البصرية والأنماط من الصور بشكل شبه يدوي.
</p>

<h3 id="-9">
	5. معالجة اللغات الطبيعية
</h3>

<p>
	معالجة اللغات الطبيعية Natural Language Processing‎‎ أو ‎اختصارًا NLP هي أحد التطبيقات الشائعة للذكاء الاصطناعي، وهي مجال حيوي أيضًا ويعتمد على تعلم الآلة والتعلم العميق لبناء فهم جيد للغات الطبيعية والقدرة على التعامل معها.
</p>

<p>
	من التطبيقات الشائعة لمعالجة اللغات الطبيعية أنظمة المحادثة الذكية مثل <a href="https://academy.hsoub.com/apps/general/%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D8%A8%D9%88%D8%AA-%D8%A7%D9%84%D9%85%D8%AD%D8%A7%D8%AF%D8%AB%D8%A9-chatgpt-%D9%88%D8%AA%D8%B9%D9%84%D9%8A%D9%85%D9%87-%D9%83%D9%8A%D9%81-%D9%8A%D8%AA%D8%AD%D8%AF%D8%AB-%D9%88%D9%8A%D8%AA%D8%B9%D9%84%D9%85-r897/" rel="">ChatGPT</a> ونماذج التعلم اللغوية الضخمة Large Language Models أو اختصارًا LLMs التي تّدرّبُ مسبقاً على بيانات ضخمة لتمتلك فهماً مبدئياً للغة يُمكَّنها من القيام بمهام لغوية متعددة، نذكر منها تلخيص الفقرات الطويلة والإجابة على الأسئلة <a href="https://academy.hsoub.com/apps/cat/" rel="">والترجمة الآلية</a> و<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%AD%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%85%D8%B4%D8%A7%D8%B9%D8%B1-%D9%81%D9%8A-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D8%A7%D9%84%D8%B9%D8%B1%D8%A8%D9%8A%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%B9%D9%85%D9%8A%D9%82-r1476/" rel="">تحليل المشاعر في النصوص</a>، والعديد من التطبيقات الأخرى.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" id="ips_uid_9029_7" referrerpolicy="strict-origin-when-cross-origin" src="https://academy.hsoub.com/applications/core/interface/index.html" title="YouTube video player" width="560" data-embed-src="https://www.youtube.com/embed/3I6sXrVggYk?si=cUG365YbJkJuPV-H"></iframe>
</p>

<h3 id="generativeartificialintelligence">
	الذكاء الاصطناعي التوليدي Generative Artificial Intelligence
</h3>

<p>
	يتميز الذكاء الاصطناعي التوليدي <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A7%D9%84%D8%AA%D9%88%D9%84%D9%8A%D8%AF%D9%8A-generative-ai-r2234/" rel="">Generative AI</a> بقدراته الإبداعية وقدرته على إنتاج وإبتكار نصوص جديدة ووسائط أخرى مختلفة كالصور والأصوات ومقاطع الفيديو بناءً على الأنماط التي تعلمها من كميات كبيرة من البيانات. وهو يختلف عن أنظمة الذكاء الاصطناعي التقليدية التي تعتمد على  التصنيف أو التنبؤ بناءً على البيانات المدخلة.<br>
	ذاع صيت الذكاء الاصطناعي التوليدي اليوم لما يتميز به من قدرات فريدة في توليد محتوى إبداعي يشبه المحتوى المولد من قبل البشر، وأصبح له تطبيقات عديدة ككتابة المحتوى التسويقي، وتأليف القصص، وتصميم الصور، وكتابة الشيفرات البرمجية، وغيرها من المهمام التي سرعت إنتاجية البشر.
</p>

<h2 id="-10">
	تحديات تطور الذكاء الاصطناعي وحلول مقترحة
</h2>

<p>
	لنختم المقال بتسليط الضوء على بعض التحديات والتساؤلات المرتبطة بالذكاء الاصطناعي وآفاقه المستقبلية.
</p>

<h3 id="-11">
	تهديد الذكاء الاصطناعي للوظائف البشرية
</h3>

<p>
	لدى الكثير من الأشخاص تخوف من تطورالذكاء الاصطناعي وتساؤلات حول قدرته على استبدال الوظائف البشرية، بكل تأكيد سيغير الذكاء الاصطناعي الطريقة التي تعمل بها الكثير من الوظائف في الوقت الحالي، ليس بشكلٍ مدمر ولكن بشكل مساعدٍ للبشر، فبينما من المرجح اختفاء بعض الوظائف أو تأثرها فممن المؤكد أن الذكاء الاصطناعي سيوفر فرص عملٍ أخرى، شأنه شان العديد من الثورات الصناعية والتقنية على مر التاريخ.
</p>

<h3 id="-12">
	الاحتيال والتزوير باستخدام الذكاء الاصطناعي
</h3>

<p>
	من التحديات الخطيرة التي تواجه الذكاء الاصطناعي استخدامه في عمليات الاحتيال أو التزوير، فيمكن بكل سهولة استخدام تقنية التزييف العميق Deep fake من أجل انتحال شخصية أحد الأشخاص، يمكن مكافحة هذه الجرائم بعدة طرق منها استخدام الذكاء الاصطناعي نفيه لاكتشاف التزييف و تشريع قوانين تضمن حماية الأفراد من الاحتيال.
</p>

<h3 id="-13">
	تحيّز الذكاء الاصطناعي
</h3>

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

<h3 id="-14">
	احتكار تقنيات الذكاء الاصطناعي
</h3>

<p>
	هناك مخاوف من سيطرة بعض الدول على تقنيات الذكاء الاصطناعي مما سيؤدي إلى تحيز مقصود، فمعظم الأشخاص تستخدم إجابات الذكاء الاصطناعي كأنها شيء مُسلَّم به، لكن الكثير من ردود الذكاء الاصطناعي ليست صحيحة بشكل كامل وأحياناً تكون خاطئة، ولتحسين جودة الإجابات ودقتها يجب دعم الإجابات بمصادر خارجية تؤكد صحة المعلومات، واعتماد تقنية تسمى توليد الإجابات المعززة بالحقائق Retrieval-augmented generation أو (RAG)‎ اختصارًا.
</p>

<h2 id="-15">
	الخلاصة
</h2>

<p>
	تعرفنا في هذا المقال ما هو الذكاء الاصطناعي واستعرضنا مراحل تطوره حتى وصل لهذه القوة والانتشار، وناقشنا أهم تصنيفات الذكاء الاصطناعي وتخصصاته، وختمنا المقال بالحديث عن بعض التحديات والمخاوف المرتبطة بتطور الذكاء الاصطناعي في المستقل وتأثير الاعتماد المتزايد عليه في تنفيذ أعمالنا ومهامنا البشرية.
</p>

<p>
	نرجو أن يكون هذا المقال قد قدم لك إجابات شاملة حول ماهية الذكاء الاصطناعي ووضح له أهم المفاهيم والتخصصات المرتبطة به. وإذا كان لديك أي أسئلة أو استفسارات حول ما ورد في المقال، فلا تتردد في كتابتها في قسم التعليقات أسفل المقال.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-r2239/" rel="">أساسيات الذكاء الاصطناعي: دليل المبتدئين</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/artificial-intelligence/" rel="">تعلم الذكاء الاصطناعي: دليل شامل</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D9%81%D8%B6%D9%84-%D8%AF%D9%88%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2332/" rel="">تعرف على أفضل دورات الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/" rel="">تعرف على أهم مشاريع الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">برمجة الذكاء الاصطناعي: بناء مستقبل الآلات الذكية</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2391</guid><pubDate>Wed, 14 Aug 2024 15:00:00 +0000</pubDate></item><item><title>&#x62A;&#x62F;&#x631;&#x64A;&#x628; &#x627;&#x644;&#x645;&#x64B;&#x643;&#x64A;&#x651;&#x64E;&#x641;&#x627;&#x62A; PEFT Adapters &#x628;&#x62F;&#x644; &#x62A;&#x62F;&#x631;&#x64A;&#x628; &#x646;&#x645;&#x627;&#x630;&#x62C; &#x627;&#x644;&#x630;&#x643;&#x627;&#x621; &#x627;&#x644;&#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A; &#x628;&#x627;&#x644;&#x643;&#x627;&#x645;&#x644;</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D8%A7%D9%84%D9%85%D9%8B%D9%83%D9%8A%D9%91%D9%8E%D9%81%D8%A7%D8%AA-peft-adapters-%D8%A8%D8%AF%D9%84-%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A8%D8%A7%D9%84%D9%83%D8%A7%D9%85%D9%84-r2377/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_07/-PEFT-Adapters-------.png.7b7a80e19ec05ac32b3f5cbb536f6f49.png" /></p>
<p>
	نناقش في مقال اليوم طريقة استخدام توابع PEFT أو ما يعرف باسم توابع <a href="https://huggingface.co/blog/peft" rel="external nofollow">المعاملات الفعالة لصقل النماذج</a> Parameter-Efficient Fine Tuning methods، وهي نوعٌ خاص من التوابع يُلغي أو يجمًد فعالية المعاملات الأصلية للنماذج المُدَرَّبة مسبقًا أثناء التدريب، ويستبدلها بمجموعة أصغر من المعاملات الخاصة بالمُكيّفات adapters ليجري تدريبها على المهمة المطلوبة بدلًا من تدريب النموذج كاملًا.
</p>

<p>
	توفر هذه الطريقة استخدام الذاكرة والموارد الحاسوبية المختلفة بشكل كبير لأن المكيّفات adapters المُدَرَّبة باستعمال توابع PEFT صغيرة الحجم مقارنة بالنماذج الكاملة، وهذا يجعلها أسهل في التحميل والتخزين والمشاركة، وهي تعطي النتائج نفسها التي نحصل عليها بتدريب كامل النموذج.
</p>

<h2 id="adapters">
	ما هي المكيفات Adapters؟
</h2>

<p>
	المكيفات adapters هي بدائل خفيفة الوزن لتحسين نماذج الذكاء الاصطناعي المدربة مسبقًا pre-trained والمصقولة fine-tuned، فبدلاً من ضبط النموذج بالكامل، تُضاف المكيفات adapters بهيئة تعديلات صغيرة بين طبقات النموذج بعد مراحل معينة، وعند التدريب تُجَمَّدْ جميع أوزان النموذج وتُحدَّث أوزان المكيفات فقط وهو ما يؤدي إلى توفير كبير في الموارد الحاسوبية وتسريع التدريب وتحسين الأداء.
</p>

<p>
	ألقِ نظرة على الصورة التالية مثلًا فهي مأخوذة من <a href="https://huggingface.co/model-hub" rel="external nofollow">مستودع النماذج</a>، ولاحظ الفرق بين حجم مكيف النموذج OPTForCausalLM وبين حجم النموذج نفسه، إذ يبلغ حجم المكيف adapter حوالي 6 ميجا بايت بينما يصل حجم النموذج الأساسي إلى 700 ميجا.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="154953" href="https://academy.hsoub.com/uploads/monthly_2024_07/img01-PEFT-hub.png.16cd5f3e551a1d47b87fc78a6267dd91.png" rel=""><img alt="img01 peft hub" class="ipsImage ipsImage_thumbnailed" data-fileid="154953" data-unique="3881ytsvx" src="https://academy.hsoub.com/uploads/monthly_2024_07/img01-PEFT-hub.thumb.png.f6f969bf1f2660faf24cc11917a65d5c.png"> </a>
</p>

<p>
	كما سيفيدك الاطلاع على <a href="https://huggingface.co/docs/peft/index" rel="external nofollow">PEFT</a> إذا كنت مهتمًا بمعرفة المزيد من التفاصيل عنها.
</p>

<h2 id="">
	إعداد بيئة العمل
</h2>

<p>
	ابدأ بتثبيت المكتبة PEFT من خلال الأمر التالي:
</p>

<pre class="ipsCode">pip install peft
</pre>

<p>
	وإذا رغبت باستثمار مزاياها الحديثة أولًا بأول ثَبِّتها من المصدر الأساسي كما يلي:
</p>

<pre class="ipsCode">pip install git+https://github.com/huggingface/peft.git
</pre>

<h2 id="pefttransformers">
	توافق نماذج PEFT مع مكتبة المحوّلات Transformers
</h2>

<p>
	تدعم مكتبة المحوّلات Transformers عددًا من توابع PEFT تلقائيًا، فيمكنك تحميل أوزانها weights بسهولة سواء كانت مخزنة محليًّا أو في مستودع النماذج، ويمكن تدريبها وتشغيلها ببضع أسطر برمجية فقط، وهذه أبرزها:
</p>

<ul>
	<li>
		<p>
			<a href="https://huggingface.co/docs/peft/conceptual_guides/lora" rel="external nofollow">Low Rank Adapters</a>.
		</p>
	</li>
	<li>
		<p>
			<a href="https://huggingface.co/docs/peft/conceptual_guides/ia3" rel="external nofollow">IA3</a>.
		</p>
	</li>
	<li>
		<p>
			<a href="https://arxiv.org/abs/2303.10512" rel="external nofollow">AdaLoRA</a>.
		</p>
	</li>
</ul>

<p>
	أما إذا رغبت باستخدام توابع أخرى مع مكتبة المحولات Transformers مثل: Prompt Learning و Prompt tuning فراجع <a href="https://huggingface.co/docs/peft/index" rel="external nofollow">توثيقات PEFT</a>.
</p>

<h2 id="peftadapter">
	تحميل PEFT Adapter
</h2>

<p>
	يساعدك الصنف <code>AutoModelFor</code> وأصناف أخرى مشابهة على تحميل نماذج PEFT adapter من مكتبة المحوّلات Transformers واستخدامها في مشروعك، لكن تأكد من وجود الملف <code>adapter_config.json</code> وأوزان adapter في مجلدك المحلي أو المستودع البعيد Hub كما هو موضوح في الصورة السابقة.
</p>

<p>
	على سبيل المثال يمكنك تحميل نموذج PEFT adapter لمهمة النمذجة اللغوية السببية causal language modeling التي تمكنك من التنبؤ بالكلمة التالية في سلسلة نصية معينة بناءً على الكلمات السابقة باتباع التالي:
</p>

<ul>
	<li>
		<p>
			حدد المُعَرِّف الخاص بنموذج PEFT الذي تريده (أي PEFT model id).
		</p>
	</li>
	<li>
		<p>
			مَرِّرْ هذا المُعَرِّف إلى الصنف <a href="https://huggingface.co/docs/transformers/v4.39.1/en/model_doc/auto#transformers.AutoModelForCausalLM" rel="external nofollow">AutoModelForCausalLM</a>.
		</p>
	</li>
</ul>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4578_6" style=""><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoModelForCausalLM</span><span class="pun">,</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pln">

peft_model_id </span><span class="pun">=</span><span class="pln"> </span><span class="str">"ybelkada/opt-350m-lora"</span><span class="pln">
model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoModelForCausalLM</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="pln">peft_model_id</span><span class="pun">)</span></pre>

<p>
	يمكنك تحميل PEFT adapter أيضًا باستخدام الصنف <code>AutoModelFor</code> والصنف <code>OPTForCausalLM</code> والصنف <code>LlamaForCausalLM</code> كما يمكنك تحميله أيضًا بواسطة التابع <code>load_adapter</code> كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4578_8" style=""><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoModelForCausalLM</span><span class="pun">,</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pln">

model_id </span><span class="pun">=</span><span class="pln"> </span><span class="str">"facebook/opt-350m"</span><span class="pln">
peft_model_id </span><span class="pun">=</span><span class="pln"> </span><span class="str">"ybelkada/opt-350m-lora"</span><span class="pln">

model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoModelForCausalLM</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="pln">model_id</span><span class="pun">)</span><span class="pln">
model</span><span class="pun">.</span><span class="pln">load_adapter</span><span class="pun">(</span><span class="pln">peft_model_id</span><span class="pun">)</span></pre>

<h2 id="84">
	التحميل بصيغة 8 بت أو 4 بت
</h2>

<p>
	يمكنك الاستفادة من <a href="https://huggingface.co/docs/transformers/quantization#bitsandbytes-integration" rel="external nofollow">مكتبة <code>bitsandbytes</code></a> لتقليل استهلاك الذاكرة عن طريق تحميل النماذج باستخدام أنواع بيانات 8 بت و 4 بت، يساعدك هذا على توفير الذاكرة وتسريع تحميل النماذج الكبيرة، حيث يمكنك استخدام المعامل الذي تريده سواء كان <code>load_in_8bit</code> أو <code>load_in_4bit</code> ضمن محددات الدالة <code>from_pretrained()‎</code> لتختار طبيعة تحميل نموذجك، ويمكنك أيضًا ضبط المعامل <code>device_map="auto"‎</code> لتوزيع حمل النموذج بكفاءة على الموارد الحاسوبية المتاحة لك، وذلك وفق التالي:
</p>

<pre class="ipsCode">from transformers import AutoModelForCausalLM, AutoTokenizer

peft_model_id = "ybelkada/opt-350m-lora"
model = AutoModelForCausalLM.from_pretrained(peft_model_id, device_map="auto", load_in_8bit=True)
</pre>

<h2 id="adapter">
	تحميل adapter جديد
</h2>

<p>
	يمكنك تعزيز إمكانيات نموذج الذكاء الاصطناعي من خلال تحميل مُكيَّف adapter إضافي لأي نموذج يحتوي على مُكيَّف adapter سابق لكن يشترط أن يكون من نفس نوع المُكيَّف الحالي الموجود مسبقًا في النموذج، كأن يكونا كلاهما من النوع <code>LoRA</code> مثلًا، وتُنجز ذلك باستخدام <code>‎~peft.PeftModel.add_adapter</code> كما في المثال التالي:
</p>

<p>
	هذه الشيفرة الأصلية لتحميل مُكيَّف LoRA adapter لنموذج الذكاء الاصطناعي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4578_11" style=""><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoModelForCausalLM</span><span class="pun">,</span><span class="pln"> </span><span class="typ">OPTForCausalLM</span><span class="pun">,</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pln">
</span><span class="kwd">from</span><span class="pln"> peft </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">LoraConfig</span><span class="pln">

model_id </span><span class="pun">=</span><span class="pln"> </span><span class="str">"facebook/opt-350m"</span><span class="pln">
model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoModelForCausalLM</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="pln">model_id</span><span class="pun">)</span><span class="pln">

lora_config </span><span class="pun">=</span><span class="pln"> </span><span class="typ">LoraConfig</span><span class="pun">(</span><span class="pln">
    target_modules</span><span class="pun">=[</span><span class="str">"q_proj"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"k_proj"</span><span class="pun">],</span><span class="pln">
    init_lora_weights</span><span class="pun">=</span><span class="kwd">False</span><span class="pln">
</span><span class="pun">)</span><span class="pln">

model</span><span class="pun">.</span><span class="pln">add_adapter</span><span class="pun">(</span><span class="pln">lora_config</span><span class="pun">,</span><span class="pln"> adapter_name</span><span class="pun">=</span><span class="str">"adapter_1"</span><span class="pun">)</span></pre>

<p>
	والآن سنضيف إليها السطر التالي لتحميل مُكيَّف LoRA adapter إضافي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4578_13" style=""><span class="com"># إضافة adapter جديد بنفس الإعدادات تمامًا</span><span class="pln">
model</span><span class="pun">.</span><span class="pln">add_adapter</span><span class="pun">(</span><span class="pln">lora_config</span><span class="pun">,</span><span class="pln"> adapter_name</span><span class="pun">=</span><span class="str">"adapter_2"</span><span class="pun">)</span></pre>

<p>
	ثم سنستخدم <code>‎~peft.PeftModel.set_adapter</code> لنُحدد أي adapter هو المعتمد في النموذج:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4578_15" style=""><span class="com"># استخدام adapter_1</span><span class="pln">
model</span><span class="pun">.</span><span class="pln">set_adapter</span><span class="pun">(</span><span class="str">"adapter_1"</span><span class="pun">)</span><span class="pln">
output </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">generate</span><span class="pun">(**</span><span class="pln">inputs</span><span class="pun">)</span><span class="pln">
</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">tokenizer</span><span class="pun">.</span><span class="pln">decode</span><span class="pun">(</span><span class="pln">output_disabled</span><span class="pun">[</span><span class="lit">0</span><span class="pun">],</span><span class="pln"> skip_special_tokens</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">))</span><span class="pln">

</span><span class="com"># استخدام adapter_2</span><span class="pln">
model</span><span class="pun">.</span><span class="pln">set_adapter</span><span class="pun">(</span><span class="str">"adapter_2"</span><span class="pun">)</span><span class="pln">
output_enabled </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">generate</span><span class="pun">(**</span><span class="pln">inputs</span><span class="pun">)</span><span class="pln">
</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">tokenizer</span><span class="pun">.</span><span class="pln">decode</span><span class="pun">(</span><span class="pln">output_enabled</span><span class="pun">[</span><span class="lit">0</span><span class="pun">],</span><span class="pln"> skip_special_tokens</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">))</span></pre>

<h2 id="adapter-1">
	طريقة تفعيل adapter معين أو إلغاء تفعيله
</h2>

<p>
	يبين المثال التالي طريقة تفعيل adapter module:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4578_17" style=""><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoModelForCausalLM</span><span class="pun">,</span><span class="pln"> </span><span class="typ">OPTForCausalLM</span><span class="pun">,</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pln">
</span><span class="kwd">from</span><span class="pln"> peft </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">PeftConfig</span><span class="pln">

model_id </span><span class="pun">=</span><span class="pln"> </span><span class="str">"facebook/opt-350m"</span><span class="pln">
adapter_model_id </span><span class="pun">=</span><span class="pln"> </span><span class="str">"ybelkada/opt-350m-lora"</span><span class="pln">
tokenizer </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="pln">model_id</span><span class="pun">)</span><span class="pln">
text </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Hello"</span><span class="pln">
inputs </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">(</span><span class="pln">text</span><span class="pun">,</span><span class="pln"> return_tensors</span><span class="pun">=</span><span class="str">"pt"</span><span class="pun">)</span><span class="pln">

model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoModelForCausalLM</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="pln">model_id</span><span class="pun">)</span><span class="pln">
peft_config </span><span class="pun">=</span><span class="pln"> </span><span class="typ">PeftConfig</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="pln">adapter_model_id</span><span class="pun">)</span><span class="pln">

</span><span class="com"># تهيئة الأوزان العشوائية</span><span class="pln">
peft_config</span><span class="pun">.</span><span class="pln">init_lora_weights </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">False</span><span class="pln">

model</span><span class="pun">.</span><span class="pln">add_adapter</span><span class="pun">(</span><span class="pln">peft_config</span><span class="pun">)</span><span class="pln">
model</span><span class="pun">.</span><span class="pln">enable_adapters</span><span class="pun">()</span><span class="pln">
output </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">generate</span><span class="pun">(**</span><span class="pln">inputs</span><span class="pun">)</span></pre>

<p>
	وهذه طريقة إلغاء التفعيل:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4578_19" style=""><span class="pln">model</span><span class="pun">.</span><span class="pln">disable_adapters</span><span class="pun">()</span><span class="pln">
output </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">generate</span><span class="pun">(**</span><span class="pln">inputs</span><span class="pun">)</span></pre>

<h2 id="peftadapter-1">
	تدريب PEFT adapter
</h2>

<p>
	يمكنك تدريب PEFT adapters على المهمة التي تريدها باستخدام صنف <a href="https://huggingface.co/docs/transformers/v4.39.1/en/main_classes/trainer#transformers.Trainer" rel="external nofollow">المُدَرِّب Trainer</a> ببضع أوامر برمجية فقط، ألقِ نظرة على المثال التالي لتدريب LoRA adapter:
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		راجع مقال <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D8%A7%D9%84%D8%B5%D9%82%D9%84-fine-tune-%D9%84%D9%86%D9%85%D9%88%D8%B0%D8%AC-%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%85%D9%8F%D8%AF%D9%8E%D8%B1%D9%91%D9%8E%D8%A8%D9%92-%D9%85%D9%8F%D8%B3%D8%A8%D9%82%D9%8B%D8%A7-r2367/" rel="">صقل fine-tune نموذج ذكاء اصطناعي مُدَرَّبْ مُسبقًا</a> من هذه السلسلة على أكاديمية حسوب لمعرفة المزيد عن طريقة تدريب النماذج باستخدام صنف المُدَرّب وصقلها على بيانات محددة.
	</p>
</blockquote>

<ul>
	<li>
		1. حدد ضمن إعدادات adapter المهمة التي تود تدريبه عليها، والمعاملات الفائقة hyperparameters الخاصة به وفق التالي، (يمكنك التَعرُّف على المعاملات الفائقة للنوع LoRA adapter واستخداماتها باستعراض تفاصيل <code>‎~peft.LoraConfig</code><span class="ipsEmoji">😞</span>
	</li>
</ul>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4578_21" style=""><span class="kwd">from</span><span class="pln"> peft </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">LoraConfig</span><span class="pln">

peft_config </span><span class="pun">=</span><span class="pln"> </span><span class="typ">LoraConfig</span><span class="pun">(</span><span class="pln">
    lora_alpha</span><span class="pun">=</span><span class="lit">16</span><span class="pun">,</span><span class="pln">
    lora_dropout</span><span class="pun">=</span><span class="lit">0.1</span><span class="pun">,</span><span class="pln">
    r</span><span class="pun">=</span><span class="lit">64</span><span class="pun">,</span><span class="pln">
    bias</span><span class="pun">=</span><span class="str">"none"</span><span class="pun">,</span><span class="pln">
    task_type</span><span class="pun">=</span><span class="str">"CAUSAL_LM"</span><span class="pun">,</span><span class="pln">
</span><span class="pun">)</span></pre>

<ul>
	<li>
		2. أضِفْ adapter إلى النموذج:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4578_23" style=""><span class="pln">model</span><span class="pun">.</span><span class="pln">add_adapter</span><span class="pun">(</span><span class="pln">peft_config</span><span class="pun">)</span></pre>

<ul>
	<li>
		3. مَرِّرْ النموذج إلى المُدَرِّب:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4578_25" style=""><span class="pln">trainer </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Trainer</span><span class="pun">(</span><span class="pln">model</span><span class="pun">=</span><span class="pln">model</span><span class="pun">,</span><span class="pln"> </span><span class="pun">...)</span><span class="pln">
trainer</span><span class="pun">.</span><span class="pln">train</span><span class="pun">()</span></pre>

<p>
	وفي النهاية احفظ adapter بعد التدريب وحَمِّله مجددًا كما يلي:
</p>

<pre class="ipsCode">model.save_pretrained(save_dir)
model = AutoModelForCausalLM.from_pretrained(save_dir)
</pre>

<h2 id="peftadapter-2">
	زيادة طبقات إضافية قابلة للتدريب إلى PEFT adapter
</h2>

<p>
	مَرِّرْ <code>modules_to_save</code> ضمن إعدادات PEFT لصقل fine-tune أي مُكيَّفات تود إضافتها إلى نموذجك الذي يحتوي في الأساس على adapters أخرى، كما في المثال التالي الذي يبين طريقة صقل <code>lm_head</code> فوق نموذج يحتوي في الأساس على LoRA adapter:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4578_29" style=""><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoModelForCausalLM</span><span class="pun">,</span><span class="pln"> </span><span class="typ">OPTForCausalLM</span><span class="pun">,</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pln">
</span><span class="kwd">from</span><span class="pln"> peft </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">LoraConfig</span><span class="pln">

model_id </span><span class="pun">=</span><span class="pln"> </span><span class="str">"facebook/opt-350m"</span><span class="pln">
model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoModelForCausalLM</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="pln">model_id</span><span class="pun">)</span><span class="pln">

lora_config </span><span class="pun">=</span><span class="pln"> </span><span class="typ">LoraConfig</span><span class="pun">(</span><span class="pln">
    target_modules</span><span class="pun">=[</span><span class="str">"q_proj"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"k_proj"</span><span class="pun">],</span><span class="pln">
    modules_to_save</span><span class="pun">=[</span><span class="str">"lm_head"</span><span class="pun">],</span><span class="pln">
</span><span class="pun">)</span><span class="pln">

model</span><span class="pun">.</span><span class="pln">add_adapter</span><span class="pun">(</span><span class="pln">lora_config</span><span class="pun">)</span></pre>

<h2 id="-1">
	الخلاصة
</h2>

<p>
	تعرفنا في هذا المقال على المكيفات adapters وهي وحدات صغيرة تعوض عن تدريب نماذج الذكاء الاصطناعي الكاملة فتُحسِّن الأداء، وتعلمنا كيفية تحميل PEFT Adapters وإضافتها إلى نماذج مكتبة المحولات Transformers وتدريبها، وأيضًا تعرفنا على طريقة إضافة أكثر من مكيف adapter إلى النموذج لتحسين كفاءته بشرط أن تكون جميعها من نوعٍ واحد، مع إمكانية تفعيلها أو إلغاء تفعيلها حسب الحاجة.
</p>

<p>
	ترجمة -وبتصرف- لقسم <a href="https://huggingface.co/docs/transformers/peft#load-adapters-with--peft" rel="external nofollow">Load adapters with PEFT</a> من توثيقات Hugging Face.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		المقال السابق: <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D8%A7%D9%84%D9%85%D9%88%D8%B2%D8%B9-%D9%88%D9%85%D9%83%D8%AA%D8%A8%D8%A9-accelerate-%D9%84%D8%AA%D8%B3%D8%B1%D9%8A%D8%B9-%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2376/" rel="">استخدام التدريب الموزع ومكتبة Accelerate لتسريع تدريب نماذج الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D9%83%D8%AA%D8%A8%D8%A7%D8%AA-%D9%88%D8%A3%D8%B7%D8%B1-%D8%B9%D9%85%D9%84-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">مكتبات وأطر عمل الذكاء الاصطناعي: القوة الكامنة خلف الأنظمة الذكية</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">خوارزميات الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D9%86%D9%85%D9%88%D8%B0%D8%AC-%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%B9%D9%84%D9%89-%D8%AA%D9%84%D8%AE%D9%8A%D8%B5-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%B3%D9%83%D8%B1%D8%A8%D8%AA%D8%A7%D8%AA-transformers-r2373/" rel="">تدريب نموذج ذكاء اصطناعي على تلخيص النصوص باستخدام سكربتات Transformers</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2377</guid><pubDate>Sat, 10 Aug 2024 15:08:01 +0000</pubDate></item><item><title>&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; &#x627;&#x644;&#x62A;&#x62F;&#x631;&#x64A;&#x628; &#x627;&#x644;&#x645;&#x648;&#x632;&#x639; &#x648;&#x645;&#x643;&#x62A;&#x628;&#x629; Accelerate &#x644;&#x62A;&#x633;&#x631;&#x64A;&#x639; &#x62A;&#x62F;&#x631;&#x64A;&#x628; &#x646;&#x645;&#x627;&#x630;&#x62C; &#x627;&#x644;&#x630;&#x643;&#x627;&#x621; &#x627;&#x644;&#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A;</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D8%A7%D9%84%D9%85%D9%88%D8%B2%D8%B9-%D9%88%D9%85%D9%83%D8%AA%D8%A8%D8%A9-accelerate-%D9%84%D8%AA%D8%B3%D8%B1%D9%8A%D8%B9-%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2376/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_07/----Accelerate-----.png.369b5080d3c4292f93689f30ff10c1f3.png" /></p>
<p>
	يُعدّ التدريب الموزع أو التدريب على التوازي استراتيجيةً ناجحة في تدريب نماذج الذكاء الاصطناعي كبيرة الحجم على أجهزة حاسوبية محدودة الموارد، ويزداد الاعتماد عليها يومًا بعد يوم مع ازدياد أحجام النماذج المطروحة، وفي هذا المجال توفر منصة Hugging Face لمستخدميها مكتبةً متخصصة تدعى <a href="https://huggingface.co/docs/accelerate" rel="external nofollow">Accelerate</a> تُسَهِّل عليهم تدريب نماذج مكتبة المحولات Transformers تدريبًا موزعًا بأنواعٍ مختلفة من الإعدادات مثل استخدام عدة وحدات معالجة رسومية (GPU) سواء كانت موجودة على الجهاز نفسه أو موزعة على عدة أجهزة، فكيف نطبق هذا الأسلوب عمليًّا على حلقات تدريب PyTorch الأصلي للاستفادة منه في تدريب نماذج الذكاء الاصطناعي في البيئات الحاسوبية ذات الموارد الموزعة؟
</p>

<h2 id="">
	إعداد بيئة العمل
</h2>

<p>
	ابدأ أولًا بتثبيت المكتبة Accelerate كما يلي:
</p>

<pre class="ipsCode">pip install accelerate
</pre>

<p>
	ثم استورد كائن <a href="https://huggingface.co/docs/accelerate/v0.28.0/en/package_reference/accelerator#accelerate.Accelerator" rel="external nofollow">المُسَرِّع Accelerator</a> وأنشئ واحدًا في مشروعك، وسيكتشف المُسَرِّع نوعية الإعدادات الموزعة المتوفرة لديك ويهيئ لك المكونات الضرورية للتدريب اعتمادًا عليها، ولا حاجة لتخزين النموذج على جهازك:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_2815_6" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> accelerate </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">Accelerator</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> accelerator </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Accelerator</span><span class="pun">()</span></pre>

<h2 id="accelerate-1">
	التحضير لعملية التسريع Accelerate
</h2>

<p>
	خطوتنا التالية هي تمرير كافة الكائنات المرتبطة بالتدريب إلى تابع التحضير <code>accelerator.prepare</code> والتي تشمل مُحَمِّلات البيانات DataLoaders لكل من مرحلتي التدريب training والتقييم evaluation بالإضافة إلى النموذج model والمُحَسِّن optimizer على النحو التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_2815_8" style=""><span class="pln">train_dataloader</span><span class="pun">,</span><span class="pln"> eval_dataloader</span><span class="pun">,</span><span class="pln"> model</span><span class="pun">,</span><span class="pln"> optimizer </span><span class="pun">=</span><span class="pln"> accelerator</span><span class="pun">.</span><span class="pln">prepare</span><span class="pun">(</span><span class="pln">
    train_dataloader</span><span class="pun">,</span><span class="pln"> eval_dataloader</span><span class="pun">,</span><span class="pln"> model</span><span class="pun">,</span><span class="pln"> optimizer
</span><span class="pun">)</span></pre>

<p>
	<strong>ملاحظة</strong>: إن مهمة التابع <code>prepare</code> هنا هي تجهيز جميع مكونات التدريب للعمل في بيئة موزعة، وضمان توافق جميع المكونات مع بعضها البعض.
</p>

<h2 id="backward">
	استبدال الدالة Backward
</h2>

<p>
	وأخيرًا علينا استبدل الدالة <code>loss.backward()‎</code> المعتادة في حلقة التدريب بدالة <a href="https://huggingface.co/docs/accelerate/v0.28.0/en/package_reference/accelerator#accelerate.Accelerator.backward" rel="external nofollow">Backward الخاصة بمكتبة Accelerate</a> لضمان حساب التدرجات الخلفية (backward pass) بشكل صحيح على الأجهزة الموزعة على النحو التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_2815_10" style=""><span class="kwd">for</span><span class="pln"> epoch </span><span class="kwd">in</span><span class="pln"> range</span><span class="pun">(</span><span class="pln">num_epochs</span><span class="pun">):</span><span class="pln">
    </span><span class="kwd">for</span><span class="pln"> batch </span><span class="kwd">in</span><span class="pln"> train_dataloader</span><span class="pun">:</span><span class="pln">
        outputs </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">(**</span><span class="pln">batch</span><span class="pun">)</span><span class="pln">
        loss </span><span class="pun">=</span><span class="pln"> outputs</span><span class="pun">.</span><span class="pln">loss
        accelerator</span><span class="pun">.</span><span class="pln">backward</span><span class="pun">(</span><span class="pln">loss</span><span class="pun">)</span><span class="pln">

        optimizer</span><span class="pun">.</span><span class="pln">step</span><span class="pun">()</span><span class="pln">
        lr_scheduler</span><span class="pun">.</span><span class="pln">step</span><span class="pun">()</span><span class="pln">
        optimizer</span><span class="pun">.</span><span class="pln">zero_grad</span><span class="pun">()</span><span class="pln">
        progress_bar</span><span class="pun">.</span><span class="pln">update</span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span></pre>

<p>
	إذًا يمكنك تحويل <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D8%A7%D9%84%D8%B5%D9%82%D9%84-fine-tune-%D9%84%D9%86%D9%85%D9%88%D8%B0%D8%AC-%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%85%D9%8F%D8%AF%D9%8E%D8%B1%D9%91%D9%8E%D8%A8%D9%92-%D9%85%D9%8F%D8%B3%D8%A8%D9%82%D9%8B%D8%A7-r2367/" rel="">حلقة التدريب</a> العادية إلى حلقة تدريب موزعة بإضافة أربعة أوامر برمجية فقط إلى حلقة التدريب (ميَّزناها هنا بإشارة "+")، وبحذف أمرين فقط (ميَّزناهما بإشارة "-"):
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_2815_12" style=""><span class="pun">+</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> accelerate </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">Accelerator</span><span class="pln">
  </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AdamW</span><span class="pun">,</span><span class="pln"> </span><span class="typ">AutoModelForSequenceClassification</span><span class="pun">,</span><span class="pln"> get_scheduler

</span><span class="pun">+</span><span class="pln"> accelerator </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Accelerator</span><span class="pun">()</span><span class="pln">

  model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoModelForSequenceClassification</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="pln">checkpoint</span><span class="pun">,</span><span class="pln"> num_labels</span><span class="pun">=</span><span class="lit">2</span><span class="pun">)</span><span class="pln">
  optimizer </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AdamW</span><span class="pun">(</span><span class="pln">model</span><span class="pun">.</span><span class="pln">parameters</span><span class="pun">(),</span><span class="pln"> lr</span><span class="pun">=</span><span class="lit">3e-5</span><span class="pun">)</span><span class="pln">

</span><span class="pun">-</span><span class="pln"> device </span><span class="pun">=</span><span class="pln"> torch</span><span class="pun">.</span><span class="pln">device</span><span class="pun">(</span><span class="str">"cuda"</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> torch</span><span class="pun">.</span><span class="pln">cuda</span><span class="pun">.</span><span class="pln">is_available</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> torch</span><span class="pun">.</span><span class="pln">device</span><span class="pun">(</span><span class="str">"cpu"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">-</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">to</span><span class="pun">(</span><span class="pln">device</span><span class="pun">)</span><span class="pln">

</span><span class="pun">+</span><span class="pln"> train_dataloader</span><span class="pun">,</span><span class="pln"> eval_dataloader</span><span class="pun">,</span><span class="pln"> model</span><span class="pun">,</span><span class="pln"> optimizer </span><span class="pun">=</span><span class="pln"> accelerator</span><span class="pun">.</span><span class="pln">prepare</span><span class="pun">(</span><span class="pln">
</span><span class="pun">+</span><span class="pln">     train_dataloader</span><span class="pun">,</span><span class="pln"> eval_dataloader</span><span class="pun">,</span><span class="pln"> model</span><span class="pun">,</span><span class="pln"> optimizer
</span><span class="pun">+</span><span class="pln"> </span><span class="pun">)</span><span class="pln">

  num_epochs </span><span class="pun">=</span><span class="pln"> </span><span class="lit">3</span><span class="pln">
  num_training_steps </span><span class="pun">=</span><span class="pln"> num_epochs </span><span class="pun">*</span><span class="pln"> len</span><span class="pun">(</span><span class="pln">train_dataloader</span><span class="pun">)</span><span class="pln">
  lr_scheduler </span><span class="pun">=</span><span class="pln"> get_scheduler</span><span class="pun">(</span><span class="pln">
      </span><span class="str">"linear"</span><span class="pun">,</span><span class="pln">
      optimizer</span><span class="pun">=</span><span class="pln">optimizer</span><span class="pun">,</span><span class="pln">
      num_warmup_steps</span><span class="pun">=</span><span class="lit">0</span><span class="pun">,</span><span class="pln">
      num_training_steps</span><span class="pun">=</span><span class="pln">num_training_steps
  </span><span class="pun">)</span><span class="pln">

  progress_bar </span><span class="pun">=</span><span class="pln"> tqdm</span><span class="pun">(</span><span class="pln">range</span><span class="pun">(</span><span class="pln">num_training_steps</span><span class="pun">))</span><span class="pln">

  model</span><span class="pun">.</span><span class="pln">train</span><span class="pun">()</span><span class="pln">
  </span><span class="kwd">for</span><span class="pln"> epoch </span><span class="kwd">in</span><span class="pln"> range</span><span class="pun">(</span><span class="pln">num_epochs</span><span class="pun">):</span><span class="pln">
      </span><span class="kwd">for</span><span class="pln"> batch </span><span class="kwd">in</span><span class="pln"> train_dataloader</span><span class="pun">:</span><span class="pln">
</span><span class="pun">-</span><span class="pln">         batch </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">k</span><span class="pun">:</span><span class="pln"> v</span><span class="pun">.</span><span class="pln">to</span><span class="pun">(</span><span class="pln">device</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> k</span><span class="pun">,</span><span class="pln"> v </span><span class="kwd">in</span><span class="pln"> batch</span><span class="pun">.</span><span class="pln">items</span><span class="pun">()}</span><span class="pln">
          outputs </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">(**</span><span class="pln">batch</span><span class="pun">)</span><span class="pln">
          loss </span><span class="pun">=</span><span class="pln"> outputs</span><span class="pun">.</span><span class="pln">loss
</span><span class="pun">-</span><span class="pln">         loss</span><span class="pun">.</span><span class="pln">backward</span><span class="pun">()</span><span class="pln">
</span><span class="pun">+</span><span class="pln">         accelerator</span><span class="pun">.</span><span class="pln">backward</span><span class="pun">(</span><span class="pln">loss</span><span class="pun">)</span><span class="pln">

          optimizer</span><span class="pun">.</span><span class="pln">step</span><span class="pun">()</span><span class="pln">
          lr_scheduler</span><span class="pun">.</span><span class="pln">step</span><span class="pun">()</span><span class="pln">
          optimizer</span><span class="pun">.</span><span class="pln">zero_grad</span><span class="pun">()</span><span class="pln">
          progress_bar</span><span class="pun">.</span><span class="pln">update</span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span></pre>

<h2 id="-1">
	التدريب
</h2>

<p>
	بعد إضافة الأسطر البرمجية السابقة لحلقة التدريب يمكنك البدء بتدريب نموذجك إما بتشغيل السكريبت لديك أو بكتابته في <a href="https://academy.hsoub.com/apps/productivity/%D9%86%D8%A8%D8%B0%D8%A9-%D8%AA%D8%B9%D8%B1%D9%8A%D9%81%D9%8A%D8%A9-%D8%B9%D9%86-google-colab-%D9%88%D9%85%D8%A7%D8%B0%D8%A7-%D9%8A%D9%82%D8%AF%D9%85-%D9%84%D9%84%D9%85%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D9%86-r741/" rel="">Colaboratory notebook</a> أو أي دفتر ملاحظات مشابه.
</p>

<h3 id="-2">
	التدريب باستخدام السكربت
</h3>

<p>
	إذا كنت تُدَرِّب نموذجك اعتمادًا على سكريبت، فاكتب الأمر التالي لإنشاء ملف الإعدادات وحفظه:
</p>

<pre class="ipsCode">accelerate config
</pre>

<p>
	ثم باشر بالتدريب بكتابة الأمر التالي:
</p>

<pre class="ipsCode">accelerate launch train.py
</pre>

<h3 id="notebook">
	التدريب باستخدام دفتر الملاحظات Notebook
</h3>

<p>
	يمكنك تشغيل مكتبة Accelerate داخل دفتر ملاحظات مثل Colaboratory notebook أو غيره إذا كنت ترغب باستخدام وحدات TPU (أي وحدات معالجة الموتر أو التنسور tensor) الخاصة بخدمة Colaboratory، لكن عليك في هذه الحالة وضع جميع تعليمات التدريب في دالة واحدة وتمريرها إلى <a href="https://huggingface.co/docs/accelerate/v0.28.0/en/package_reference/launchers#accelerate.notebook_launcher" rel="external nofollow"><code>notebook_launcher</code></a> كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_2815_14" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> accelerate </span><span class="kwd">import</span><span class="pln"> notebook_launcher

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> notebook_launcher</span><span class="pun">(</span><span class="pln">training_function</span><span class="pun">)</span></pre>

<h2 id="-3">
	الخلاصة
</h2>

<p>
	تعرفنا في مقال اليوم على الخطوات الأساسية لاستخدام المكتبة Accelerate في تسريع تدريب نماذج الذكاء الاصطناعي باستخدام التدريب الموزع وهي طريقة مفيدة لتدريب نماذج الذكاء الاصطناعي الكبيرة على أجهزة محدودة الموارد، ويمكنك التعمق أكثر في خياراتها المختلفة بمطالعة <a href="https://huggingface.co/docs/accelerate/index" rel="external nofollow">توثيقاتها الرسمية</a>.
</p>

<p>
	ترجمة -وبتصرف- لقسم <a href="https://huggingface.co/docs/transformers/accelerate#distributed-training-with--accelerate" rel="external nofollow">Distributed training with Accelerate</a> من توثيقات Hugging Face.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D9%86%D9%85%D9%88%D8%B0%D8%AC-%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%B9%D9%84%D9%89-%D8%AA%D9%84%D8%AE%D9%8A%D8%B5-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%B3%D9%83%D8%B1%D8%A8%D8%AA%D8%A7%D8%AA-transformers-r2373/" rel="">المقال السابق: تدريب نموذج ذكاء اصطناعي على تلخيص النصوص باستخدام سكربتات Transformers</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9-r1938/" rel="">أدوات برمجة نماذج تعلم الآلة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D9%83%D8%AA%D8%A8%D8%A7%D8%AA-%D9%88%D8%A3%D8%B7%D8%B1-%D8%B9%D9%85%D9%84-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">مكتبات وأطر عمل الذكاء الاصطناعي: القوة الكامنة خلف الأنظمة الذكية</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D9%87%D9%8A%D8%A6%D8%A9-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D8%A7%D9%84%D9%85%D9%81%D9%83%D8%B1%D8%A9-jupyter-notebook-%D9%84%D9%84%D8%B9%D9%85%D9%84-%D9%85%D8%B9-%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-python-3-r388/" rel="">كيفية تهيئة تطبيق المفكرة Jupyter Notebook للعمل مع لغة البرمجة Python</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2376</guid><pubDate>Sat, 03 Aug 2024 15:05:19 +0000</pubDate></item><item><title>&#x62A;&#x62F;&#x631;&#x64A;&#x628; &#x646;&#x645;&#x648;&#x630;&#x62C; &#x630;&#x643;&#x627;&#x621; &#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A; &#x639;&#x644;&#x649; &#x62A;&#x644;&#x62E;&#x64A;&#x635; &#x627;&#x644;&#x646;&#x635;&#x648;&#x635; &#x628;&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; &#x633;&#x643;&#x631;&#x628;&#x62A;&#x627;&#x62A; &#x627;&#x644;&#x645;&#x643;&#x62A;&#x628;&#x629; Transformers</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-%D9%86%D9%85%D9%88%D8%B0%D8%AC-%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%B9%D9%84%D9%89-%D8%AA%D9%84%D8%AE%D9%8A%D8%B5-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%B3%D9%83%D8%B1%D8%A8%D8%AA%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D9%83%D8%AA%D8%A8%D8%A9-transformers-r2373/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_07/Train-with-a-script.png.6b45a418c8042feabf7a27eede1b48db.png" /></p>
<p>
	تزخر مكتبة المحوّلات Transformers بالسكربتات التوضيحية والأمثلة التي تشرح تدريب نماذج الذكاء الاصطناعي على مختلف المهام بأطر العمل الشهيرة بايتورش PyTorch وتنسرفلو TensorFlow و JAX/Flax، وترتبط هذه الأمثلة <a href="https://github.com/huggingface/transformers/tree/main/examples/research_projects" rel="external nofollow">ببعض المشاريع البحثية</a> و<a href="https://github.com/huggingface/transformers/tree/main/examples/legacy" rel="external nofollow">المساهمات القديمة لمجتمع Hugging Face</a>، لكن لن تعمل هذه الأمثلة بدقة تامة في مشروعك من دون بعض التعديلات فهي في نهاية الأمر لا تخضع للصيانة والتحديث الدوري ومعظمها لا يتوافق مع الإصدارات الحديثة من مكتبة المحوّلات، لذا ستحتاج لتكييفها مع مشروعك.
</p>

<p>
	وبعد <a href="https://academy.hsoub.com/programming/workflow/git/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%B7%D9%84%D8%A8-%D8%B3%D8%AD%D8%A8-%D8%B9%D9%84%D9%89-github-r1581/" rel="">سحب الملف من GitHub</a> يمكنك متابعة قراءة هذا المقال لتتعلم كيفية الاستفادة من السكربتات التدريبية الموجود على منصة Hugging Face وتكييفها لمشروعك، اخترنا هنا سكريبت بسيط لمهمة تلخيص النصوص وسنعرض طريقة التعامل معه في كل من إطاري العمل PyTorch و TensorFlow.
</p>

<h2 id="">
	إعداد بيئة العمل
</h2>

<p>
	الخطوة الأولى لتشغيل أحدث إصدار من السكربتات التوضيحية بنجاح هي <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D9%88%D9%91%D9%84%D8%A7%D8%AA-transformers-r2352/" rel="">تثبيت مكتبة المحوّلات Transformers</a> من المصدر في بيئة افتراضية جديدة كما يلي:
</p>

<pre class="ipsCode">git clone https://github.com/huggingface/transformers
cd transformers
pip install .
</pre>

<p>
	وإذا أردت استخدام أمثلة تناسب الإصدارات القديمة من مكتبة المحوّلات Transformers مثل الإصدار v.4.5.1 يمكنك الاطلاع على <a href="https://github.com/huggingface/transformers/tree/v4.5.1/examples" rel="external nofollow">الرابط</a> وبنفس الطريقة للإصدارات الأخرى.
</p>

<p>
	ثم بَدِّل نسحتك من المكتبة إلى الإصدار الذي اخترته حسب المثال وليكن فرضًا الإصدار v3.5.1:
</p>

<pre class="ipsCode">git checkout tags/v3.5.1
</pre>

<p>
	بعد ضبط الإصدار الصحيح للمكتبة، انتقل إلى مجلد المثال الذي اخترته وثَبِّت متطلباته كما يلي:
</p>

<pre class="ipsCode">pip install -r requirements.txt
</pre>

<h2 id="-1">
	تشغيل السكربت التوضيحي
</h2>

<p>
	يبدأ السكربت بتحميل مجموعة بيانات dataset من <a href="https://huggingface.co/docs/datasets/" rel="external nofollow">مكتبة مجموعات البيانات Datasets</a> ومعالجتها <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D9%85%D8%B9%D8%A7%D9%84%D8%AC%D8%A9-%D8%A7%D9%84%D9%85%D9%8F%D8%B3%D8%A8%D9%82%D8%A9-%D9%84%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%82%D8%A8%D9%84-%D8%AA%D9%85%D8%B1%D9%8A%D8%B1%D9%87%D8%A7-%D9%84%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2365/" rel="">معالجةً مسبقة</a>، ويستخدم بعدها <a href="https://huggingface.co/docs/transformers/main_classes/trainer" rel="external nofollow">المُدَرِّب Trainer</a> لضبط مجموعة البيانات على بنية مناسبة لمهمة التلخيص summarization. يبين المثال التالي كيفية صقل النموذج <a href="https://huggingface.co/google-t5/t5-small" rel="external nofollow">T5-small</a> وتدريبه بدقة fine-tuning على مجموعة البيانات <a href="https://huggingface.co/datasets/cnn_dailymail" rel="external nofollow">CNN/DailyMail</a>، لاحظ وجود الوسيط <code>source_prefix</code> وهو أحد متطلبات للنموذج T5 ويتيح له معرفة طبيعة المهمة التي سيستخدم لأجلها أي التلخيص في حالتنا، لنعرض السكربت الآن بإطاري العمل:
</p>

<p>
	أولًا باستخدام <strong>إطار العمل Pytorch</strong>:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4048_8" style=""><span class="pln">python examples</span><span class="pun">/</span><span class="pln">pytorch</span><span class="pun">/</span><span class="pln">summarization</span><span class="pun">/</span><span class="pln">run_summarization</span><span class="pun">.</span><span class="pln">py \
    </span><span class="pun">--</span><span class="pln">model_name_or_path google</span><span class="pun">-</span><span class="pln">t5</span><span class="pun">/</span><span class="pln">t5</span><span class="pun">-</span><span class="pln">small \
    </span><span class="pun">--</span><span class="pln">do_train \
    </span><span class="pun">--</span><span class="pln">do_eval \
    </span><span class="pun">--</span><span class="pln">dataset_name cnn_dailymail \
    </span><span class="pun">--</span><span class="pln">dataset_config </span><span class="str">"3.0.0"</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">source_prefix </span><span class="str">"summarize: "</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">output_dir </span><span class="pun">/</span><span class="pln">tmp</span><span class="pun">/</span><span class="pln">tst</span><span class="pun">-</span><span class="pln">summarization \
    </span><span class="pun">--</span><span class="pln">per_device_train_batch_size</span><span class="pun">=</span><span class="lit">4</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">per_device_eval_batch_size</span><span class="pun">=</span><span class="lit">4</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">overwrite_output_dir \
    </span><span class="pun">--</span><span class="pln">predict_with_generate</span></pre>

<p>
	ثانيًا باستخدام <strong>إطار العمل TensorFlow</strong>:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4048_10" style=""><span class="pln">python examples</span><span class="pun">/</span><span class="pln">tensorflow</span><span class="pun">/</span><span class="pln">summarization</span><span class="pun">/</span><span class="pln">run_summarization</span><span class="pun">.</span><span class="pln">py  \
    </span><span class="pun">--</span><span class="pln">model_name_or_path google</span><span class="pun">-</span><span class="pln">t5</span><span class="pun">/</span><span class="pln">t5</span><span class="pun">-</span><span class="pln">small \
    </span><span class="pun">--</span><span class="pln">dataset_name cnn_dailymail \
    </span><span class="pun">--</span><span class="pln">dataset_config </span><span class="str">"3.0.0"</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">output_dir </span><span class="pun">/</span><span class="pln">tmp</span><span class="pun">/</span><span class="pln">tst</span><span class="pun">-</span><span class="pln">summarization  \
    </span><span class="pun">--</span><span class="pln">per_device_train_batch_size </span><span class="lit">8</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">per_device_eval_batch_size </span><span class="lit">16</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">num_train_epochs </span><span class="lit">3</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">do_train \
    </span><span class="pun">--</span><span class="pln">do_eval</span></pre>

<h2 id="-2">
	التدريب الموزع والدقة المختلطة
</h2>

<p>
	يدعم المُدَرِّب ميزة التدريب الموزع distributed training أي توزيع التدريب على أكثر من وحدة معالجة، وميزة الدقة المختلطة mixed precision التي تتيح إمكانية العمل على 32 بت أو 16 بت للتسريع، يمكنك تفعيل الميزتين ضمن السكربت بضبط قيم الوسيطين التاليين:
</p>

<ul>
	<li>
		<p>
			أضف الوسيط fp16 لتفعيل ميزة الدقة المختلطة.
		</p>
	</li>
	<li>
		<p>
			حدد عدد وحدات المعالجة الرسومية (GPUs) التي تريد استخدامها ضمن الوسيط <code>nproc_per_node</code>.
		</p>
	</li>
</ul>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4048_12" style=""><span class="pln">torchrun \
    </span><span class="pun">--</span><span class="pln">nproc_per_node </span><span class="lit">8</span><span class="pln"> pytorch</span><span class="pun">/</span><span class="pln">summarization</span><span class="pun">/</span><span class="pln">run_summarization</span><span class="pun">.</span><span class="pln">py \
    </span><span class="pun">--</span><span class="pln">fp16 \
    </span><span class="pun">--</span><span class="pln">model_name_or_path google</span><span class="pun">-</span><span class="pln">t5</span><span class="pun">/</span><span class="pln">t5</span><span class="pun">-</span><span class="pln">small \
    </span><span class="pun">--</span><span class="pln">do_train \
    </span><span class="pun">--</span><span class="pln">do_eval \
    </span><span class="pun">--</span><span class="pln">dataset_name cnn_dailymail \
    </span><span class="pun">--</span><span class="pln">dataset_config </span><span class="str">"3.0.0"</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">source_prefix </span><span class="str">"summarize: "</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">output_dir </span><span class="pun">/</span><span class="pln">tmp</span><span class="pun">/</span><span class="pln">tst</span><span class="pun">-</span><span class="pln">summarization \
    </span><span class="pun">--</span><span class="pln">per_device_train_batch_size</span><span class="pun">=</span><span class="lit">4</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">per_device_eval_batch_size</span><span class="pun">=</span><span class="lit">4</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">overwrite_output_dir \
    </span><span class="pun">--</span><span class="pln">predict_with_generate</span></pre>

<p>
	أما إطار TensorFlow فيستخدم التدريب الموزع افتراضيًا <a href="https://www.tensorflow.org/guide/distributed_training#mirroredstrategy" rel="external nofollow">باستراتيجية خاصة تدعى MirroredStrategy</a> ويوزع العمل على كافة وحدات GPU المتوفرة للتدريب من دون الحاجة لضبط أي وسيط إضافي بهذا الخصوص ضمن السكربت.
</p>

<h2 id="tpu">
	تشغيل السكربت باستخدام وحدات TPU
</h2>

<p>
	إن تسريع الأداء هو الهدف الكامن وراء تصميم وحدات معالجة <a href="https://ar.wikipedia.org/wiki/%D9%85%D9%88%D8%AA%D8%B1" rel="external nofollow">المُوترات</a> أو التنسورات Tensors التي تدعى اختصارًا <strong>TPUs</strong>، ويساعدك مترجم <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%AD%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%85%D8%B4%D8%A7%D8%B9%D8%B1-%D9%81%D9%8A-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D8%A7%D9%84%D8%B9%D8%B1%D8%A8%D9%8A%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%B9%D9%85%D9%8A%D9%82-r1476/" rel="">التعلُّم العميق</a> <a href="https://www.tensorflow.org/xla" rel="external nofollow">XLA compiler</a> على استخدامها مع إطار العمل PyTorch (يمكنك معرفة المزيد عنها بمطالعة هذا <a href="https://github.com/pytorch/xla/blob/master/README.md" rel="external nofollow">الرابط</a>).
</p>

<p>
	الآن افتح السكربت <code>xla_spawn.py</code> وحدد عدد نوى معالجة المُوترات TPU cors التي تود استخدامها بذكرها ضمن الوسيط <code>num_cores</code> وفق التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4048_17" style=""><span class="pln">python xla_spawn</span><span class="pun">.</span><span class="pln">py </span><span class="pun">--</span><span class="pln">num_cores </span><span class="lit">8</span><span class="pln"> \
    summarization</span><span class="pun">/</span><span class="pln">run_summarization</span><span class="pun">.</span><span class="pln">py \
    </span><span class="pun">--</span><span class="pln">model_name_or_path google</span><span class="pun">-</span><span class="pln">t5</span><span class="pun">/</span><span class="pln">t5</span><span class="pun">-</span><span class="pln">small \
    </span><span class="pun">--</span><span class="pln">do_train \
    </span><span class="pun">--</span><span class="pln">do_eval \
    </span><span class="pun">--</span><span class="pln">dataset_name cnn_dailymail \
    </span><span class="pun">--</span><span class="pln">dataset_config </span><span class="str">"3.0.0"</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">source_prefix </span><span class="str">"summarize: "</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">output_dir </span><span class="pun">/</span><span class="pln">tmp</span><span class="pun">/</span><span class="pln">tst</span><span class="pun">-</span><span class="pln">summarization \
    </span><span class="pun">--</span><span class="pln">per_device_train_batch_size</span><span class="pun">=</span><span class="lit">4</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">per_device_eval_batch_size</span><span class="pun">=</span><span class="lit">4</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">overwrite_output_dir \
    </span><span class="pun">--</span><span class="pln">predict_with_generate</span></pre>

<p>
	أما إطار العمل TensorFlow فيستخدم استراتيجيةً اسمها <a href="https://www.tensorflow.org/guide/distributed_training#tpustrategy" rel="external nofollow">TPUStrategy</a> لتدريب النماذج اعتمادًا على وحدات TPU، ويتعين عليك تحديد اسم المورد الحاسوبي resource الذي ستستخدمه ضمن الوسيط <code>tpu</code> في السكربت كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4048_19" style=""><span class="pln">python run_summarization</span><span class="pun">.</span><span class="pln">py  \
    </span><span class="pun">--</span><span class="pln">tpu name_of_tpu_resource \
    </span><span class="pun">--</span><span class="pln">model_name_or_path google</span><span class="pun">-</span><span class="pln">t5</span><span class="pun">/</span><span class="pln">t5</span><span class="pun">-</span><span class="pln">small \
    </span><span class="pun">--</span><span class="pln">dataset_name cnn_dailymail \
    </span><span class="pun">--</span><span class="pln">dataset_config </span><span class="str">"3.0.0"</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">output_dir </span><span class="pun">/</span><span class="pln">tmp</span><span class="pun">/</span><span class="pln">tst</span><span class="pun">-</span><span class="pln">summarization  \
    </span><span class="pun">--</span><span class="pln">per_device_train_batch_size </span><span class="lit">8</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">per_device_eval_batch_size </span><span class="lit">16</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">num_train_epochs </span><span class="lit">3</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">do_train \
    </span><span class="pun">--</span><span class="pln">do_eval</span></pre>

<h2 id="accelerate">
	تشغيل السكربت مع المكتبة Accelerate
</h2>

<p>
	<a href="https://huggingface.co/docs/accelerate" rel="external nofollow">مكتبة Accelerate</a> هي مكتبة خاصة بإطار العمل بايتورش PyTorch فقط، حيث توفر أسلوبًا موحدًا لتدريب نموذج الذكاء الاصطناعي نفسه بإعدادات مختلفة (سواء بالاعتماد على وحدة المعالجة المركزية CPU فقط، أو على أكثر من وحدة معالجة رسومية GPU، أو على وحدات معالجة الموترات TPU) مع الحفاظ على وضوح حلقة التدريب، لكن في البداية ينبغي لنا التأكد من تثبيت المكتبة Accelerate:
</p>

<p>
	<strong>تنويه</strong>: تتطور مكتبة Accelerate باستمرار لذا احرص على تثبيتها من مستودعها على git.
</p>

<pre class="ipsCode">pip install git+https://github.com/huggingface/accelerate
</pre>

<p>
	سنستخدم الآن السكربت <code>run_summarization_no_trainer.py</code> الذي يتضمن الإعدادات الخاصة باستخدام مكتبة Accelerate بدلًا من السكربت السابق <code>run_summarization.py</code>، يمكنك تمييز السكربتات الخاصة بمكتبة Accelerate بوجود الملف <code>Task_no_trainer.py</code> ضمن مجلداتها. ابدأ بتنفيذ الأمر التالي الخاص بإنشاء ملف الإعدادات وحفظه:
</p>

<pre class="ipsCode">accelerate config
</pre>

<p>
	ثم اختبر ملف الإعدادات للتأكد من سلامته:
</p>

<pre class="ipsCode">accelerate test
</pre>

<p>
	أصبحنا جاهزين لبدء التدريب:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4048_23" style=""><span class="pln">accelerate launch run_summarization_no_trainer</span><span class="pun">.</span><span class="pln">py \
    </span><span class="pun">--</span><span class="pln">model_name_or_path google</span><span class="pun">-</span><span class="pln">t5</span><span class="pun">/</span><span class="pln">t5</span><span class="pun">-</span><span class="pln">small \
    </span><span class="pun">--</span><span class="pln">dataset_name cnn_dailymail \
    </span><span class="pun">--</span><span class="pln">dataset_config </span><span class="str">"3.0.0"</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">source_prefix </span><span class="str">"summarize: "</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">output_dir </span><span class="pun">~/</span><span class="pln">tmp</span><span class="pun">/</span><span class="pln">tst</span><span class="pun">-</span><span class="pln">summarization</span></pre>

<h2 id="-3">
	استخدام مجموعة بيانات مخصصة مع سكربت التلخيص
</h2>

<p>
	يمكنك استخدام مجموعة بيانات مخصصة مع سكربت التلخيص التوضيحي الذي اخترناه هنا، بشرط أن تكون بصيغة CSV أو <a href="https://academy.hsoub.com/programming/javascript/%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D9%85%D8%B9-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D8%A8%D8%B5%D9%8A%D8%BA%D8%A9-json-%D9%81%D9%8A-%D8%AC%D8%A7%D9%81%D8%A7-%D8%B3%D9%83%D8%B1%D9%8A%D8%A8%D8%AA-r2318/" rel="">JSON</a> وستحتاج أيضًا لضبط بعض الوسطاء الإضافية لتتناسب مع مجموعة بياناتك وفق التالي:
</p>

<ul>
	<li>
		<p>
			يحدد كل من الملف <code>Train_file</code> وملف <code>validation_file</code> مسار حفظ ملفات التدريب والتحقق على التوالي.
		</p>
	</li>
	<li>
		<p>
			يشير <code>text_columnd</code> إلى الدخل أو النص المطلوب تلخيصه.
		</p>
	</li>
	<li>
		<p>
			يَدُّل على الخرج <code>ٍSummary_column</code> على الخرج أو النص الهدف بعد التلخيص.
		</p>
	</li>
</ul>

<p>
	وستكون الصيغة النهائية لسكربت التلخيص مع استخدام مجموعة بيانات مخصصة على النحو التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4048_27" style=""><span class="pln">python examples</span><span class="pun">/</span><span class="pln">pytorch</span><span class="pun">/</span><span class="pln">summarization</span><span class="pun">/</span><span class="pln">run_summarization</span><span class="pun">.</span><span class="pln">py \
    </span><span class="pun">--</span><span class="pln">model_name_or_path google</span><span class="pun">-</span><span class="pln">t5</span><span class="pun">/</span><span class="pln">t5</span><span class="pun">-</span><span class="pln">small \
    </span><span class="pun">--</span><span class="pln">do_train \
    </span><span class="pun">--</span><span class="pln">do_eval \
    </span><span class="pun">--</span><span class="pln">train_file path_to_csv_or_jsonlines_file \
    </span><span class="pun">--</span><span class="pln">validation_file path_to_csv_or_jsonlines_file \
    </span><span class="pun">--</span><span class="pln">text_column text_column_name \
    </span><span class="pun">--</span><span class="pln">summary_column summary_column_name \
    </span><span class="pun">--</span><span class="pln">source_prefix </span><span class="str">"summarize: "</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">output_dir </span><span class="pun">/</span><span class="pln">tmp</span><span class="pun">/</span><span class="pln">tst</span><span class="pun">-</span><span class="pln">summarization \
    </span><span class="pun">--</span><span class="pln">overwrite_output_dir \
    </span><span class="pun">--</span><span class="pln">per_device_train_batch_size</span><span class="pun">=</span><span class="lit">4</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">per_device_eval_batch_size</span><span class="pun">=</span><span class="lit">4</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">predict_with_generate</span></pre>

<h2 id="-4">
	اختبار السكربت على عينة من البيانات
</h2>

<p>
	يُعدّ اختبار السكربتات على عينة صغيرة من مجموعة البيانات أسلوبًا ناجحًا للتأكد من صحتها وفعاليتها قبل تطبيقها على كامل البيانات، فتجريب السكربت على dataset كاملة يستغرق وقتًا طويلًا ربما ساعات قبل حصولك على النتيجة، ويساعدك الوسطاء الثلاثة الموجودين أدناه على اقتطاع جزء من مجموعة البيانات حسب قيمة كل وسيط ليُنَفَذ السكربت على جزء العينات المقتطع فقط من مجموعة البيانات بدلًا من تنفيذه على كامل المجموعة:
</p>

<ul>
	<li>
		<p>
			<code>max_train_samples</code>.
		</p>
	</li>
	<li>
		<p>
			<code>max_eval_samples</code>.
		</p>
	</li>
	<li>
		<p>
			<code>max_predict_samples</code>.
		</p>
	</li>
</ul>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4048_29" style=""><span class="pln">python examples</span><span class="pun">/</span><span class="pln">pytorch</span><span class="pun">/</span><span class="pln">summarization</span><span class="pun">/</span><span class="pln">run_summarization</span><span class="pun">.</span><span class="pln">py \
    </span><span class="pun">--</span><span class="pln">model_name_or_path google</span><span class="pun">-</span><span class="pln">t5</span><span class="pun">/</span><span class="pln">t5</span><span class="pun">-</span><span class="pln">small \
    </span><span class="pun">--</span><span class="pln">max_train_samples </span><span class="lit">50</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">max_eval_samples </span><span class="lit">50</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">max_predict_samples </span><span class="lit">50</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">do_train \
    </span><span class="pun">--</span><span class="pln">do_eval \
    </span><span class="pun">--</span><span class="pln">dataset_name cnn_dailymail \
    </span><span class="pun">--</span><span class="pln">dataset_config </span><span class="str">"3.0.0"</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">source_prefix </span><span class="str">"summarize: "</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">output_dir </span><span class="pun">/</span><span class="pln">tmp</span><span class="pun">/</span><span class="pln">tst</span><span class="pun">-</span><span class="pln">summarization \
    </span><span class="pun">--</span><span class="pln">per_device_train_batch_size</span><span class="pun">=</span><span class="lit">4</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">per_device_eval_batch_size</span><span class="pun">=</span><span class="lit">4</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">overwrite_output_dir \
    </span><span class="pun">--</span><span class="pln">predict_with_generate</span></pre>

<p>
	<strong>ملاحظة</strong>: لا تتيح جميع السكربتات التوضيحية الموجودة في مكتبة المحوّلات إمكانية استخدام الوسيط <code>max_predict_samples</code> لذا ننصحك بالتحقق أولًا من توفر هذه الإمكانية في السكربت بإضافة الوسيط <code>h-</code> وفق التالي:
</p>

<pre class="ipsCode">examples/pytorch/summarization/run_summarization.py -h
</pre>

<h2 id="-5">
	استئناف التدريب من نقطة تحقق سابقة
</h2>

<p>
	قد يتوقف تدريب النموذج لأسباب غير متوقعة؛ هل سبق أن تعرضت لذلك؟ يساعدك خيار استئناف التدريب من نقطة تحقق checkpoint سابقة على متابعة تدريب نموذجك من حيث توقف دون الحاجة لإعادته من البداية، ويوجد طريقتان لإجراء ذلك:
</p>

<p>
	سنستخدم في الطريقة الأولى الوسيط <code>output_dir Previous_output_dir</code> لاستئناف التدريب من أحدث نقطة تحقق متوفرة ومخزنة في المجلد <code>output_dir</code>، لكن علينا حذف الأمر <code>overwrite_output_dir</code> من السكربت في هذه الحالة:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4048_31" style=""><span class="pln">python examples</span><span class="pun">/</span><span class="pln">pytorch</span><span class="pun">/</span><span class="pln">summarization</span><span class="pun">/</span><span class="pln">run_summarization</span><span class="pun">.</span><span class="pln">py
    </span><span class="pun">--</span><span class="pln">model_name_or_path google</span><span class="pun">-</span><span class="pln">t5</span><span class="pun">/</span><span class="pln">t5</span><span class="pun">-</span><span class="pln">small \
    </span><span class="pun">--</span><span class="pln">do_train \
    </span><span class="pun">--</span><span class="pln">do_eval \
    </span><span class="pun">--</span><span class="pln">dataset_name cnn_dailymail \
    </span><span class="pun">--</span><span class="pln">dataset_config </span><span class="str">"3.0.0"</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">source_prefix </span><span class="str">"summarize: "</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">output_dir </span><span class="pun">/</span><span class="pln">tmp</span><span class="pun">/</span><span class="pln">tst</span><span class="pun">-</span><span class="pln">summarization \
    </span><span class="pun">--</span><span class="pln">per_device_train_batch_size</span><span class="pun">=</span><span class="lit">4</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">per_device_eval_batch_size</span><span class="pun">=</span><span class="lit">4</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">output_dir previous_output_dir \
    </span><span class="pun">--</span><span class="pln">predict_with_generate</span></pre>

<p>
	وفي الطريقة الثانية سيُستأنف التدريب انطلاقًا من نقطة التحقق الموجودة في مجلد محدد وذلك باستخدام الوسيط <code>resume_from_checkpoint path_to_specific_checkpoint</code> وفق التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4048_33" style=""><span class="pln">python examples</span><span class="pun">/</span><span class="pln">pytorch</span><span class="pun">/</span><span class="pln">summarization</span><span class="pun">/</span><span class="pln">run_summarization</span><span class="pun">.</span><span class="pln">py
    </span><span class="pun">--</span><span class="pln">model_name_or_path google</span><span class="pun">-</span><span class="pln">t5</span><span class="pun">/</span><span class="pln">t5</span><span class="pun">-</span><span class="pln">small \
    </span><span class="pun">--</span><span class="pln">do_train \
    </span><span class="pun">--</span><span class="pln">do_eval \
    </span><span class="pun">--</span><span class="pln">dataset_name cnn_dailymail \
    </span><span class="pun">--</span><span class="pln">dataset_config </span><span class="str">"3.0.0"</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">source_prefix </span><span class="str">"summarize: "</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">output_dir </span><span class="pun">/</span><span class="pln">tmp</span><span class="pun">/</span><span class="pln">tst</span><span class="pun">-</span><span class="pln">summarization \
    </span><span class="pun">--</span><span class="pln">per_device_train_batch_size</span><span class="pun">=</span><span class="lit">4</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">per_device_eval_batch_size</span><span class="pun">=</span><span class="lit">4</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">overwrite_output_dir \
    </span><span class="pun">--</span><span class="pln">resume_from_checkpoint path_to_specific_checkpoint \
    </span><span class="pun">--</span><span class="pln">predict_with_generate</span></pre>

<h2 id="-6">
	شارك نموذجك
</h2>

<p>
	يمكنك أن ترفع السكربتات التوضيحية لنموذجك النهائي إلى <a href="https://huggingface.co/models" rel="external nofollow">مستودع النماذج Model Hub</a> على منصة Hugging Face بعد انتهائك من استخدام السكربت، لكن عليك أولًا تسجيل حساب على المنصة وفق التالي:
</p>

<pre class="ipsCode">huggingface-cli login
</pre>

<p>
	ثم إضافة الوسيط <code>Push_to_hub</code> إلى السكربت، يؤدي ذلك إلى إنشاء مستودع خاص بالمستخدم على Hugging Face يُسمى باسم الدخول الخاص به (أي username) مع اسم المجلد المُحدد في <code>put_dir</code>.
</p>

<p>
	يمكنك تغيير آلية التسمية واختيار الاسم الذي تريده لمستودعك باستخدام الوسيط <code>Push_to_hub_model_id</code> وسيُدرج تلقائيًا تحت المساحة الاسمية namespace المخصصة لك على المنصة.
</p>

<p>
	يبين المثال التالي طريقة تحميل النموذج إلى مستودعٍ محدد:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4048_35" style=""><span class="pln">python examples</span><span class="pun">/</span><span class="pln">pytorch</span><span class="pun">/</span><span class="pln">summarization</span><span class="pun">/</span><span class="pln">run_summarization</span><span class="pun">.</span><span class="pln">py
    </span><span class="pun">--</span><span class="pln">model_name_or_path google</span><span class="pun">-</span><span class="pln">t5</span><span class="pun">/</span><span class="pln">t5</span><span class="pun">-</span><span class="pln">small \
    </span><span class="pun">--</span><span class="pln">do_train \
    </span><span class="pun">--</span><span class="pln">do_eval \
    </span><span class="pun">--</span><span class="pln">dataset_name cnn_dailymail \
    </span><span class="pun">--</span><span class="pln">dataset_config </span><span class="str">"3.0.0"</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">source_prefix </span><span class="str">"summarize: "</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">push_to_hub \
    </span><span class="pun">--</span><span class="pln">push_to_hub_model_id finetuned</span><span class="pun">-</span><span class="pln">t5</span><span class="pun">-</span><span class="pln">cnn_dailymail \
    </span><span class="pun">--</span><span class="pln">output_dir </span><span class="pun">/</span><span class="pln">tmp</span><span class="pun">/</span><span class="pln">tst</span><span class="pun">-</span><span class="pln">summarization \
    </span><span class="pun">--</span><span class="pln">per_device_train_batch_size</span><span class="pun">=</span><span class="lit">4</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">per_device_eval_batch_size</span><span class="pun">=</span><span class="lit">4</span><span class="pln"> \
    </span><span class="pun">--</span><span class="pln">overwrite_output_dir \
    </span><span class="pun">--</span><span class="pln">predict_with_generate</span></pre>

<h2 id="-7">
	الخلاصة
</h2>

<p>
	شرحنا في مقال اليوم كيفية تدريب نموذج ذكاء اصطناعي على مهمة تلخيص النصوص باستخدام مكتبة المحولات Transformers وشرحنا خطوات إعداد بيئة العمل بداية من تثبيت هذه المكتبة من المصدر، ثم  تشغيل سكربت تلخيص نصوص بسيط باستخدام إطاري عمل PyTorch و TensorFlow، كما وضحنا تقنيات تدريب وتسريع وتكييف السكربت ومشاركة النموذج المدرب على منصة Hugging Face.
</p>

<p>
	ترجمة -وبتصرف- لقسم <a href="https://huggingface.co/docs/transformers/run_scripts#train-with-a-script" rel="external nofollow">Train with a script</a> من توثيقات Hugging Face.
</p>

<p>
	اقرأ أيضًا
</p>

<ul>
	<li>
		المقال السابق: <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D8%A7%D9%84%D8%B5%D9%82%D9%84-fine-tune-%D9%84%D9%86%D9%85%D9%88%D8%B0%D8%AC-%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%85%D9%8F%D8%AF%D9%8E%D8%B1%D9%91%D9%8E%D8%A8%D9%92-%D9%85%D9%8F%D8%B3%D8%A8%D9%82%D9%8B%D8%A7-r2367/" rel="">طريقة الصقل Fine-Tune لنموذج ذكاء اصطناعي مُدَرَّبْ مُسبقًا</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D9%85%D8%B9%D8%A7%D9%84%D8%AC%D8%A9-%D8%A7%D9%84%D9%85%D9%8F%D8%B3%D8%A8%D9%82%D8%A9-%D9%84%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%82%D8%A8%D9%84-%D8%AA%D9%85%D8%B1%D9%8A%D8%B1%D9%87%D8%A7-%D9%84%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2365/" rel="">المعالجة المُسبقة للبيانات قبل تمريرها لنماذج الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D9%84%D8%AE%D9%8A%D8%B5-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2315/" rel="">تلخيص النصوص باستخدام الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D9%87%D9%85-%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2372/" rel="">أهم مشاريع عملية عن الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%B5%D8%B7%D9%84%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-r2363/" rel="">مصطلحات الذكاء الاصطناعي للمبتدئين</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2373</guid><pubDate>Sun, 28 Jul 2024 15:00:00 +0000</pubDate></item><item><title>&#x62A;&#x639;&#x631;&#x641; &#x639;&#x644;&#x649; &#x623;&#x647;&#x645; &#x645;&#x634;&#x627;&#x631;&#x64A;&#x639; &#x627;&#x644;&#x630;&#x643;&#x627;&#x621; &#x627;&#x644;&#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A;</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D9%87%D9%85-%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2372/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_07/-----.png.2a0626549f12712a7557af6084475633.png" /></p>
<p>
	إنَّ التطبيق العملي أمر ضروري لإتقان أي مجال تقني ولا سيما مجال الذكاء الاصطناعي، فإذا كنت مهتمًا بالعمل في هذا التخصص وبدأت تعلمه بالفعل لكنك لاتزال مبتدئًا ولا تعرف ماهي مشاريع الذكاء الاصطناعي التي يمكنك تنفيذها لتطبيق معلوماتك النظرية وتوظيفها في مشاريع عملية تحسن خبراتك وتعزز معرض أعمالك فهذا المقال لك، إذ نقترح لك فيه مجموعة من المشاريع العملية متفاوتة الصعوبة في مجالات الذكاء الاصطناعي المختلفة لتساعدك على تحسين مستواك وصقل مهاراتك.
</p>

<h2 id="-1">
	مشاريع ذكاء اصطناعي في مجال تعلم الآلة
</h2>

<p>
	يعد <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9/" rel="">تعلم الآلة Machine Learning (ML)</a> من أهم المجالات الفرعية لتخصص <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">الذكاء الاصطناعي Artificial Intelligence (AI)</a> فهو مجالٌ يسمح للأجهزة الحاسوبية بالتعلم من البيانات وحل المشكلات واتخاذ القرارات دون الحاجة إلى <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-r662/" rel="">البرمجة</a> الصريحة لكل جزء من أجزاء المشروع، ويهتم مهندسو تعلم الآلة بتطوير <a href="https://academy.hsoub.com/programming/advanced/%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A7%D8%AA/" rel="">خوارزميات</a> حاسوبية تتطور ذاتيًا باستخدام البيانات.
</p>

<p>
	لمجال تعلم الآلة استخدامات وتطبيقات عديدة، من بينها أنظمة التوصية المدمجة في منصات عديدة، كالمتاجر الإلكترونية التي تقترح عليك سلعًا تلائمك، ومنصات الفيديو التي تقترح عليك مقاطع جديدة بناءً على تاريخ مشاهداتك، ومواقع التواصل الاجتماعي التي تُظهِرُ لك منشوراتٍ تبعًا لإعجاباتك وتعليقاتك السابقة.
</p>

<p>
	ومن أهم مشاريع الذكاء الاصطناعي المقترحة لمهندسي تعلم الآلة:
</p>

<ol>
	<li>
		مشروع تصنيف صور بالذكاء الاصطناعي.
	</li>
	<li>
		مشروع توقع أسعار العقارات بالذكاء الاصطناعي.
	</li>
	<li>
		مشروع كشف الاحتيال المالي بالذكاء الاصطناعي.
	</li>
</ol>

<p>
	لنشرح المزيد عن كل مشروع من هذه المشاريع وآلية تنفيذه.
</p>

<h3 id="-2">
	1. مشروع ذكاء اصطناعي لتصنيف صور
</h3>

<p>
	<strong>مستوى الصعوبة:</strong> سهل.
</p>

<p>
	يعد نموذج <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B5%D9%86%D9%8A%D9%81-%D8%A7%D9%84%D8%B5%D9%88%D8%B1-%D9%88%D8%A7%D9%84%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D9%88%D8%AC%D9%87-%D9%81%D9%8A-%D9%85%D8%AC%D8%A7%D9%84-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r1197/" rel="">تصنيف الصور</a> باستخدام خوارزميات تعلم الآلة من مشاريع الذكاء الاصطناعي السهلة المناسبة للمبتدئين، إذ تقوم فكرة المشروع على بناء نموذج ذكاء اصطناعي يستطيع التمييز بين صورٍ مختلفة لأنواعٍ متعددةٍ من أشياء محددة، مثل: نموذج يميز بين صور الأنواع المختلفة من الحيوانات، ويكون هذا بمنح النموذج قاعدة بيانات بها عدد كبير من الصور المرتبة لكل نوع من الأنواع التي نريد أن يميز النموذج بينها مع نص يوضح ماهية كل نوع ومواصفاته، كأن نمنح النموذج صورًا لكلابٍ وقططٍ مع التوضيح النَّصي أنَّ هذه كلاب وقطط، ويتدرب النموذج على هذه البيانات محاولًا اكتشاف أنماط وسمات كل نوع، ففي مثالنا يحاول النموذج اكتشاف صفات الكلب والقطة، ثم يكون قادرًا على التعرف عليهما من صور أخرى لم يتدرب عليها قبلًا.
</p>

<p>
	نمر خلال عملية تطوير نموذج تصنيف صور على خطوات متعددة، وهي:
</p>

<ol>
	<li>
		<strong>جمع البيانات:</strong> يمكنك جمع الصور التي سيتدرب عليها النموذج بنفسك، كما يمكنك العثور على مجموعة بيانات Dataset جاهزة عبر الإنترنت، مثل مجموعات بيانات <a href="https://www.cs.toronto.edu/~kriz/cifar.html" rel="external nofollow">CIFAR-10</a>.
	</li>
	<li>
		<strong>معالجة البيانات:</strong> إذا جمعت البيانات التي سيتدرب النموذج عليها بنفسك فعليك معالجتها وتصنيفها ووضع صور الكلاب تحت تصنيف واحد وتوضح أنَّ هذه صور كلاب، وتضع صور القطط تحت تصنيف واحد وتوضح أنها صور قطط، أمَّا إذا حمَّلت مجموعة بيانات جاهزة من الإنترنت فيمكنك الانتقال للخطوة التالية مباشرةً.
	</li>
	<li>
		<strong>بناء النموذج:</strong> يشير بناء النموذج إلى عملية إنشاء الشبكة العصبية Neural Network التي ستتدرب على البيانات وتتمكن من تصنيف الصور بعد التدريب، وغالبًا ما تستخدم في هذه المرحلة أطر عمل جاهزة لتسهيل وتسريع عملية التطوير مثل تينسرفلو TensorFlow.
	</li>
	<li>
		<strong>تدريب النموذج:</strong> تمنح النموذج مجموعة البيانات الجاهزة ليبدأ النموذج في محاولة استكشاف الأنماط بين الصور، ويسعى لفهم سبب وضع كل صورة ضمن تصنيفها، فيبدأ بفحص صور القطط ويحاول فهم السمات المميزة لكل قطة حتى يتمكن من التعرف على صور القطط خارج مجموعة البيانات التي تدرَّب عليها.
	</li>
	<li>
		<strong>اختبار النموذج:</strong> هنا يحين موعد اختبار مدى نجاح المشروع، فتسأل النموذج عن صور لكلابٍ وقططٍ أو أيٍّ كان ما درَّبتَ نموذجكَ عليه، على أن تكون هذه الصور خارج مجموعة البيانات التي تدرَّب عليها النموذج، فإن أجاب بدقة فقد نجح المشروع، وإن أخطأ فتأكد من دقة تصنيفك للبيانات أولًا، فإن كانت مصنفة وموصوفة بدقة فامنحه مزيدًا من البيانات للتدرب عليها ثم أعد اختباره.
	</li>
</ol>

<h3 id="-3">
	2. مشروع توقع أسعار العقارات
</h3>

<p>
	<strong>مستوى الصعوبة:</strong> متوسط.
</p>

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

<p>
	لا تختلف خطوات تنفيذ مشروع نموذج توقع أسعار العقارات كثيرًا عن خطوات تنفيذ مشروع نموذج تصنيف الصور، وكذا سائر مشاريع الذكاء الاصطناعي في مجال تعلم الآلة، فكلُّ مشاريع تعلم الآلة تتفق في خطوات جمع البيانات ومعالجتها وبناء النموذج وتدريبه واختباره، ولكن تختلف المشاريع فيما بينها في أحجام البيانات ومدى تعقيدها، ووظائف النموذج ومدى تعقيد خوارزمياته وطريقة تعامله مع البيانات وتعلمه منها.
</p>

<p>
	يمكنك في مرحلة جمع البيانات لهذا المشروع الاستعانة بمجموعات البيانات التي توفرها المواقع الرسمية للحكومات حول الإسكان، أو البحث في مواقع العقارات لجمع البيانات المُرادة، ثم معالجة بياناتك وتنظيفها، فإذا كانت هنالك بعض المعلومات المفقودة كمساحة عقار أو ما شابه فيمكنك ملؤها بمتوسط المساحات أو أن تحذف هذه القطعة من البيانات.
</p>

<p>
	ينصح في مرحلة بناء النموذج استخدام خوارزميات الانحدار الخطي Linear Regression فهي قادرة على اكتشاف العلاقات بين البيانات المختلفة كالعلاقة بين مساحة العقار وموقعه وسعره، كما يمكنك الاستعانة بمكتبات التحليل التنبؤي للبيانات مثل مكتبة ساي كيت ليرن  Scikit-Learn المكتوبة بلغة <a href="https://academy.hsoub.com/python/" rel="">بايثون</a>.
</p>

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

<h3 id="-4">
	3. مشروع كشف الاحتيال المالي
</h3>

<p>
	<strong>مستوى الصعوبة:</strong> متقدم.
</p>

<p>
	تقع نماذج الكشف على الاحتيال ضمن أهم مشاريع الذكاء الاصطناعي، ولا سيما تلك المتعلقة بالاحتيال المالي، حيث تساعد هذه النماذج على كشف العمليات الاحتيالية في المعاملات المالية بناءً على معطيات عديدة، منها مثلًا التاريخ الإنفاقي للعميل، فإن أُجريَت عملية مالية مفاجئة بمبلغ أعلى بكثيرٍ من متوسط إنفاق العميل تُصنَّف العملية احتيالًا، وكذلك إذا تتابعت العديد من العمليات دون فروق زمنية واسعة تصنفها نماذج الكشف عن الاحتيال كعملياتٍ احتيالية.
</p>

<p>
	تكمن صعوبة تطوير مشروع ذكاء اصطناعي للكشف عن الاحتيال في صعوبة جمع ومعالجة البيانات التي سيتدرب عليها النموذج، حيث تحتاج لإنشاء مجموعة بيانات تحتوي على عدة تواريخ إنفاقية مع تفاصيل عن عملائها، وإضافة مجموعة من العمليات إلى مجموعة البيانات هذه ثم تصنيفها كعملياتٍ آمنة وعملياتٍ احتيالية، ثم ومعالجة البيانات والتأكد من اكتمال الخانات وعدم فراغ أيٍّ منها.
</p>

<p>
	يمكنك استخدام عدة خوازرميات في تطوير نموذج الكشف عن الاحتيال، مثل خوارزمية الانحدار اللوجستي Logistic Regression التي تستطيع توقع احتماليات الاحتيال في العمليات المالية بناءً على المدخلات، كما يمكنك استخدام خوارزمية الغابة العشوائية Random Forest التي تستطيع اكتشاف العمليات المشبوهة والاحتيالية عن الطبيعية بدقة كبيرة، ويوجد خورازميات أخرى تفيد في هذا المجال مثل خوارزمية تعزيز التدرج Gradient Boosting.
</p>

<p>
	بعد كتابة خوارزميات النموذج عليك تزويده بالبيانات ليتدرب عليها ويكتشف العمليات الاحتيالية من بين تاريخ العمليات لكل بطاقة أو حساب موجود في مجموعة البيانات، وما إن ينتهي من التدرب على البيانات يمكنك حينئذٍ اختباره على معاملات مالية جديدة.
</p>

<h2 id="-5">
	مشاريع ذكاء اصطناعي في مجال معالجة اللغات الطبيعية
</h2>

<p>
	يعد مجال معالجة اللغات الطبيعية Natural Language Processing (NLP)‎ واحدًا من المجالات الفرعية الحيوية في <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">الذكاء الاصطناعي</a>، وهو يختص بتمكين الآلات والحواسيب من فهم اللغات البشرية، كالعربية والإنجليزية وغيرها، سواءً كانت اللغة مدخلة نصيًا أو صوتيًا وله تطبيقات عديدة منتشرة، بدءًا من روبوتات الدردشة وأشهرها <a href="https://academy.hsoub.com/apps/web/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A8%D9%88%D8%AA-%D8%A7%D9%84%D9%85%D8%AD%D8%A7%D8%AF%D8%AB%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D9%8A-%D8%B4%D8%A7%D8%AA-%D8%AC%D9%8A-%D8%A8%D9%8A-%D8%AA%D9%8A-chatgpt-r863/" rel="">شات جي بي تي ChatGPT</a> وجوجل جيميني Google Gemini، مرورًا بالمساعدين الصوتيين مثل مساعد جوجل Google Assistant وأليكسا Alexa وسيري Siri، وصولًا إلى أدوات <a href="https://academy.hsoub.com/apps/cat/" rel="">الترجمة بمساعدة الحاسوب</a> وأهمها ترجمة جوجل Google Translation.
</p>

<p>
	تتعدد مشاريع الذكاء الاصطناعي المقترحة لمهندسي معالجة اللغات الطبيعية، ومنها:
</p>

<ol>
	<li>
		مشروع روبوت دردشة لخدمة العملاء باستخدام الذكاء الاصطناعي.
	</li>
	<li>
		مشروع ذكاء اصطناعي لتحليل مشاعر جمهور مواقع التواصل الاجتماعي.
	</li>
	<li>
		مشروع ذكاء اصطناعي للترجمة الآلية.
	</li>
</ol>

<p>
	لنوضح المزيد حول كل مشروع من هذه المشاريع وآلية تنفيذه ومستوى صعوبته.
</p>

<h3 id="-6">
	1. مشروع روبوت دردشة لخدمة العملاء بالذكاء الاصطناعي
</h3>

<p>
	<strong>مستوى الصعوبة:</strong> سهل.
</p>

<p>
	يعد روبوت الدردشة لخدمة العملاء مشروع ذكاء اصطناعي للمبتدئين، ويتمحور بشكلٍ أساسيٍّ حول بناء روبوت دردشة يفهم استفسارات العملاء ويجيب عليها تلقائيًا بإجاباتٍ واضحةٍ كافيةٍ صحيحةٍ، ويعتمد روبوت الدردشة لخدمة العملاء على خوارزميات معالجة اللغات الطبيعية في المقام الأول، ثم على خوارزميات تعلُّم الآلة في المقام الثاني.
</p>

<p>
	نبدأ بناء روبوت دردشة خدمة العملاء بتطوير كل جزء منه على حدة، بدءًا من أساس روبوت الدردشة والذي يمكنك بناؤه مستخدمًا إحدى منصات تطوير روبوتات الدردشة عبر واجهة أمامية بسيطة، مثل Chatfuel، أو أن تكتب شيفرات روبوت الدردشة بنفسك مستعينًا بمكتبات وأطر عمل مساعدة مثل مكتبة NLTK بلغة باثيون ثم نطور بعد ذلك نظام التعرف على النوايا Intent Recognition في روبوت الدردشة، والذي يحاول معرفة المغزى وراء الأمر المُدخل من العميل، كتحديد ما إن كان عميل متجر إلكتروني يتساءل عن سياسات الاسترجاع أو تتبع طلبه أو غيرها.
</p>

<p>
	نشرع بعد ذلك في تطوير نظام استخراج الكيانات المُسمَّاة (named entity extraction)، والذي يعمل على استخراج التفاصيل المهمة من رسالة العميل، مثل رقم المنتج واسمه أو رقم الطلب وغيرها، وبعد ذلك نبني منهجية تدفق المحادثة التي تساعد روبوت الدردشة على إدارة المحادثة بكفاءة وكتابة ردود مناسبة لاستفسارات العميل ومساعدته على حل مشكلاته، وأخيرًا نجمع كل هذه الأجزاء ونُضمِّنها ليتكون روبوت الدردشة، ثم نبدأ في اختبار كفاءته في إدارة المحادثات.
</p>

<ul>
</ul>

<h3 id="-7">
	2. مشروع ذكاء اصطناعي لتحليل مشاعر جمهور مواقع التواصل الاجتماعي
</h3>

<p>
	<strong>مستوى الصعوبة:</strong> متوسط.
</p>

<p>
	يعمل نموذج تحليل مشاعر جمهور مواقع التواصل الاجتماعي على تحليل المنشورات والتغريدات، ومحاولة تحديد المشاعر العاطفية خلف الكلمات المكتوبة، فيصنف المنشورات بين منشورات إيجابيةٍ ومنشوراتٍ سلبيةٍ وأخرى طبيعية أو عادية، ويساعد هذا النوع من النماذجِ الأعمالَ على تخصيص حملاتهم التسويقية تبعًا للفئة المستهدفة، ويساعدهم كذلك على إطلاق حملات تسويقية ذات كفاءة، وذلك بتحليل أحجام ضخمة من المحتوى المكتوب من هذه الفئة المستهدفة.
</p>

<p>
	نبدأ في العمل على تطوير نموذج تحليل مشاعر منشورات مواقع التواصل الاجتماعي بجمع البيانات، فالبيانات في حالتنا هي منشورات التواصل الاجتماعي، ولأنَّ هذا النوع من البيانات غالبًا ما يكون فوضويًا وغير مهيكل فنحتاج جهدًا كبيرًا في معالجة بيانات هذا المشروع، فيمكننا تطوير برنامج يعيد الجملة إلى تكوينها الأصلي، فيزيل الرموز ويحول الحروف الكبيرة إلى صغيرة، ثم يختصر الجملة ما أمكن.
</p>

<p>
	بعد ذلك نبدأ في اختيار منهجية معالجة اللغة الطبيعية المناسبة، ولتكن النهج القائم على المعجم Lexicon-Based Approach، والذي يُقسِّم الجملة إلى كلماتٍ ويُحدِّد ماهية كل كلمة على حدة ما إذا كانت كلمة إيجابية أم سلبية أم عادية، فكلما زادت الكلمات الإيجابية في المنشورات صنَّفها ضمن المنشورات الإيجابية، وكذلك كلما زادت الكلمات السلبية في المنشورات صنَّفها ضمن المنشورات السلبية.
</p>

<p>
	وأخيرًا بعد تجهيز البيانات وتحديد المنهجية نبدأ في تطوير النموذج، ونعطيه البيانات ليتدرب عليه، ثم نختبره على محتوى ليس ضمن مجموعة البيانات وننظر هل سيصنفه بشكلٍ صحيحٍ أم يخطئ في التصنيف. ولمزيدٍ من التفاصيل حول مشروع نموذج تحليل المشاعر ننصحك بمطالعة مقال <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%AD%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%85%D8%B4%D8%A7%D8%B9%D8%B1-%D9%81%D9%8A-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D8%A7%D9%84%D8%B9%D8%B1%D8%A8%D9%8A%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%B9%D9%85%D9%8A%D9%82-r1476/" rel="">تحليل المشاعر في النصوص العربية باستخدام التعلم العميق</a>.
</p>

<h3 id="-8">
	3. مشروع ذكاء اصطناعي للترجمة الآلية
</h3>

<p>
	<strong>مستوى الصعوبة:</strong> متقدم
</p>

<p>
	يعد المترجم الآلي متعدد اللغات من أهم مشاريع الذكاء الاصطناعي، وتتمحور فكرته حول تمكين المستخدم من الترجمة بين لغة وأخرى، مع دعم لغات عديدة ومتنوعة، وذلك مع تحري الدقة في الترجمة والمقارنة بين الترجمات المختلفة للكلمة الواحدة واستخدام الترجمة الأنسب لها، وأخيرًا تكوين جملة واضحة مفهومة سليمة.
</p>

<p>
	الخطوة الأولى من عملية تطوير مترجم آلي متعدد اللغات هي جمع البيانات وتنظيفها ومعالجتها، وتحتاج في هذا المشروع بالذات للبحث عن مجموعة بيانات جاهزة تحتوي على الكلمات بمرادفاتها في اللغات المختلفة مع أمثلة للكلمة في سياقات حديثية عديدة بكل لغة، ثم تعالج هذه البيانات بالبحث فيها عن الترجمات الناقصة أو المفقودة، ثم تترجمها بنفسك.
</p>

<p>
	بعد ذلك تختار منهجية الترجمة ونقترح عليك منهجية الترجمة الآلية العصبية Neural Machine Translation (NMT) لدقة عالية في الترجمة، ومن بعد ذلك تكتب خوارزميات النموذج التي ستتدرب على البيانات، ثم تمنح مجموعة البيانات للنموذج ليتدرب عليها، وتجدر الإشارة لأنَّ هذا المشروع هو من مشاريع الذكاء الاصطناعي التي تتطلب الكثير من الموارد الحاسوبية وقدرات معالجة قوية قادرة على التدرب على البيانات الضخمة. ثم ما إذا انتهى النموذج من التدرب على البيانات يمكنك اختبار دقته في الترجمة بين اللغات المختلفة.
</p>

<h2 id="-9">
	مشاريع ذكاء اصطناعي في مجال الرؤية الحاسوبية
</h2>

<p>
	يعد مجال الرؤية الحاسوبية Computer Vision أحد المجالات الحيوية من مجال الذكاء الاصطناعي ويمكن تنفيذ العديد من مشاريع الذكاء الاصطناعي التي تستفيد من قدرة الآلات على تفسير الصور ومقاطع الفيديو وسائر المرئيات والتعرف على محتوياتها مثل تطبيقات التعرف على الوجوه والتعرف على الأشياء وتتبع الحركة، كما تدخل فيه تطبيقات أعقد من ذلك، مثل أنظمة السيارات ذاتية القيادة، وأنظمة الروبوتات، وغيرها.
</p>

<p>
	ومن مشاريع الذكاء الاصطناعي المهمة لمهندسي الرؤية الحاسوبية:
</p>

<ol>
	<li>
		مشروع التعرف على الوجوه بالذكاء الاصطناعي.
	</li>
	<li>
		مشروع ذكاء اصطناعي لتتبع الأشياء المرئية.
	</li>
	<li>
		مشروع سيارة ذاتية القيادة.
	</li>
</ol>

<p>
	وإليك شرحًا أوفى عن كل مشروع من هذه المشاريع وطريقة تنفيذه.
</p>

<h3 id="-10">
	1. نظام التعرف على الوجوه بالذكاء الاصطناعي
</h3>

<p>
	<strong>مستوى الصعوبة:</strong> سهل.
</p>

<p>
	يعد نظام التعرف على الوجوه مشروع ذكاء اصطناعي للمبتدئين، وتدور فكرة المشروع حول تطوير برنامج يمكنه تحديد الوجوه في الصور والتعرف على أصحابها، وذلك باستخدام تقنيات تعلم الآلة وتقنيات الرؤية الحاسوبية.
</p>

<p>
	في أولى الخطوات وهي خطوة جمع البيانات نجد صور المشاهير خيارًا جيدًا لتدريب النموذج عليها، إذ تتوفر صورٌ لهم من زوايا مختلفة عبر الإنترنت، فيمكنك تحميل مجموعة من الصور لكل شخص وتصنيفها داخل مجموعة البيانات حيث تكون جميع صور الشخص تحت تصنيفٍ باسمه، ثم بعد ذلك تبني النموذج باستخدام المكتبات وأطر العمل الجاهزة، مثل مكتبة face_recognition في لغة بايثون.
</p>

<p>
	ثم تسمح للنموذج بالتدرب على البيانات والتعرف على الوجوه وتحديد أصحاب هذه الوجوه، ثم إذا ما انتهى من التدرب على مجموعة البيانات يمكنك اختباره على صورٍ غير الموجودة في مجموعة البيانات لنفس الأشخاص الذين كانوا فيها.
</p>

<p>
	طالع المزيد عن أنظمة التعرف على الوجوه بقراء مقال <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D8%B4%D8%A8%D9%83%D8%A9-%D8%B9%D8%B5%D8%A8%D9%8A%D8%A9-%D8%B5%D9%86%D8%B9%D9%8A%D8%A9-%D9%88%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8%D9%87%D8%A7-%D9%84%D9%84%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D9%88%D8%AC%D9%88%D9%87-r1198/" rel="">إعداد شبكة عصبية صنعية وتدريبها للتعرف على الوجوه</a>.
</p>

<h3 id="-11">
	2. مشروع ذكاء اصطناعي لتتبع الأشياء المرئية
</h3>

<p>
	<strong>مستوى الصعوبة:</strong> متوسط.
</p>

<p>
	يشير نظام تتبع الأشياء المرئية إلى نظام برمجي يستخدم الذكاء الاصطناعي للتعرف على الأشياء المختلفة في مقاطع الفيديو وتتبعها، كالتعرف على السيارات وتتبعها في أنظمة الرادارات، والتعرف على الأجساد البشرية وتتبعها في أنظمة كاميرات المراقبة.
</p>

<p>
	نبدأ تطوير النموذج بجمع مقاطع للأشياء المرئية التي تود تتبعها، مثل مقاطع متعددة لسياراتٍ تجري على طريقٍ سريع، مع إضافة مربعات حول الأشياء المراد تتبعها في مقاطع الفيديو، ثم تطور نموذجك بإحدى المنهجيتين YOLO أو SSD، ثم تمنح النموذج مجموعة البيانات ليتدرب عليها ويحاول التعرف على الأشياء الموجودة في مقطع الفيديو وتتبع الشيء المطلوب منه تتبعه، ثم تختبر النموذج.
</p>

<h3 id="-12">
	3. مشروع سيارة ذاتية القيادة
</h3>

<p>
	<strong>مستوى الصعوبة:</strong> متقدم.
</p>

<p>
	يعد بناء نظام لسيارة ذاتية القيادة أمرًا صعبًا، نظرًا لتعقيد هذه الأنظمة وكثرة وظائفها وخواصها، ولكنه مشروعٌ تتعلم منه الكثير، وتتضمن أنظمة السيارات ذاتية القيادة أنظمة تتبع للأشياء، كما تتضمن أنظمة لرسم الخرائط وتحديد الطرق.
</p>

<p>
	تمر خلال مشروع تطوير نظام سيارة ذاتية القيادة بمراحلٍ ثلاث:
</p>

<ol>
	<li>
		<strong>الإدراك:</strong> تعمل في هذه المرحلة على بناء النظام الإدراكي للسيارة، والذي يساعدها على رسم الخرائط ثلاثية الأبعاد للمكان المحيط، ويساعدها على التقاط صور للطريق ومعرفة الأشياء أمامها، وكذلك يتضمن النظام الإدراكي نظامًا لتحديد السرعة والمسافة، ويعمل أيضًا على معرفة معلومات عامة عن الموقع المحيط باستخدام نظام تحديد الموقع العالمي GPS.
	</li>
	<li>
		<strong>تخطيط المسار:</strong> تبني لنظام السيارة ذاتية القيادة في هذه المرحلة نظامًا داخليًا لرسم الخرائط عالية الجودة، ونظامًا لتحديد أفضل المسارات وأسرعهم للسير فيه مع النظر للظروف الحالية من أجواءٍ وغيرها، كما نُعلِّم النظام كيفية تجنُّب الحواجز من بشرٍ وسياراتٍ أخرى وغيرها من الحواجز.
	</li>
	<li>
		<strong>اتخاذ القرارات:</strong> نجعل النظام قادرًا على السير في المسار الذي خططه قبلًا، ونزده بنظام توقعٍ لحركات المركبات المجاورة، ونحرص في هذه المرحلة على تطوير منطق اتخاذ القرارات التي تؤدي إلى سلامة وأمان الراكب والسيارة.
	</li>
</ol>

<h2 id="-13">
	مشاريع ذكاء اصطناعي في مجال برمجة الروبوتات
</h2>

<p>
	تشير <a href="https://academy.hsoub.com/programming/os-embedded-systems/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%B1%D9%88%D8%A8%D9%88%D8%AA-%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-r1855/" rel="">برمجة الروبوتات Robotics Programming</a> إلى عملية استخدام إحدى <a href="https://academy.hsoub.com/programming/os-embedded-systems/%D8%A3%D9%81%D8%B6%D9%84-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%B1%D9%88%D8%A8%D9%88%D8%AA%D8%A7%D8%AA-r2285/" rel="">لغات برمجة الروبوتات</a> لتطوير النظام الذي يستطيع به جسد الروبوت أن يبدأ في تنفيذ مهامه، وتساعد برمجة الروبوتات الروبوت على أن يدرك بيئته، ويضع خططًا، ويتخذ قراراتٍ، وينفذ مهامًا، فمثلًا عند تطوير روبوت للتنقل الأرضي نحتاج إلى تزويد نظامه بخوارزميات الرؤية الحاسوبية التي تسمح له بالإدراك والتعرف على الأشياء من حوله، كما نحتاج إلى جعل النظام قادرًا على رسم خرائط، ويحتاج أيضًا إلى خوارزميات لتخطيط مسارٍ والسير فيه، وخوارزميات للتحكم في محركاته وأجزائه الفيزيائية، وغيرها.
</p>

<p>
	ومن أهم مشاريع برمجة الروبوتات:
</p>

<ol>
	<li>
		مشروع تحريك ذراع روبوت في مسار محدد.
	</li>
	<li>
		مشروع مساعدة روبوت على تجنب العقبات.
	</li>
	<li>
		مشروع روبوت يتفاعل مع البيئة ويتعلم ويتطور باستقلالية.
	</li>
</ol>

<p>
	وإليك المزيد حول كل مشروع من هذه المشاريع الذكية.
</p>

<h3 id="-14">
	1.مشروع لتحريك ذراع الروبوت في مسار محدد
</h3>

<p>
	<strong>مستوى الصعوبة:</strong> سهل
</p>

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

<p>
	تحتاج أولًا في هذا المشروع إلى ذراع روبوت لتطور الخوارزمية له وتختبرها عليه، فما إن حصلت عليه فابدأ بفحصه وتعرف على مواصفاته وعدد مفاصله والنطاق الحركي لكل مفصل، وتعرف على سائر المستعشرات المدمجة فيه، ثم ابدأ بتحديد المسار المناسب للذراع بناءً على هذه المواصفات، وبعد ذلك ابدأ في تحويل هذا المسار إلى شيفرات برمجية تساعد الذراع على التحرك حركةً بحركة، وحدد سرعة تنفيذ كل حركة في المسار، ثم ثبت النظام على ذراع الروبوت واختبر مدى دقته في التحرك من مكان إلى آخر.
</p>

<h3 id="-15">
	2. مشروع مساعدة روبوت على تجنب العقبات
</h3>

<p>
	<strong>مستوى الصعوبة:</strong> متوسط
</p>

<p>
	يهدف مشروع تطوير نظام يساعد الروبوت على تجنب العقبات إلى تمكين الروبوت من التحرك الحر في بيئة مع تجاوز العقبات المختلفة وعدم الاصطدام بها.
</p>

<p>
	يعتمد هذا المشروع على كتابة خوارزميات لمستشعرات الروبوت، ونمر فيه بثلاث خطوات، أمَّا الأولى فهي تحصيل المستشعرات وبرمجتها بحيث يعرف الروبوت من خلالها ما حوله من مرئيات وماديات، ويتعرف على العقبات المحتملة في طريقه، وأمَّا الخطوة الثانية فهي تحديد الخوارزمية المناسبة للنظام حسب حجم الروبوت والهدف منه وسرعته، وتختار بين الخوارزميات الثلاث: خوارزمية متابعة الحائط Wall-Following أو خوارزمية الميادين المحتملة Potential Fields أو خوارزميات الأخطاء Bug Algorithms، وهذه الخوارزميات مسؤولة عن رسم مسار الروبوت وتجنب العقبات أثناء السير في المسار، وأمَّا الخطوة الثالثة والأخيرة هي اختبار النظام على روبوت حقيقي ومراقبة مدى كفاءته في تجاوز العقبات.
</p>

<h3 id="-16">
	3. مشروع روبوت يتفاعل مع البيئة ويتعلم ويتطور باستقلالية
</h3>

<p>
	<strong>مستوى الصعوبة:</strong> متقدم
</p>

<p>
	يعد نظام روبوت يتفاعل مع البيئة ويتعلم ويتطور باستقلالية واحدًا من أهم وأصعب مشاريع الذكاء الاصطناعي وبرمجة الروبوتات، وكما يتضح من اسم المشروع فإنَّ الهدف منه هو تطوير نظام روبوت يدرك البيئة المحيطة به ويفهم ماهية الأشياء من حوله، ويستطيع أن يتعامل مع المهام المختلفة في مجال محدد ويعالجها، ويتمكن كذلك من التعلم المستمر عن المجال الخاص به والتطور وزيادة القدرة على تنفيذ المهام المتنوعة.
</p>

<p>
	تحتاج أولًا إلى جسد روبوت لتنفيذ هذا المشروع، فإذا ما حصلت عليه فابدأ بتطوير المهام الأساسية للروبوت، بدءًا من التعرف على الأشياء والتقاطها، مرورًا بتخطيط المسارات، وصولًا إلى تخطي العقبات، وغيرها من المهام الأساسية للروبوت، وبعد ذلك طوِّر النظام الحركي للروبوت وطوِّر كذلك النظام الإدراكي له، والذي يساعده على معرفة الأشياء في البيئة حوله والتفاعل معها.
</p>

<p>
	ابدأ بعد ذلك في تطوير خوارزميات تعلم الآلة الخاصة بالروبوت، ونقترح عليك تطويرها بنهج التعلم المعزز Rainforcement Learning، وزوِّد الروبوت بمجموعات ضخمة من البيانات التي تضم معلومات عن المجال التي تود من الروبوت فهمه بعمق وإتقانه، وغالبًا ما تأخذ هذه المرحلة من تطوير الروبوت الوقت الأطول، ولكنها ضرورية لتمكين الروبوت من فهم المجال المختار جيدًا وتعلمه دون الحاجة إلى إشراف بشري، فإذا ما أنهيتها فأعطِ الروبوت مهامًا في هذا المجال لاختباره وتحديد مدى دقته ومدى نجاح المشروع.
</p>

<h2 id="-17">
	تنفيذ مشاريع الذكاء الاصطناعي بلغة البايثون
</h2>

<p>
	إذا كنت تتساءل ما هي أفضل لغة برمجة لتنفيذ مشاريع الذكاء الاصطناعي فإننا ننصحك باعتماد لغة بايثون فهي تعد لغة رائدة في مجال الذكاء الاصطناعي وتسهل عليك تنفيذ مشاريعك لما تتضمنه من <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D9%83%D8%AA%D8%A8%D8%A7%D8%AA-%D9%88%D8%A3%D8%B7%D8%B1-%D8%B9%D9%85%D9%84-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">مكتبات وأطر عمل ذكاء اصطناعي قوية</a> من أبرزها:
</p>

<ul>
	<li>
		تنسرفلو (TensorFlow)
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-%D8%A8%D8%A7%D9%8A-%D8%AA%D9%88%D8%B1%D8%B4-pytorch-%D9%88%D8%A3%D9%87%D9%85%D9%8A%D8%AA%D9%87-%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2311/" rel="">بايتورش (PyTorch)</a>
	</li>
	<li>
		كيراس (Keras)
	</li>
	<li>
		نومباي (NumPy)
	</li>
	<li>
		سايباي (SciPy)
	</li>
	<li>
		سكيت-ليرن (Scikit-learn)
	</li>
	<li>
		بلوتلي (Plotly)
	</li>
	<li>
		ماتبلوتليب (Matplotlib)
	</li>
</ul>

<p>
	وإن أردتَّ التعرف على مزيد من مشاريع الذكاء الاصطناعي غير المذكورة في هذا المقال بلغة بايثون فيمكنك الاطلاع على <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D9%87%D9%85-%D9%83%D8%AA%D8%A8-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A7%D9%84%D9%85%D8%AC%D8%A7%D9%86%D9%8A%D8%A9-r2330/" rel="">كتب الذكاء الاصطناعي</a> المتنوعة التي توفرها أكاديمية حسوب مجانًا، وأهمها كتاب <span ipsnoautolink="true">عشرة مشاريع عملية عن الذكاء الاصطناعي.</span><span style="display: none;">  </span>
</p>
<iframe allowfullscreen="" class="ipsEmbed_finishedLoading" data-controller="core.front.core.autosizeiframe" data-embedauthorid="3889" data-embedcontent="" data-embedid="embed7970542740" src="https://academy.hsoub.com/files/29-%D8%B9%D8%B4%D8%B1%D8%A9-%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D8%B9%D9%85%D9%84%D9%8A%D8%A9-%D8%B9%D9%86-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/?do=embed" style="overflow: hidden; height: 469px; max-width: 500px; margin: auto;"></iframe>

<p>
	وإن كنت مهتمًا بالتأسيس السليم في مجال الذكاء الاصطناعي والتعلم على يد خبراءٍ في المجال، مع التطبيق العملي المستمر على كل مصطلح من مصطلحات الذكاء الاصطناعي ننصحك بمطالعة <a href="https://academy.hsoub.com/store/12-%D8%AF%D9%88%D8%B1%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">دورة أكاديمية حسوب في الذكاء الاصطناعي</a>، والتي تُحدَّث دوريًا بالمصطلحات والمفاهيم الجديدة في مجال الذكاء الاصطناعي وتساعدك على تنفيذ العديد من مشاريع الذكاء الاصطناعي العملية المفيدة والتي توائم متطلبات سوق العمل.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة الذكاء الاصطناعي
		</p>

		<p class="banner-subtitle">
			احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة.
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/artificial-intelligence" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<a href="https://academy.hsoub.com/learn/artificial-intelligence" rel=""><img alt="دورة الذكاء الاصطناعي" src="https://academy.hsoub.com/learn/assets/images/courses/artificial-intelligence.png"></a>
	</div>
</div>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/artificial-intelligence/" rel="">دليلك الشامل لتعلم الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">تطبيقات الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D8%B3%D8%A3%D9%84-%D9%85%D9%87%D9%86%D8%AF%D8%B3-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A3%D8%B3%D8%A6%D9%84%D8%A9-%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D8%AD%D9%88%D9%84-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2313/" rel="">اسأل مهندس الذكاء الاصطناعي: أسئلة شائعة حول الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/javascript/nodejs/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D8%A7%D8%AE%D8%AA%D8%A8%D8%B1%D9%86%D9%8A-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-chatgpt-%D9%88%D9%84%D8%BA%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D8%A8%D8%AA-%D9%85%D8%B9-nodejs-r2018/" rel="">تطوير تطبيق 'اختبرني' باستخدام ChatGPT ولغة جافاسكربت مع Node.js</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/python/%D8%A8%D9%86%D8%A7%D8%A1-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D8%A8%D8%A7%D9%8A%D8%AB%D9%88%D9%86-%D9%8A%D8%AC%D9%8A%D8%A8-%D8%B9%D9%84%D9%89-%D8%A3%D8%B3%D8%A6%D9%84%D8%A9-%D9%85%D9%84%D9%81-pdf-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2265/" rel="">بناء تطبيق بايثون يجيب على أسئلة ملف PDF باستخدام الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%B5%D8%B7%D9%84%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-r2363/" rel="">أهم مصطلحات الذكاء الاصطناعي للمبتدئين</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2372</guid><pubDate>Sat, 27 Jul 2024 15:00:03 +0000</pubDate></item><item><title>&#x637;&#x631;&#x64A;&#x642;&#x629; &#x627;&#x644;&#x635;&#x642;&#x644; Fine-Tune &#x644;&#x646;&#x645;&#x648;&#x630;&#x62C; &#x630;&#x643;&#x627;&#x621; &#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A; &#x645;&#x64F;&#x62F;&#x631;&#x651;&#x64E;&#x628; &#x645;&#x64F;&#x633;&#x628;&#x642;&#x64B;&#x627;</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D8%A7%D9%84%D8%B5%D9%82%D9%84-fine-tune-%D9%84%D9%86%D9%85%D9%88%D8%B0%D8%AC-%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%85%D9%8F%D8%AF%D8%B1%D9%91%D9%8E%D8%A8-%D9%85%D9%8F%D8%B3%D8%A8%D9%82%D9%8B%D8%A7-r2367/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_07/-Fine-Tune-----.png.54bba6f958e0137f9cb03e10973109e4.png" /></p>
<p>
	لاشك أن استخدام نماذج <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">الذكاء الاصطناعي</a> المُدَرَّبة مُسبقًا pretrained model يقلل الوقت والجهد والتكاليف اللازمة لتدريب هذه النماذج من الصفر، فضلًا عن إتاحة الفرصة أمامك لاستخدام أحدث النماذج المتوفرة على منصات متخصصة مثل تلك التي توفرها <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D9%88%D9%91%D9%84%D8%A7%D8%AA-transformers-%D9%85%D9%86-%D9%85%D9%86%D8%B5%D8%A9-hugging-face-r2340/" rel="">مكتبة المُحوّلات Transformers</a> من منصة Hugging Face، لذا يلجأ مهندسو الذكاء الاصطناعي لاستخدام النماذج المُدَرَّبة مُسبقًا في كثير من الحالات ويعمدون إلى صقلها أو معايرتها Fine Tuning بدقة وتدريبها على بيانات محددة تناسب أهدافهم، إذ يعني صقل النماذج fine-tuning أخذ نموذج تعلم آلي مدرب مسبقًا ومواصلة تدريبه على مجموعة بيانات أصغر وأكثر تخصصًا للحفاظ على قدرات النموذج المدرب وتكييفه ليناسب استخدامات محددة ويعطي تنبؤاتٍ دقيقة، كما سنطرح بعض الأمثلة التوضيحية على تدريب النماذج باستخدام كل من التقنيات التالية:
</p>

<ul>
	<li>
		<p>
			<a href="https://huggingface.co/docs/transformers/v4.39.0/en/main_classes/trainer#transformers.Trainer" rel="external nofollow">مُدَرِّب</a> مكتبة المحوّلات Transformers Trainer.
		</p>
	</li>
	<li>
		<p>
			إطار العمل تنسرفلو TensorFlow مع كيراس Keras.
		</p>
	</li>
	<li>
		<p>
			إطار العمل بايتورش PyTorch لوحده.
		</p>
	</li>
</ul>

<h2 id="">
	تحضير مجموعة بيانات التدريب
</h2>

<p>
	قبل أن نبدأ بصقل النموذج fine-tune سنُحَمِّل مجموعة بيانات Dataset ونُحَضِّر بياناتها كما تعلمنا في المقال السابق <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D9%85%D8%B9%D8%A7%D9%84%D8%AC%D8%A9-%D8%A7%D9%84%D9%85%D9%8F%D8%B3%D8%A8%D9%82%D8%A9-%D9%84%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%82%D8%A8%D9%84-%D8%AA%D9%85%D8%B1%D9%8A%D8%B1%D9%87%D8%A7-%D9%84%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2365/" rel="">المعالجة المُسبقة للبيانات قبل تمريرها لنماذج الذكاء الاصطناعي</a>.
</p>

<p>
	اخترنا في هذا المقال مجموعة البيانات <a href="https://huggingface.co/datasets/yelp_review_full" rel="external nofollow">Yelp Reviews</a>:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_6" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> datasets </span><span class="kwd">import</span><span class="pln"> load_dataset

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> dataset </span><span class="pun">=</span><span class="pln"> load_dataset</span><span class="pun">(</span><span class="str">"yelp_review_full"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> dataset</span><span class="pun">[</span><span class="str">"train"</span><span class="pun">][</span><span class="lit">100</span><span class="pun">]</span><span class="pln">
</span><span class="pun">{</span><span class="str">'label'</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln">
 </span><span class="str">'text'</span><span class="pun">:</span><span class="pln"> </span><span class="str">'My expectations for McDonalds are t rarely high. But for one to still fail so spectacularly...that takes something special!\\nThe cashier took my friends\'s order, then promptly ignored me. I had to force myself in front of a cashier who opened his register to wait on the person BEHIND me. I waited over five minutes for a gigantic order that included precisely one kid\'s meal. After watching two people who ordered after me be handed their food, I asked where mine was. The manager started yelling at the cashiers for \\"serving off their orders\\" when they didn\'t have their food. But neither cashier was anywhere near those controls, and the manager was the one serving food to customers and clearing the boards.\\nThe manager was rude when giving me my order. She didn\'t make sure that I had everything ON MY RECEIPT, and never even had the decency to apologize that I felt I was getting poor service.\\nI\'ve eaten at various McDonalds restaurants for over 30 years. I\'ve worked at more than one location. I expect bad days, bad moods, and the occasional mistake. But I have yet to have a decent experience at this store. It will remain a place I avoid unless someone in my party needs to avoid illness from low blood sugar.'</span><span class="pun">}</span></pre>

<p>
	وبما أن مجموعة بياناتنا نصية لذا سنحتاج مُرَمِّزًا tokenizer مناسبًا للنموذج لمعالجتها كما تعلمنا في <a href="https://academy.hsoub.com/tags/huggingface/" rel="">مقالات السلسلة</a>، تتضمن هذه المعالجة أساليب الحشو والاقتطاع لتوحيد أطوال السلاسل النصية، وسنستخدم دالةً تدعى <a href="https://huggingface.co/docs/datasets/process#map" rel="external nofollow"><code>map</code></a> لتسريع المعالجة التحضيرية للبيانات وتطبيقها على كامل مجموعة البيانات dataset وفق التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_8" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"google-bert/bert-base-cased"</span><span class="pun">)</span><span class="pln">


</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">def</span><span class="pln"> tokenize_function</span><span class="pun">(</span><span class="pln">examples</span><span class="pun">):</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> tokenizer</span><span class="pun">(</span><span class="pln">examples</span><span class="pun">[</span><span class="str">"text"</span><span class="pun">],</span><span class="pln"> padding</span><span class="pun">=</span><span class="str">"max_length"</span><span class="pun">,</span><span class="pln"> truncation</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)</span><span class="pln">


</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenized_datasets </span><span class="pun">=</span><span class="pln"> dataset</span><span class="pun">.</span><span class="pln">map</span><span class="pun">(</span><span class="pln">tokenize_function</span><span class="pun">,</span><span class="pln"> batched</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)</span></pre>

<p>
	للسهولة وتسريع العمل يمكنك أخذ جزء من مجموعة البيانات فقط بدلًا من العمل معها كاملةً كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_10" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> small_train_dataset </span><span class="pun">=</span><span class="pln"> tokenized_datasets</span><span class="pun">[</span><span class="str">"train"</span><span class="pun">].</span><span class="pln">shuffle</span><span class="pun">(</span><span class="pln">seed</span><span class="pun">=</span><span class="lit">42</span><span class="pun">).</span><span class="pln">select</span><span class="pun">(</span><span class="pln">range</span><span class="pun">(</span><span class="lit">1000</span><span class="pun">))</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> small_eval_dataset </span><span class="pun">=</span><span class="pln"> tokenized_datasets</span><span class="pun">[</span><span class="str">"test"</span><span class="pun">].</span><span class="pln">shuffle</span><span class="pun">(</span><span class="pln">seed</span><span class="pun">=</span><span class="lit">42</span><span class="pun">).</span><span class="pln">select</span><span class="pun">(</span><span class="pln">range</span><span class="pun">(</span><span class="lit">1000</span><span class="pun">))</span></pre>

<h2 id="pytorchtrainer">
	تدريب نموذج ذكاء اصطناعي باستخدام PyTorch Trainer
</h2>

<p>
	إن <a href="https://huggingface.co/docs/transformers/v4.39.0/en/main_classes/trainer#transformers.Trainer" rel="external nofollow">المُدَرِّبTrainer</a> هو أحد أصناف مكتبة المحوّلات Transformers حيث يستخدم لتدريب نماذج المكتبة، ويوفر عليك أعباء إنشاء حلقة تدريب خاصة بمشروعك من الصفر، ويتمتع هذا الصنف بواجهة برمجية <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> متنوعة الخيارات وتؤمن مزايا تدريبية واسعة، مثل: تسجيل الأحداث logging، والتدرج التراكمي gradient accumulation، والدقة المختلطة mixed precision.
</p>

<p>
	سنبدأ عملنا بتحميل النموذج وفق الأوامر التالية مع تحديد عدد التسميات التوضيحية <code>labels</code> المتوقعة من البيانات المُدخَلة، وإذا قرأت بطاقة وصف مجموعة البيانات التي حضرناها <a href="https://huggingface.co/datasets/yelp_review_full#data-fields" rel="external nofollow">Yelp Review</a> ستجد أن عدد التسميات <code>labels</code> فيها هو 5:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_12" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoModelForSequenceClassification</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoModelForSequenceClassification</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"google-bert/bert-base-cased"</span><span class="pun">,</span><span class="pln"> num_labels</span><span class="pun">=</span><span class="lit">5</span><span class="pun">)</span></pre>

<p>
	ملاحة: عندما تُنَفِذ الأوامر السابقة ستواجه تحذيرًا مفاده أن بعض الأوزان المُدَرَّبة مسبقًا في النموذج لن تُسْتَخْدَمْ، وبعضها ستُعاد تهيئته عشوائيًا، يُعدّ هذا التحذير طبيعيًا ولا يستوجب القلق إذ سيُهمَل رأس النموذج BERT المُدَرَّب مسبقًا ويُستَبْدَل برأس تصنيف لا على التعيين، ثم يٌدَرَّب الرأس الجديد على تصنيف السلاسل وتنتقل إليه تلقائيًا كل المعرفة التي اكتسبها النموذج المدرب مسبقًا فيستفيد منها، علمًا أن رأس النموذج model head هو الجزء المسؤول عن معالجة مهمة معينة مثل التصنيف أو الترجمة ويستخدم لتحديد نتائجها.
</p>

<h3 id="hyperparameters">
	المعاملات الفائقة للنموذج hyperparameters
</h3>

<p>
	سننشئ صنفًا لوسطاء التدريب <a href="https://huggingface.co/docs/transformers/v4.39.0/en/main_classes/trainer#transformers.TrainingArguments" rel="external nofollow">TrainingArguments</a> يتضمن كافة المعاملات الفائقة التي يمكننا ضبطها بالإضافة إلى الرايات flags الخاصة بتفعيل خيارات التدريب المختلفة، سنستعمل هنا المعاملات الافتراضية لكن يمكنك استعراض جميع <a href="https://huggingface.co/docs/transformers/main_classes/trainer#transformers.TrainingArguments" rel="external nofollow">المعاملات الفائقة</a> وتجريبها لتصل إلى الإعدادات الملائمة لحالتك.
</p>

<p>
	<strong>ملاحظة</strong>: المعاملات الفائقة للنموذج هي المعاملات التي نحددها قبل بدء عملية تدريب النموذج وتتحكم في كيفية تعلم النموذج.
</p>

<p>
	لا تنسَ أن تحدد مكان حفظ نقاط التحقق checkpoints الناتجة عن التدريب:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_14" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">TrainingArguments</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> training_args </span><span class="pun">=</span><span class="pln"> </span><span class="typ">TrainingArguments</span><span class="pun">(</span><span class="pln">output_dir</span><span class="pun">=</span><span class="str">"test_trainer"</span><span class="pun">)</span></pre>

<h3 id="-1">
	التقييم
</h3>

<p>
	لا يعطي المُدَرِّب Trainer في الأحوال الطبيعية مؤشراتٍ عن أداء النماذج في أثناء التدريب، فإذا رغبت بالحصول على تقييمٍ لنموذجك، ينبغي أن تمرر دالة خاصة بهذا الأمر تحسب مؤشرات الأداء وترجع لك تقريرًا بتقييم النموذج، وفي هذا المجال توفر <a href="https://huggingface.co/docs/evaluate/index" rel="external nofollow">مكتبة التقييم Evaluate</a> دالةً بسيطة تدعى <a href="https://huggingface.co/spaces/evaluate-metric/accuracy" rel="external nofollow"><code>accuracy</code></a> يمكنك تحميلها باستخدام <code>evaluate.load</code> كما في المثال التالي (طالع هذه <a href="https://huggingface.co/docs/evaluate/a_quick_tour" rel="external nofollow">الجولة السريعة في مكتبة التقييم</a> لمزيدٍ من المعلومات):
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_16" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">import</span><span class="pln"> numpy </span><span class="kwd">as</span><span class="pln"> np
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">import</span><span class="pln"> evaluate

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> metric </span><span class="pun">=</span><span class="pln"> evaluate</span><span class="pun">.</span><span class="pln">load</span><span class="pun">(</span><span class="str">"accuracy"</span><span class="pun">)</span></pre>

<p>
	استدعِ الدالة <code>compute</code> مع <code>metric</code> وفق التالي لحساب دقة التنبؤات الناتجة عن نموذجك، ولأن نماذج مكتبة المحوّلات Transformers تضع مخرجاتها في السمة <code>logits</code> (كما تعلمنا سابقًا في مقال <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AC%D9%88%D9%84%D8%A9-%D8%B3%D8%B1%D9%8A%D8%B9%D8%A9-%D9%84%D9%84%D8%A8%D8%AF%D8%A1-%D9%85%D8%B9-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D9%88%D9%91%D9%84%D8%A7%D8%AA-transformers-r2351/" rel="">جولة سريعة للبدء مع مكتبة المحوّلات Transformers</a>) فينبغي لنا في البداية تحويل <code>logits</code> الناتجة عن النموذج إلى تنبؤات predictions ثم تمريرها لدالة حساب الدقة:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_18" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">def</span><span class="pln"> compute_metrics</span><span class="pun">(</span><span class="pln">eval_pred</span><span class="pun">):</span><span class="pln">
        logits</span><span class="pun">,</span><span class="pln"> labels </span><span class="pun">=</span><span class="pln"> eval_pred
        predictions </span><span class="pun">=</span><span class="pln"> np</span><span class="pun">.</span><span class="pln">argmax</span><span class="pun">(</span><span class="pln">logits</span><span class="pun">,</span><span class="pln"> axis</span><span class="pun">=-</span><span class="lit">1</span><span class="pun">)</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> metric</span><span class="pun">.</span><span class="pln">compute</span><span class="pun">(</span><span class="pln">predictions</span><span class="pun">=</span><span class="pln">predictions</span><span class="pun">,</span><span class="pln"> references</span><span class="pun">=</span><span class="pln">labels</span><span class="pun">)</span></pre>

<p>
	والآن أعطِ القيمة <code>"epoch"</code> للمعامل <code>evaluation_strategy</code> من وسطاء التدريب TrainingArguments لمراقبة أداء نموذجك أثناء التدريب فهذا الخيار سيعطيك تقييمًا في نهاية كل دورة تدريبية epoch للنموذج:
</p>

<pre class="ipsCode">&gt;&gt;&gt; from transformers import TrainingArguments, Trainer

&gt;&gt;&gt; training_args = TrainingArguments(output_dir="test_trainer", evaluation_strategy="epoch")
</pre>

<h3 id="trainer">
	المُدَرِّب Trainer
</h3>

<p>
	لننشئ الآن كائن المُدَرِّب Trainer باستخدام جميع الإعدادات السابقة وهي: النموذج الذي اخترناه، ووسطاء التدريب، ومجموعة بيانات التدريب، ودالة التقييم وذلك وفق الأمر التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_20" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> trainer </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Trainer</span><span class="pun">(</span><span class="pln">
        model</span><span class="pun">=</span><span class="pln">model</span><span class="pun">,</span><span class="pln">
        args</span><span class="pun">=</span><span class="pln">training_args</span><span class="pun">,</span><span class="pln">
        train_dataset</span><span class="pun">=</span><span class="pln">small_train_dataset</span><span class="pun">,</span><span class="pln">
        eval_dataset</span><span class="pun">=</span><span class="pln">small_eval_dataset</span><span class="pun">,</span><span class="pln">
        compute_metrics</span><span class="pun">=</span><span class="pln">compute_metrics</span><span class="pun">,</span><span class="pln">
</span><span class="pun">)</span></pre>

<p>
	ثم دَرِّب نموذجك باستخدامه كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_22" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> trainer</span><span class="pun">.</span><span class="pln">train</span><span class="pun">()</span></pre>

<h2 id="tensorflowkeras">
	تدريب نموذج TensorFlow باستخدام Keras
</h2>

<p>
	نناقش هنا تدريب نماذج من مكتبة Transformers باستخدام إطار العمل تنسرفلو TensorFlow وكيراس Keras <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr>، حيث أن كيراس هو إطار عمل سهل ومفتوح المصدر يسمح بإنشاء <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A8%D9%86%D8%A7%D8%A1-%D8%B4%D8%A8%D9%83%D8%A9-%D8%B9%D8%B5%D8%A8%D9%8A%D8%A9-%D9%84%D8%AA%D8%B1%D8%AC%D9%85%D8%A9-%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%A5%D8%B4%D8%A7%D8%B1%D8%A9-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%A5%D9%86%D8%AC%D9%84%D9%8A%D8%B2%D9%8A%D8%A9-r2259/" rel="">شبكات عصبية</a> معقدة بتعليمات قليلة، بدأ مشروعًا مستقلًا ثم اندمج مع TensorFlow (يمكنك معرفة المزيد بمطالعة قسم <a href="https://academy.hsoub.com/programming/artificial-intelligence/" rel="">الذكاء الاصطناعي</a> على أكاديمية حسوب وخاصةً المقال التعريفي <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D9%83%D8%AA%D8%A8%D8%A7%D8%AA-%D9%88%D8%A3%D8%B7%D8%B1-%D8%B9%D9%85%D9%84-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">مكتبات وأطر عمل الذكاء الاصطناعي</a>).
</p>

<h3 id="keras">
	تحويل البيانات إلى صيغة تناسب كيراس Keras
</h3>

<p>
	يتطلب تدريب نماذج Transformers باستخدام Keras <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> تحميل مجموعة بيانات بصيغة تتوافق مع كيراس Keras، وإحدى الطرق السهلة لذلك هي تحويل البيانات التدريبية إلى مصفوفات <a href="https://academy.hsoub.com/programming/python/%D9%85%D9%81%D8%A7%D9%87%D9%8A%D9%85-%D9%85%D8%AA%D9%82%D8%AF%D9%85%D8%A9-%D8%AD%D9%88%D9%84-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-numpy-%D9%81%D9%8A-%D8%A8%D8%A7%D9%8A%D8%AB%D9%88%D9%86-r1809/" rel="">NumPy</a> ثم تمريرها له، تناسب هذه الطريقة مجموعات البيانات صغيرة الحجم وهي ما سنجربه بدايةً قبل الانتقال إلى طرق أكثر تعقيدًا.
</p>

<p>
	لنُحمِّل في البداية مجموعة بيانات، وقد اخترنا هنا المجموعة CoLA dataset من <a href="https://huggingface.co/datasets/nyu-mll/glue" rel="external nofollow">GLUE benchmark</a> وهي مجموعة بيانات بسيطة تناسب تصنيف النصوص الثنائية binary text، وسنأخذ منها القسم المخصص للتدريب فقط:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_24" style=""><span class="kwd">from</span><span class="pln"> datasets </span><span class="kwd">import</span><span class="pln"> load_dataset

dataset </span><span class="pun">=</span><span class="pln"> load_dataset</span><span class="pun">(</span><span class="str">"glue"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"cola"</span><span class="pun">)</span><span class="pln">
dataset </span><span class="pun">=</span><span class="pln"> dataset</span><span class="pun">[</span><span class="str">"train"</span><span class="pun">]</span><span class="pln">  </span><span class="com"># أخذنا من مجموعة البيانات القسم الخاص بالتدريب فقط</span></pre>

<p>
	سنُحَمِّل بعد ذلك مُرمِّزًا tokenizer يناسب النموذج ونستخدمه لترميز بيانات الندريب وتحويلها إلى مصفوفات NumPy، ولكن في مثالنا البيانات ثنائية بسيطة وتسمياتها التوضيحية <code>labels</code> هي مجموعة أصفار وواحدات فيمكننا تحويلها إلى مصفوفة NumPy مباشرةً دون ترميز:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_26" style=""><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pln">

tokenizer </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"google-bert/bert-base-cased"</span><span class="pun">)</span><span class="pln">
tokenized_data </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">(</span><span class="pln">dataset</span><span class="pun">[</span><span class="str">"sentence"</span><span class="pun">],</span><span class="pln"> return_tensors</span><span class="pun">=</span><span class="str">"np"</span><span class="pun">,</span><span class="pln"> padding</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)</span><span class="pln">
</span><span class="com"># يرجع المُرَمِّز دفعات مُرَمَّزة من البيانات، حوّلناها هنا إلى قاموس يناسب Keras</span><span class="pln">
tokenized_data </span><span class="pun">=</span><span class="pln"> dict</span><span class="pun">(</span><span class="pln">tokenized_data</span><span class="pun">)</span><span class="pln">

labels </span><span class="pun">=</span><span class="pln"> np</span><span class="pun">.</span><span class="pln">array</span><span class="pun">(</span><span class="pln">dataset</span><span class="pun">[</span><span class="str">"label"</span><span class="pun">])</span><span class="pln">  </span><span class="com"># هذه البيانات في الأساس مصفوفة أصفار وواحدات</span></pre>

<p>
	وفي المرحة الأخيرة سنُحَمِّل النموذج ونخضعه لعملية تصريف <a href="https://keras.io/api/models/model_training_apis/#compile-method" rel="external nofollow">compile</a> ثم ملائمة <a href="https://keras.io/api/models/model_training_apis/#fit-method" rel="external nofollow">fit</a>، وننوه هنا أن كل نموذج في مكتبة المحوّلات يتضمن دالةً افتراضية لحساب الخسارة loss function تناسب المهمة التي يُستَخدم النموذج لأجلها، فلست بحاجة لضبط أي خيارات بهذا الخصوص:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_28" style=""><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">TFAutoModelForSequenceClassification</span><span class="pln">
</span><span class="kwd">from</span><span class="pln"> tensorflow</span><span class="pun">.</span><span class="pln">keras</span><span class="pun">.</span><span class="pln">optimizers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">Adam</span><span class="pln">

</span><span class="com"># تحميل النموذج وتصريفه</span><span class="pln">
model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">TFAutoModelForSequenceClassification</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"google-bert/bert-base-cased"</span><span class="pun">)</span><span class="pln">
</span><span class="com"># غالبًا ما تكون معدلات التَعَلُّم المنخفضة هي الأنسب لصقل نماذج مكتبة المحوّلات المُدَرَّبة مُسبقًا </span><span class="pln">
model</span><span class="pun">.</span><span class="pln">compile</span><span class="pun">(</span><span class="pln">optimizer</span><span class="pun">=</span><span class="typ">Adam</span><span class="pun">(</span><span class="lit">3e-5</span><span class="pun">))</span><span class="pln">  </span><span class="com"># لاحظ عدم وجود أي وسيط يتعلق بدالة حساب الخسارة فهي افتراضية</span><span class="pln">

model</span><span class="pun">.</span><span class="pln">fit</span><span class="pun">(</span><span class="pln">tokenized_data</span><span class="pun">,</span><span class="pln"> labels</span><span class="pun">)</span></pre>

<p>
	ملاحظة: تختار نماذج Hugging Face تلقائيًا دوال الخسارة المناسبة لبُنيتها ومهامها، لذا لن تضطر لتمرير الوسيط الخاص بحساب الخسارة عند تصريف نموذجك باستخدام <code>compile()‎</code> لكن الخيار يبقى لك ففي حال لم ترغب باستخدام دالة الخسارة الافتراضية يمكنك حسابها بنفسك.
</p>

<p>
	يعمل أسلوب الترميز السابق جيدًا مع مجموعات البيانات صغيرة الحجم لكنه لا يُعدّ عمليًّا أبدًا مع مجموعات البيانات الكبيرة بل وسيؤدي إلى إبطاء عملية التدريب، يعود ذلك لسببين: الأول أن مصفوفتي الرموز والتسميات التوضيحية ستكونان كبيرتي الحجم وتحميلهما بالكامل إلى الذاكرة يُعدّ مشكلة، والسبب الثاني أن مكتبة Numpy لا تستطيع التعامل مع المصفوفات غير منظمة الأطوال المعروفة باسم jagged arrays يعني ذلك أنك ستضطر إلى حشو العناصر القصيرة في المصفوفة بالأصفار لتصبح جميعها بطول موحد يساوي أطول عنصر في المصفوفة، وهذا أيضًا سيُبَطئ التدريب.
</p>

<h3 id="tfdatadataset">
	تحميل مجموعة بيانات بصيغة tf.data.Dataset
</h3>

<p>
	يمكنك تحميل مجموعة بياناتك بصيغة <code>tf.data.Dataset</code> بدلًا من اتباع الطريقة السابقة والمخاطرة بإبطاء التدريب، سنقترح عليك طريقتين لإنجاز الأمر، وتستطيع إنشاء <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%AE%D8%B7%D9%88%D8%B7-%D8%A7%D9%84%D8%A3%D9%86%D8%A7%D8%A8%D9%8A%D8%A8-pipelines-%D9%84%D9%84%D8%A7%D8%B3%D8%AA%D8%AF%D9%84%D8%A7%D9%84-%D9%81%D9%8A-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2353/" rel="">خط أنابيبك</a> الخاص <code>tf.data</code> يدويًا إذا رغبت بذلك:
</p>

<ul>
	<li>
		<p>
			<a href="https://huggingface.co/docs/transformers/v4.39.0/en/main_classes/model#transformers.TFPreTrainedModel.prepare_tf_dataset" rel="external nofollow"><code>prepare_tf_dataset()‎</code></a>: تعتمد هذه الطريقة على طبيعة نموذجك لذا تُعدّ الطريقة الأنسب والموصى بها في معظم الحالات، فهي تفحص مواصفات النموذج وتتعرف تلقائيًا على أعمدة مجموعة البيانات المتوافقة معه أي التي يمكن استخدامها كمدخلات للنموذج، وتتجاهل الأعمدة غير المتوافقة فتُنشئ بذلك مجموعة بيانات أبسط وأفضل أداءً.
		</p>
	</li>
	<li>
		<p>
			<a href="https://huggingface.co/docs/datasets/v2.18.0/en/package_reference/main_classes#datasets.Dataset.to_tf_dataset" rel="external nofollow"><code>to_tf_dataset</code></a>: طريقة منخفضة المستوى low-level فهي تتحكم بالتفاصيل الدقيقة لطريقة إنشاء مجموعة بيانات التدريب، فتُمَكِّنك من تحديد الأعمدة <code>columns</code> وتسمياتها التوضيحية <code>label_cols</code> التي تود تضمينها في مجموعة البيانات.
		</p>
	</li>
</ul>

<p>
	لنبدأ بالطريقة الأولى <code>prepare_tf_dataset()‎</code>، ولكن قبل تطبيقها ينبغي لنا ترميز البيانات وإدخال مُخرجات المُرَمِّز بهيئة أعمدة إلى مجموعة البيانات dataset كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_30" style=""><span class="kwd">def</span><span class="pln"> tokenize_dataset</span><span class="pun">(</span><span class="pln">data</span><span class="pun">):</span><span class="pln">
    </span><span class="com"># سنُدخِل مفاتيح القاموس الناتج هنا إلى مجموعة البيانات بصفتها أعمدة</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> tokenizer</span><span class="pun">(</span><span class="pln">data</span><span class="pun">[</span><span class="str">"text"</span><span class="pun">])</span><span class="pln">

dataset </span><span class="pun">=</span><span class="pln"> dataset</span><span class="pun">.</span><span class="pln">map</span><span class="pun">(</span><span class="pln">tokenize_dataset</span><span class="pun">)</span></pre>

<p>
	تُخَزَّن مجموعات بيانات Hugging Face على القرص الصلب افتراضيًا، فلن تسبب ضغطًا على استخدام الذاكرة على حاسوبك، وبمجرد إضافة الأعمدة السابقة تستطيع الحصول على الدفعات batches من مجموعة البيانات، وإضافة رموز الحشو إلى كل دفعة وهو ما يقلل عدد رموز الحشو المطلوبة في كل مرة مقارنةً بحشو مجموعة البيانات كاملةً.
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_32" style=""><span class="pln">tf_dataset </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">prepare_tf_dataset</span><span class="pun">(</span><span class="pln">dataset</span><span class="pun">[</span><span class="str">"train"</span><span class="pun">],</span><span class="pln"> batch_size</span><span class="pun">=</span><span class="lit">16</span><span class="pun">,</span><span class="pln"> shuffle</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">,</span><span class="pln"> tokenizer</span><span class="pun">=</span><span class="pln">tokenizer</span><span class="pun">)</span></pre>

<p>
	مررنا إلى <code>Preparation_tf_dataset</code> في التعليمات السابقة وسيطًا خاصًا هو <code>tokenizer</code> يحدد المُرَمِّز الذي سنستخدمه لحشو الدفعات المُحَمَّلة بطريقة صحيحة، لكن يمكنك الاستغناء عنه إذا كانت العينات في مجموعة بياناتك متساوية الطول ولا تحتاج لأي حشو، أو استبداله بوسيطٍ آخر نحو <code>Collate_fn</code> إذا كنت ترغب بتدريب النموذج على حالات أعقد، مثل نمذجة اللغة المقنعة masked language modelling أي إخفاء بعض الرموز ليتنبأ النموذج بالكلمات من السياق أو غيرها من الحالات، تستطيع تحدد نوعية المعالجة التحضيرية التي تريدها للدفعات قبل تمريرها للنموذج، يساعدك الاطلاع على <a href="https://github.com/huggingface/transformers/tree/main/examples" rel="external nofollow">بعض الأمثلة</a> و<a href="https://huggingface.co/docs/transformers/notebooks" rel="external nofollow">الملاحظات</a> المتعلقة بالموضوع من منصة Hugging Face لتطبيق ذلك عمليًّا.
</p>

<p>
	والآن بعد إنشاء مجموعة بيانات <code>tf.data.Dataset</code> يتبقى لنا الخطوة الأخيرة وهي تصريف النموذج <code>compile</code> وملائمته <code>fit</code> وفق التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_34" style=""><span class="pln">model</span><span class="pun">.</span><span class="pln">compile</span><span class="pun">(</span><span class="pln">optimizer</span><span class="pun">=</span><span class="typ">Adam</span><span class="pun">(</span><span class="lit">3e-5</span><span class="pun">))</span><span class="pln">  </span><span class="com"># No loss argument!</span><span class="pln">

model</span><span class="pun">.</span><span class="pln">fit</span><span class="pun">(</span><span class="pln">tf_dataset</span><span class="pun">)</span></pre>

<h2 id="nativepytorch">
	تدريب نموذج ذكاء اصطناعي باستخدام Native PyTorch
</h2>

<p>
	يساعدك المُدَرِّب Trainer على تدريب نموذجك وضبطه بتعليمة واحدة فقط ويغنيك عن إنشاء حلقة التدريب من الصفر، لكن بعض المستخدمين يفضلون عدم الاعتماد على المُدَرِّب وإنشاء حلقات تدريبهم الخاصة بأنفسهم لتدريب نماذج مكتبة المحوّلات Transformers، فإذا كنت أحدهم يمكنك إجراء ذلك باستخدام إطار العمل PyTorch لوحده أي native PyTorch وفق الخطوات التالية، لكن في البداية ننصحك بتفريغ الذاكرة المؤقتة على جهازك أو دفتر ملاحظاتك notebook بإعادة تشغيله أو بتنفيذ هذه الأوامر:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_36" style=""><span class="kwd">del</span><span class="pln"> model
</span><span class="kwd">del</span><span class="pln"> trainer
torch</span><span class="pun">.</span><span class="pln">cuda</span><span class="pun">.</span><span class="pln">empty_cache</span><span class="pun">()</span></pre>

<p>
	تتضمن الخطوات التالية المعالجة التي سنجريها يدويًا على البيانات المُرَمَّزة <code>tokenized_dataset</code> لتحضيرها للتدريب.
</p>

<p>
	1. تخَلَّص من عمود النص <code>text</code> لأن النموذج لا يقبل النصوص الخام مدخلاتٍ له:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_38" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenized_datasets </span><span class="pun">=</span><span class="pln"> tokenized_datasets</span><span class="pun">.</span><span class="pln">remove_columns</span><span class="pun">([</span><span class="str">"text"</span><span class="pun">])</span></pre>

<p>
	2. عَدِّل اسم العمود <code>label</code> إلى <code>labels</code> ليتوافق مع اسم الوسيط الذي يقبله النموذج:
</p>

<pre class="ipsCode">&gt;&gt;&gt; tokenized_datasets = tokenized_datasets.rename_column("label", "labels")
</pre>

<p>
	3. اضبط تنسيق مجموعة البيانات لتُرجِع PyTorch tensors بدلًا من القوائم المعتادة:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_40" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenized_datasets</span><span class="pun">.</span><span class="pln">set_format</span><span class="pun">(</span><span class="str">"torch"</span><span class="pun">)</span></pre>

<p>
	4. ثم أنشئ مجموعة بيانات مُصَغَّرة من مجموعة البيانات الكاملة كما فعلنا في الفقرات السابقة لتسريع عملية صقل النموذج fine-tuning:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_44" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> small_train_dataset </span><span class="pun">=</span><span class="pln"> tokenized_datasets</span><span class="pun">[</span><span class="str">"train"</span><span class="pun">].</span><span class="pln">shuffle</span><span class="pun">(</span><span class="pln">seed</span><span class="pun">=</span><span class="lit">42</span><span class="pun">).</span><span class="pln">select</span><span class="pun">(</span><span class="pln">range</span><span class="pun">(</span><span class="lit">1000</span><span class="pun">))</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> small_eval_dataset </span><span class="pun">=</span><span class="pln"> tokenized_datasets</span><span class="pun">[</span><span class="str">"test"</span><span class="pun">].</span><span class="pln">shuffle</span><span class="pun">(</span><span class="pln">seed</span><span class="pun">=</span><span class="lit">42</span><span class="pun">).</span><span class="pln">select</span><span class="pun">(</span><span class="pln">range</span><span class="pun">(</span><span class="lit">1000</span><span class="pun">))</span></pre>

<h3 id="dataloader">
	مُحَمِّل البيانات DataLoader
</h3>

<p>
	أنشئ مُحَمِّل بيانات <code>DataLoader</code> لمجموعات بيانات التدريب والاختبار لتٌنَفِّذ العمليات التكرارية على دفعات البيانات:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_46" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> torch</span><span class="pun">.</span><span class="pln">utils</span><span class="pun">.</span><span class="pln">data </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">DataLoader</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> train_dataloader </span><span class="pun">=</span><span class="pln"> </span><span class="typ">DataLoader</span><span class="pun">(</span><span class="pln">small_train_dataset</span><span class="pun">,</span><span class="pln"> shuffle</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">,</span><span class="pln"> batch_size</span><span class="pun">=</span><span class="lit">8</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> eval_dataloader </span><span class="pun">=</span><span class="pln"> </span><span class="typ">DataLoader</span><span class="pun">(</span><span class="pln">small_eval_dataset</span><span class="pun">,</span><span class="pln"> batch_size</span><span class="pun">=</span><span class="lit">8</span><span class="pun">)</span></pre>

<p>
	ثم حَمِّل النموذج وحَدِّد عدد التسميات <code>labels</code> المتوقعة له:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_48" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoModelForSequenceClassification</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoModelForSequenceClassification</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"google-bert/bert-base-cased"</span><span class="pun">,</span><span class="pln"> num_labels</span><span class="pun">=</span><span class="lit">5</span><span class="pun">)</span></pre>

<h3 id="optimizerlearningratescheduler">
	المُحَسِّنْ Optimizer ومُجَدّوِل معدل التعلُّم learning rate scheduler
</h3>

<p>
	سننشئ مُحَسِّنْ Optimizer ومُجَدّوِل معدل التعلُّم learning rate scheduler لتدريب النموذج وضبطه، اخترنا هنا المُحَسِّنْ <a href="https://pytorch.org/docs/stable/generated/torch.optim.AdamW.html" rel="external nofollow">AdamW</a> من PyTorch:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_50" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> torch</span><span class="pun">.</span><span class="pln">optim </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AdamW</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> optimizer </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AdamW</span><span class="pun">(</span><span class="pln">model</span><span class="pun">.</span><span class="pln">parameters</span><span class="pun">(),</span><span class="pln"> lr</span><span class="pun">=</span><span class="lit">5e-5</span><span class="pun">)</span></pre>

<p>
	ثم مُجَدّوِل معدل التعلُّم باستخدام المُجَدّوِل الافتراضي <a href="https://huggingface.co/docs/transformers/v4.39.0/en/main_classes/trainer#transformers.Trainer" rel="external nofollow">للمُدَّرِب Trainer</a>:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_52" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> get_scheduler

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> num_epochs </span><span class="pun">=</span><span class="pln"> </span><span class="lit">3</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> num_training_steps </span><span class="pun">=</span><span class="pln"> num_epochs </span><span class="pun">*</span><span class="pln"> len</span><span class="pun">(</span><span class="pln">train_dataloader</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> lr_scheduler </span><span class="pun">=</span><span class="pln"> get_scheduler</span><span class="pun">(</span><span class="pln">
    name</span><span class="pun">=</span><span class="str">"linear"</span><span class="pun">,</span><span class="pln"> optimizer</span><span class="pun">=</span><span class="pln">optimizer</span><span class="pun">,</span><span class="pln"> num_warmup_steps</span><span class="pun">=</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> num_training_steps</span><span class="pun">=</span><span class="pln">num_training_steps
</span><span class="pun">)</span></pre>

<p>
	وأخيرًا حَدِّدْ قيمة المعامل <code>device</code> لتكون <code>"cpu"</code> إذا كان لديك وحدة معالجة رسوميات (GPU) ورغبت باستخدامها للتدريب، فمن دونها سيستغرق التدريب مدةً طويلة في حال الاعتماد على وحدة المعالجة المركزية (CPU) لوحدها وقد تصل المدة لساعات بدلًا من بضع دقائق:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_54" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">import</span><span class="pln"> torch

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> device </span><span class="pun">=</span><span class="pln"> torch</span><span class="pun">.</span><span class="pln">device</span><span class="pun">(</span><span class="str">"cuda"</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> torch</span><span class="pun">.</span><span class="pln">cuda</span><span class="pun">.</span><span class="pln">is_available</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> torch</span><span class="pun">.</span><span class="pln">device</span><span class="pun">(</span><span class="str">"cpu"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">to</span><span class="pun">(</span><span class="pln">device</span><span class="pun">)</span></pre>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<blockquote class="ipsQuote" data-gramm="false" data-ipsquote="">
		<div class="ipsQuote_citation">
			اقتباس
		</div>

		<p>
			ننوه هنا إلى توفر خدمات سحابية تتيح لك الوصول إلى وحدات GPU عبر السحابة من مزودين مثل: <a href="https://colab.research.google.com/" rel="external nofollow">Colaboratory</a> و <a href="https://studiolab.sagemaker.aws/" rel="external nofollow">SageMaker</a>.
		</p>
	</blockquote>
</blockquote>

<p>
	أصبحنا جاهزين الآن للتدريب.
</p>

<h3 id="trainingloop">
	حلقة التدريب Training loop
</h3>

<p>
	إليك نموذجًا للشيفرة البرمجية الخاصة بحلقة التدريب، ويمكنك استخدام المكتبة <a href="https://tqdm.github.io/" rel="external nofollow">tqdm</a> لإضافة شريط خاص bar يعرض لك تقدم مراحل التدريب لتتبع سير العملية:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_56" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> tqdm</span><span class="pun">.</span><span class="pln">auto </span><span class="kwd">import</span><span class="pln"> tqdm

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> progress_bar </span><span class="pun">=</span><span class="pln"> tqdm</span><span class="pun">(</span><span class="pln">range</span><span class="pun">(</span><span class="pln">num_training_steps</span><span class="pun">))</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">train</span><span class="pun">()</span><span class="pln">
     </span><span class="kwd">for</span><span class="pln"> epoch </span><span class="kwd">in</span><span class="pln"> range</span><span class="pun">(</span><span class="pln">num_epochs</span><span class="pun">):</span><span class="pln">
        </span><span class="kwd">for</span><span class="pln"> batch </span><span class="kwd">in</span><span class="pln"> train_dataloader</span><span class="pun">:</span><span class="pln">
            batch </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">k</span><span class="pun">:</span><span class="pln"> v</span><span class="pun">.</span><span class="pln">to</span><span class="pun">(</span><span class="pln">device</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> k</span><span class="pun">,</span><span class="pln"> v </span><span class="kwd">in</span><span class="pln"> batch</span><span class="pun">.</span><span class="pln">items</span><span class="pun">()}</span><span class="pln">
            outputs </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">(**</span><span class="pln">batch</span><span class="pun">)</span><span class="pln">
            loss </span><span class="pun">=</span><span class="pln"> outputs</span><span class="pun">.</span><span class="pln">loss
        loss</span><span class="pun">.</span><span class="pln">backward</span><span class="pun">()</span><span class="pln">

        optimizer</span><span class="pun">.</span><span class="pln">step</span><span class="pun">()</span><span class="pln">
        lr_scheduler</span><span class="pun">.</span><span class="pln">step</span><span class="pun">()</span><span class="pln">
        optimizer</span><span class="pun">.</span><span class="pln">zero_grad</span><span class="pun">()</span><span class="pln">
        progress_bar</span><span class="pun">.</span><span class="pln">update</span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span></pre>

<h3 id="evaluate">
	التقييم Evaluate
</h3>

<p>
	يختلف أسلوب تقييم أداء النموذج في حلقة التدريب المخصصة عنه في صنف المُدَرِّب Trainer، فبدلًا من حساب مؤشرات الأداء وتصدير التقارير عنها في نهاية كل دورة تدربية epoch سيجري التقييم هنا في نهاية التدريب إذ سنُجَمع كافة الدفعات باستخدم <code>add_batch</code> ونحسب مؤشرات الأداء.
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8767_58" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">import</span><span class="pln"> evaluate

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> metric </span><span class="pun">=</span><span class="pln"> evaluate</span><span class="pun">.</span><span class="pln">load</span><span class="pun">(</span><span class="str">"accuracy"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">eval</span><span class="pun">()</span><span class="pln">
     </span><span class="kwd">for</span><span class="pln"> batch </span><span class="kwd">in</span><span class="pln"> eval_dataloader</span><span class="pun">:</span><span class="pln">
        batch </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">k</span><span class="pun">:</span><span class="pln"> v</span><span class="pun">.</span><span class="pln">to</span><span class="pun">(</span><span class="pln">device</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> k</span><span class="pun">,</span><span class="pln"> v </span><span class="kwd">in</span><span class="pln"> batch</span><span class="pun">.</span><span class="pln">items</span><span class="pun">()}</span><span class="pln">
        </span><span class="kwd">with</span><span class="pln"> torch</span><span class="pun">.</span><span class="pln">no_grad</span><span class="pun">():</span><span class="pln">
            outputs </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">(**</span><span class="pln">batch</span><span class="pun">)</span><span class="pln">

        logits </span><span class="pun">=</span><span class="pln"> outputs</span><span class="pun">.</span><span class="pln">logits
        predictions </span><span class="pun">=</span><span class="pln"> torch</span><span class="pun">.</span><span class="pln">argmax</span><span class="pun">(</span><span class="pln">logits</span><span class="pun">,</span><span class="pln"> dim</span><span class="pun">=-</span><span class="lit">1</span><span class="pun">)</span><span class="pln">
        metric</span><span class="pun">.</span><span class="pln">add_batch</span><span class="pun">(</span><span class="pln">predictions</span><span class="pun">=</span><span class="pln">predictions</span><span class="pun">,</span><span class="pln"> references</span><span class="pun">=</span><span class="pln">batch</span><span class="pun">[</span><span class="str">"labels"</span><span class="pun">])</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> metric</span><span class="pun">.</span><span class="pln">compute</span><span class="pun">()</span></pre>

<h2 id="-2">
	الخلاصة
</h2>

<p>
	تغرفنا في مقال اليوم على تقنية الصقل fine-tuning لتدريب نماذج الذكاء الاصطناعي المُدَرَّبة مسبقًا وتحسين أدائها على مهام معينة باستخدام بيانات محددة، ووضحنا الفوائد الرئيسية لاستخدام نماذج مُدَرَّبة مسبقًا وكيفية تحميل وتحضير البيانات لها وتدريبها وضبطها وتقييم أدائها من خلال استخدام مكتبات وأطر عمل متنوعة تساعدنا في تنفيذ مهام الصقل مثل Transformers و TensorFlow و Keras و PyTorch كي نحسن من كفاءة وأداء هذه النماذج في مشاريعنا الخاصة.
</p>

<p>
	ترجمة -وبتصرف- لقسم <a href="https://huggingface.co/docs/transformers/training" rel="external nofollow">Fine-tune a pretrained model</a> من توثيقات Hugging Face.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		المقال السابق: <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D9%85%D8%B9%D8%A7%D9%84%D8%AC%D8%A9-%D8%A7%D9%84%D9%85%D9%8F%D8%B3%D8%A8%D9%82%D8%A9-%D9%84%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%82%D8%A8%D9%84-%D8%AA%D9%85%D8%B1%D9%8A%D8%B1%D9%87%D8%A7-%D9%84%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2365/" rel="">المعالجة المُسبقة للبيانات قبل تمريرها لنماذج الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-%D8%A8%D8%A7%D9%8A-%D8%AA%D9%88%D8%B1%D8%B4-pytorch-%D9%88%D8%A3%D9%87%D9%85%D9%8A%D8%AA%D9%87-%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2311/" rel="">تعرف على إطار عمل باي تورش PyTorch وأهميته لتطبيقات الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A8%D9%86%D8%A7%D8%A1-%D8%B4%D8%A8%D9%83%D8%A9-%D8%B9%D8%B5%D8%A8%D9%8A%D8%A9-%D9%84%D8%AA%D8%B1%D8%AC%D9%85%D8%A9-%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%A5%D8%B4%D8%A7%D8%B1%D8%A9-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%A5%D9%86%D8%AC%D9%84%D9%8A%D8%B2%D9%8A%D8%A9-r2259/" rel="">كيفية بناء شبكة عصبية لترجمة لغة الإشارة إلى اللغة الإنجليزية</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D9%81%D8%B6%D9%84-%D8%AF%D9%88%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2332/" rel="">تعرف على أفضل دورات الذكاء الاصطناعي</a>
	</li>
</ul>

<p>
	 
</p>
]]></description><guid isPermaLink="false">2367</guid><pubDate>Sun, 21 Jul 2024 15:07:00 +0000</pubDate></item><item><title>&#x627;&#x644;&#x645;&#x639;&#x627;&#x644;&#x62C;&#x629; &#x627;&#x644;&#x645;&#x64F;&#x633;&#x628;&#x642;&#x629; &#x644;&#x644;&#x628;&#x64A;&#x627;&#x646;&#x627;&#x62A; &#x642;&#x628;&#x644; &#x62A;&#x645;&#x631;&#x64A;&#x631;&#x647;&#x627; &#x644;&#x646;&#x645;&#x627;&#x630;&#x62C; &#x627;&#x644;&#x630;&#x643;&#x627;&#x621; &#x627;&#x644;&#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A;</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D9%85%D8%B9%D8%A7%D9%84%D8%AC%D8%A9-%D8%A7%D9%84%D9%85%D9%8F%D8%B3%D8%A8%D9%82%D8%A9-%D9%84%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%82%D8%A8%D9%84-%D8%AA%D9%85%D8%B1%D9%8A%D8%B1%D9%87%D8%A7-%D9%84%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2365/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_07/-------.png.4dd0cf4e7ebcc49d5391064e20451648.png" /></p>
<p>
	تحتاج جميع أنواع البيانات مهما كان نوعها سواء كانت نصوصًا أو صورًا أو ملفات صوتية أو غير ذلك إلى معالجة مسبقة أو معالجة تحضيرية قبل تمريرها لنماذج الذكاء الاصطناعي حتى تتدرب عليها، نطلق على هذه العملية اسم "data Preprocessing" إذ تتحول هذه البيانات بعد معالجتها إلى دفعاتٍ من التنسورات tensors  التي تمثل بنى ملائمة لتمثيل البيانات تتوافق مع النموذج ويمكنه التعامل معها، وفي هذا المجال توفر <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AC%D9%88%D9%84%D8%A9-%D8%B3%D8%B1%D9%8A%D8%B9%D8%A9-%D9%84%D9%84%D8%A8%D8%AF%D8%A1-%D9%85%D8%B9-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D9%88%D9%91%D9%84%D8%A7%D8%AA-transformers-r2351/" rel="">مكتبة المحولات Transformers</a> مجموعةً واسعة من أصناف المعالجة تُسّهِل عليك تجهيز بياناتك للنموذج، وهو ما سنتعلمه في مقال اليوم إذ سنُجري معالجة مسبقة لأنواع البيانات التالية:
</p>

<ul>
	<li>
		<strong>النصوص</strong>: سنستخدم <a href="https://huggingface.co/docs/transformers/main_classes/tokenizer" rel="external nofollow">المُرَمِّزات Tokenizer</a> لمعالجة النص وتحويله إلى سلسلة رموز tokens، ثم تمثيلها عدديًا وتجميعها على هيئة tensors.
	</li>
	<li>
		<strong>الكلام والصوت</strong>: سنعتمد على <a href="https://huggingface.co/docs/transformers/main_classes/feature_extractor" rel="external nofollow">مستخرج الميزات Feature extractor</a> لاستخراج الميزات المتسلسلة من الأمواج الصوتية وتحويلها إلى tensors.
	</li>
	<li>
		<strong>الصور</strong>: سنتعامل مع <a href="https://huggingface.co/docs/transformers/main_classes/image_processor" rel="external nofollow">معالج الصور ImageProcessor</a> ونُمَرِر له الصور المطلوبة قبل إدخالها للنموذج فيُحولها إلى tensors.
	</li>
	<li>
		<strong>الأنماط المتعددة Multimodal</strong>: نستخدم في هذه الحالة <a href="https://huggingface.co/docs/transformers/main_classes/processors" rel="external nofollow">معالجًا Processor</a> يجمع بين وظيفة المُرَمِّز ووظيفة معالج الصور أو بين وظيفة المُرَمِّز ومستخرج الميزات حسب أنماط البيانات المستخدمة في مشروعك وهل هي تتضمن نصًا وصوتًا، أو نصًا وصورة، أو غير ذلك.
	</li>
</ul>

<p>
	<strong>ملاحظة</strong>: ننصحك باستخدام <strong>المعالج التلقائي AutoProcessor</strong> فهو يساعدك بصورة كبيرة ويختار لك دومًا دائمًا صنف المعالج المناسب لنموذجك سواء كان مُرَمِّز أو معالج صور أو مستخرج ميزات أو معالج للأنماط المتعددة.
</p>

<p>
	قبل البدء بأمثلتنا العملية سنُثَبِّتْ مجموعة البيانات <code>Datasets</code> لنتمكن من تحميل مجموعات بيانات تجريبية لعملنا من خلال كتابة التعليمة التالية:
</p>

<pre class="ipsCode">pip install datasets
</pre>

<h2 id="-1">
	معالجة اللغة الطبيعية
</h2>

<p>
	المُرَمِّز tokenizer هو الأداة الرئيسية لمعالجة النصوص اللغوية قبل تمريرها للنموذج، إذ يُقَسٍّمُها إلى رموز tokens وفقًا لقواعد خاصة، ثم يحوّل هذه الرموز إلى أعداد ثم إلى تنسورات tensors تمثل المدخلات المقبولة للنموذج، وستُمَرَر أية بيانات إضافية لاحقًا للنموذج له عبر المُرَمِّز.
</p>

<p>
	<strong>ملاحظة</strong>: إذا كنت تخطط لاستخدام أحد النماذج المُدَّربة مسبقًا بدلًا من تدريب نموذجك من الصفر، فاحرص على معالجة بياناتك بالمُرَمِّز نفسه الذي تَدّرَبَ عليه النموذج الجاهز قبل تمريرها له، فهذا يعني أن يُقَسَّم النص الخاص بك بالطريقة نفسها التي قُسِّمَت بها بيانات تدريب النموذج، وأن يُرَمَّز برموزه نفسها (التي يشار إليها بالمفردات vocab).
</p>

<p>
	لنبدأ بالتطبيق العملي، حَمِّلْ في البداية مُرَمِّزًا tokenizer يناسب النموذج الذي اخترته، ويتضمن المفردات vocab التي تَدَّرَبَ عليها سابقًا، وذلك بواسطة التابع <code>AutoTokenizer.from_pretrained()‎</code> وفق التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_7" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"google-bert/bert-base-cased"</span><span class="pun">)</span></pre>

<p>
	ثم مَرر النص للمُرَمِّز وستحصل على الخرج التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_9" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> encoded_input </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">(</span><span class="str">"Do not meddle in the affairs of wizards, for they are subtle and quick to anger."</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">encoded_input</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="str">'input_ids'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="lit">101</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2079</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2025</span><span class="pun">,</span><span class="pln"> </span><span class="lit">19960</span><span class="pun">,</span><span class="pln"> </span><span class="lit">10362</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1999</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1996</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3821</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1997</span><span class="pun">,</span><span class="pln"> </span><span class="lit">16657</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1010</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2005</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2027</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2024</span><span class="pun">,</span><span class="pln"> </span><span class="lit">11259</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1998</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4248</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2000</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4963</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1012</span><span class="pun">,</span><span class="pln"> </span><span class="lit">102</span><span class="pun">],</span><span class="pln">
 </span><span class="str">'token_type_ids'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
 </span><span class="str">'attention_mask'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">]}</span></pre>

<p>
	يعطي المُرَمِّز في خرجه قاموسًا dictionary يتضمن ثلاثة أنواع من العناصر هي:
</p>

<ul>
	<li>
		<code>input_ids</code>: الدلالات العددية المقابلة لكل رمز من رموز الجملة أي لكل token.
	</li>
	<li>
		<code>attention_mask</code>: يشير إلى الرموز المهمة التي ينبغي الانتباه لها.
	</li>
	<li>
		<code>token_type_ids</code>: تبين السلسلة التي ينتمي إليها كل رمز، وهي مفيدة عندما تمرر أكثر من سلسلة للمُرَمِّز.
	</li>
</ul>

<p>
	يمكنك فك ترميز الخرج السابق لاستعادة النص الأصلي كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_11" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer</span><span class="pun">.</span><span class="pln">decode</span><span class="pun">(</span><span class="pln">encoded_input</span><span class="pun">[</span><span class="str">"input_ids"</span><span class="pun">])</span><span class="pln">
</span><span class="str">'[CLS] Do not meddle in the affairs of wizards, for they are subtle and quick to anger. [SEP]'</span></pre>

<p>
	لاحظ أنك استعدت النص مع رمزين إضافيين هما <code>CLS</code> و <code>SEP</code> واحد في مقدمة الجملة، وواحد في نهايتها أضافهما المُرَمِّز، قد لا تتطلب جميع النماذج وجود هذين الرمزين لكنَّ المُرَمِّز يُضيفهما تلقائيًا، علمًا أن الرمز <code>CLS</code> هو اختصار لكلمة المُصَنِّف classifier والرمز <code>SEP</code> اختصار لكلمة الفاصل separator.
</p>

<p>
	أما إذا رغبت بمعالجة عدة جمل في آنٍ واحد، فمَرِرها للمُرَمِّز بهيئة قائمة list كما في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_13" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> batch_sentences </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">
    </span><span class="str">"But what about second breakfast?"</span><span class="pun">,</span><span class="pln">
    </span><span class="str">"Don't think he knows about second breakfast, Pip."</span><span class="pun">,</span><span class="pln">
    </span><span class="str">"What about elevensies?"</span><span class="pun">,</span><span class="pln">
</span><span class="pun">]</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> encoded_inputs </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">(</span><span class="pln">batch_sentences</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">encoded_inputs</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="str">'input_ids'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[[</span><span class="lit">101</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1252</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1184</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1164</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1248</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6462</span><span class="pun">,</span><span class="pln"> </span><span class="lit">136</span><span class="pun">,</span><span class="pln"> </span><span class="lit">102</span><span class="pun">],</span><span class="pln">
               </span><span class="pun">[</span><span class="lit">101</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1790</span><span class="pun">,</span><span class="pln"> </span><span class="lit">112</span><span class="pun">,</span><span class="pln"> </span><span class="lit">189</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1341</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1119</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3520</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1164</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1248</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6462</span><span class="pun">,</span><span class="pln"> </span><span class="lit">117</span><span class="pun">,</span><span class="pln"> </span><span class="lit">21902</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1643</span><span class="pun">,</span><span class="pln"> </span><span class="lit">119</span><span class="pun">,</span><span class="pln"> </span><span class="lit">102</span><span class="pun">],</span><span class="pln">
               </span><span class="pun">[</span><span class="lit">101</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1327</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1164</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5450</span><span class="pun">,</span><span class="pln"> </span><span class="lit">23434</span><span class="pun">,</span><span class="pln"> </span><span class="lit">136</span><span class="pun">,</span><span class="pln"> </span><span class="lit">102</span><span class="pun">]],</span><span class="pln">
 </span><span class="str">'token_type_ids'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[[</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
                    </span><span class="pun">[</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
                    </span><span class="pun">[</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">]],</span><span class="pln">
 </span><span class="str">'attention_mask'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
                    </span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
                    </span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">]]}</span></pre>

<h3 id="pad">
	الحشو Pad
</h3>

<p>
	يشترط النموذج أن تكون جميع tensors المدخلة إليه بنفس الطول أي بنفس عدد المحارف، وهذا الأمر لا يمكن تحقيقه من دون معالجة النصوص، فالجمل النصية التي نتعامل معها مختلفة الأطوال في معظم الحالات إن لم يكن في جميعها، لذا نلجأ للحشو pad في تطبيقات معالجة اللغة الطبيعية أي إضافة رموز خاصة للجمل القصيرة تسمى رموز الحشو padding token لزيادة طولها حتى تتساوى مع الجمل الطويلة فنحصل على طول موحد للمدخلات.
</p>

<p>
	اضبط المعامل <code>padding</code> على القيمة <code>True</code> لتُفَعِّل ميزة الحشو في برنامجك كما في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_15" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> batch_sentences </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">
    </span><span class="str">"But what about second breakfast?"</span><span class="pun">,</span><span class="pln">
    </span><span class="str">"Don't think he knows about second breakfast, Pip."</span><span class="pun">,</span><span class="pln">
    </span><span class="str">"What about elevensies?"</span><span class="pun">,</span><span class="pln">
</span><span class="pun">]</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> encoded_input </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">(</span><span class="pln">batch_sentences</span><span class="pun">,</span><span class="pln"> padding</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">encoded_input</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="str">'input_ids'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[[</span><span class="lit">101</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1252</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1184</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1164</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1248</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6462</span><span class="pun">,</span><span class="pln"> </span><span class="lit">136</span><span class="pun">,</span><span class="pln"> </span><span class="lit">102</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
               </span><span class="pun">[</span><span class="lit">101</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1790</span><span class="pun">,</span><span class="pln"> </span><span class="lit">112</span><span class="pun">,</span><span class="pln"> </span><span class="lit">189</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1341</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1119</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3520</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1164</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1248</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6462</span><span class="pun">,</span><span class="pln"> </span><span class="lit">117</span><span class="pun">,</span><span class="pln"> </span><span class="lit">21902</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1643</span><span class="pun">,</span><span class="pln"> </span><span class="lit">119</span><span class="pun">,</span><span class="pln"> </span><span class="lit">102</span><span class="pun">],</span><span class="pln">
               </span><span class="pun">[</span><span class="lit">101</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1327</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1164</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5450</span><span class="pun">,</span><span class="pln"> </span><span class="lit">23434</span><span class="pun">,</span><span class="pln"> </span><span class="lit">136</span><span class="pun">,</span><span class="pln"> </span><span class="lit">102</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">]],</span><span class="pln">
 </span><span class="str">'token_type_ids'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[[</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
                    </span><span class="pun">[</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
                    </span><span class="pun">[</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">]],</span><span class="pln">
 </span><span class="str">'attention_mask'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
                    </span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
                    </span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">]]}</span></pre>

<p>
	كما تلاحظ فإن الجملة الثانية في المثال السابق هي الأطول، لذا أضفنا عددًا من الأصفار لكل من الجملة الأولى والثالثة حتى تتساوى معها بالطول.
</p>

<h3 id="truncation">
	الاقتطاع Truncation
</h3>

<p>
	الاقتطاع Truncation هي الحالة المعاكسة للحشو، فقد تصادف في بعض الأحيان سلاسل طويلة جدًا أكبر من الحد المسموح به في النماذج فلا يستطيع النموذج التعامل معها، نلجأ في الحالة لاقتطاع جزء من السلسلة حتى تصبح أقصر.
</p>

<p>
	يمكنك استخدام هذه الخاصية بضبط قيمة المعامل <code>truncation</code> على <code>True</code> ليقطتع المُرَمِّز من طول السلسلة المدخلة حتى تتناسب مع الحد الأقصى للطول الذي يقبله النموذج:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_17" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> batch_sentences </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">
    </span><span class="str">"But what about second breakfast?"</span><span class="pun">,</span><span class="pln">
    </span><span class="str">"Don't think he knows about second breakfast, Pip."</span><span class="pun">,</span><span class="pln">
    </span><span class="str">"What about elevensies?"</span><span class="pun">,</span><span class="pln">
</span><span class="pun">]</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> encoded_input </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">(</span><span class="pln">batch_sentences</span><span class="pun">,</span><span class="pln"> padding</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">,</span><span class="pln"> truncation</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">encoded_input</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="str">'input_ids'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[[</span><span class="lit">101</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1252</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1184</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1164</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1248</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6462</span><span class="pun">,</span><span class="pln"> </span><span class="lit">136</span><span class="pun">,</span><span class="pln"> </span><span class="lit">102</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
               </span><span class="pun">[</span><span class="lit">101</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1790</span><span class="pun">,</span><span class="pln"> </span><span class="lit">112</span><span class="pun">,</span><span class="pln"> </span><span class="lit">189</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1341</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1119</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3520</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1164</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1248</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6462</span><span class="pun">,</span><span class="pln"> </span><span class="lit">117</span><span class="pun">,</span><span class="pln"> </span><span class="lit">21902</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1643</span><span class="pun">,</span><span class="pln"> </span><span class="lit">119</span><span class="pun">,</span><span class="pln"> </span><span class="lit">102</span><span class="pun">],</span><span class="pln">
               </span><span class="pun">[</span><span class="lit">101</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1327</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1164</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5450</span><span class="pun">,</span><span class="pln"> </span><span class="lit">23434</span><span class="pun">,</span><span class="pln"> </span><span class="lit">136</span><span class="pun">,</span><span class="pln"> </span><span class="lit">102</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">]],</span><span class="pln">
 </span><span class="str">'token_type_ids'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[[</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
                    </span><span class="pun">[</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
                    </span><span class="pun">[</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">]],</span><span class="pln">
 </span><span class="str">'attention_mask'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
                    </span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
                    </span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">]]}</span></pre>

<p>
	يمكنك مطالعة <a href="https://huggingface.co/docs/transformers/pad_truncation" rel="external nofollow">دليل الحشو والاقتطاع</a> على منصة Hugging Face لمعرفة المزيد حول وسطاء arguments هاتين العمليتين.
</p>

<h3 id="tensors">
	بناء الموترات Tensors
</h3>

<p>
	إن عناصر الموترات  أو التنسورات <a href="https://ar.wikipedia.org/wiki/%D9%85%D9%88%D8%AA%D8%B1" rel="external nofollow">tensors</a> هي المخرجات النهائية التي نريدها من المُرَمِّز ففي نهاية الأمر هي المدخلات الوحيدة التي يقبلها النموذج، يمكنك الحصول عليها بضبط قيمة المعامل <code>return_tensors</code> حسب <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D9%83%D8%AA%D8%A8%D8%A7%D8%AA-%D9%88%D8%A3%D8%B7%D8%B1-%D8%B9%D9%85%D9%84-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">إطار عمل الذكاء الاصطناعي</a> الذي تعتمده.<br>
	فإذا كنت تستخدم <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-%D8%A8%D8%A7%D9%8A-%D8%AA%D9%88%D8%B1%D8%B4-pytorch-%D9%88%D8%A3%D9%87%D9%85%D9%8A%D8%AA%D9%87-%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2311/" rel="">إطار العمل بايتورش Pytorch</a>، اضبط قيمة المعامل <code>return_tensors</code> على <code>pt</code> وفق التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_19" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> batch_sentences </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">
    </span><span class="str">"But what about second breakfast?"</span><span class="pun">,</span><span class="pln">
    </span><span class="str">"Don't think he knows about second breakfast, Pip."</span><span class="pun">,</span><span class="pln">
    </span><span class="str">"What about elevensies?"</span><span class="pun">,</span><span class="pln">
</span><span class="pun">]</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> encoded_input </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">(</span><span class="pln">batch_sentences</span><span class="pun">,</span><span class="pln"> padding</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">,</span><span class="pln"> truncation</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">,</span><span class="pln"> return_tensors</span><span class="pun">=</span><span class="str">"pt"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">encoded_input</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="str">'input_ids'</span><span class="pun">:</span><span class="pln"> tensor</span><span class="pun">([[</span><span class="lit">101</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1252</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1184</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1164</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1248</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6462</span><span class="pun">,</span><span class="pln"> </span><span class="lit">136</span><span class="pun">,</span><span class="pln"> </span><span class="lit">102</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
                      </span><span class="pun">[</span><span class="lit">101</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1790</span><span class="pun">,</span><span class="pln"> </span><span class="lit">112</span><span class="pun">,</span><span class="pln"> </span><span class="lit">189</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1341</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1119</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3520</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1164</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1248</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6462</span><span class="pun">,</span><span class="pln"> </span><span class="lit">117</span><span class="pun">,</span><span class="pln"> </span><span class="lit">21902</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1643</span><span class="pun">,</span><span class="pln"> </span><span class="lit">119</span><span class="pun">,</span><span class="pln"> </span><span class="lit">102</span><span class="pun">],</span><span class="pln">
                      </span><span class="pun">[</span><span class="lit">101</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1327</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1164</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5450</span><span class="pun">,</span><span class="pln"> </span><span class="lit">23434</span><span class="pun">,</span><span class="pln"> </span><span class="lit">136</span><span class="pun">,</span><span class="pln"> </span><span class="lit">102</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">]]),</span><span class="pln">
 </span><span class="str">'token_type_ids'</span><span class="pun">:</span><span class="pln"> tensor</span><span class="pun">([[</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
                           </span><span class="pun">[</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
                           </span><span class="pun">[</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">]]),</span><span class="pln">
 </span><span class="str">'attention_mask'</span><span class="pun">:</span><span class="pln"> tensor</span><span class="pun">([[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
                           </span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
                           </span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">]])}</span></pre>

<p>
	وإذا كنت تستخدم إطار العمل TensorFlowK، اضبط قيمة المعامل <code>return_tensors</code> على <code>tf</code> كما في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_21" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> batch_sentences </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">
    </span><span class="str">"But what about second breakfast?"</span><span class="pun">,</span><span class="pln">
    </span><span class="str">"Don't think he knows about second breakfast, Pip."</span><span class="pun">,</span><span class="pln">
    </span><span class="str">"What about elevensies?"</span><span class="pun">,</span><span class="pln">
</span><span class="pun">]</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> encoded_input </span><span class="pun">=</span><span class="pln"> tokenizer</span><span class="pun">(</span><span class="pln">batch_sentences</span><span class="pun">,</span><span class="pln"> padding</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">,</span><span class="pln"> truncation</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">,</span><span class="pln"> return_tensors</span><span class="pun">=</span><span class="str">"tf"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">encoded_input</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="str">'input_ids'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">tf</span><span class="pun">.</span><span class="typ">Tensor</span><span class="pun">:</span><span class="pln"> shape</span><span class="pun">=(</span><span class="lit">2</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">),</span><span class="pln"> dtype</span><span class="pun">=</span><span class="pln">int32</span><span class="pun">,</span><span class="pln"> numpy</span><span class="pun">=</span><span class="pln">
array</span><span class="pun">([[</span><span class="lit">101</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1252</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1184</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1164</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1248</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6462</span><span class="pun">,</span><span class="pln"> </span><span class="lit">136</span><span class="pun">,</span><span class="pln"> </span><span class="lit">102</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
       </span><span class="pun">[</span><span class="lit">101</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1790</span><span class="pun">,</span><span class="pln"> </span><span class="lit">112</span><span class="pun">,</span><span class="pln"> </span><span class="lit">189</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1341</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1119</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3520</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1164</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1248</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6462</span><span class="pun">,</span><span class="pln"> </span><span class="lit">117</span><span class="pun">,</span><span class="pln"> </span><span class="lit">21902</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1643</span><span class="pun">,</span><span class="pln"> </span><span class="lit">119</span><span class="pun">,</span><span class="pln"> </span><span class="lit">102</span><span class="pun">],</span><span class="pln">
       </span><span class="pun">[</span><span class="lit">101</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1327</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1164</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5450</span><span class="pun">,</span><span class="pln"> </span><span class="lit">23434</span><span class="pun">,</span><span class="pln"> </span><span class="lit">136</span><span class="pun">,</span><span class="pln"> </span><span class="lit">102</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">]],</span><span class="pln">
      dtype</span><span class="pun">=</span><span class="pln">int32</span><span class="pun">)&gt;,</span><span class="pln">
 </span><span class="str">'token_type_ids'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">tf</span><span class="pun">.</span><span class="typ">Tensor</span><span class="pun">:</span><span class="pln"> shape</span><span class="pun">=(</span><span class="lit">2</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">),</span><span class="pln"> dtype</span><span class="pun">=</span><span class="pln">int32</span><span class="pun">,</span><span class="pln"> numpy</span><span class="pun">=</span><span class="pln">
array</span><span class="pun">([[</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
       </span><span class="pun">[</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
       </span><span class="pun">[</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">]],</span><span class="pln"> dtype</span><span class="pun">=</span><span class="pln">int32</span><span class="pun">)&gt;,</span><span class="pln">
 </span><span class="str">'attention_mask'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">tf</span><span class="pun">.</span><span class="typ">Tensor</span><span class="pun">:</span><span class="pln"> shape</span><span class="pun">=(</span><span class="lit">2</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">),</span><span class="pln"> dtype</span><span class="pun">=</span><span class="pln">int32</span><span class="pun">,</span><span class="pln"> numpy</span><span class="pun">=</span><span class="pln">
array</span><span class="pun">([[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln">
       </span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
       </span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">]],</span><span class="pln"> dtype</span><span class="pun">=</span><span class="pln">int32</span><span class="pun">)&gt;}</span></pre>

<p>
	<strong>ملاحظة</strong>: تختلف خطوط الأنابيب في قبولها لوسطاء المُرَمِّز عند استدعائها <code>()__call__</code>، فعلى سبيل المثال يدعم خط الأنابيب <code>text-2-text-generation</code> الوسيط <code>truncation</code> فقط، بينما يسمح خط الأنابيب <code>text-generation</code> بتمرير ثلاثة وسطاء هي <code>text-generation</code> و <code>truncation</code> و <code>add_special_tokens</code>، أما في خط الأنابيب <code>fill-mask</code> فتُمرر وسطاء المُرَمِّز بهيئة قاموس ضمن الوسيط <code>tokenizer_kwargs</code>.
</p>

<h2 id="-2">
	معالجة البيانات الصوتية
</h2>

<p>
	إن أداة المعالجة في المهام الصوتية هي <a href="https://huggingface.co/docs/transformers/main_classes/feature_extractor" rel="external nofollow">مُستَخرِج الميزات feature extractor</a> حيث تستخدمه لمعالجة البيانات الصوتية الخام وإعدادها قبل إدخالها للنموذج، فيعمل على استخراج الميزات منها ثم تحوّيلها إلى tensors.
</p>

<p>
	سنبدأ أولًا بتحميل مجموعة بيانات صوتية مثل <a href="https://huggingface.co/datasets/PolyAI/minds14" rel="external nofollow">MInDS-14 dataset</a> كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_23" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> datasets </span><span class="kwd">import</span><span class="pln"> load_dataset</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Audio</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> dataset </span><span class="pun">=</span><span class="pln"> load_dataset</span><span class="pun">(</span><span class="str">"PolyAI/minds14"</span><span class="pun">,</span><span class="pln"> name</span><span class="pun">=</span><span class="str">"en-US"</span><span class="pun">,</span><span class="pln"> split</span><span class="pun">=</span><span class="str">"train"</span><span class="pun">)</span></pre>

<p>
	اطلب العنصر الأول من العمود <code>audio</code> من مجموعة البيانات لتأخذ لمحة عن تنسيق الدخل الذي نتعامل معه، علمًا أنه بمجرد استدعاء عمود <code>audio</code> سيتحمل الملف الصوتي تلقائيًا ويُعاد أخذ العينات منه:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_25" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> dataset</span><span class="pun">[</span><span class="lit">0</span><span class="pun">][</span><span class="str">"audio"</span><span class="pun">]</span><span class="pln">
</span><span class="pun">{</span><span class="str">'array'</span><span class="pun">:</span><span class="pln"> array</span><span class="pun">([</span><span class="pln"> </span><span class="lit">0.</span><span class="pln">        </span><span class="pun">,</span><span class="pln">  </span><span class="lit">0.00024414</span><span class="pun">,</span><span class="pln"> </span><span class="pun">-</span><span class="lit">0.00024414</span><span class="pun">,</span><span class="pln"> </span><span class="pun">...,</span><span class="pln"> </span><span class="pun">-</span><span class="lit">0.00024414</span><span class="pun">,</span><span class="pln">
         </span><span class="lit">0.</span><span class="pln">        </span><span class="pun">,</span><span class="pln">  </span><span class="lit">0.</span><span class="pln">        </span><span class="pun">],</span><span class="pln"> dtype</span><span class="pun">=</span><span class="pln">float32</span><span class="pun">),</span><span class="pln">
 </span><span class="str">'path'</span><span class="pun">:</span><span class="pln"> </span><span class="str">'/root/.cache/huggingface/datasets/downloads/extracted/f14948e0e84be638dd7943ac36518a4cf3324e8b7aa331c5ab11541518e9368c/en-US~JOINT_ACCOUNT/602ba55abb1e6d0fbce92065.wav'</span><span class="pun">,</span><span class="pln">
 </span><span class="str">'sampling_rate'</span><span class="pun">:</span><span class="pln"> </span><span class="lit">8000</span><span class="pun">}</span></pre>

<p>
	يتضمن الخرج السابق ثلاثة عناصر:
</p>

<ul>
	<li>
		<code>array</code>: المصفوفة هي الإشارة الصوتية المُحَمَّلة للكلام، والتي سيُعاد أخذ العينات منها وتشكيلها بهيئة مصفوفة أحادية البعد
	</li>
	<li>
		<code>path</code>: يُشير إلى مسار تخزين الملف الصوتي
	</li>
	<li>
		<code>sampling_rate</code>: معدل أخذ العينات، وهو عدد العينات المأخوذة من الإشارة الصوتية في الثانية
	</li>
</ul>

<p>
	استُخدِمَ النموذج <a href="https://huggingface.co/facebook/wav2vec2-base" rel="external nofollow">Wav2Vec2</a> في هذا المقال، وإذا قرأت توصيفه ستجد أن معدل أخذ العينات في البيانات الصوتية التي تَدَّرَب عليها هو 16KHz، وبالتالي لضمان سلامة التطبيق بنبغي أن نستخدم المعدل نفسه في البيانات الصوتية التي سنمررها للنموذج، لذا تفقد دائمًا معدل أخذ العينات في بياناتك الصوتية فإذا كان مختلفًا عن معدل النموذج فينبغي لك إعادة أخذ العينات منها وتسمى هذه العملية resample ليصبح لها نفس معدل النموذج، وهذه هي الخطوة الأولى التي سنطبقها تاليًا:
</p>

<p>
	1. استخدم التابع <code>cast_column</code> الخاص بمجموعات البيانات Datasets لرفع معدل أخذ العينات في مجموعتنا إلى 16KHz:
</p>

<pre class="ipsCode">&gt;&gt;&gt; dataset = dataset.cast_column("audio", Audio(sampling_rate=16_000))
</pre>

<p>
	2. استدعِ العمود <code>audio</code> من مجموعة البيانات ليُعاد أخذ العينات منه وفق المعدل الجديد وتشكيل الملف الصوتي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_27" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> dataset</span><span class="pun">[</span><span class="lit">0</span><span class="pun">][</span><span class="str">"audio"</span><span class="pun">]</span><span class="pln">
</span><span class="pun">{</span><span class="str">'array'</span><span class="pun">:</span><span class="pln"> array</span><span class="pun">([</span><span class="pln"> </span><span class="lit">2.3443763e-05</span><span class="pun">,</span><span class="pln">  </span><span class="lit">2.1729663e-04</span><span class="pun">,</span><span class="pln">  </span><span class="lit">2.2145823e-04</span><span class="pun">,</span><span class="pln"> </span><span class="pun">...,</span><span class="pln">
         </span><span class="lit">3.8356509e-05</span><span class="pun">,</span><span class="pln"> </span><span class="pun">-</span><span class="lit">7.3497440e-06</span><span class="pun">,</span><span class="pln"> </span><span class="pun">-</span><span class="lit">2.1754686e-05</span><span class="pun">],</span><span class="pln"> dtype</span><span class="pun">=</span><span class="pln">float32</span><span class="pun">),</span><span class="pln">
 </span><span class="str">'path'</span><span class="pun">:</span><span class="pln"> </span><span class="str">'/root/.cache/huggingface/datasets/downloads/extracted/f14948e0e84be638dd7943ac36518a4cf3324e8b7aa331c5ab11541518e9368c/en-US~JOINT_ACCOUNT/602ba55abb1e6d0fbce92065.wav'</span><span class="pun">,</span><span class="pln">
 </span><span class="str">'sampling_rate'</span><span class="pun">:</span><span class="pln"> </span><span class="lit">16000</span><span class="pun">}</span></pre>

<p>
	والآن سنُحمّل مستخرج الميزات لتسوية الملف الصوتي normalize، ومعالجته بالحشو أو الاقتطاع وتحضيره قبل إدخاله للنموذج، ففي معالجة النصوص كنا نضيف أصفارًا "0" إلى السلاسل النصية القصيرة لزيادة طولها، وهنا أيضًا سنضيف أصفارًا "0" إلى المصفوفة الصوتية <code>array</code> فهي لا تؤثر على معناها لأنها تفُسَّر بصفتها لحظات صامتة.
</p>

<p>
	حمّل إذًا مُستَخرِج الميزات المناسب لنموذجك بواسطة <code>AutoFeatureExtractor.from_pretrained()‎</code> كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_29" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoFeatureExtractor</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> feature_extractor </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoFeatureExtractor</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"facebook/wav2vec2-base"</span><span class="pun">)</span></pre>

<p>
	ثم مَرر المصفوفة الصوتية <code>array</code> إلى مستخرج المميزات مع ضبط قيمة الوسيط <code>sampling_rate</code> على معدل أخذ العينات المرغوب لضمان تصحيح أي أخطاء قد تحدث:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_31" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> audio_input </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">dataset</span><span class="pun">[</span><span class="lit">0</span><span class="pun">][</span><span class="str">"audio"</span><span class="pun">][</span><span class="str">"array"</span><span class="pun">]]</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> feature_extractor</span><span class="pun">(</span><span class="pln">audio_input</span><span class="pun">,</span><span class="pln"> sampling_rate</span><span class="pun">=</span><span class="lit">16000</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="str">'input_values'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="pln">array</span><span class="pun">([</span><span class="pln"> </span><span class="lit">3.8106556e-04</span><span class="pun">,</span><span class="pln">  </span><span class="lit">2.7506407e-03</span><span class="pun">,</span><span class="pln">  </span><span class="lit">2.8015103e-03</span><span class="pun">,</span><span class="pln"> </span><span class="pun">...,</span><span class="pln">
        </span><span class="lit">5.6335266e-04</span><span class="pun">,</span><span class="pln">  </span><span class="lit">4.6588284e-06</span><span class="pun">,</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1.7142107e-04</span><span class="pun">],</span><span class="pln"> dtype</span><span class="pun">=</span><span class="pln">float32</span><span class="pun">)]}</span></pre>

<p>
	يمكنك تطبيق الحشو والاقتطاع هنا للتعامل مع السلاسل المتغيرة كما طبقناه مع المُرَمِّز tokenizer، ألقِ نظرة على طول العينتين الصوتيتين أدناه:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_33" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> dataset</span><span class="pun">[</span><span class="lit">0</span><span class="pun">][</span><span class="str">"audio"</span><span class="pun">][</span><span class="str">"array"</span><span class="pun">].</span><span class="pln">shape
</span><span class="pun">(</span><span class="lit">173398</span><span class="pun">,)</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> dataset</span><span class="pun">[</span><span class="lit">1</span><span class="pun">][</span><span class="str">"audio"</span><span class="pun">][</span><span class="str">"array"</span><span class="pun">].</span><span class="pln">shape
</span><span class="pun">(</span><span class="lit">106496</span><span class="pun">,)</span></pre>

<p>
	أنشئ الدالة <code>preprocess_function</code> التالية لمعالجة مجموعة البيانات حتى تصبح جميع العينات الصوتية بطولٍ واحد، كل ما عليك هو تحديد الحد الأقصى لطول العينة، وسيعمل مستخرج الميزات على حشو السلاسل أو اقتطاعها لتصل للطول المطلوب:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_35" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">def</span><span class="pln"> preprocess_function</span><span class="pun">(</span><span class="pln">examples</span><span class="pun">):</span><span class="pln">
    audio_arrays </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">x</span><span class="pun">[</span><span class="str">"array"</span><span class="pun">]</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> x </span><span class="kwd">in</span><span class="pln"> examples</span><span class="pun">[</span><span class="str">"audio"</span><span class="pun">]]</span><span class="pln">
    inputs </span><span class="pun">=</span><span class="pln"> feature_extractor</span><span class="pun">(</span><span class="pln">
        audio_arrays</span><span class="pun">,</span><span class="pln">
        sampling_rate</span><span class="pun">=</span><span class="lit">16000</span><span class="pun">,</span><span class="pln">
        padding</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">,</span><span class="pln">
        max_length</span><span class="pun">=</span><span class="lit">100000</span><span class="pun">,</span><span class="pln">
        truncation</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">,</span><span class="pln">
    </span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> inputs</span></pre>

<p>
	ثم طبِّق الدالة <code>preprocess_function</code> على أول بضع عينات من مجموعة البيانات:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_37" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> processed_dataset </span><span class="pun">=</span><span class="pln"> preprocess_function</span><span class="pun">(</span><span class="pln">dataset</span><span class="pun">[:</span><span class="lit">5</span><span class="pun">])</span></pre>

<p>
	أصبحت جميع العينات الآن بالطول نفسه الذي يماثل الحد الأقصى لطول العينة، ويمكننا تمريرها للنموذج:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_39" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> processed_dataset</span><span class="pun">[</span><span class="str">"input_values"</span><span class="pun">][</span><span class="lit">0</span><span class="pun">].</span><span class="pln">shape
</span><span class="pun">(</span><span class="lit">100000</span><span class="pun">,)</span><span class="pln">


</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> processed_dataset</span><span class="pun">[</span><span class="str">"input_values"</span><span class="pun">][</span><span class="lit">1</span><span class="pun">].</span><span class="pln">shape
</span><span class="pun">(</span><span class="lit">100000</span><span class="pun">,)</span></pre>

<h2 id="-3">
	الرؤية الحاسوبية
</h2>

<p>
	يستخدم <a href="https://huggingface.co/docs/transformers/main_classes/image_processor" rel="external nofollow">معالج الصور image processor</a> في مشاريع الرؤية الحاسوبية لتجهيز الصور قبل إدخالها للنموذج؛ وتتكون معالجة الصور من عدة مراحل تتحول الصور في نهايتها إلى مدخلات يقبلها النموذج، ومن المراحل على سبيل المثال: تغيير الحجم resizing، والتسوية normalizing، وتصحيح القناة اللونية color channel correction، وأخيرًا تحويل الصور إلى tensors.
</p>

<p>
	إن تحسين الصور أو تعزير الصور image augmentation هو الأسلوب الأكثر استخدامًا في المعالجة المسبقة للصور، وهذه أبرز الفوائد المرجوة من كليهما:
</p>

<ul>
	<li>
		تعمل ميزة <strong>تعزيز الصور image augmentation</strong> على تعديل الصور بطريقة تساعدك على الحد من الفرط في التخصيص أي المبالغة في ملائمة البيانات المدخلة للبيانات التي تدرب عليها النموذج، يزيد ذلك من واقعية النموذج ويُحَسِّن أدائه، يمكنك أن تبدع في تعزيز بياناتك وإنشاء نسخ عنها، اضبط السطوع والألوان مثلًا، أو اقتطع من الصور، أو عدّل تدويرها، أو غيّر حجمها بالتكبير أو التصغير أو غير ذلك، ولكن حافظ دائمًا على معناها.
	</li>
	<li>
		تضمن <strong>المعالجة المسبقة للصور image preprocessing</strong> مطابقة صورك لتنسيق الدخل الذي يقبله النموذج، فالصور المُمَرَّرة لنموذج الرؤية الحاسوبية ينبغي أن تُعالج بالطريقة نفسها التي عولجت فيها الصور التي تَدَّرَبَ عليها النموذج عند تدريبه وضبطه وتسمى عملية <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D8%A7%D9%84%D8%B5%D9%82%D9%84-fine-tune-%D9%84%D9%86%D9%85%D9%88%D8%B0%D8%AC-%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%85%D9%8F%D8%AF%D9%8E%D8%B1%D9%91%D9%8E%D8%A8%D9%92-%D9%85%D9%8F%D8%B3%D8%A8%D9%82%D9%8B%D8%A7-r2367/" rel="">الصقل fine-tune</a>.
	</li>
</ul>

<p>
	<strong>ملاحظة</strong>: احرص على استخدام معالج الصور <code>ImageProcessor</code> المرتبط بالنموذج الذي اخترته، ولجهة تعزيز الصور فيمكنك استخدام أي مكتبة تريدها لإنجاز ذلك.
</p>

<p>
	لنتعلم معًا كيف نستخدم معالج الصور على مجموعة بيانات كاملة، حمّل في البداية مجموعة البيانات <a href="https://huggingface.co/datasets/food101" rel="external nofollow">food101 dataset</a> وفق الأمر التالي، ويمكنك الاطلاع على <a href="https://huggingface.co/docs/datasets/load_hub" rel="external nofollow">دليل تحميل مجموعات البيانات من Hugging Face</a> لمزيد من المعلومات عن طريقة تحميلها:
</p>

<p>
	<strong>ملاحظة</strong>: سنستخدم هنا المعامل <code>split</code> لأخذ عينة بسيطة من مجموعة البيانات لأنها كبيرة الحجم.
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_41" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> datasets </span><span class="kwd">import</span><span class="pln"> load_dataset

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> dataset </span><span class="pun">=</span><span class="pln"> load_dataset</span><span class="pun">(</span><span class="str">"food101"</span><span class="pun">,</span><span class="pln"> split</span><span class="pun">=</span><span class="str">"train[:100]"</span><span class="pun">)</span></pre>

<p>
	والآن لنأخذ الصورة الأولى من مجموعة البيانات باستخدام الخاصية <code>image</code> كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_43" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> dataset</span><span class="pun">[</span><span class="lit">0</span><span class="pun">][</span><span class="str">"image"</span><span class="pun">]</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="153594" href="https://academy.hsoub.com/uploads/monthly_2024_07/img01-vision-preprocess.png.67e6333d67e10e51f168ee8acd3f763f.png" rel=""><img alt="img01 vision preprocess" class="ipsImage ipsImage_thumbnailed" data-fileid="153594" data-unique="yqqnf44gm" style="width: 300px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_07/img01-vision-preprocess.png.67e6333d67e10e51f168ee8acd3f763f.png"> </a>
</p>

<p>
	حمّل بعدها معالج الصور المناسب لنموذجك باستخدام التابع <code>AutoImageProcessor.from_pretrained()‎</code> كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_45" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoImageProcessor</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> image_processor </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoImageProcessor</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"google/vit-base-patch16-224"</span><span class="pun">)</span></pre>

<p>
	يمكننا الآن إضافة بعض الصور باستخدام تعزيز الصور، تستطيع اختيار المكتبة التي تريدها لتطبيق ذلك، مثل <a href="https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/image_classification_albumentations.ipynb" rel="external nofollow">Albumentations</a> أو <a href="https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/image_classification_kornia.ipynb" rel="external nofollow">Kornia notebooks</a>، أما في هذا المقال فقد استُخدِمَتْ الوحدة torchvision من <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D9%88%D9%91%D9%84%D8%A7%D8%AA-transformers-%D9%85%D9%86-%D9%85%D9%86%D8%B5%D8%A9-hugging-face-r2340/" rel="">مكتبة المحولات transforms</a> وفق الخطوات التالية:
</p>

<ol>
	<li>
		سنستخدم اثنين من التحويلات transforms لتعديل الصور في مثالنا، التحويل الأول <a href="https://pytorch.org/vision/main/generated/torchvision.transforms.RandomResizedCrop.html" rel="external nofollow">RandomResizedCrop</a> لتغيير حجم الصور، والثاني <a href="https://pytorch.org/vision/main/generated/torchvision.transforms.ColorJitter.html" rel="external nofollow">ColorJitter</a> لتغيير خصائصها مثل السطوع والتشبع، وسنستخدم الصنف <a href="https://pytorch.org/vision/master/generated/torchvision.transforms.Compose.html" rel="external nofollow">Compose</a> لدمج التحويلين معًا، علمًا أننا نستطيع استخلاص متطلبات الحجم الذي يقبله النموذج من خصائص <code>image_processor</code> إذ تشترط بعض النماذج قياساتٍ محددة للارتفاع والعرض، ويقتصر بعضها الآخر على تحديد أقصر حافة <code>shortest_edge</code> فقط.
	</li>
</ol>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_47" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> torchvision</span><span class="pun">.</span><span class="pln">transforms </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">RandomResizedCrop</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ColorJitter</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Compose</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> size </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">
    image_processor</span><span class="pun">.</span><span class="pln">size</span><span class="pun">[</span><span class="str">"shortest_edge"</span><span class="pun">]</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="str">"shortest_edge"</span><span class="pln"> </span><span class="kwd">in</span><span class="pln"> image_processor</span><span class="pun">.</span><span class="pln">size
    </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">(</span><span class="pln">image_processor</span><span class="pun">.</span><span class="pln">size</span><span class="pun">[</span><span class="str">"height"</span><span class="pun">],</span><span class="pln"> image_processor</span><span class="pun">.</span><span class="pln">size</span><span class="pun">[</span><span class="str">"width"</span><span class="pun">])</span><span class="pln">
</span><span class="pun">)</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> _transforms </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Compose</span><span class="pun">([</span><span class="typ">RandomResizedCrop</span><span class="pun">(</span><span class="pln">size</span><span class="pun">),</span><span class="pln"> </span><span class="typ">ColorJitter</span><span class="pun">(</span><span class="pln">brightness</span><span class="pun">=</span><span class="lit">0.5</span><span class="pun">,</span><span class="pln"> hue</span><span class="pun">=</span><span class="lit">0.5</span><span class="pun">)])</span></pre>

<ol start="2">
	<li>
		سننشئ دالةً تجمع بين وظيفتي معالجة الصور وتعزير الصور (التي أجريناها في الخطوة السابقة)، تُطَبَّق هذه الدالة على دفعات الصور التي سنمررها لها وتعطينا في النهاية <a href="https://huggingface.co/docs/transformers/model_doc/vision-encoder-decoder#transformers.VisionEncoderDecoderModel.forward.pixel_values" rel="external nofollow"><code>pixel_values</code></a> التي تُعدّ مدخلات النموذج، إذ إن المرحلة الثانية من الدالة تتضمن استخدام معالج الصور، وهو يتكفل بتسوية الصور وتحويلها إلى tensors مناسبة للنموذج، ألقِ نظرة على الأوامر التالية لتتضح لك الفكرة:
	</li>
</ol>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_49" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">def</span><span class="pln"> transforms</span><span class="pun">(</span><span class="pln">examples</span><span class="pun">):</span><span class="pln">
    images </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">_transforms</span><span class="pun">(</span><span class="pln">img</span><span class="pun">.</span><span class="pln">convert</span><span class="pun">(</span><span class="str">"RGB"</span><span class="pun">))</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> img </span><span class="kwd">in</span><span class="pln"> examples</span><span class="pun">[</span><span class="str">"image"</span><span class="pun">]]</span><span class="pln">
    examples</span><span class="pun">[</span><span class="str">"pixel_values"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> image_processor</span><span class="pun">(</span><span class="pln">images</span><span class="pun">,</span><span class="pln"> do_resize</span><span class="pun">=</span><span class="kwd">False</span><span class="pun">,</span><span class="pln"> return_tensors</span><span class="pun">=</span><span class="str">"pt"</span><span class="pun">)[</span><span class="str">"pixel_values"</span><span class="pun">]</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> examples</span></pre>

<p>
	لابُدّ أنك لاحظت أننا ضبطنا المعامل الخاص بتعديل حجم الصور في معالج الصور على القيمة <code>do_resize=False</code>، لأننا لا نحتاجه هنا فقد أنجزنا تعديل حجم الصور بالفعل في مرحلة تعزيز الصور (أي في الخطوة الأولى) مستفيدين من خاصية الحجم في معالج الصور <code>image_processor</code> لمعرفة حدود الحجم المقبولة في النموذج، أما إذا لم تعدل حجم الصور في مرحلة تعزيز الصور، فاترك المعامل <code>do_resize</code> على قيمته الافتراضية وسيُعَدِّل معالج الصور أحجام صورك بما يتناسب مع متطلبات النموذج.
</p>

<p>
	وبالمقابل إذا رغبت بإجراء تسوية normalize للصور ضمن مرحلة تعزيز الصور فاستخدم عندها الخاصيتين <code>image_processor.image_mean</code> و <code>image_processor.image_std</code>.
</p>

<ol start="3">
	<li>
		استخدم الآن <a href="https://huggingface.co/docs/datasets/v2.17.1/en/package_reference/main_classes#datasets.Dataset.set_transform" rel="external nofollow"><code>datasets.set_transform</code></a> لتسريع نشر التحويلات السابقة <code>transforms</code> على مجموعة البيانات:
	</li>
</ol>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_51" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> dataset</span><span class="pun">.</span><span class="pln">set_transform</span><span class="pun">(</span><span class="pln">transforms</span><span class="pun">)</span></pre>

<ol start="4">
	<li>
		استدعِ الصورة الأولى من مجموعة البيانات ولاحظ كيف تغيرت فقد أضاف إليها التحويل قيم <code>pixel_values</code>، وبذلك أصبحت مجموعة البيانات dataset جاهزة لإدخالها إلى النموذج:
	</li>
</ol>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_53" style=""><span class="pln">dataset</span><span class="pun">[</span><span class="lit">0</span><span class="pun">].</span><span class="pln">keys</span><span class="pun">()</span></pre>

<p>
	ألقِ نظرة على الصورة بعد التعديل، فقد اقتطع جزءٌ عشوائيٌ منها، وتغيرت خصائصها اللونية.
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_55" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">import</span><span class="pln"> numpy </span><span class="kwd">as</span><span class="pln"> np
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">import</span><span class="pln"> matplotlib</span><span class="pun">.</span><span class="pln">pyplot </span><span class="kwd">as</span><span class="pln"> plt

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> img </span><span class="pun">=</span><span class="pln"> dataset</span><span class="pun">[</span><span class="lit">0</span><span class="pun">][</span><span class="str">"pixel_values"</span><span class="pun">]</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> plt</span><span class="pun">.</span><span class="pln">imshow</span><span class="pun">(</span><span class="pln">img</span><span class="pun">.</span><span class="pln">permute</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">))</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="153595" href="https://academy.hsoub.com/uploads/monthly_2024_07/img02-preprocessed_image.png.b03f2d27cc24c013de70a0d21e026a9e.png" rel=""><img alt="img02 preprocessed image" class="ipsImage ipsImage_thumbnailed" data-fileid="153595" data-unique="3742zlhav" src="https://academy.hsoub.com/uploads/monthly_2024_07/img02-preprocessed_image.png.b03f2d27cc24c013de70a0d21e026a9e.png"> </a>
</p>

<p>
	<strong>ملاحظة</strong>:لا يقتصر عمل معالج الصور ImageProcessor على المعالجة المُسبقة أو التحضيرية للبيانات قبل إدخالها للنموذج، بل يستخدم أيضًا في المعالجة اللاحقة post processing فيعالج المخرجات الأولية لنموذج الذكاء الاصطناعي ويحولها إلى تنبؤات لها معنى مثل المربعات المحيطة bounding boxes وخرائط التقسيم segmentation maps.
</p>

<p>
	هذا مفيد في مهام مثل التَعرُّف على الكائنات object detection، والتجزئة الدلالية للصور semantic segmentation أي تقسيم الصورة إلى أجزاء بحيث يعبر كل جزء عن صنف معينة، وتجزئة المثيل instance segmentation وهي تشابه التجزئة الدلالية ولكن بالإضافة إلى تحديد الأصناف، تفصل المثيلات الفردية داخل نفس الصنف، وتجزئة panoptic segmentation الشاملة التي تنتج خرائط تقسيم شاملة تحدد كل جزء من الصورة وتوضح الصنف أو الكائن الذي ينتمي إليه.
</p>

<h3 id="pad-1">
	الحشو Pad
</h3>

<p>
	تطبقُ بعض النماذج عملية تعزيز الصور في أثناء التدريب، مثل نموذج <a href="https://huggingface.co/docs/transformers/model_doc/detr" rel="external nofollow">DETR</a> المخصص للتعرف على الكائنات، وتسبب هذه الحالة اختلافًا في أحجام الصور ضمن الدفعة الواحدة batch، يتعامل DETR مع هذه الحالة باستخدام تابع الحشو <code>image_processor.pad()‎</code> من الصنف <a href="https://huggingface.co/docs/transformers/v4.38.2/en/model_doc/detr#transformers.DetrImageProcessor" rel="external nofollow"><code>DetrImageProcessor</code></a> مع وضع قناع <code>"pixel_mask"</code> يظهر أي البيكسلات هي بيكسلات الحشو، بالإضافة إلى تعريف الدالة <code>collate_fn</code> وفق التالي لتجميع الصور:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_57" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">def</span><span class="pln"> collate_fn</span><span class="pun">(</span><span class="pln">batch</span><span class="pun">):</span><span class="pln">
    pixel_values </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">item</span><span class="pun">[</span><span class="str">"pixel_values"</span><span class="pun">]</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> item </span><span class="kwd">in</span><span class="pln"> batch</span><span class="pun">]</span><span class="pln">
    encoding </span><span class="pun">=</span><span class="pln"> image_processor</span><span class="pun">.</span><span class="pln">pad</span><span class="pun">(</span><span class="pln">pixel_values</span><span class="pun">,</span><span class="pln"> return_tensors</span><span class="pun">=</span><span class="str">"pt"</span><span class="pun">)</span><span class="pln">
    labels </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">item</span><span class="pun">[</span><span class="str">"labels"</span><span class="pun">]</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> item </span><span class="kwd">in</span><span class="pln"> batch</span><span class="pun">]</span><span class="pln">
    batch </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{}</span><span class="pln">
    batch</span><span class="pun">[</span><span class="str">"pixel_values"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> encoding</span><span class="pun">[</span><span class="str">"pixel_values"</span><span class="pun">]</span><span class="pln">
    batch</span><span class="pun">[</span><span class="str">"pixel_mask"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> encoding</span><span class="pun">[</span><span class="str">"pixel_mask"</span><span class="pun">]</span><span class="pln">
    batch</span><span class="pun">[</span><span class="str">"labels"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> labels
    </span><span class="kwd">return</span><span class="pln"> batch</span></pre>

<h2 id="-4">
	الأنماط المتعددة
</h2>

<p>
	يُستَخدم <a href="https://huggingface.co/docs/transformers/main_classes/processors" rel="external nofollow">المعالج processor</a> لتحضير البيانات متعددة الأنماط multimodal قبل إدخالها لنماذج الذكاء الاصطناعي، ويجمع المعالج الواحد أكثر من وظيفة معالجة من الوظائف التي تعرفنا عليها، مثل المُرَمِّز ومُستَخرِج الميزات أو غير ذلك حسب مزيج الأنماط الموجود في بياناتك نصوص أو صور أو صوت.
</p>

<p>
	حمِّل مثلًا <a href="https://huggingface.co/datasets/lj_speech" rel="external nofollow">مجموعة البيانات LJ Speech</a> متعددة الأنماط وطبق المثال التالي لتتعلم طريقة التَعَرُّف التلقائي على الكلام (ASR) فيها:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_59" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> datasets </span><span class="kwd">import</span><span class="pln"> load_dataset

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> lj_speech </span><span class="pun">=</span><span class="pln"> load_dataset</span><span class="pun">(</span><span class="str">"lj_speech"</span><span class="pun">,</span><span class="pln"> split</span><span class="pun">=</span><span class="str">"train"</span><span class="pun">)</span></pre>

<p>
	سنُرَكِز اهتمامنا على الصوت <code>audio</code> والنص <code>text</code> في مهام التَعَرُّف التلقائي على الكلام ASR لذا سنبدأ بإزالة الأعمدة الأخرى من مجموعة البيانات وفق التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_61" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> lj_speech </span><span class="pun">=</span><span class="pln"> lj_speech</span><span class="pun">.</span><span class="pln">map</span><span class="pun">(</span><span class="pln">remove_columns</span><span class="pun">=[</span><span class="str">"file"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"id"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"normalized_text"</span><span class="pun">])</span></pre>

<p>
	لنستعرض الآن عمودي الصوت والنص:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_63" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> lj_speech</span><span class="pun">[</span><span class="lit">0</span><span class="pun">][</span><span class="str">"audio"</span><span class="pun">]</span><span class="pln">
</span><span class="pun">{</span><span class="str">'array'</span><span class="pun">:</span><span class="pln"> array</span><span class="pun">([-</span><span class="lit">7.3242188e-04</span><span class="pun">,</span><span class="pln"> </span><span class="pun">-</span><span class="lit">7.6293945e-04</span><span class="pun">,</span><span class="pln"> </span><span class="pun">-</span><span class="lit">6.4086914e-04</span><span class="pun">,</span><span class="pln"> </span><span class="pun">...,</span><span class="pln">
         </span><span class="lit">7.3242188e-04</span><span class="pun">,</span><span class="pln">  </span><span class="lit">2.1362305e-04</span><span class="pun">,</span><span class="pln">  </span><span class="lit">6.1035156e-05</span><span class="pun">],</span><span class="pln"> dtype</span><span class="pun">=</span><span class="pln">float32</span><span class="pun">),</span><span class="pln">
 </span><span class="str">'path'</span><span class="pun">:</span><span class="pln"> </span><span class="str">'/root/.cache/huggingface/datasets/downloads/extracted/917ece08c95cf0c4115e45294e3cd0dee724a1165b7fc11798369308a465bd26/LJSpeech-1.1/wavs/LJ001-0001.wav'</span><span class="pun">,</span><span class="pln">
 </span><span class="str">'sampling_rate'</span><span class="pun">:</span><span class="pln"> </span><span class="lit">22050</span><span class="pun">}</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> lj_speech</span><span class="pun">[</span><span class="lit">0</span><span class="pun">][</span><span class="str">"text"</span><span class="pun">]</span><span class="pln">
</span><span class="str">'Printing, in the only sense with which we are at present concerned, differs from most if not from all the arts and crafts represented in the Exhibition'</span></pre>

<p>
	كما تعلمنا في الفقرات السابقة ينبغي أن يتطابق معدل أخذ العينات في بياناتنا الصوتية المدخلة للنموذج مع معدل أخذ العينات في البيانات الصوتية التي تَدَرَّبَ عليها النموذج سابقًا، لذا سنجري عملية إعادة أخذ للعينات resample في بياناتنا وفق التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_65" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> lj_speech </span><span class="pun">=</span><span class="pln"> lj_speech</span><span class="pun">.</span><span class="pln">cast_column</span><span class="pun">(</span><span class="str">"audio"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Audio</span><span class="pun">(</span><span class="pln">sampling_rate</span><span class="pun">=</span><span class="lit">16</span><span class="pln">_000</span><span class="pun">))</span></pre>

<p>
	يمكننا الآن تحميل المعالج المناسب لحالتنا باستخدام <code>AutoProcessor.from_pretrained()‎</code>:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_67" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoProcessor</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> processor </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoProcessor</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"facebook/wav2vec2-base-960h"</span><span class="pun">)</span></pre>

<p>
	يتبقى لنا خطوتان قبل تمرير البيانات للنموذج:
</p>

<ol>
	<li>
		إنشاء الدالة <code>prepare_dataset</code> التالية التي ستُعَالِج البيانات الصوتية الموجودة في <code>array</code> (أحد عناصر الخرج لمستخرج الميزات كما تعلمنا في فقرة الصوتيات) وتُحَوّلها إلى <code>input_values</code>، وأيضًا تُرَمِّز tokenize النص <code>text</code> ليتحول إلى <code>labels</code>، وبذلك نكون قد جهزّنا مُدخلات النموذج:
	</li>
</ol>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_69" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">def</span><span class="pln"> prepare_dataset</span><span class="pun">(</span><span class="pln">example</span><span class="pun">):</span><span class="pln">
    audio </span><span class="pun">=</span><span class="pln"> example</span><span class="pun">[</span><span class="str">"audio"</span><span class="pun">]</span><span class="pln">

    example</span><span class="pun">.</span><span class="pln">update</span><span class="pun">(</span><span class="pln">processor</span><span class="pun">(</span><span class="pln">audio</span><span class="pun">=</span><span class="pln">audio</span><span class="pun">[</span><span class="str">"array"</span><span class="pun">],</span><span class="pln"> text</span><span class="pun">=</span><span class="pln">example</span><span class="pun">[</span><span class="str">"text"</span><span class="pun">],</span><span class="pln"> sampling_rate</span><span class="pun">=</span><span class="lit">16000</span><span class="pun">))</span><span class="pln">

    </span><span class="kwd">return</span><span class="pln"> example</span></pre>

<ul>
	<li>
		2. تطبيق الدالة على مجموعة البيانات dataset، سنُطّبِّقها هنا على عينة منها:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_4340_71" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> prepare_dataset</span><span class="pun">(</span><span class="pln">lj_speech</span><span class="pun">[</span><span class="lit">0</span><span class="pun">])</span></pre>

<p>
	إذًا فقد جَهَّز المعالج بياناتنا للنموذج والتي تتكون من <code>input_values</code> و <code>labels</code>، وضبط معدل أخذ العينات على 16KHz، وبالتالي يمكننا الآن تمرير البيانات إلى النموذج.
</p>

<h2 id="-5">
	الخلاصة
</h2>

<p>
	المعالجة المسبقة للبيانات قبل تمريرها لنماذج الذكاء الاصطناعي خطوة أساسية لا غنى عنها في أي مشروع، وتختلف أساليب المعالجة حسب نوع بياناتك صوت أو صورة أو نص أو غيرها، لكنها تنتهي دائمًا بتحويل البيانات الخام إلى tensors يقبلها النموذج، ولا تنسَ أن الأصناف التلقائية في مكتبة Transformers مثل: <code>AutoTokenizer</code> و <code>AutoProcessor</code> و <code>AutoImageProcessor</code> و <code>AutoFeatureExtractor</code> تساعدك على اختيار المعالج المسبق المناسب لنموذجك، وهذا مهمٌ جدًا عند استخدامك النماذج المدربة مسبقًا إذ ينبغي تُعالج بيانات مشروعك بالمعايير نفسها التي عولجت بها البيانات التي تَدَرَّبَ عليها النموذج قبلًا فتستخدم المفردات vocab نفسها مثلًا في مهام معالجة النص، ومعدل أخذ العينات نفسه والمهام الصوتية وما إلى ذلك.
</p>

<p>
	ترجمة -وبتصرف- لقسم <a href="https://huggingface.co/docs/transformers/preprocessing" rel="external nofollow">Preprocess</a> من توثيقات Hugging Face.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		المقال السابق: <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%AD%D9%85%D9%8A%D9%84-%D8%A7%D9%84%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D9%85%D9%8F%D8%AF%D9%91%D8%B1%D8%A8%D8%A9-%D9%85%D8%B3%D8%A8%D9%82%D9%8B%D8%A7-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%A3%D8%B5%D9%86%D8%A7%D9%81-%D8%A7%D9%84%D8%AA%D9%84%D9%82%D8%A7%D8%A6%D9%8A%D8%A9-autoclasses-%D9%81%D9%8A-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-transformers-r2354/" rel="">تحميل النماذج المُدّربة مسبقًا باستخدام الأصناف التلقائية AutoClasses في مكتبة Transformers</a>
	</li>
	<li>
		<p>
			<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%AE%D8%B7%D9%88%D8%B7-%D8%A7%D9%84%D8%A3%D9%86%D8%A7%D8%A8%D9%8A%D8%A8-pipelines-%D9%84%D9%84%D8%A7%D8%B3%D8%AA%D8%AF%D9%84%D8%A7%D9%84-%D9%81%D9%8A-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2353/" rel="">استخدام خطوط الأنابيب Pipelines للاستدلال في تطبيقات الذكاء الاصطناعي</a>
		</p>
	</li>
	<li>
		<p>
			<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D9%81%D8%B6%D9%84-%D8%AF%D9%88%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2332/" rel="">أفضل دورات الذكاء الاصطناعي</a>
		</p>
	</li>
	<li>
		<p>
			<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%B5%D8%B7%D9%84%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-r2363/" rel="">مصطلحات الذكاء الاصطناعي للمبتدئين</a>
		</p>
	</li>
</ul>
]]></description><guid isPermaLink="false">2365</guid><pubDate>Wed, 17 Jul 2024 15:01:00 +0000</pubDate></item><item><title>&#x645;&#x635;&#x637;&#x644;&#x62D;&#x627;&#x62A; &#x627;&#x644;&#x630;&#x643;&#x627;&#x621; &#x627;&#x644;&#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A; &#x644;&#x644;&#x645;&#x628;&#x62A;&#x62F;&#x626;&#x64A;&#x646;</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%B5%D8%B7%D9%84%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-r2363/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_07/-----.png.451f3bbdfb90b6bc66dbef737d4787b9.png" /></p>
<p>
	مع التطور المستمر في مجال الذكاء الاصطناعي يزداد استخدامنا لمفردات ومصطلحات الذكاء الاصطناعي بشكل كبير، وتظهر مصطلحات جديدة باستمرار، وقد تكون بعض هذه المصطلحات صعبة ومربكة لا سيما لغير المختصين والمبتدئين في تخصص الذكاء الاصطناعي، وسنحاول في مقال اليوم شرح أهم هذه المصطلحات بأسلوب سهل ومبسط يساعد على فهمها بسلاسة. هيا بنا نتعلم أهم مصطلحات الذكاء الاصطناعي.
</p>

<h2 id="artificialintelligenceai">
	الذكاء الاصطناعي Artificial Intelligence
</h2>

<p>
	لنبدأ بتوضيح مفهوم <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">الذكاء الاصطناعي</a> نفسه، الذي يشير إلى قدرة الأنظمة الحاسوبية على تنفيذ مهام لم يكن يقدرعلى تنفيذها سابقًا سوى البشر، ومن هذه المهام التفكير المنطقي واتخاذ القرارات وحل المشكلات وصار بمقدور الآلات فهم الكلام الطبيعي الذي ننطقه نحن البشر بمختلف لغاته ولهجاته.
</p>

<p>
	تتعدد الأمثلة على الذكاء الاصطناعي وتزداد تطبيقاته في حياتنا يومًا بعد الآخر، ولعل أبرزها روبوت الدردشة الشهير <a href="https://academy.hsoub.com/apps/web/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A8%D9%88%D8%AA-%D8%A7%D9%84%D9%85%D8%AD%D8%A7%D8%AF%D8%AB%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D9%8A-%D8%B4%D8%A7%D8%AA-%D8%AC%D9%8A-%D8%A8%D9%8A-%D8%AA%D9%8A-chatgpt-r863/" rel="">شات جي بي تي ChatGPT</a> الذي يستخدم الذكاء الاصطناعي لتوليد النصوص والرد على الاستفسارات، ومنها ترجمة جوجل التي تستخدم خوارزميات ذكية لترجمة الكلام من لغة لأخرى وتمييز الحديث الصوتي وترجمته، ومن أمثلة الذكاء الاصطناعي أيضًا نظام الاقتراحات في منصة يوتيوب الشهيرة، إذ تقترح عليك مقاطع مناسبة لتفضيلاتك باستخدام خوارزميات الذكاء الاصطناعي، ومثالٌ آخر شائع على الذكاء الاصطناعي سيارات تيسلا ذاتية القيادة وغيرها من الاستخدامات العديدة الأخرى التي باتت بمتنناول الجميع.
</p>

<h2 id="machinelearning">
	تعلم الآلة Machine Learning
</h2>

<p>
	إنَّ الذكاء الاصطناعي مجال شامل يتفرع منه مجالاتٌ عديدة، ومن بين هذه المجالات وأشهرها مجال <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9/" rel="">تعلم الآلة</a>، وهو مجال يجعل الأنظمة الحاسوبية قادرة على التعلم وتحسين قدراتها على اتخاذ القرارات وإصدار النتائج دون الحاجة إلى برمجتها بصورة صريحة، فكما نتعلم نحن البشر من والمعارف والخبرات والتجارب السابقة التي نخوضها يمكن للأنظمة الحاسوبية أيضًا أن تستفيد من البيانات السابقة وتحللها لتحسين أدائها وتعزيز فعاليتها مع الوقت.
</p>

<p>
	لذا يعمل <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D9%86-%D9%87%D9%88-%D9%85%D9%87%D9%86%D8%AF%D8%B3-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%88%D9%85%D8%A7-%D8%A3%D8%A8%D8%B1%D8%B2-%D9%85%D9%87%D8%A7%D9%85%D9%87-r2319/" rel="">مهندسو الذكاء الاصطناعي</a> على تطوير خوارزميات تعلم آلة تحلل البيانات وتكتشف الأنماط بينها، ثم تتعلم منها وتبدي توقعاتٍ وتستنتج استنتاجاتٍ مفيدة بناءً على هذه البيانات، وتدخل تقنيات تعلم الآلة في غالبية تطبيقات ومشاريع الذكاء الاصطناعي، بدءًا من التعرف على الكلام وتمييزه ومعالجته، مرورًا بالتعرف على الصور، وصولًا لأنظمة التوصية والترشيح، وتطبيقاتٍ أخرى مثل أنظمة كشف الاحتيال وأدوات تحسين معرض الأعمال وأنظمة السيارات ذاتية القيادة وغيرها.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" id="ips_uid_6481_6" referrerpolicy="strict-origin-when-cross-origin" src="https://academy.hsoub.com/applications/core/interface/index.html" title="YouTube video player" width="560" data-embed-src="https://www.youtube.com/embed/7up0GP1Y8aM?si=o31F_rxPfYjqzFcT"></iframe>
</p>

<h2 id="supervisedlearning">
	التعلم مع إشراف Supervised Learning
</h2>

<p>
	يعد التعلم تحت الإشراف منهجية من منهجيات تعلم الآلة، وفيه تتدرب فيها خوارزميات الذكاء الاصطناعي على مجموعة بياناتٍ مُصنَّفة، أي مجموعة بيانات تحتوي على أمثلة من المدخلات والمخرجات الصحيحة التي يجب أن تخرج بها الخوارزميات من هذه البيانات المدخلة.
</p>

<p>
	على سبيل المثال، إذا أردنا تطوير خوارزمية تتعرف على الأشجار باستخدام التعلم تحت الإشراف، فعلينا أن نمنح الخوارزمية مجموعة من صور الأشجار المتنوعة مع اسم كل نوع من الأشجار (نخيل، زيتون، رمان، تفاح) ثم نسمح للخوارزمية بمحاولة اكتشاف صفات وسمات كل شجرة، ثم نأتي بصورٍ لأشجار ضمن البيانات المعطاة للخوارزمية ونسألها عن نوع الشجرة، فإن أجابت الخوارزمية إجابة صحيحة بناء على ما اكتسبته من معلومات خلال فترة تدريبها سنبدأ بعدها بتجارب تحديد أنواع الأشجار خارج البيانات التي تتدربت عليها، وإن لم تجب إجاباتٍ صحيحة كافية فنحتاج تدريبها على مجموعة أكبر من البيانات المُصنَّفة وتعديل الخوازرميات المستخدمة لتحقق لنا الدقة المطلوبة.
</p>

<h2 id="unsupervisedlearning">
	التعلم بدون إشراف Unsupervised Learning
</h2>

<p>
	يشير التعلم بدون إشراف إلى منهجية أخرى من منهجيات التعلم الآلي، وعلى عكس التعلم تحت إشراف فإنَّ خوارزميات الذكاء الاصطناعي المطورة بمنهجية التعلم بدون إشراف تتدرب على بيانات غير مُصنَّفة، وتحاول تصنيفها ذاتيًا بناءً على المتشابهات والفروق بين البيانات، ففي مثال تحديد نوع الشجرة إذا أردنا تطوير الخوارزمية بمنهجية التعلم بدون إشراف، فلن نعطي للخوارزمية في هذه الحالة أسماء الأشجار ولن نصنف كل نوع من الأشجار معًا، وإنما نمنح الخوارزمية الصور فقط، ثم تسعى الخوارزمية بنفسها لتصنيف كل مجموعة من الأشجار إلى أنواعٍ حسب أشكال الشجر وأحجام الورق وغيرها من المتشابهات والفروق، ويُستخدم التعلم بدون إشراف بشكلٍ أكبر في مهام المعالجة الثقيلة التي تحتاج تصنيف وترتيب البيانات ضخمة الأحجام غير المنظمة والمنسقة.
</p>

<h2 id="reinforcementlearning">
	التعلم المعزز Reinforcement Learning
</h2>

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

<p>
	ويشيع استخدام التعلم المعزز في لعبة الشطرنج، فهو يُستخدم لتدريب برامج الشطرنج وتحسين مستواها مثل برنامج ستوك فيش Stockfish وألفا زيرو Alphazero حيث تتعلم برامج الشطرنج هذه قواعد الشطرنج كاملةً عبر لعب ملايين المباريات عبر نفسها والتجربة والخطأ والمكافأة حتى تتعلم اتخاذ أذكى القرارات وحساب جميع الاحتمالات دون تدخل بشري.
</p>

<h2 id="artificialneuralnetwork">
	الشبكات العصبية الاصطناعية Artificial Neural Network
</h2>

<p>
	تعد الشبكات العصبية الاصطناعية ANN نماذج رياضية مستوحاة من التركيب العصبي لدماغ الإنسان وتحاكي وظائفه، وتتكون من عقد مترابطة تعالج البيانات وتتعلم منها وتكتشف الأنماط بينها، يتم تدريب الشبكة العصبية بداية باستخدام مجموعة من البيانات التي تحتوي على مدخلات معروفة والمخرجات المطلوبة منها وخلال عملية التدريب، تقوم الشبكة بضبط نفسها لتقليل الخطأ وتحسين أدائها، وبعد التدريب، يمكن للشبكة العصبية أن تقوم بالتنبؤ بالنتائج أو تصنيف البيانات الجديدة التي لم تُستخدم في التدريب وتعالج المدخلات الجديدة من خلال طبقاتها المختلفة لتوليد نتائج دقيقة. تقوم على الشبكات العصبية الاصطناعي مجالات مثل تعلم الآلة، وتتعلم هذه الشبكات العصبية الاصطناعية معالجة البيانات وتفهمها وتدركها باستخدام المنهجيات المذكورة آنفًا مثل التعلم تحت إشراف والتعلم بدون إشراف والتعلم المعزز.
</p>

<h2 id="deeplearning">
	التعلم العميق Deep Learning
</h2>

<p>
	يعد مجال <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D9%84%D9%81%D9%87%D9%85-%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%B9%D9%85%D9%8A%D9%82-r1422/" rel="">التعلم العميق</a> أحد المجالات الفرعية من مجال تعلم الآلة، ويختلف التعلم العميق عن تعلم الآلة في أمورٍ قليلة، منها قدرة خوارزميات التعلم العميق على التعلم من البيانات غير المنظمة، كما يمكنها التعلم من البيانات مختلفة الأنواع مثل النصوص والصور، وكذلك يتميز التعلم العميق بقلة الحاجة للتدخل البشري على عكس تعلم الآلة، وذلك لاعتماده على شبكات عصبية اصطناعية ANN مكونة من عدة طبقات تعالج البيانات وتنقلها، والشبكة العصبية الاصطناعية هي مجموعة من الخلايا المتصلة ببعضها بعضًا، وتتشابه مع الخلايا العصبية في أدمغتنا البشرية، وكلما زاد عدد طبقات الشبكة الاصطناعية ازدادت قدرتها على فهم وتمثيل الأنماط المعقدة للبيانات، ما يؤدي كذلك إلى ازداد تطبيقات الشبكة العصبية في مجالات عديدة، مثل التشخيص الطبي وكشف الاحتيال.
</p>

<h2 id="naturallanguageprocessingnlp">
	معالجة اللغات الطبيعية Natural Language Processing (NLP)
</h2>

<p>
	حينما صار التعامل مع الحواسيب والأجهزة الرقمية جزءًا لا يُجتزأ من حياتنا أصبح من الضروري أن نساعد هذه الآلات على فهم لغاتنا، ظهر هاهنا مجال معالجة اللغات الطبيعية، وهو مجال فرعيٌّ من الذكاء الاصطناعي يختص بتمكين الحواسيب من تمييز الخطابات والكلام واللغات البشرية وفهمها، سواءً كان هذا الكلام مكتوبًا أو منطوقًا.
</p>

<p>
	تتعدد تطبيقات معالجة اللغات الطبيعية، ومن أهمها: روبوتات الدردشة التي اشتهرت شهرة واسعة في الآونة الأخيرة مثل جيميني Gemini وشات جي بي تي ChatGPT، وأدوات الترجمة الآلية مثل ترجمة جوجل، والمساعدين الآليين مثل أليكسا Alexa ومساعد جوجل Google Assistant وسيري Siri.
</p>

<h2 id="generativeai">
	الذكاء الاصطناعي التوليدي Generative AI
</h2>

<p>
	يشير <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A7%D9%84%D8%AA%D9%88%D9%84%D9%8A%D8%AF%D9%8A-generative-ai-r2234/" rel="">الذكاء الاصطناعي التوليدي</a> إلى نماذج الذكاء الاصطناعي القادرة على توليد صور ومقاطع فيديو وشيفرات ونصوص مُنسَّقة ذات مغزى ومعنى مفهوم، وتتعدد الأمثلة على الذكاء الاصطناعي التوليدي، ومنها روبوتات الدردشة المذكورة سابقًا، وأدوات توليد شيفرات برمجية مثل جيتهاب كوبايلوت GitHub Copilot، وأدوات توليد الصور مثل DALL-E وميد جورني Midjourney، وأخيرًا أدوات توليد مقاطع الفيديو مثل سورا Sora من شركة OpenAI القادر على توليد مقاطع فيديو مذهلة!
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" id="ips_uid_6481_7" referrerpolicy="strict-origin-when-cross-origin" src="https://academy.hsoub.com/applications/core/interface/index.html" title="YouTube video player" width="560" data-embed-src="https://www.youtube.com/embed/kAS0GnKU1KQ?si=Au3tREC5z0eiMaMQ"></iframe>
</p>

<h2 id="largelanguagemodels">
	النماذج اللغوية الكبيرة Large Language Models
</h2>

<p>
	تعد نماذج اللغة الكبيرة Large Language Models (LLMs)‎ نوعًا من خوارزميات الذكاء الاصطناعي التي تعمل على تزويد الشبكات العصبية الاصطناعية بمعاملات Parameters ومعلومات، لتعالجها الشبكات العصبية الاصطناعية وتتعلم منها كلام البشر وكيفية فهمه، ويتم ذلك باستخدام تقنيات التعلم تحت إشراف Supervised Learning، ومن أشهر تطبيقات نماذج اللغة الكبيرة روبوتات الدردشة وأدوات الترجمة والتلخيص وأدوات توليد الصور من النصوص.
</p>

<h2 id="computervision">
	الرؤية الحاسوبية Computer Vision
</h2>

<p>
	تعد الرؤية الحاسوبية مجالًا فرعيًا من الذكاء الاصطناعي، ويهتم مجال الرؤية الحاسوبية بتمكين النظام الإلكتروني من محاكاة النظرة البشرية إلى المرئيات، فيستطيع النظام استخراج معاني ذات فائدة من الصور ومقاطع الفيديو، ويتمكن من فهم ما يوجد في الصورة وما يجري في مقطع الفيديو.
</p>

<p>
	تكثر تطبيقات الرؤية الحاسوبية، وتبدأ من أنظمة التعرف على الوجوه وتحديد الأشخاص، وتضم أنظمة السيارات ذاتية القيادة، وتمر على أنظمة الروبوتات، وتدخل في أنظمة اكتشاف عيوب الصناعة، وتصل إلى أنظمة التحليل الرياضي، وتنتهي بأنظمة الكشف عن الأدوية والعلاجات الطبية.
</p>

<h2 id="expertsystems">
	الأنظمة الخبيرة Expert Systems
</h2>

<p>
	تعد الأنظمة الخبيرة نوعًا مهمًا جدّا من أنظمة الذكاء الاصطناعي، إذ تعمل هذه الأنظمة الخبيرة على محاكاة المهارات الإنسانية في مجال محدد حتى تكون خبيرةً في هذا المجال وتستطيع حل مشكلاته والمساعدة فيه. بداية تجمع المعرفة من الخبراء البشريين في مجال معين، وما نعنيه بالمعرفة هنا قواعد وأمثلة وحالات سابقة، ثم تخزن هذه المعرفة في شكل قواعد أو نماذج في قاعدة بيانات النظام الخبير بحيث يمكن للنظام استرجاعها واستخدامها لحل المشكلات. وعندما يواجه المستخدم مشكلة ما في مجال معين، يمكنه إدخال التفاصيل إلى النظام الخبير ليستخدم بدوره المعرفة المخزنة لمعالجة البيانات المدخلة من المستخدم وتقديم توصيات وحلول. ومن أشهر الأنظمة الخبيرة نظام Dendral المستخدم في التحليل الكيميائي، ونظام MYCIN المستخدم في التشخيص الطبي، وتتميز الأنظمة الخبيرة بالمعارف الواسعة المحفوظة والتي لا يقدر الإنسان على تخزينها وبالتواجد الدائم والقدرة على العمل في كل وقت، ومن مميزاتها أيضًا توفير كثيرٍ من التكاليف والقدرة على التوسع.
</p>

<h2>
	علم الروبوتات أو الروبوتيكس Robotic
</h2>

<p>
	يشير مصطح الروبوتيكس إلى تصميم وبناء الروبوتات وهي آلات مبرمجة تؤدي نفس المهام التي تُنفذ عادة من قبل البشر. وتُستخدم هذه الروبوتات في العديد من الصناعات مثل تصنيع السيارات والطب والتنظيف وفي بيئات العمل الخطرة على البشر. ويجمع هذا المجال بين الهندسة الميكانيكية والكهربائية والتقنية. ومن المهم أن تفرق بين هذه الروبوتات التقليدية وبين برامج الروبوتات التي تعني برامج حاسوبية تنفذ المهام بشكل مستقل بذاتها مثل روبوتات الدردشة التي تتفاعل مع المستخدمين وتجيب على تساؤلاتهم والتي لا تمتلك هيكلًا ماديًا بل برمجيًا فحسب.
</p>

<h2 id="promptengineering">
	هندسة المُوجِّهات Prompt Engineering
</h2>

<p>
	تعد <span ipsnoautolink="true">هندسة المُوجِّهات Prompt Engineering</span> أحد أكثر المصطلحات المرتبطة بالذكاء الاصطناعي شيوعًا اليوم، وهي تشير إلى عملية صياغة الأوامر المعطاة إلى روبوتات الذكاء الاصطناعي بطريقة تساعد على تحصيل النتائج المرجوة، والجدير بالذكر أنها ليست من جوهر مصطلحات الذكاء الاصطناعي نفسه، وإنما هي عملية للمستخدمين لتحسين تعاملهم مع الذكاء الاصطناعي والنتائج التي يوفرها لهم.
</p>

<p>
	ويجب أن يهتم المستخدمون <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A3%D9%81%D8%B6%D9%84-%D9%85%D9%85%D8%A7%D8%B1%D8%B3%D8%A7%D8%AA-%D9%87%D9%86%D8%AF%D8%B3%D8%A9-%D8%A7%D9%84%D9%85%D9%8F%D9%88%D8%AC%D9%91%D9%90%D9%87%D8%A7%D8%AA/" rel="">بصياغة المُوجِّهات بأفضل طريقة</a> من خلال توفير كافة التفاصيل اللازمة مع الحرص على اختزالها وتوضيحها قدر المستطاع وكتابة الموجه بصيغة الإيجاب لا النفي، فبدلًا من كتابة "اكتب مقالًا عن تأثيرات التعلم العميق ولا تذكر مجالات لا تخص الطب"، على سبيل المثال يمكن كتابة "اكتب مقالًا قصيرًا عن تأثيرات التعلم العميق في الطب والصناعات الدوائية، وضمِّن فيه أمثلة على التأثيرات في كل مجال منهم"، فهنا قد حددت حجم المقال والعناصر المحددة التي تود أن يكتب النموذج اللغوي عنها، وحددت أنَّك تريد المقال مزودًا بالأمثلة، على عكس الأمر الأول الذي كان أمرًا عامًا لن يجيبك عليه روبوت الدردشة بإجابةٍ ملائمةٍ دقيقةٍ وافية.
</p>

<h2 id="finetuning">
	تقنية الصقل Fine-Tuning
</h2>

<p>
	الصقل Fine-Tuning واحد من مصطلحات الذكاء الاصطناعي الشائعة اليوم، وهي تعني تعديل نموذج ذكاء اصطناعي مدرب مسبقًا على كميات ضخمةمن البيانات، وجعله يتكيف مع مهام معينة أو بيانات جديدة. فبدلاً من بدء التدريب من الصفر، يستخدم نموذج مُدرب بالفعل لكن هذه المرة باستخدام بيانات جديدة ومخصصة للمهمة المطلوبة مما يوفر الكثير من الوقت والجهد مقارنة بالتدريب من البداية.
</p>

<p>
	على سبيل المثال، إذا كان لديك نموذج مدرب على فهم اللغة العامة مثل GPT-4، يمكنك استخدام تقنية الصقل لتكييف هذا النموذج مع مجال أو تخصص بعينه، مثل الطب أو الاقتصاد وتدريبه على بيانات محددة تتعلق بذلك التخصص فقط، لتجعل النموذج أكثر فعالية في تنفيذ المهام الخاصة بك والإجابة على أسئلتك بدقة وكفاءة أكبر.
</p>

<h2 id="bias">
	التحيز Bias
</h2>

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

<p>
	تتعدد حلول التحيز في الذكاء الاصطناعي، ومنها مثلًا تنويع مصادر البيانات وتحديد مبادئ أخلاقية لنموذج الذكاء الاصطناعي، والتدقيق المنتظم للنموذج وحل تحيزاته، والشفافية مع النموذج وتعريفه معاني التحيز وأمره بتجنبها.
</p>

<h2 id="aihallucination">
	هلوسة الذكاء الاصطناعي AI Hallucination
</h2>

<p>
	تشير هلوسة الذكاء الاصطناعي إلى توليد الذكاء الاصطناعي لمعلوماتٍ خاطئةٍ وعرضها كأنَّها حقائق مُسلَّمة، وغالبًا ما تحدث هذه الهلوسات لقصورٍ أو قِدَمٍ في البيانات التي تدربت عليها الخوارزمية أو النموذج، وتتعدد أشكال الهلوسة في الذكاء الاصطناعي، فقد يخطئ في حدثٍ تاريخي حيث أخطأ روبوت الدردشة بارد Bard -وهو النسخة السابقة من جوجل جيميني- عن سؤاله عن أول صورة لكوكب خارج المجموعة الشمسية، فأجاب أنَّ أول صورة لكوكب خارج المجموعة الشمسية التُقِطَت باستخدام تيليسكوب جيمس ويب، وهذا غير صحيح، فأول صورةٍ ملتقطة لكوكب خارج المجموعة الشمسية كانت عام 2004، بينما أُطلِق تيليسكوب جيمس ويب عام 2021.
</p>

<p>
	كذلك من هلوسات الذكاء الاصطناعي تلفيق المعلومات، فيمكنه توليد معلومات عن أناسٍ لا وجود لهم، ويقدم هذه المعلومات على أنها حقائق لا جدال فيها، ومن هلوسات الذكاء الاصطناعي توليده لمعلومات كاذبة عن أشخاص حقيقيين، على سبيل المثال قال ChatGPT ذات مرة أنَّ عمدة أستراليا كان مدانًا في قضية رشوة في أواخر التسعينات، بينما كان في الواقع هو المُبلِّغ عنها.
</p>

<h2 id="interpretabilityandexplainability">
	قابلية التفسير والشرح Interpretability and Explainability
</h2>

<p>
	تشير قابلية التفسير Interpretability إلى فهم الأسباب وراء التوقعات والنتائج المُولَّدة من نموذج الذكاء الاصطناعي فإذا كان لدينا نموذج ذكاء اصطناعي يتنبأ بإمكانية إصابة شخص بمرض معين، فإن قابلية التفسير تعني القدرة على معرفة العوامل التي أثرت في هذا التنبؤ مثل العمر والتاريخ الطبي ونمط الحياة.
</p>

<p>
	بينما تشير قابلية الشرح Explainability إلى مدى سهولة شرح كيفية عمل نموذج الذكاء الاصطناعي وهي تفيد المطورين في شرح آلية عمل النموذج للآخرين، سواء كانوا خبراء في المجال أو غير خبراء، ويساعد الفهم العميق لنموذج الذكاء الاصطناعي على معرفة نقاط قوة وقصور النموذج، وبالتالي تحسين أدائه وزيادة دقته وفعاليته وحل مشكلاته وقصوره من هلوسة وتحيز وغيرها، وعمومًا يُستخدم المصطلحان بالتبادل في أحيان كثيرة.
</p>

<h2>
	مصادر لتعلم مصطلحات الذكاء الاصطناعي
</h2>

<p>
	إذا كنت مهتمًا بالتعرف على مفاهيم ومصطلحات الذكاء الاصطناعي بشكل احترافي ودمجها في تطبيقات عملية مفيدة ومطلوبة في سوق العمل، ننصحك بالاطلاع على مصادر التعلم المتنوعة، مثل <a href="https://academy.hsoub.com/programming/artificial-intelligence/" rel="">دروس ومقالات الذكاء الاصطناعي</a>، إلى جانب <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D9%87%D9%85-%D9%83%D8%AA%D8%A8-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A7%D9%84%D9%85%D8%AC%D8%A7%D9%86%D9%8A%D8%A9-r2330/" rel="">كتب الذكاء الاصطناعي المجانية</a> المشروحة بأسلوب منظم وشامل يتضمن كمًا وافرًا من المفاهيم النظرية والعملية التي تحتاجها كي <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">تتعلم الذكاء الاصطناعي</a>.
</p>

<p>
	كما توفر أكاديمية حسوب دورة <a href="https://academy.hsoub.com/store/12-%D8%AF%D9%88%D8%B1%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">الذكاء الاصطناعي</a> التي تُعد واحدة من أفضل الدورات العربية في هذا المجال. إذ تبدأ الدورة معك من الصفر وتعلمك أساسيات البرمجة وتحليل البيانات، وخوارزميات الذكاء الاصطناعي، ومفاهيم تعلم الآلة، والتعلم العميق، والشبكات العصبية وغيرها من المفاهيم، وتكامل بين الشرح النظري والتطبيق العملي من خلال مشاريع حقيقية تتوافق مع احتياجات سوق العمل، كما تمنحك شهادة معتمدة تعزز حصولك على فرصة عمل مناسبة خلال زمن قياسي.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="442" id="ips_uid_6772_6" referrerpolicy="strict-origin-when-cross-origin" src="https://academy.hsoub.com/applications/core/interface/index.html" title="دورة الذكاء الاصطناعي - أكاديمية حسوب" width="786" data-embed-src="https://www.youtube.com/embed/9ESA9owvmGM"></iframe>
</p>

<h2 id="">
	الخلاصة
</h2>

<p>
	تحدثنا في مقال اليوم عن أهم مصطلحات الذكاء الاصطناعي وأكثرها شهرة، فبدأنا بالحديث عن ماهية الذكاء الاصطناعي ومجالاته، ثم انتقلنا للحديث عن بعض تطبيقاته، وكذلك عرفنا مصطلحات تتعلق بتحديات تطبيق واستخدام الذكاء الاصطناعي من هلوسةٍ وتحيز وقابلية للشرح والتفسير، وننوه في الختام لأن فهم هذه مصطلحات الذكاء الاصطناعي هذه لم يعد حكرًا على التقنيين والمتخصصين في المجال، بل أصبح ضرورة لكل شخص يسعى لمواكبة التطور التقني. وإذا كان لديك التباسٌ في فهم أي مصطلح من مصطلحات الذكاء الاصطناعي لا تتردد في السؤال حوله في قسم التعليقات أسفل المقال.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">الذكاء الاصطناعي: دليلك الشامل</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">لغات برمجة الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9/" rel="">تعلم الآلة Machine Learning</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%83%D9%8A%D9%81-%D8%AA%D8%A8%D8%AF%D8%A3-%D9%81%D9%8A-%D9%85%D8%AC%D8%A7%D9%84-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2075/" rel="">كيف تبدأ في مجال الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%B3%D8%AA%D9%82%D8%A8%D9%84-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">مستقبل الذكاء الاصطناعي</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2363</guid><pubDate>Tue, 16 Jul 2024 15:09:00 +0000</pubDate></item><item><title>&#x62A;&#x62D;&#x645;&#x64A;&#x644; &#x627;&#x644;&#x646;&#x645;&#x627;&#x630;&#x62C; &#x627;&#x644;&#x645;&#x64F;&#x62F;&#x651;&#x631;&#x628;&#x629; &#x645;&#x633;&#x628;&#x642;&#x64B;&#x627; &#x628;&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; &#x627;&#x644;&#x623;&#x635;&#x646;&#x627;&#x641; &#x627;&#x644;&#x62A;&#x644;&#x642;&#x627;&#x626;&#x64A;&#x629; AutoClasses &#x641;&#x64A; &#x645;&#x643;&#x62A;&#x628;&#x629; Transformers</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%AD%D9%85%D9%8A%D9%84-%D8%A7%D9%84%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A7%D9%84%D9%85%D9%8F%D8%AF%D9%91%D8%B1%D8%A8%D8%A9-%D9%85%D8%B3%D8%A8%D9%82%D9%8B%D8%A7-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%A3%D8%B5%D9%86%D8%A7%D9%81-%D8%A7%D9%84%D8%AA%D9%84%D9%82%D8%A7%D8%A6%D9%8A%D8%A9-autoclasses-%D9%81%D9%8A-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-transformers-r2354/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_06/--------AutoClass.png.b440834007ce3e722650a67364a2a3b2.png" /></p>
<p>
	في ظل التنوع الكبير للبنى الموجودة في <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D9%88%D9%91%D9%84%D8%A7%D8%AA-transformers-%D9%85%D9%86-%D9%85%D9%86%D8%B5%D8%A9-hugging-face-r2340/" rel="">مكتبة المحوّلات Transformers</a> قد يصعب عليك إنشاء بنية مناسبة لنقطة التحقق من النموذج checkpoint الخاصة بك وهنا يأتي دور الأصناف التلقائية AutoClasses التي توفرها مكتبة Transformers التي حرص مطوروها على جعلها مكتبةً مرنة وسهلة الاستخدام حيث تستنتج هذه الأصناف التلقائية البنية المناسبة لنقطة تحقق معينة وتُحمّلها لك تلقائيًا.
</p>

<p>
	فأنت تستطيع بواسطة الدالة <code>‎from_pretrained()‎</code> في مكتبة Transformers تحميل نموذج مُدَّرب مسبقًا لأي بنية تريدها بسرعة وسهولة ومن دون الحاجة لتدريبه من الصفر وهدر الوقت والموارد، ويمكننا القول أن إنتاج هذا النوع من الشيفرات البرمجية المعزول كليًّا عن نقاط التحقق checkpoint-agnostic code والتي يمكن استخدامها مع نماذج مختلفة دون تغيير يساعد المطورين جدًا، فالشيفرة التي تعمل مع نقطة تحقق معينة ستعمل مع أي نقطة تحقق أخرى حتى لو كانت مختلفة بالبنية طالما الشيفرة مُدربة سابقًا على مهمة مماثلة.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		<strong>توضيح للمصطلحات</strong>: يُقصد بالبنية architecture هيكل النموذج وتشير نقاط التحقق checkpoints إلى الأوزان weights المرتبطة ببنية معينة وهي تمثل حالة محددة للنموذج بعد التدريب، فعلى سبيل المثال تعد BERT بنية للنموذج اللغوي، بينما google-bert/bert-base-uncased فهي نقطة تحقق محددة لهذه البنية، أما النموذج Model فهو مصطلح أكثر عمومية من كليهما فقد يشير إلى كل من البنية أو نقطة التحقق حسب السياق.
	</p>
</blockquote>

<p>
	سنتطرق للنقاط التالية في هذا المقال:
</p>

<ul>
	<li>
		<p>
			تحميل مُرَمِّز مُدَّرب مسبقًا pretrained tokenizer.
		</p>
	</li>
	<li>
		<p>
			تحميل معالج صور مُدَّرب مسبقًا pretrained image processor.
		</p>
	</li>
	<li>
		<p>
			تحميل مُستخرج ميزات مُدَّرب مسبقًا pretrained feature extractor.
		</p>
	</li>
	<li>
		<p>
			تحميل معالج مُدَّرب مسبقًا pretrained processor.
		</p>
	</li>
	<li>
		<p>
			تحميل نموذج مُدَّرب مسبقًا pretrained model.
		</p>
	</li>
	<li>
		<p>
			تحميل نموذج ليكون backbone.
		</p>
	</li>
</ul>

<h2 id="autotokenizer">
	المُرَمِّز التلقائي AutoTokenizer
</h2>

<p>
	تبدأ معظم مهام معالجة اللغة الطبيعية (NLP) بمُرَمِّز AutoTokenizer يحول المُدخَلات إلى تنسيق مناسب للنموذج حتى يستطيع معالجتها.
</p>

<p>
	علينا أولًا تحميل المُرَمِّز المناسب للنموذج باستخدام الدالة <code>‎AutoTokenizer.from_pretrained()‎</code>:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_9147_6" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> tokenizer </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoTokenizer</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"google-bert/bert-base-uncased"</span><span class="pun">)</span></pre>

<p>
	ثم تُرَمِّزْ المدخلات باستخدامه كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_9147_8" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> sequence </span><span class="pun">=</span><span class="pln"> </span><span class="str">"In a hole in the ground there lived a hobbit."</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">tokenizer</span><span class="pun">(</span><span class="pln">sequence</span><span class="pun">))</span><span class="pln">
</span><span class="pun">{</span><span class="str">'input_ids'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="lit">101</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1999</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1037</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4920</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1999</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1996</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2598</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2045</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2973</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1037</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7570</span><span class="pun">,</span><span class="pln"> </span><span class="lit">10322</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4183</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1012</span><span class="pun">,</span><span class="pln"> </span><span class="lit">102</span><span class="pun">],</span><span class="pln"> 
 </span><span class="str">'token_type_ids'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">],</span><span class="pln"> 
 </span><span class="str">'attention_mask'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">]}</span></pre>

<h2 id="autoimageprocessor">
	معالج الصور التلقائي AutoImageProcessor
</h2>

<p>
	يعد معالج الصور AutoImageProcessor أداة مهمة في مكتبة Transformers تسهل عملية تحضير الصور للنماذج المختصة بالرؤية الحاسوبية، مما يجعل استخدام هذه النماذج أكثر سهولة وفعالية.
</p>

<p>
	تشبه وظيفة معالج الصور وظيفة المُرَمِّز AutoTokenizer فهو يُحَضِّر البيانات قبل إدخالها للنموذج، لكنه يستخدم في مهام الرؤية الحاسوبية فيكفل معالجة الصور المدخلة بالتنسيق الصحيح الملائم للنموذج، كما في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_9147_10" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoImageProcessor</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> image_processor </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoImageProcessor</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"google/vit-base-patch16-224"</span><span class="pun">)</span></pre>

<h2 id="autobackbone">
	AutoBackbone
</h2>

<p>
	AutoBackbone هو أداة قوية تسمح باستخدام نماذج معقدة مثل Swin Transformer بطريقة مرنة، حيث يمكن استخراج ميزات الصور على مستويات مختلفة من التفاصيل حسب متطلبات المهمة التي نقوم بها. ألقِ نظرة على الصورة التالية في البداية التي تبين نموذج <a href="https://huggingface.co/docs/transformers/main_classes/backbones" rel="external nofollow">Backbone</a> الخاص بمحوّل Swin Transformer متعدد المراحل لاستخراج ميزات الصور:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="151956" href="https://academy.hsoub.com/uploads/monthly_2024_06/img01-Swin-Stages.png.de6721e9d78b426249c2812141f2cebd.png" rel=""><img alt="img01 swin stages" class="ipsImage ipsImage_thumbnailed" data-fileid="151956" data-ratio="56.30" data-unique="v4yv6195r" style="width: 691px; height: auto;" width="691" src="https://academy.hsoub.com/uploads/monthly_2024_06/img01-Swin-Stages.thumb.png.a43da00d522ce6236de32d1d2814985d.png"> </a>
</p>

<p>
	يساعدك AutoBackbone على استخدام النماذج المُدّربة مسبقًا بصفتها بنى أساسية Backbones مكونة من عدة مراحل تعطيك خرائط الميزات feature maps لبياناتك بطريقة تدريجية على عدة مراحل حتى تصل إلى أفضل نتيجة، ويمكنك تحديد المرحلة التي تريد استخراج الخرائط عندها بواسطة معاملات الدالة <code>from_pretrained‎()‎</code> إذ ينبغي لك تحديد معامل واحد على الأقل من المعاملات التالية:
</p>

<ul>
	<li>
		<p>
			المعامل <code>out_indices</code>: يشير إلى فهرس index الطبقة التي ستستخرج خريطة الميزات منها.
		</p>
	</li>
	<li>
		<p>
			المعامل <code>out_features</code>: يدل على اسم الطبقة التي ستستخرج خريطة الميزات منها.
		</p>
	</li>
</ul>

<p>
	وإذا استخدمت المعاملين معًا فاحرص على التوافق بينهما، أما في الحالات التي لا تُمرر فيها أي معامل فستعبر بياناتك جميع مراحل Backbone وتحصل على خريطة الميزة من المرحلة الأخيرة.
</p>

<p>
	يبين المثال التالي كيفية الحصول على خريطة الميزات من المرحلة الأولى لنموذج Swin backbone عبر ضبط قيمة المعامل <code>out_indices=(1,)‎</code>، لاحظ الصورة ثم التعليمات البرمجية المرتبطة:
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="151957" href="https://academy.hsoub.com/uploads/monthly_2024_06/img02-Swin-Stage-1.png.7d3ce94a7b4091b1ab1fba3a5c180e1c.png" rel=""><img alt="img02-Swin-Stage-1.png" class="ipsImage ipsImage_thumbnailed" data-fileid="151957" data-ratio="56.33" data-unique="bftxlbe0n" width="900" src="https://academy.hsoub.com/uploads/monthly_2024_06/img02-Swin-Stage-1.thumb.png.544462b39c723268a11c0fd31e288e92.png"></a>
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_9147_13" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoImageProcessor</span><span class="pun">,</span><span class="pln"> </span><span class="typ">AutoBackbone</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">import</span><span class="pln"> torch
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> PIL </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">Image</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">import</span><span class="pln"> requests
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> url </span><span class="pun">=</span><span class="pln"> </span><span class="str">"http://images.cocodataset.org/val2017/000000039769.jpg"</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> image </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Image</span><span class="pun">.</span><span class="pln">open</span><span class="pun">(</span><span class="pln">requests</span><span class="pun">.</span><span class="pln">get</span><span class="pun">(</span><span class="pln">url</span><span class="pun">,</span><span class="pln"> stream</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">).</span><span class="pln">raw</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> processor </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoImageProcessor</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"microsoft/swin-tiny-patch4-window7-224"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoBackbone</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"microsoft/swin-tiny-patch4-window7-224"</span><span class="pun">,</span><span class="pln"> out_indices</span><span class="pun">=(</span><span class="lit">1</span><span class="pun">,))</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> inputs </span><span class="pun">=</span><span class="pln"> processor</span><span class="pun">(</span><span class="pln">image</span><span class="pun">,</span><span class="pln"> return_tensors</span><span class="pun">=</span><span class="str">"pt"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> outputs </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">(**</span><span class="pln">inputs</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> feature_maps </span><span class="pun">=</span><span class="pln"> outputs</span><span class="pun">.</span><span class="pln">feature_maps</span></pre>

<p>
	يمكنك الآن الوصول إلى الكائن <code>feature_maps</code> الخاص بخرائط الميزات وفق التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_9147_15" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> list</span><span class="pun">(</span><span class="pln">feature_maps</span><span class="pun">[</span><span class="lit">0</span><span class="pun">].</span><span class="pln">shape</span><span class="pun">)</span><span class="pln">
</span><span class="pun">[</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">96</span><span class="pun">,</span><span class="pln"> </span><span class="lit">56</span><span class="pun">,</span><span class="pln"> </span><span class="lit">56</span><span class="pun">]</span></pre>

<h2 id="autofeatureextractor">
	مُسْتَخْرِج الميزات التلقائي AutoFeatureExtractor
</h2>

<p>
	يستخدم مُسْتَخْرِج الميزات في معالجة الصوتيات ويمكنك من معالجة الملفات الصوتية بالتنسيق الصحيح قبل إدخالها للنموذج، وفيما يلي طريقة تحميله بواسطة الدالة <code>‎AutoFeatureExtractor.from_pretrained()‎</code>:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_9147_17" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoProcessor</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> processor </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoProcessor</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"microsoft/layoutlmv2-base-uncased"</span><span class="pun">)</span></pre>

<h2 id="automodel">
	النموذج التلقائي AutoModel
</h2>

<p>
	تتيح لك أصناف النماذج التلقائية AutoModel تحميل نموذج جاهز مُدَّرب مسبقًا يناسب المهمة التي تعمل عليها، وتختلف هذه الأصناف classes حسب إطار العمل الذي تستخدمه، ففي إطار عمل بايتورش<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-%D8%A8%D8%A7%D9%8A-%D8%AA%D9%88%D8%B1%D8%B4-pytorch-%D9%88%D8%A3%D9%87%D9%85%D9%8A%D8%AA%D9%87-%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2311/" rel="">Pytorch</a> تكون من نوع <code>AutoModelFor</code> (ويمكنك الاطلاع على كافة المهام التي تدعمها أصناف التلقائية بمراجعة <a href="https://huggingface.co/docs/transformers/model_doc/auto" rel="external nofollow">القسم الخاص بها على Hugging Face</a>)، تستطيع مثلًا يمكنك تحميل نموذج ملائم لتصنيف السلاسل sequence classification بواسطة <code>AutoModelForSequenceClassification.from_pretrained()‎</code> كما يلي:
</p>

<p>
	يمكنك استخدام نقطة التحقق نفسها لمهمة مختلفة:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_9147_19" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">AutoModelForTokenClassification</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AutoModelForTokenClassification</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"distilbert/distilbert-base-uncased"</span><span class="pun">)</span></pre>

<p>
	<strong>ملاحظة</strong>: في نماذج PyTorch تُحَمّل النماذج بواسطة التابع <code>from_pretrained()‎</code> المعتمدة على <code>torch.load()‎</code> التي تستخدم بدورها الوحدة <code>pickle</code> من بايثون وهي غير آمنة، لذا ننصحك بعدم تحميل أي نماذج مجهولة المصدر أو غير موثوقة حتى لا تَضُّرْ بمشروعك، واحرص دائمًا على تحميلها من منصات معروفة مثل النماذج العامة الموجودة في مستودع Hugging Face فهي أقل خطرًا إذ تفحصها المنصة عند كل commit لضمان خلوها من البرمجيات الخبيثة، ويمكنك الاطلاع على <a href="https://huggingface.co/docs/hub/security" rel="external nofollow">توثيقات المستودع</a> لمعرفة أفضل الممارسات في هذا المجال مثل استخدام GPG في <a href="https://huggingface.co/docs/hub/security-gpg" rel="external nofollow">التحقق من أن عمليات commit في النموذج موقعة من طرف موثوق</a> وغيرها من طرق الحماية.
</p>

<p>
	بالمقابل تُعدّ نقاط تحقق checkpoints لكل من إطاري TensorFlow و Flax محمية من هذا الخطر، ويمكنك الاستفادة من ذلك وتجاوز المخاطر السابقة بتحميل هذه النماذج ضمن بنى PyTorch أي بتحويلها إلى نماذج PyTorch باستخدام <code>from_tf</code> و <code>from_flax</code> بالصيغة kwargs مع <code>from_pretrained</code>.
</p>

<p>
	توجد أصناف تلقائية مشابهة في إطار العمل TensorFlow وتتيح أيضًا تحميل نماذج مُدَّربة مسبقًا لمهمة محددة تختارها، تسمى أصناف <code>TFAutoModelFor</code> (يمكنك الاطلاع على <a href="https://huggingface.co/docs/transformers/model_doc/auto" rel="external nofollow">كافة مهام المعالجة التي تدعمها</a>)، يبين المثال التالي طريقة استخدام <code>TFAutoModelForSequenceClassification.from_pretrained()‎</code> لتحميل نموذج مناسب لتصنيف السلاسل:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_9147_21" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">TFAutoModelForSequenceClassification</span><span class="pln">

model </span><span class="pun">=</span><span class="pln"> </span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="typ">TFAutoModelForSequenceClassification</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"distilbert/distilbert-base-uncased"</span><span class="pun">)</span></pre>

<p>
	تستطيع بسهولة إعادة استخدام نقطة التحقق التي وصلت إليها لتحميل بنية تناسب مهمة أخرى مختلفة كما في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_9147_23" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">TFAutoModelForTokenClassification</span><span class="pln">

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">TFAutoModelForTokenClassification</span><span class="pun">.</span><span class="pln">from_pretrained</span><span class="pun">(</span><span class="str">"distilbert/distilbert-base-uncased"</span><span class="pun">)</span></pre>

<p>
	ختامًا يوصى باستخدام صنف المُرَمِّز التلقائي AutoTokenizer وأصناف النموذج التلقائي AutoModelFor و TFAutoModelFor (حسب إطار العمل الذي تعتمده) لتحميل مثيلات النماذج المُدَّربة مُسبقًا لمشروعك فهي تضمن استخدامك البنية الصحيحة والمناسبة لمهمتك في كل مرة.
</p>

<p>
	تابع معنا <a href="https://academy.hsoub.com/tags/huggingface/" rel="">مقالات السلسلة</a> واقرأ مقالنا التالي عن المعالجة المسبقة للبيانات قبل تمريرها لنماذج الذكاء الاصطناعي لتتعلم كيف تعالج مجموعات بياناتك وتضبطها بدقة قبل تمريرها إلى النموذج وذلك عبر تقنيات المعالجة المختلفة، مثل المُرَمِّز، ومعالج الصور، ومستخرج الميزات، ومعالج الأنماط المتعددة.
</p>

<p>
	ترجمة -وبتصرف- لقسم <a href="https://huggingface.co/docs/transformers/autoclass_tutorial" rel="external nofollow">Load pretrained instances with an AutoClass</a> من توثيقات Hugging Face.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		المقال السابق: <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%AE%D8%B7%D9%88%D8%B7-%D8%A7%D9%84%D8%A3%D9%86%D8%A7%D8%A8%D9%8A%D8%A8-pipelines-%D9%84%D9%84%D8%A7%D8%B3%D8%AA%D8%AF%D9%84%D8%A7%D9%84-%D9%81%D9%8A-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2353/" rel="">استخدام خطوط الأنابيب Pipelines للاستدلال في تطبيقات الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D9%86-%D9%87%D9%88-%D9%85%D9%87%D9%86%D8%AF%D8%B3-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%88%D9%85%D8%A7-%D8%A3%D8%A8%D8%B1%D8%B2-%D9%85%D9%87%D8%A7%D9%85%D9%87-r2319/" rel="">من هو مهندس الذكاء الاصطناعي وما أبرز مهامه</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A7%D9%84%D8%AA%D9%88%D9%84%D9%8A%D8%AF%D9%8A-generative-ai-r2234/" rel="">مقدمة إلى الذكاء الاصطناعي التوليدي Generative AI</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D9%83%D8%AA%D8%A8%D8%A7%D8%AA-%D9%88%D8%A3%D8%B7%D8%B1-%D8%B9%D9%85%D9%84-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">مكتبات وأطر عمل الذكاء الاصطناعي: القوة الكامنة خلف الأنظمة الذكية</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2354</guid><pubDate>Tue, 09 Jul 2024 15:05:00 +0000</pubDate></item><item><title>&#x643;&#x644; &#x645;&#x627; &#x62A;&#x648;&#x62F; &#x645;&#x639;&#x631;&#x641;&#x62A;&#x647; &#x639;&#x646; &#x62F;&#x631;&#x627;&#x633;&#x629; &#x627;&#x644;&#x630;&#x643;&#x627;&#x621; &#x627;&#x644;&#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A;</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D9%83%D9%84-%D9%85%D8%A7-%D8%AA%D9%88%D8%AF-%D9%85%D8%B9%D8%B1%D9%81%D8%AA%D9%87-%D8%B9%D9%86-%D8%AF%D8%B1%D8%A7%D8%B3%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2362/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_07/-------.png.48092ec07641af698af8c15729ae0b22.png" /></p>
<p>
	يتصدر الذكاء الاصطناعي اليوم المشهد العالمي، وذلك لأسبابٍ عدة من بينها دخول أدواته وتقنياته في شتى المجالات، ومنها أيضًا أنَّ المجال صار متاحًا للعامة بعدما كان حكرًا على الباحثين والمتخصصين، مما حفز الكثيرين على لدراسة هذا المجال المتطور الذي تزداد أهميته يومًا بعد يوم. في مقال اليوم سنوضح لك ما هو الذكاء الاصطناعي؟ وما طريقة دراسة الذكاء الاصطناعي والعمل فيه؟ وكيف تتعلم الذكاء الاصطناعي من الصفر حتى الاحتراف
</p>

<h2 id="-1">
	ما هو الذكاء الاصطناعي؟
</h2>

<p>
	يعرف <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">الذكاء الاصطناعي</a> بأنه قدرة الآلة على أداء مجموعة من الوظائف المعرفية المشابهة للوظائف البشرية كالإدراك والتفكير والتعلم والإبداع وحل المشكلات، وقد تطور الذكاء الاصطناعي اليوم على نحو غيرمسبوق وصارت تقنيات الذكاء الاصطناعي وأدواته وتطبيقاته تستخدم في العديد من المجالات وتساعد الأفراد والشركات على حدٍ سواء، فهي تساعد الأفراد على توفير الوقت والجهد وزيادة الإنتاجية بتنفيذ المهام الروتينية بدلًا عنهم، كما تساعد الشركات على رفع مستوى الكفاءة والإنتاجية وزيادة معدل الأرباح، هذا زاد الطلب على المتخصصين في مجال الذكاء الاصطناعي من جهة وزاد من أهمية دراسة الذكاء الاصطناعي من جهة أخرى.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" id="ips_uid_5233_6" referrerpolicy="strict-origin-when-cross-origin" src="https://academy.hsoub.com/applications/core/interface/index.html" title="YouTube video player" width="560" data-embed-src="https://www.youtube.com/embed/DzIablU_mXY?si=qgiIG569F-q9uQaO"></iframe>
</p>

<h2 id="-2">
	إيجابيات دراسة الذكاء الاصطناعي
</h2>

<p>
	تتعدد إيجابيات دراسة الذكاء الاصطناعي والعمل فيه، ومنها أبرزها نذكر:
</p>

<ul>
	<li>
		إن نمو مجال الذكاء الاصطناعي يومًا بعد الآخر توسع تقنياته وتكامله مع تخصصات ومجالاتٍ أخرى عديدة مثل الطب والمواصلات والاقتصاد والترفيه وغيرها، جعله مجالًا آمنًا تعلو فيه فرص التوظيف ودفع الكثير للتوجه نحو دراسته للتآلف مع هذه التقنيات وفهم آلية عملها.
	</li>
	<li>
		توفر دراسة الذكاء الاصطناعي الكثير من فرص العمل في السوق العالمي والعربي، ورغم ما وصل إليه مجال الذكاء الاصطناعي من تطور كبير إلا أنَّه لا يزال في بداياته ولازال عدد دارسيه قليلًا نسبيًا وبالتالي فإن سارعتَ وسابقتَ إلى تعلمه ودراسته الآن ستتاح لك الكثير من الفرص الواعدة والمميزة في المستقبل حينما يزداد المجال توسعًا وطلبًا.
	</li>
	<li>
		تتميز دراسة الذكاء الاصطناعي بالمرونة إذ لا يحتاج <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D9%86-%D9%87%D9%88-%D9%85%D9%87%D9%86%D8%AF%D8%B3-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%88%D9%85%D8%A7-%D8%A3%D8%A8%D8%B1%D8%B2-%D9%85%D9%87%D8%A7%D9%85%D9%87-r2319/" rel="">مهندس الذكاء الاصطناعي </a> لتأدية مهامه إلا حاسوبه واتصالًا بالإنترنت، وهذا يجعل العمل عن بعد متاحًا في هذا المجال ويوفر لدارسي الذكاء الاصطناعي مرونةً كبيرةً في العمل في أي زمان ومكان.
	</li>
</ul>

<h2 id="-3">
	تحديات دراسة الذكاء الاصطناعي
</h2>

<p>
	لا تخلو دراسة الذكاء الاصطناعي من بعض التحديات من بينها:
</p>

<ul>
	<li>
		يعد تخصص الذكاء الاصطناعي من المجالات التقنية المتقدمة والصعبة نسبيًا وهو مرتبط بشكل وثيق بالعديد من المجالات العلمية كالرياضيات والإحصاء وعلوم الحاسوب وعلم البيانات وصولًا إلى علم الأعصاب في تخصصات دقيقة مثل <a href="https://academy.hsoub.com/programming/os-embedded-systems/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%B1%D9%88%D8%A8%D9%88%D8%AA-%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-r1855/" rel="">صناعة الروبوتات</a>.
	</li>
	<li>
		ينمو تخصص الذكاء الاصطناعي بشكل مستمر وعلى الرغم من كون النمو المستمر يعد أحد الجوانب الإيجابية لهذا التخصص إلا أنه يتطلب من دراس الذكاء الاصطناعي أن يتعلم كثيرًا وباستمرار نظرًا للتغير المتسارع والمتواصل في المجال وتقنياته، فإن تقاعس متخصص الذكاء الاصطناعي عن مواصلة التعلم فحتمًا سيكون مصيره التقادم والاستغناء عن خدماته.
	</li>
</ul>

<h2 id="-4">
	مجالات الذكاء الاصطناعي
</h2>

<p>
	يعد الذكاء الاصطناعي مجالًا واسعًا ويتضمن تعلمه العديد من التخصصات والمجالات الفرعية، ومن أهم هذه المجالات:
</p>

<ul>
	<li>
		تعلم الآلة Machine Learning
	</li>
	<li>
		التعلم العميق Deep Learning
	</li>
	<li>
		معالجة اللغات الطبيعية Natural Language Processing
	</li>
</ul>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="152993" href="https://academy.hsoub.com/uploads/monthly_2024_07/---.png.28b06bebadcc7c3af8b0194f50f3be8b.png" rel=""><img alt="مجالات دراسة الذكاء الاصطناعي" class="ipsImage ipsImage_thumbnailed" data-fileid="152993" data-ratio="91.50" data-unique="3ypdp8951" style="width: 400px; height: auto;" width="400" src="https://academy.hsoub.com/uploads/monthly_2024_07/---.thumb.png.98bdaea21b100ec5cbfd94c4c342d50d.png"></a>
</p>

<p>
	لنتعرف أكثر على كل تخصصٍ على حدة وما المفاهيم التي ستتعلمها فيه.
</p>

<h3 id="machinelearning">
	تعلم الآلة Machine Learning
</h3>

<p>
	يهتم تخصص <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9/" rel="">تعلم الآلة</a> Machine Learning أو ML اختصارًا بتطوير <a href="https://academy.hsoub.com/programming/advanced/%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A7%D8%AA/" rel="">خوارزميات</a> حاسوبية تساعد الآلات على التطور والتحسن تلقائيًا باستخدام البيانات، حيث تساعد هذه الخوارزميات الذكية الحواسيب أو الآلات عمومًا على إنجاز مهام مثل تحليل البيانات والتعلُّم منها واتخاذ قرارات بناءً على هذه التحليلات دون الحاجة إلى تدخل برمجي من المطورين.
</p>

<p>
	يكمن الفرق بين تعلم الآلة والبرمجة التقليدية أنَّ البرمجة التقليدية تعتمد على اتباع الحاسوب لمجموعة من الأوامر المتتالية حتى يصل إلى النتيجة النهائية بناءً على هذه الأوامر، أمَّا في تعلم الآلة فيمنح المطورُ للخوارزمية مجموعة ضخمة من البيانات ويمنحها النتائج التي يجب الوصول إليه من هذه البيانات، لتبدأ الخوارزمية في التجربة والتدرب حتى تصل إلى النتيجة المناسبة،. على سبيل المثال لتطوير برنامج ذكي يميز صور القطط باستخدام تعلم الآلة فلن نمنحه المواصفات العامة للقطة، وإنما سنمنحه صورًا لآلاف القطط ليتعلم منها بنفسه مواصفات القطة، ثم يكون قادرًا على التعرُّف على القطط بعد ذلك، وتزداد دقة خوارزميات تعلم الآلة كلما ازداد حجم ودقة البيانات المعطاة لها.
</p>

<h3 id="deeplearning">
	التعلم العميق Deep Learning
</h3>

<p>
	يعد <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D9%84%D9%81%D9%87%D9%85-%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%B9%D9%85%D9%8A%D9%82-r1422/" rel="">التعلم العميق</a> Deep Learning أو DL اختصارًا فرعًا حيويًا من تعلم الآلة، ويركز هذا المجال على تنفيذ خوارزميات تمكن الآلة من محاكاة طريقة عمل العقل البشري في فهم ومعالجة النصوص واللغات والصور وغيرها من أنواع البيانات.
</p>

<p>
	يكمن الفرق بين التعلم العميق وتعلم الآلة هو أن التعلم العميق يستخدم هيكلًا معقدًا من الخوارزميات المعقدة التي تحاكي طريقة عمل دماغنا البشري والشبكات العصبية، لاكتشاف الأنماط في البيانات كما أنه يحتاج بيانات أكثر لتحسين دقته، في حين يستخدم تعلم الآلة خوارزميات قادرة على التعلم من البيانات المنظمة لاكتشاف الأنماط في تلك البيانات التنبؤ بالمخرجات دون برمجتها بشكل صريح.
</p>

<h3 id="naturallanguageprocessingnlp">
	معالجة اللغات الطبيعية Natural Language Processing
</h3>

<p>
	معالجة اللغة الطبيعية Natural Language Processing أو NLP اختصارًا هي تخصص مهم في دراسة الذكاء الاصطناعي حيث تركز على فهم وتحليل النصوص وبيانات الكلام البشري ويمكنها التعامل مع الفروقات في اللهجات والكلمات العامية والاختلافات النحوية، وقد اشتهرت تطبيقات هذا الفرع من الذكاء الاصطناعي كثيرًا في الآونة الأخيرة، ولعل أبرزها روبوتات الدردشة Chatbot مثل <a href="https://academy.hsoub.com/apps/web/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A8%D9%88%D8%AA-%D8%A7%D9%84%D9%85%D8%AD%D8%A7%D8%AF%D8%AB%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D9%8A-%D8%B4%D8%A7%D8%AA-%D8%AC%D9%8A-%D8%A8%D9%8A-%D8%AA%D9%8A-chatgpt-r863/" rel="">شات جي بي تي ChatGPT</a>، وأدوات الترجمة و<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D9%84%D8%AE%D9%8A%D8%B5-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2315/" rel="">تلخيص النصوص بالذكاء الاصطناعي</a>.
</p>

<h2 id="-5">
	ما هي مواد تخصص الذكاء الاصطناعي؟
</h2>

<p>
	بعد أن تعرفنا على تخصصات الذكاء الاصطناعي لنتعرف على أبرز المواد التي عليك تعلمها لدراسة الذكاءالاصطناعي والتي تشمل:
</p>

<ul>
	<li>
		الرياضيات Mathematics
	</li>
	<li>
		لغات برمجة وأطر عمل الذكاء الاصطناعي
	</li>
	<li>
		علم البيانات Data Science
	</li>
	<li>
		خوارزميات الذكاء الاصطناعي AI Algorithms
	</li>
	<li>
		خدمات الذكاء الاصطناعي AI Services
	</li>
	<li>
		أمان الذكاء الاصطناعي AI Security
	</li>
	<li>
		ديف أوبس DevOps (اختياري)
	</li>
</ul>

<p>
	لنعرف مزيدًا من التفاصيل عن كل مقرر من هذه المقررات وما الأساسيات التي عليك تعلمها خلال دراستها.
</p>

<h3 id="mathematics">
	الرياضيات Mathematics
</h3>

<p>
	يحتاج مهندس الذكاء الاصطناعي لدراسة أسس الرياضيات ومفاهيم التفاضل والتكامل والجبر الخطي والإحصاء، فمصطلحات هذه الفروع مستخدمة بكثرة في الذكاء الاصطناعي، وهي مصطلحاتٌ ضروريةٌ لحل مشكلات الذكاء الاصطناعي وفهم تطبيقاته المتنوعة، لذا تعد دراسة الرياضيات وفروعها ضمن المهارات الأساسية والضرورية لأي متخصص في الذكاء الاصطناعي.
</p>

<h3 id="programming">
	لغات البرمجة وأطر عمل الذكاء الاصطناعي
</h3>

<p>
	لدراسة الذكاء الاصطناعي ستحتاج لأن تستخدم <a href="https://academy.hsoub.com/programming/general/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">لغات البرمجة</a> في كتابة الخوارزميات وتطوير التطبيقات الذكية وهذا يجعل من <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%B7%D8%B1%D9%82-%D8%AF%D8%B1%D8%A7%D8%B3%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%85%D9%86-%D8%A7%D9%84%D8%B5%D9%81%D8%B1-r2253/" rel="">دراسة البرمجة</a> والخوارزميات <a href="https://academy.hsoub.com/programming/general/%D8%A3%D9%87%D9%85%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D9%81%D9%83%D9%8A%D8%B1-%D8%A7%D9%84%D9%85%D9%86%D8%B7%D9%82%D9%8A-%D9%81%D9%8A-%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-r2095/" rel="">والتفكير المنطقي</a> أحد أهم مواد ومهارات مهندس الذكاء الاصطناعي. ولغات البرمجة كثيرة ومتنوعة ومن أشهر لغات البرمجة التي ينصح بها لدراسة الذكاء الاصطناعي نرشح ما يلي:
</p>

<ol>
	<li>
		بايثون Python: تعد <a href="https://academy.hsoub.com/python/" rel="">بايثون</a> أبرز لغات الذكاء الاصطناعي، وذلك نظرًا لسهولتها واحتوائها على كثيرٍ من المكتبات و<a href="https://academy.hsoub.com/programming/general/%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-framework/" rel="">أطر العمل</a> المميزة في هذا المجال مثل مكتبة تينسر فلو TensorFlow وإطار عمل باي تورش <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-%D8%A8%D8%A7%D9%8A-%D8%AA%D9%88%D8%B1%D8%B4-pytorch-%D9%88%D8%A3%D9%87%D9%85%D9%8A%D8%AA%D9%87-%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2311/" rel="">PyTorch</a>.
	</li>
	<li>
		لغة سي بلس بلس C++‎: تتميز لغة C++‎ بسرعة ادائها وهي لغة مميزة في إدارة العتاد الحاسوبي، وتصلح لكتابة خوارزميات متطورة عالية الكفاءة، ما يجعلها خيارًا مميزًا في مشاريع الذكاء الاصطناعي المعقدة مثل مشاريع الرؤية الحاسوبية.
	</li>
	<li>
		لغة جافا Java: يشيع استخدام <a href="https://academy.hsoub.com/programming/java/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%85%D8%A7-%D9%87%D9%8A%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7-java-r1515/" rel="">لغة جافا</a> في دراسة الذكاء الاصطناعي، ولا سيما في تطبيقات المعالجة اللغوية ومشاريع روبوتات الدردشة، وتتميز بقابليتها للتوسع وقدرتها على معالجة أحجام ضخمة من البيانات والإدارة الجيدة للعتاد.
	</li>
	<li>
		لغة R تبرز لغة R في العديد من التطبيقات كالتحليل الإحصائي وتحليل البيانات والتمثيل الرسومي، ما يجعلها تلعب دورًا مهمًا في تطوير تطبيقات الذكاء الاصطناعي وأدوات البحث العلمي والتحليل الاقتصادي وتحليلات وسائل التواصل الاجتماعي.
	</li>
</ol>

<h3 id="datascience">
	علم البيانات Data Science
</h3>

<p>
	يقوم مجال الذكاء الاصطناعي على البيانات والتعلم منها واستخراج العلاقات بين البيانات وبناء القرارات عليها، ما يوجب على المهتمين بدراسة الذكاء الاصطناعي فهم <a href="https://academy.hsoub.com/programming/general/%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/" rel="">علم البيانات</a>، التي تضم بدورها مجالاتٍ فرعية عديدة، وأهمها:
</p>

<ul>
	<li>
		نمذجة البيانات Data Modelling وتعني جمع البيانات وتنقيحها وتنسيقها لتكون جاهزةً للتحليل والاستخدام، كما يحتاج المتخصص في الذكاء الاصطناعي لفهم لتعامل مع <a href="https://academy.hsoub.com/devops/servers/databases/%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-database/" rel="">قواعد البيانات</a> وأدواتٍ مثل Apache Spark وHadoop.
	</li>
	<li>
		تحليل البيانات Data Analysis<strong>:</strong> واستخراج إحصاءات واستنتاجات مفيدة منها، ويتعلم متخصص الذكاء الاصطناعي التعامل مع أدواتٍ مثل: SparkSQL وApache Flink، كما يتعلم أهم مبادئ تحليل <a href="https://academy.hsoub.com/programming/general/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D9%85%D9%81%D9%87%D9%88%D9%85-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D8%A7%D9%84%D8%B6%D8%AE%D9%85%D8%A9-big-data-r1579/" rel="">البيانات الضخمة Big Data</a>.
	</li>
</ul>

<h3 id="-6">
	خوارزميات الذكاء الاصطناعي AI Algorithms
</h3>

<p>
	يعد فهم <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">خوازرميات الذكاء الاصطناعي</a> مثل خوارزميات تعلم الآلة أمرًا ضروريًا خلال دراسة الذكاء الاصطناعي، ويتضمن ذلك معرفة أنواع خوازرميات تعلم الآلة مثل خوارزميات التعلم الخاضع للإشراف Supervised Learning وخوارزميات التعلم غير الخاضع للإشراف Unsupervised Learning وتعلم خوارزميات التعلم العميق، مثل الشبكات العصبية التلافيفية Convolutional Neural Networks (CNNs)‎ والشبكات العصبية المتكررة Recurrent Neural Networks (RNNs)‎ وغيرها من الخوارزميات المتنوعة وما ومتى نستخدم كل نوع منها.
</p>

<h3 id="aiservices">
	خدمات الذكاء الاصطناعي AI Services
</h3>

<p>
	يفيد التعامل مع أدوات الذكاء الاصطناعي القائم على السحابة Cloud-Based AI وخدمات تعلم الآلة ML Services كذلك في دراسة الذكاء الاصطناعي ولا سيما الأدوات المقدمة من كبار مقدمي الخدمات، مثل Azure ومنصة جوجل السحابية، إذ توفر هذه الخدمات مجموعة من الأدوات وواجهات برمجة تطبيقات APIs ونماذج ذكاء اصطناعي جاهزة توفر كثيرًا من الوقت والجهد وتجعل من عمليات تطوير التطبيقات الذكية أسهل وأسرع.
</p>

<h3 id="aisecurity">
	أمان الذكاء الاصطناعي AI Security
</h3>

<p>
	من أساسيات دراسة الذكاء الاصطناعي الاهتمام بأمور سلامة وتأمين البيانات، ذلك لأن مجال الذكاء الاصطناعي كله قائم على البيانات المستخدمة في تدريب النماذج والخوارزميات، لذا المهم أن يقع تأمين بيانات المستخدمين على رأس أولويات خبير الذكاء الاصطناعي.
</p>

<h3 id="devops">
	ديف أوبس DevOps
</h3>

<p>
	ليس بالضرورة أن يتعلم مهندس الذكاء الاصطناعي <a href="https://academy.hsoub.com/devops/general/%D9%85%D8%A7-%D8%A7%D9%84%D9%85%D9%82%D8%B5%D9%88%D8%AF-%D8%A8%D9%80-devops%D8%9F-r413/" rel="">ديف أوبس</a>، فغالبًا ما يكون هناك مهندس ديف أوبس متخصص في مقر العمل، ولكن يُفضَّل التعرف على أساسيات هذا المجال ليتمكن من نشر تطبيقات الذكاء الاصطناعي بنجاح.
</p>

<h3 id="-7">
	كيف أتعلم الذكاء الاصطناعي؟
</h3>

<p>
	لديك خياران متاحان لتعلم ودراسة الذكاء الاصطناعي، إمَّا الدراسة الجامعية لتخصص الذكاء الاصطناعي والتي تتميز بالمنهجية الواضحة وتلزمك بالمتابعة والاستمرارية، لكن يعيبها طول مدة الدراسة ودراسة مواد نظرية مملة لن تفيدك في عملك الحقيقي، والطريقُ الثاني هو الدراسة الذاتية المستقلة لمجال الذكاء الاصطناعي من دروس ومقالات ودورات عبر الإنترنت تتعلم من خلالها أهم المواد والمقررات المطلوبة لفهم التخصص، ويتميز هذا الطريق بالتركيز على سوق العمل وقِصَر مدة الدراسة نسبيًا، ولكن من تحدياته الرئيسية صعوبة الالتزام والانضباط.
</p>

<p>
	إذا كنت مهتمًا بدارسة الذكاء الاصطناعي من الصفر حتى الاحتراف، ستساعدك <a href="https://academy.hsoub.com/store/12-%D8%AF%D9%88%D8%B1%D8%A9-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">دورة الذكاء الاصطناعي من أكاديمية حسوب </a> في طريقك في الدراسة الذاتية بمنهجٍ شامل وفريد عربيًا ومُحدَّثٍ حسب احتياجات سوق العمل، كما تساعدك على الانضباط والمتابعة والتعلم المستمر وتوفر لك مدربين أكفاء يساعدونك في رحلة تعلمك ويجيبون على أي تساؤول ويشرحون لك أي فكرة لا تستطيع فهمها.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="442" id="ips_uid_5233_7" referrerpolicy="strict-origin-when-cross-origin" src="https://academy.hsoub.com/applications/core/interface/index.html" title="دورة الذكاء الاصطناعي - أكاديمية حسوب" width="786" data-embed-src="https://www.youtube.com/embed/9ESA9owvmGM"></iframe>
</p>

<p>
	كما ستجد في أكاديمية حسوب العديد من مصادر التعلم المفيدة التي تعينك على دراسة الذكاء الاصطناعي من دروس ومقالات تنشر بصورة دورية، إلى جانب <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D9%87%D9%85-%D9%83%D8%AA%D8%A8-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D8%A7%D9%84%D9%85%D8%AC%D8%A7%D9%86%D9%8A%D8%A9-r2330/" rel="">كتب الذكاء الاصطناعي</a> الشاملة المتاحة للتحميل مجانًا، وإذا كنت مشتتًا ولا تعرف من أين تبدأ أنصحك بالبدء من صفحة <a href="https://academy.hsoub.com/artificial-intelligence/" rel="">تعلم الذكاء الاصطناعي</a> الشاملة التي توفر لك كل الإرشادات والنصائح التي تحتاجها.
</p>
<iframe allowfullscreen="" class="ipsEmbed_finishedLoading" data-controller="core.front.core.autosizeiframe" data-embedauthorid="3889" data-embedcontent="" data-embedid="embed3549615637" src="https://academy.hsoub.com/files/17-%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%88%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9/?do=embed" style="overflow: hidden; height: 470px; max-width: 500px; margin:auto;"></iframe>

<h2 id="-8">
	الأسئلة الشائعة حول دراسة الذكاء الاصطناعي
</h2>

<p>
	نختم المقال بأهم الأسئلة حول دراسة الذكاء الاصطناعي والفرق بينه وبين المجالات القريبة منه.
</p>

<h3 id="-9">
	ما عدد سنوات دراسة الذكاء الاصطناعي؟
</h3>

<p>
	تأخذ الدراسة الجامعية لتخصص الذكاء الاصطناعي أربع سنوات في غالبية الجامعات، أما الدراسة الذاتية للمجال فتعتمد على عوامل عديدة، منها: خبراتك السابقة والتخصص الفرعي المختار والوقت الذي تخصصه للدراسة، فلا يمكن تحديد مدة محددة لإتقان الأساسيات، ولكن على كل حال تشير بعض المقالات إلى أنَّ متوسط مدة تحصيل أساسيات المجال تقع بين ستة أشهر إلى اثني عشر شهرًا.
</p>

<h3 id="-10">
	هل دراسة الذكاء الاصطناعي صعبة؟
</h3>

<p>
	ربما يكون تخصص الذكاء الاصطناعي صعبًا نسبيًا، ولا سيما لمن لا يملك خبراتٍ برمجيةٍ سابقة، ولكن مع التعلم المستمر من المصادر الصحيحة والممارسة والتطبيق يمكنك أن تتقن المجال وتصبح ماهرًا فيه، واحرص على التأسيس القوي في البرمجة وعلم البيانات وخوارزميات تعلم الآلة، فهي عواميدُ المجال.
</p>

<h3 id="-11">
	أيهما أفضل: تعلم الذكاء الاصطناعي أم البرمجة؟
</h3>

<p>
	يحتاج مهندسُ الذكاء الاصطناعي إلى دراسة البرمجة، بل والتعمُّق فيها وفهمها جيدًا، للتمكُّن من تطوير برمجيات ذكاءٍ اصطناعي، أمَّا عن التفضيل بين الذكاء الاصطناعي <a href="https://academy.hsoub.com/programming/general/%D9%88%D8%B8%D8%A7%D8%A6%D9%81-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%A3%D9%83%D8%AB%D8%B1-%D8%B7%D9%84%D8%A8%D9%8B%D8%A7/" rel="">ووظائف البرمجة</a> التقليدية فلا يمكن التفضيل بين مختلفين، فللذكاء الاصطناعي تطبيقاته وحالات استخدامه وكذلك البرمجة التقليدية واختيار <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AC%D8%A7%D9%84%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">مجال التخصص التقني</a> يعتمد على تفضيلاتك الشخصية والمجال الذي تجد شغفك فيه في المقال الأول.
</p>
<iframe width="560" height="315" src="https://academy.hsoub.com/applications/core/interface/index.html" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen data-embed-src="https://www.youtube.com/embed/5e_DUMotO-I?si=l6WX-MsSof0K_gl4"></iframe>

<h3 id="-12">
	ما الفرق بين الذكاء الاصطناعي وهندسة الروبوتات؟
</h3>

<p>
	يدخل الذكاء الاصطناعي في تطوير نظام تشغيل الروبوتات فقط، أمَّا هندسة الروبوتات فتهتم ببناء عتاد الروبوت وضبط حركاته، ثم يأتي دور الذكاء الاصطناعي في تحديد وظائف الروبوت ووضع خطوات لتنفيذ هذه الوظائف، فالذكاء الاصطناعي وهندسة الروبوتات مجالان مختلفان يتقاطعان في نقطة محددة، لكنهما يظلان مختلفين، فمهندسو الذكاء الاصطناعي يهتمون بالجانب البرمجي فقط، بينما يهتم مهندسو الروبوتات بالعتاد أولًا، ثم فيزياء وحركة هذا العتاد، وأخيرًا ربط هذا العتاد بنظام التشغيل البرمجي.
</p>

<h3 id="-13">
	ما الفرق بين الذكاء الاصطناعي وعلم البيانات؟
</h3>

<p>
	يقوم مجالا الذكاء الاصطناعي وعلم البيانات بشكلٍ رئيسيٍّ على البيانات، ولكن تختلف أهدافهما، فيهدف الذكاء الاصطناعي إلى تطوير الآلات من خلال منحها هذه البيانات وتمكينها من تحليلها والتعلم منها، بينما يهدف علم البيانات إلى استخدام الخوارزميات والإحصاء للخروج بنتائج مفيدة من مجموعة من البيانات المنظمة.
</p>

<h3 id="-14">
	ما الفرق بين دراسة الذكاء الاصطناعي والأمن السيبراني؟
</h3>

<p>
	يختلف الذكاء الاصطناعي عن <a href="https://academy.hsoub.com/devops/security/%D9%85%D8%A7-%D9%87%D9%88-%D8%A7%D9%84%D8%A3%D9%85%D9%86-%D8%A7%D9%84%D8%B3%D9%8A%D8%A8%D8%B1%D8%A7%D9%86%D9%8A-%D9%88%D9%85%D8%A7-%D8%A3%D9%87%D9%85%D9%8A%D8%AA%D9%87%D8%9F-r664/" rel="">الأمن السيبراني</a> إذ يركز متخصص الذكاء الاصطناعي على تطوير أنظمة ذكية تحاكي العقل البشري في التعلم وحل المشكلات، بينما يركز متخصص الأمن السيبراني على تأمين التطبيقات والأنظمة والشبكات والبيانات من محاولات الاحتيال والاختراق. لكن في الآونة الأخيرة بدأ مجالا الذكاء الاصطناعي والأمن السيبراني يتكاملان معًا بشكل جليَ، فبدأ مهندسو الأمن السيبراني في استخدام تقنيات الذكاء الاصطناعي لأتمتة الكشف عن التهديدات، وكذلك استخدم مهندسو الذكاء الاصطناعي تقنيات الأمن السيبراني لتأمين برمجيات الذكاء الاصطناعي وبيانات تدريب النماذج الذكية.
</p>

<h2 id="-15">
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">تعلم الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%AC%D8%A7%D9%84%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">مجالات الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D9%81%D8%B6%D9%84-%D8%AF%D9%88%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2332/" rel="">تعرف على أفضل دورات الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/" rel="">علم البيانات Data science: الدليل الشامل</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/os-embedded-systems/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%B1%D9%88%D8%A8%D9%88%D8%AA-%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-r1855/" rel="">برمجة الروبوت: الدليل الشامل</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%81%D9%88%D8%A7%D8%A6%D8%AF-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2247/" rel="">فوائد الذكاء الاصطناعي</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2362</guid><pubDate>Mon, 08 Jul 2024 15:00:00 +0000</pubDate></item><item><title>&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; &#x62E;&#x637;&#x648;&#x637; &#x627;&#x644;&#x623;&#x646;&#x627;&#x628;&#x64A;&#x628; Pipelines &#x644;&#x644;&#x627;&#x633;&#x62A;&#x62F;&#x644;&#x627;&#x644; &#x641;&#x64A; &#x62A;&#x637;&#x628;&#x64A;&#x642;&#x627;&#x62A; &#x627;&#x644;&#x630;&#x643;&#x627;&#x621; &#x627;&#x644;&#x627;&#x635;&#x637;&#x646;&#x627;&#x639;&#x64A;</title><link>https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%AE%D8%B7%D9%88%D8%B7-%D8%A7%D9%84%D8%A3%D9%86%D8%A7%D8%A8%D9%8A%D8%A8-pipelines-%D9%84%D9%84%D8%A7%D8%B3%D8%AA%D8%AF%D9%84%D8%A7%D9%84-%D9%81%D9%8A-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2353/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_06/---Pipelines-----.png.25153658b0eb7779e52cbb8657f342ca.png" /></p>
<p>
	نشرح في هذا المقال التعامل مع خطوط الأنابيب pipeline()‎ التي توفر طريقة سهلة وموحدة للتعامل مع نماذج الذكاء الاصطناعي الموجودة في <a href="https://huggingface.co/models" rel="external nofollow">مستودع Hugging Face</a> إذ يمكنك استخدامها للاستدلال inference وتوقع معلومات جديدة بناءً على المعلومات المتوفرة بأي أسلوب معالجة، سواء كان يعتمد على فهم اللغة language أو فهم الكلام speech أو الرؤية الحاسوبية computer vision أو الأنماط المتعددة multimodal.
</p>

<p>
	فمع خطوط الأنابيب المتاحة في مكتبة transformers لن تحتاج معرفةً قوية بالنماذج المخصصة لنمط معين ولا بطريقة كتابة شيفراتها البرمجية فهي ستسهل عليك المهمة، وهذا ما نعرضه في هذا المقال إذ سنتناول النقاط التالية:
</p>

<ul>
	<li>
		<p>
			كيفية استخدام خطوط الأنابيب للاستدلال.
		</p>
	</li>
	<li>
		<p>
			طريقة استخدام مُرَمِّز tokenizer محدد أو نموذج model محدد.
		</p>
	</li>
	<li>
		<p>
			آلية استخدام خطوط الأنابيب لمشاريع معالجة الصوتيات والرؤية والأنماط المتعددة multimodal التي تتضمن التعامل مع بيانات متعددة الأنماط مثل الأصوات والصور معًا.
		</p>
	</li>
</ul>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		يمكنك الاطلاع على جميع المهام التي تدعمها خطوط الأنابيب بالاطلاع على <a href="https://huggingface.co/docs/transformers/v4.38.2/en/main_classes/pipelines#transformers.pipeline" rel="external nofollow">القسم الخاص بها</a> من توثيقات منصة Hugging Face.
	</p>
</blockquote>

<h2 id="pipeline">
	استخدام خطوط الأنابيب Pipeline
</h2>

<p>
	يوجد خط أنابيب pipeline()‎ خاص بكل مهمة، إلّا أن استخدام خط الأنابيب العام general pipeline (وهو تجريد يضم خطوط الأنابيب الخاصة بجميع المهام) يوفر طريقةً أسهل وأكثر مرونة، إذ يُحَمِّل نموذجًا افتراضيًا وصنف معالجة مسبقة للاستدلال مناسبين لطبيعة مشروعك.
</p>

<p>
	يبين مثالنا التالي طريقة استخدام خط الأنابيب للتَعَرُّف التلقائي على الكلام (ASR) أي تحويله إلى نص، لتنفيذ هذا التطبيق حاول تطبيق الخطوات في بيئتك التجريبية:
</p>

<ol>
	<li>
		أنشئ خط الأنابيب pipeline()‎ وحدد المهمة التي تريدها وهي هنا التعرف التلقائي على الكلام:
	</li>
</ol>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_1104_20" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> pipeline

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> transcriber </span><span class="pun">=</span><span class="pln"> pipeline</span><span class="pun">(</span><span class="pln">task</span><span class="pun">=</span><span class="str">"automatic-speech-recognition"</span><span class="pun">)</span></pre>

<ul>
	<li>
		2. مَرِّر مُدخَلَاتِك input إلى خط الأنابيب، واحصل على النتيجة، في مثالنا المُدخَل هو الملف الصوتي المطلوب التَعَرُّف عليه وتحويله إلى نص:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_1104_22" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> transcriber</span><span class="pun">(</span><span class="str">"https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="str">'text'</span><span class="pun">:</span><span class="pln"> </span><span class="str">'I HAVE A DREAM BUT ONE DAY THIS NATION WILL RISE UP LIVE UP THE TRUE MEANING OF ITS TREES'</span><span class="pun">}</span></pre>

<p>
	إذا لم تكن النتيجة مرضية كأن لا يعطيك النص مثلًا المعنى كاملًا، أو يحوي كلمات في غير سياقها أو غير ذلك، فابحث عندها عن نموذج أقوى للتعامل مع المهمة، يمكنك الدخول مستودع Hugging Face مثلًا واستعراض <a href="https://huggingface.co/models?pipeline_tag=automatic-speech-recognition&amp;sort=trending" rel="external nofollow">نماذج التَعَرُّف على الكلام الأكثر تحميلًا ضمنه</a> وتجريبها.
</p>

<p>
	ومنها على سبيل المثال النموذج <a href="https://huggingface.co/openai/whisper-large" rel="external nofollow">Whisper large-v2</a> من منصة OpenAI فهو أحدث من النموذج الافتراضي Wav2Vec2 المستخدم أعلاه بسنتين، وقد جرى تدريبه على كمية بيانات أكثر بعشر أضعاف فهو بالتأكيد سيتفوق عليه في دقة التَعَرُّف على الكلام وسيعطيك نتائج أدق، هذا فضلًا عن قدرته على التنبؤ بعلامات الترقيم وحالة الحروف صغيرة أم كبيرة، ولا تتوفر هاتان الميزتان في Wav2Vec2.
</p>

<p>
	لنُعِدْ التنفيذ باستخدام النموذج Whisper large-v2 ونلاحظ الفرق:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_1104_24" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> transcriber </span><span class="pun">=</span><span class="pln"> pipeline</span><span class="pun">(</span><span class="pln">model</span><span class="pun">=</span><span class="str">"openai/whisper-large-v2"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> transcriber</span><span class="pun">(</span><span class="str">"https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="str">'text'</span><span class="pun">:</span><span class="pln"> </span><span class="str">' I have a dream that one day this nation will rise up and live out the true meaning of its creed.'</span><span class="pun">}</span></pre>

<p>
	يبدو النص الآن أدق في إيصال المعنى وصياغته متماسكة أكثر من النص الأول، يمكنك معرفة المزيد عن النماذج المناسبة لمعالجة الملفات الصوتية بالاطلاع على <a href="https://huggingface.co/learn/audio-course/chapter5/asr_models" rel="external nofollow">القسم التعليمي الخاص بالصوتيات منصة Hugging Face</a>، ويمكنك تجربة النماذج الموجودة في مستودع المنصة على عينات بسيطة ومقارنة النتائج لاختيار النموذج المناسب لك، وإن لم تجد ما يلائم مشروعك دَرِِّبْ نموذجك الخاص؛ لمزيدٍ من المعلومات طالع مقال [كيفية تدريب نموذج ذكاء اصطناعي مُدَّرب مسبقًا]() من هذه السلسلة على أكاديمية حسوب.
</p>

<p>
	أما إذا كان لديك عدة مُدخَلاَت inputs أي عدة ملفات صوتية تحتاج لتحويلها إلى نصوص كما في مثالنا أعلاه فيمكنك تمريرها لخط الأنابيب بهيئة قائمة وفق التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_1104_26" style=""><span class="pln">transcriber</span><span class="pun">(</span><span class="pln">
    </span><span class="pun">[</span><span class="pln">
        </span><span class="str">"https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac"</span><span class="pun">,</span><span class="pln">
        </span><span class="str">"https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/1.flac"</span><span class="pun">,</span><span class="pln">
    </span><span class="pun">]</span><span class="pln">
</span><span class="pun">)</span></pre>

<p>
	تُعدّ خطوط الأنابيب طريقةً مرنة لتجريب النماذج، فالتبديل من نموذج لآخر إجراء سهل ولن يشكل أي عبءٍ عليك، وفضلًا عن ذلك فهي تستخدم مع مجموعات البيانات الكبيرة dataset وخوادم الويب webserver.
</p>

<h2 id="">
	معاملات خطوط الأنابيب
</h2>

<p>
	هناك نوعان من معاملات parameters خطوط الأنابيب pipeline()‎ نوعان عامة وخاصة؛ توجد المعاملات العامة في جميع أنواع خطوط الأنابيب، بينما تختص المعاملات الخاصة بمهمة محددة مثل معالجة اللغة الطبيعية أو الرؤية الحاسوبية أو التعرُّف على الكلام أو غيرها، ويمكنك تعريف المعاملات في أي قسم من برنامجك كما في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_1104_28" style=""><span class="pln">transcriber </span><span class="pun">=</span><span class="pln"> pipeline</span><span class="pun">(</span><span class="pln">model</span><span class="pun">=</span><span class="str">"openai/whisper-large-v2"</span><span class="pun">,</span><span class="pln"> my_parameter</span><span class="pun">=</span><span class="lit">1</span><span class="pun">)</span><span class="pln">

out </span><span class="pun">=</span><span class="pln"> transcriber</span><span class="pun">(...)</span><span class="pln">  </span><span class="com"># يعتمد هذا السطر القيمة 1 للمعامل</span><span class="pln">
</span><span class="pun">‎</span><span class="pln">out </span><span class="pun">=</span><span class="pln"> transcriber</span><span class="pun">(...,</span><span class="pln"> my_parameter</span><span class="pun">=</span><span class="lit">2</span><span class="pun">)</span><span class="pln">  </span><span class="com"># تعدلت قيمة المعامل هنا وأصبحت 2</span><span class="pln">
out </span><span class="pun">=</span><span class="pln"> transcriber</span><span class="pun">(...)</span><span class="pln">  </span><span class="com"># الآن بدون كتابة قيمة جديدة للمعامل سيأخذ من جديد القيمة الابتدائية 1</span></pre>

<p>
	سنعرض بمزيد من التفصيل ثلاثة من أشهر المعاملات:
</p>

<h3 id="device">
	معامل الجهاز Device
</h3>

<p>
	يشير المعامل Device إلى الجهاز المستخدم لتشغيل نموذج الذكاء الاصطناعي سواء وحدة المعالجة المركزية (CPU) أو وحدة معالجة الرسومات (GPU).إذا ضبطت قيمة هذا المعامل على <code>device=n</code> فإن خط الأنابيب سيُحَمّل النموذج على الجهاز الذي حددته بالقيمة "n".
</p>

<p>
	ألقِ نظرة على الأمر التالي لضبط قيمة المعامل <code>device</code> علمًا أنه ينطبق على إطار عمل PyTorch و Tensorflow:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_1104_30" style=""><span class="pln">transcriber </span><span class="pun">=</span><span class="pln"> pipeline</span><span class="pun">(</span><span class="pln">model</span><span class="pun">=</span><span class="str">"openai/whisper-large-v2"</span><span class="pun">,</span><span class="pln"> device</span><span class="pun">=</span><span class="lit">0</span><span class="pun">)</span></pre>

<p>
	أما إذا كنت تعتمد نموذجًا كبير الحجم ويحتاج إلى أكثر من وحدة معالجة رسومية (GPU) وكنت تستخدم PyTorch، فيمكنك عندها ضبط قيمة المعامل على <code>device_map="auto"‎</code> لتجري عملية توزيع أوتوماتيكية لأحمال النموذج على مكونات الجهاز، مع الانتباه لأن استخدام المعامل <code>device_map</code> مشروط بوجود مكتبة <a href="https://huggingface.co/docs/accelerate/index" rel="external nofollow">التسريع Accelerate</a>:
</p>

<pre class="ipsCode">pip install --upgrade accelerate
</pre>

<p>
	إذًا سيوزع السطر التالي أحمال النموذج على معالجات الجهاز:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_1104_32" style=""><span class="pln">transcriber </span><span class="pun">=</span><span class="pln"> pipeline</span><span class="pun">(</span><span class="pln">model</span><span class="pun">=</span><span class="str">"openai/whisper-large-v2"</span><span class="pun">,</span><span class="pln"> device_map</span><span class="pun">=</span><span class="str">"auto"</span><span class="pun">)</span></pre>

<p>
	وننوه هنا إلى أن تمرير قيمة المتغير <code>device_map="auto"‎</code> يغنيك عن كتابة <code>device=device</code> فوجودهما معًا في الشيفرة قد يسبب سلوكيات غير متوقعة في برنامجك.
</p>

<h3 id="batchsize">
	معامل حجم الدفعة Batch size
</h3>

<p>
	لا تقُسِّم خطوط الأنابيب بيانات الاستدلال إلى دفعات batching افتراضيًا، فإذا أردت تقسيمها اضبط الإعدادات اللازمة لذلك، واعلم أن هذه العملية لا تؤدي دائمًا إلى تسريع الأداء فربما تسبب البطء في بعض الحالات، لذا يترك خيار التقسيم من عدمه حسب حالة الاستخدام.
</p>

<p>
	يبين المثال التالي طريقة استخدامها:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_1104_34" style=""><span class="pln">transcriber </span><span class="pun">=</span><span class="pln"> pipeline</span><span class="pun">(</span><span class="pln">model</span><span class="pun">=</span><span class="str">"openai/whisper-large-v2"</span><span class="pun">,</span><span class="pln"> device</span><span class="pun">=</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> batch_size</span><span class="pun">=</span><span class="lit">2</span><span class="pun">)</span><span class="pln">
audio_filenames </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">f</span><span class="str">"https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/{i}.flac"</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> i </span><span class="kwd">in</span><span class="pln"> range</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">)]</span><span class="pln">
texts </span><span class="pun">=</span><span class="pln"> transcriber</span><span class="pun">(</span><span class="pln">audio_filenames</span><span class="pun">)</span></pre>

<p>
	بموجب التعليمات السابقة: سيُطَبَّق خط الأنابيب على الملفات الصوتية الأربعة المقدمة له، لكنه سيُمررها للنموذج على دفعتين ملفين في كل دفعة، (النموذج في مثالنا موجود على وحدة GPU والتقسيم إلى دفعات يُعدّ مفيدًا في هذه الحالة). لا تتطلب عملية التقسيم كتابة أي تعليمات برمجية إضافية فكل ما عليك هو تحديد قيمة المعامل، مع ضرورة التنويه إلى أن الخرج سيكون نفسه في الحالتين سواء قَسَّمْتَ بياناتك المستخدمة للاستدلال أو لم تُقَسِّمْها فالهدف من التقسيم هو تسريع أداء خط الأنابيب فقط دون أي تأثير على التنبؤات.
</p>

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

<h3 id="-1">
	معاملات خاصة بنوع معين من المهمات
</h3>

<p>
	يتوفر لكل مهمة معاملات خاصة تعطيها المرونة وتساعدك على التحكم بخياراتها الإضافية لصالح مشروعك، فعلى سبيل المثال يتضمن أسلوب المعالجة <code>Transformers.AutomaticSpeechRecognitionPipeline.call()‎</code> معاملًا خاصًا يدعى <code>return_timestamps</code> يُعدّ معاملًا واعدًا في إضافة النصوص التوضيحية لمقاطع الفيديو subtitling videos:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_1104_36" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> transcriber </span><span class="pun">=</span><span class="pln"> pipeline</span><span class="pun">(</span><span class="pln">model</span><span class="pun">=</span><span class="str">"openai/whisper-large-v2"</span><span class="pun">,</span><span class="pln"> return_timestamps</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> transcriber</span><span class="pun">(</span><span class="str">"https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="str">'text'</span><span class="pun">:</span><span class="pln"> </span><span class="str">' I have a dream that one day this nation will rise up and live out the true meaning of its creed.'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'chunks'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[{</span><span class="str">'timestamp'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">(</span><span class="lit">0.0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">11.88</span><span class="pun">),</span><span class="pln"> </span><span class="str">'text'</span><span class="pun">:</span><span class="pln"> </span><span class="str">' I have a dream that one day this nation will rise up and live out the true meaning of its'</span><span class="pun">},</span><span class="pln"> </span><span class="pun">{</span><span class="str">'timestamp'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">(</span><span class="lit">11.88</span><span class="pun">,</span><span class="pln"> </span><span class="lit">12.38</span><span class="pun">),</span><span class="pln"> </span><span class="str">'text'</span><span class="pun">:</span><span class="pln"> </span><span class="str">' creed.'</span><span class="pun">}]}</span></pre>

<p>
	إذا دققت في خرج الأمر السابق ستلاحظ أن النموذج قد استنتج النص من الملف الصوتي وأيضًا وقت النطق بكل جملة 'timestamp'.
</p>

<p>
	لذا ننصحك بمراجعة توصيف الواجهة البرمجية <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> لكل مهمة أو أسلوب معالجة حتى تتعرف أكثر على معاملاتها وتتمكن من استثمار مزاياها على أكمل وجه، فعلى سبيل المثال تحتوي المهمة <code>AutomaticSpeechRecognitionPipeline</code> على معامل مفيد للتعامل مع الملفات الصوتية الطويلة يدعى <code>chunk_length_s</code> يفيدك في ترجمة الأفلام أو مقاطع الفيديو التي تصل مدتها إلى ساعة مثلًا والتي لا يستطيع النموذج التعامل معها بخياراته الاعتيادية:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_1104_38" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> transcriber </span><span class="pun">=</span><span class="pln"> pipeline</span><span class="pun">(</span><span class="pln">model</span><span class="pun">=</span><span class="str">"openai/whisper-large-v2"</span><span class="pun">,</span><span class="pln"> chunk_length_s</span><span class="pun">=</span><span class="lit">30</span><span class="pun">,</span><span class="pln"> return_timestamps</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> transcriber</span><span class="pun">(</span><span class="str">"https://huggingface.co/datasets/sanchit-gandhi/librispeech_long/resolve/main/audio.wav"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="str">'text'</span><span class="pun">:</span><span class="pln"> </span><span class="str">" Chapter 16. I might have told you of the beginning of this liaison in a few lines, but I wanted you to see every step by which we came.  I, too, agree to whatever Marguerite wished, Marguerite to be unable to live apart from me. It was the day after the evening...</span></pre>

<p>
	و في سعيها للتطوير تشجع Hugging Face المستخدمين على <a href="https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fhuggingface%2Ftransformers%2Fissues%2Fnew%3Fassignees%3D%26labels%3Dfeature%26template%3Dfeature-request.yml" rel="external nofollow">طلب المعاملات</a> التي يحتاجونها ولا يتمكنون من إيجادها.
</p>

<h2 id="-2">
	استخدام خط الأنابيب على مجموعة بيانات
</h2>

<p>
	يمكنك تشغيل خط الأنابيب pipeline للاستدلال على مجموعة بيانات كبيرة dataset وليس مجرد قائمة بالمدخلات، وأسهل الطرق الموصى بها لإنجاز ذلك هي استخدام <a href="https://wiki.hsoub.com/Design_Patterns/iterator#.D9.83.D9.8A.D9.81.D9.8A.D8.A9_.D8.A7.D9.84.D8.A7.D8.B3.D8.AA.D8.AE.D8.AF.D8.A7.D9.85" rel="external">مُكَرِّر iterator</a> كما في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_1104_40" style=""><span class="kwd">def</span><span class="pln"> data</span><span class="pun">():</span><span class="pln">
    </span><span class="kwd">for</span><span class="pln"> i </span><span class="kwd">in</span><span class="pln"> range</span><span class="pun">(</span><span class="lit">1000</span><span class="pun">):</span><span class="pln">
        </span><span class="kwd">yield</span><span class="pln"> f</span><span class="str">"My example {i}"</span><span class="pln">


pipe </span><span class="pun">=</span><span class="pln"> pipeline</span><span class="pun">(</span><span class="pln">model</span><span class="pun">=</span><span class="str">"openai-community/gpt2"</span><span class="pun">,</span><span class="pln"> device</span><span class="pun">=</span><span class="lit">0</span><span class="pun">)</span><span class="pln">
generated_characters </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
</span><span class="kwd">for</span><span class="pln"> out </span><span class="kwd">in</span><span class="pln"> pipe</span><span class="pun">(</span><span class="pln">data</span><span class="pun">()):</span><span class="pln">
    generated_characters </span><span class="pun">+=</span><span class="pln"> len</span><span class="pun">(</span><span class="pln">out</span><span class="pun">[</span><span class="lit">0</span><span class="pun">][</span><span class="str">"generated_text"</span><span class="pun">])</span></pre>

<p>
	يعمل المُكَرِّر <code>data()‎</code> ويُرجِع نتيجة في كل تكرار؛ ويُميّز خط الأنابيب مباشرةً أن المُدخَل الوارد إليه قابل للتكرار iterable أي يمكن الحصول على بياناته بطريقة متكررة أو متتالية، فيبدأ بجلب البيانات بالتزامن مع استمراره في معالجة الموجود في وحدة GPU (ويستخدم في ذلك <a href="https://pytorch.org/docs/stable/data.html#torch.utils.data.DataLoader" rel="external nofollow">موازن البيانات DataLoader</a> ضمنًا)، تتميز هذه الطريقة بكونها لا تتطلب حجز ذاكرة لكامل مجموعة البيانات، وتساعدك على تغذية GPU بالبيانات بأسرع ما يمكن.
</p>

<p>
	يُعدّ تقسيم البيانات إلى دفعات (بضبط المعامل <code>batch_size</code>) مفيدًا في هذه الحالة ويؤدي إلى تحسين الأداء.
</p>

<p>
	ويمكنك تنفيذ التكرار على مجموعة بيانات بتحميل إحدى <a href="https://github.com/huggingface/datasets/" rel="external nofollow">مجموعات البيانات Datasets الموجودة في مستودعات Hugging Face</a> وتقسيمها ثم استخدام الأداة المساعدة ‎KeyDataset ضمن حلقة التكرار للحصول على الخرج المطلوب:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_1104_42" style=""><span class="com"># KeyDataset أداة مساعدة ترجع لك الخرج الذي يهمك من مجموعة البيانات</span><span class="pln">
</span><span class="kwd">from</span><span class="pln"> transformers</span><span class="pun">.</span><span class="pln">pipelines</span><span class="pun">.</span><span class="pln">pt_utils </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">KeyDataset</span><span class="pln">
</span><span class="kwd">from</span><span class="pln"> datasets </span><span class="kwd">import</span><span class="pln"> load_dataset

pipe </span><span class="pun">=</span><span class="pln"> pipeline</span><span class="pun">(</span><span class="pln">model</span><span class="pun">=</span><span class="str">"hf-internal-testing/tiny-random-wav2vec2"</span><span class="pun">,</span><span class="pln"> device</span><span class="pun">=</span><span class="lit">0</span><span class="pun">)</span><span class="pln">
dataset </span><span class="pun">=</span><span class="pln"> load_dataset</span><span class="pun">(</span><span class="str">"hf-internal-testing/librispeech_asr_dummy"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"clean"</span><span class="pun">,</span><span class="pln"> split</span><span class="pun">=</span><span class="str">"validation[:10]"</span><span class="pun">)</span><span class="pln">

</span><span class="kwd">for</span><span class="pln"> out </span><span class="kwd">in</span><span class="pln"> pipe</span><span class="pun">(</span><span class="typ">KeyDataset</span><span class="pun">(</span><span class="pln">dataset</span><span class="pun">,</span><span class="pln"> </span><span class="str">"audio"</span><span class="pun">)):</span><span class="pln">
    </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">out</span><span class="pun">)</span></pre>

<p>
	<strong>ملاحظة</strong>: بطريقة مشابهة لاستخدامها مع مجموعات البيانات، يمكنك استخدام خطوط الأنابيب مع خوادم الويب في مشاريع ذات طبيعة خاصة، يمكنك الاطلاع على <a href="https://huggingface.co/docs/transformers/pipeline_webserver" rel="external nofollow">هذا الدليل</a> من توثيقات Hugging Face لمزيد من المعلومات.
</p>

<h2 id="-3">
	استخدام خط الأنابيب مع الرؤية الحاسوبية
</h2>

<p>
	عمليًا يشبه استخدام خطوط الأنابيب في مشاريع الرؤية الحاسوبية استخدامها في أمثلتنا السابقة.
</p>

<p>
	حَدِّد مهمتك ثم مرر الصورة إلى المُصَنِّف classifier، طبعًا يمكنك تمرير الصورة بهيئة رابط link أو مسار محلي path يشير إليها، أو صورة مشفرة بترميز base64. لنفترض مثلًا أن مهمتنا هي اكتشاف السلالة التي تنتمي إليها القطة في الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpeg" data-fileid="151940" href="https://academy.hsoub.com/uploads/monthly_2024_06/img01-pipeline-vision.jpeg.5beaf5a0cf14aea3669e9f80cdf0c269.jpeg" rel=""><img alt="img01 pipeline vision" class="ipsImage ipsImage_thumbnailed" data-fileid="151940" data-ratio="71.50" data-unique="gxrant7s5" style="width: 600px; height: auto;" width="600" src="https://academy.hsoub.com/uploads/monthly_2024_06/img01-pipeline-vision.thumb.jpeg.cd523ebfd86da25bdddda0d271444029.jpeg"> </a>
</p>

<p>
	فستكون الشيفرة البرمجية كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_1104_45" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> pipeline

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> vision_classifier </span><span class="pun">=</span><span class="pln"> pipeline</span><span class="pun">(</span><span class="pln">model</span><span class="pun">=</span><span class="str">"google/vit-base-patch16-224"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> preds </span><span class="pun">=</span><span class="pln"> vision_classifier</span><span class="pun">(</span><span class="pln">
images</span><span class="pun">=</span><span class="str">"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"</span><span class="pln">
</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> preds </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[{</span><span class="str">"score"</span><span class="pun">:</span><span class="pln"> round</span><span class="pun">(</span><span class="pln">pred</span><span class="pun">[</span><span class="str">"score"</span><span class="pun">],</span><span class="pln"> </span><span class="lit">4</span><span class="pun">),</span><span class="pln"> </span><span class="str">"label"</span><span class="pun">:</span><span class="pln"> pred</span><span class="pun">[</span><span class="str">"label"</span><span class="pun">]}</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> pred </span><span class="kwd">in</span><span class="pln"> preds</span><span class="pun">]</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="typ">Preds</span><span class="pln">
</span><span class="pun">[{</span><span class="str">'score'</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.4335</span><span class="pun">,</span><span class="pln"> </span><span class="str">'label'</span><span class="pun">:</span><span class="pln"> </span><span class="str">'lynx, catamount'</span><span class="pun">},</span><span class="pln"> </span><span class="pun">{</span><span class="str">'score'</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.0348</span><span class="pun">,</span><span class="pln"> </span><span class="str">'label'</span><span class="pun">:</span><span class="pln"> </span><span class="str">'cougar, puma, catamount, mountain lion, painter, panther, Felis concolor'</span><span class="pun">},</span><span class="pln"> </span><span class="pun">{</span><span class="str">'score'</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.0324</span><span class="pun">,</span><span class="pln"> </span><span class="str">'label'</span><span class="pun">:</span><span class="pln"> </span><span class="str">'snow leopard, ounce, Panthera uncia'</span><span class="pun">},</span><span class="pln"> </span><span class="pun">{</span><span class="str">'score'</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.0239</span><span class="pun">,</span><span class="pln"> </span><span class="str">'label'</span><span class="pun">:</span><span class="pln"> </span><span class="str">'Egyptian cat'</span><span class="pun">},</span><span class="pln"> </span><span class="pun">{</span><span class="str">'score'</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.0229</span><span class="pun">,</span><span class="pln"> </span><span class="str">'label'</span><span class="pun">:</span><span class="pln"> </span><span class="str">'tiger cat'</span><span class="pun">}]</span></pre>

<h2 id="-4">
	استخدام خط الأنابيب مع النصوص
</h2>

<p>
	يمكنك بآلية مشابهة استخدام خط الأنابيب لمهام معالجة اللغة الطبيعية (NLP) كما في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_1104_47" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> pipeline

</span><span class="com"># النموذج المستخدم من نوع `zero-shot-classification`</span><span class="pln">
</span><span class="com"># يمكنك اختيار التسميات التوضيحية التي تريدها لتصنيف النص</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> classifier </span><span class="pun">=</span><span class="pln"> pipeline</span><span class="pun">(</span><span class="pln">model</span><span class="pun">=</span><span class="str">"facebook/bart-large-mnli"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> classifier</span><span class="pun">(</span><span class="pln">
        </span><span class="str">"I have a problem with my iphone that needs to be resolved asap!!"</span><span class="pun">,</span><span class="pln">
        candidate_labels</span><span class="pun">=[</span><span class="str">"urgent"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"not urgent"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"phone"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"tablet"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"computer"</span><span class="pun">],</span><span class="pln">
</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="str">'sequence'</span><span class="pun">:</span><span class="pln"> </span><span class="str">'I have a problem with my iphone that needs to be resolved asap!!'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'labels'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">'urgent'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'phone'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'computer'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'not urgent'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'tablet'</span><span class="pun">],</span><span class="pln"> </span><span class="str">'scores'</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="lit">0.504</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.479</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.013</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.003</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.002</span><span class="pun">]}</span></pre>

<h2 id="-5">
	استخدام خط الأنابيب مع الأنماط المتعددة
</h2>

<p>
	يدعم خط الأنابيب التعامل مع أكثر من أسلوب معالجة في المهمة الواحدة، وهو ما يسمى بالمعالجة متعددة الأنماط Multimodal، ومن أمثلتها الإجابة عن الأسئلة المرئية (VQA) فهي تجمع بين معالجة النص والصورة، تمرر في هذه الحالة الصورة المطلوبة بهيئة رابط URL أو مسار تخزين ونص السؤال الذي تود طرحه عنها.
</p>

<p>
	ألقِ نظرة على المثال التالي، نسأل هنا عن رقم الفاتورة المكتوب في <a href="https://huggingface.co/spaces/impira/docquery/resolve/2359223c1837a7587402bda0f2643382a6eefeab/invoice.png" rel="external nofollow">صورة الفاتورة الموجودة هنا</a>:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_1104_49" style=""><span class="pun">&gt;&gt;&gt;</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> pipeline

</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> vqa </span><span class="pun">=</span><span class="pln"> pipeline</span><span class="pun">(</span><span class="pln">model</span><span class="pun">=</span><span class="str">"impira/layoutlm-document-qa"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">&gt;&gt;&gt;</span><span class="pln"> vqa</span><span class="pun">(</span><span class="pln">  image</span><span class="pun">=</span><span class="str">"https://huggingface.co/spaces/impira/docquery/resolve/2359223c1837a7587402bda0f2643382a6eefeab/invoice.png"</span><span class="pun">,</span><span class="pln">
    question</span><span class="pun">=</span><span class="str">"What is the invoice number?"</span><span class="pun">,</span><span class="pln">
</span><span class="pun">)</span><span class="pln">
</span><span class="pun">[{</span><span class="str">'score'</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.42515</span><span class="pun">,</span><span class="pln"> </span><span class="str">'answer'</span><span class="pun">:</span><span class="pln"> </span><span class="str">'us-001'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'start'</span><span class="pun">:</span><span class="pln"> </span><span class="lit">16</span><span class="pun">,</span><span class="pln"> </span><span class="str">'end'</span><span class="pun">:</span><span class="pln"> </span><span class="lit">16</span><span class="pun">}]</span></pre>

<p>
	لتنفيذ المثال السابق تحتاج لتثبيت الأداة <a href="https://pypi.org/project/pytesseract/" rel="external nofollow">pytesseract</a> الخاصة بالتَعَرُّف على المستندات الممسوحة ضوئيًا (OCR) في بايثون طبعًا بالإضافة لمكتبة المحوّلات Transformers، وهذه أوامر تثبيتها:
</p>

<pre class="ipsCode">&gt;&gt; sudo apt install -y tesseract-ocr
&gt;&gt; pip install pytesseract
</pre>

<h2 id="-6">
	استخدام خط الأنابيب مع النماذج الكبيرة ومكتبة التسريع
</h2>

<p>
	تُسهّل مكتبة التسريع accelerate استخدام خطوط الأنابيب مع النماذج الكبيرة large models، ويمكنك تثبيتها بالأمر <code>pip install accelerate</code>.
</p>

<p>
	حمّل نموذجك مع ضبط المعامل <code>device_map="auto"‎</code> ثم اتبع الأوامر التالية، اخترنا في هذا المقال النموذج "facebook/opt-1.3b".
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_1104_16" style=""><span class="com"># pip install accelerate</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> torch
</span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> pipeline

pipe </span><span class="pun">=</span><span class="pln"> pipeline</span><span class="pun">(</span><span class="pln">model</span><span class="pun">=</span><span class="str">"facebook/opt-1.3b"</span><span class="pun">,</span><span class="pln"> torch_dtype</span><span class="pun">=</span><span class="pln">torch</span><span class="pun">.</span><span class="pln">bfloat16</span><span class="pun">,</span><span class="pln"> device_map</span><span class="pun">=</span><span class="str">"auto"</span><span class="pun">)</span><span class="pln">
output </span><span class="pun">=</span><span class="pln"> pipe</span><span class="pun">(</span><span class="str">"This is a cool example!"</span><span class="pun">,</span><span class="pln"> do_sample</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">,</span><span class="pln"> top_p</span><span class="pun">=</span><span class="lit">0.95</span><span class="pun">)</span></pre>

<p>
	وإذا أردت تمرير نماذج 8‎-bit‎ فاحرص على تثبيت المكتبة bitsandbytes وتمرير الوسيط <code>load_in_8bit=True</code> كما في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_1104_18" style=""><span class="com"># pip install accelerate bitsandbytes</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> torch
</span><span class="kwd">from</span><span class="pln"> transformers </span><span class="kwd">import</span><span class="pln"> pipeline

pipe </span><span class="pun">=</span><span class="pln"> pipeline</span><span class="pun">(</span><span class="pln">model</span><span class="pun">=</span><span class="str">"facebook/opt-1.3b"</span><span class="pun">,</span><span class="pln"> device_map</span><span class="pun">=</span><span class="str">"auto"</span><span class="pun">,</span><span class="pln"> model_kwargs</span><span class="pun">={</span><span class="str">"load_in_8bit"</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">True</span><span class="pun">})</span><span class="pln">
output </span><span class="pun">=</span><span class="pln"> pipe</span><span class="pun">(</span><span class="str">"This is a cool example!"</span><span class="pun">,</span><span class="pln"> do_sample</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">,</span><span class="pln"> top_p</span><span class="pun">=</span><span class="lit">0.95</span><span class="pun">)</span></pre>

<p>
	الآن يمكنك أخذ نقطة التحقق checkpoint هذه وتبديلها بأي نموذج يناسب النماذج الكبيرة من منصة Hugging Face مثل النموذج اللغوي متعدد اللغات BLOOM.
</p>

<p>
	ترجمة -وبتصرف- لقسم <a href="https://huggingface.co/docs/transformers/pipeline_tutorial#pipelines-for-inference" rel="external nofollow">Pipelines for inference</a> من توثيقات Hugging Face.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		المقال السابق:<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D9%88%D9%91%D9%84%D8%A7%D8%AA-transformers-r2352/" rel=""> تثبيت مكتبة المحوّلات Transformers</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D9%88%D9%91%D9%84%D8%A7%D8%AA-transformers-%D9%85%D9%86-%D9%85%D9%86%D8%B5%D8%A9-hugging-face-r2340/" rel="">تعرف على مكتبة المحوّلات Transformers من منصة Hugging Face</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D9%81%D8%B6%D9%84-%D8%AF%D9%88%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2332/" rel="">تعرف على أفضل دورات الذكاء الاصطناعي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-%D8%A8%D8%A7%D9%8A-%D8%AA%D9%88%D8%B1%D8%B4-pytorch-%D9%88%D8%A3%D9%87%D9%85%D9%8A%D8%AA%D9%87-%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r2311/" rel="">تعرف على إطار عمل باي تورش PyTorch وأهميته لتطبيقات الذكاء الاصطناعي</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2353</guid><pubDate>Tue, 02 Jul 2024 15:07:01 +0000</pubDate></item></channel></rss>
