متوسط
⏱ ٦٠ دقيقة قراءة
© بوابة الذكاء الاصطناعي ٢٠٢٦-٠٤-١٢
تعلم كيفية دمج بايثون مع أحدث نماذج الذكاء الاصطناعي باستخدام PyTorch وLlama ٢، مما يمكنك من الاستفادة من التقنيات المتطورة لتطبيقات التعلم العميق.
المتطلبات الأساسية
- بايثون ٣.٨ أو أعلى
- PyTorch ٢.٠
- أوزان نموذج Llama ٢ (متوفرة من GitHub الخاص بشركة Meta)
- مهارات برمجة بايثون متوسطة
ما الذي سنبنيه
في هذا الدرس التقني، سنقوم ببناء تطبيق ذكاء اصطناعي بسيط ولكنه قوي يستخدم نموذج Llama ٢ مع PyTorch. سيكون التطبيق قادرًا على توليد نصوص بناءً على مطالبات المستخدم، مما يوضح دمج بايثون مع هذه النماذج المتقدمة للذكاء الاصطناعي.
سيسمح المشروع النهائي للمستخدمين بإدخال مطالبة نصية، والتي سيستخدمها النموذج لتوليد استجابة متماسكة وذات صلة بالسياق. يوضح هذا قدرات Llama ٢ في مهام معالجة اللغة الطبيعية وكيف يسهل PyTorch تطوير مثل هذه التطبيقات.
الإعداد والتثبيت
لبدء العمل، نحتاج إلى إعداد بيئة بايثون الخاصة بنا وتثبيت المكتبات الضرورية. سنستخدم PyTorch لتدريب النموذج والاستدلال، ومكتبة transformers من Hugging Face للتعامل مع نموذج Llama ٢.
pip install torch torchvision torchaudio transformersبعد ذلك، تأكد من تنزيل أوزان نموذج Llama ٢ من مستودع GitHub الخاص بشركة Meta. ستحتاج إلى هذه الأوزان لتحميل النموذج في تطبيقك.
نحتاج أيضًا إلى تكوين متغيرات البيئة لإدارة المسارات والإعدادات. أنشئ ملف `.env` في دليل مشروعك بالمحتوى التالي:
MODEL_WEIGHTS_PATH=/path/to/llama2/weights
DEVICE=cuda
تأكد من استبدال `/path/to/llama2/weights` بالمسار الفعلي حيث خزنت أوزان النموذج.
الخطوة ١: تحميل النموذج
الخطوة الأولى هي تحميل نموذج Llama ٢ باستخدام إطار عمل PyTorch. سنستخدم مكتبة transformers لتبسيط هذه العملية.
import os
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch # Load environment variables
model_weights_path = os.getenv('MODEL_WEIGHTS_PATH')
device = torch.device(os.getenv('DEVICE'))
# Load tokenizer and model
tokenizer = AutoTokenizer.from_pretrained(model_weights_path)
model = AutoModelForCausalLM.from_pretrained(model_weights_path).to(device)
هنا، نقوم بتحميل المحول والنموذج باستخدام المسارات المحددة في متغيرات البيئة لدينا. ثم يتم نقل النموذج إلى الجهاز المناسب (CPU أو GPU) للاستدلال.
الخطوة ٢: إعداد الإدخال
بمجرد تحميل النموذج، نحتاج إلى إعداد النص المدخل للنموذج. يتضمن ذلك تحويل النص المدخل إلى رموز وتحويله إلى صيغة يمكن للنموذج معالجتها.
def prepare_input(prompt):
inputs = tokenizer(prompt, return_tensors="pt").to(device)
return inputs # Example prompt
prompt = "Once upon a time in a land far, far away"
inputs = prepare_input(prompt)
تقوم دالة `prepare_input` بترميز سلسلة الإدخال وتحويلها إلى صيغة tensor مناسبة للنموذج. ثم يتم نقل هذا tensor إلى الجهاز المحدد سابقًا.
الخطوة ٣: توليد النص
مع إعداد الإدخال، يمكننا الآن توليد النص باستخدام النموذج. سنستخدم دالة `generate` الخاصة بالنموذج لإنشاء استجابة بناءً على المطالبة المدخلة.
def generate_text(inputs, max_length=50):
output_sequences = model.generate(**inputs, max_length=max_length)
return tokenizer.decode(output_sequences[0], skip_special_tokens=True) # Generate and print the output
generated_text = generate_text(inputs)
print(generated_text)
تأخذ دالة `generate_text` الإدخال المرمز وتستخدم النموذج لتوليد سلسلة من النصوص. ثم يتم فك ترميز المخرجات إلى سلسلة قابلة للقراءة البشرية.
اختبار تنفيذك
للتحقق من أن تنفيذك يعمل بشكل صحيح، قم بتشغيل السكربت وقدم مطالبة نصية. يجب أن تكون النتيجة استمرارًا متماسكًا للنص المدخل.
# Test command
python generate_text.py
إذا نجحت، سيعرض الكونسول مقتطف نصي مولد بناءً على المطالبة المقدمة.
ما الذي يمكن بناؤه بعد ذلك
إليك بعض المشاريع اللاحقة التي يمكنك استكشافها لتمديد هذا الدرس التقني:
- دمج واجهة مستخدم للسماح بإدخال مطالبات ديناميكية وعرض النص المولد في الوقت الفعلي.
- التجربة مع معلمات توليد النص المختلفة (مثل درجة الحرارة، أخذ العينات من الأعلى-k) لمعرفة كيف تؤثر على المخرجات.
- استخدام النص المولد في تطبيق دردشة، مما يضيف المزيد من التفاعل وقدرات فهم السياق.