توفر HuggingFace صورة حاوية رائعة يمكنها تشغيلك بسرعة.
على سبيل المثال:
mkdir -p /opt/tei-cache
docker run --rm --gpus all --shm-size 1g -p 8081:80 \
-v /opt/tei-cache:/data \
ghcr.io/huggingface/text-embeddings-inference:latest \
--model-id BAAI/bge-large-en-v1.5
يجب أن يؤدي هذا إلى تشغيل نسخة محلية من BAAI/bge-large-en-v1.5، وهو نموذج مفتوح المصدر عالي الأداء جدًا.
يمكنك التحقق مما إذا كان يعمل باستخدام
curl http://localhost:8081/ \
-X POST \
-H 'Content-Type: application/json' \
"{ \"inputs\": \"Testing string for embeddings\" }"
والذي يجب أن يعيد مصفوفة من الأرقام العشرية في التشغيل العادي.
جعله متاحًا لمثيل Discourse الخاص بك
في معظم الأوقات، ستقوم بتشغيل هذا على خادم مخصص بسبب تسريع وحدة معالجة الرسومات. عند القيام بذلك، أوصي بتشغيل وكيل عكسي، وإجراء إنهاء TLS، وتأمين نقطة النهاية بحيث لا يمكن الاتصال بها إلا بواسطة مثيل Discourse الخاص بك.
تكوين DiscourseAI
يتضمن Discourse AI إعدادات الموقع لتكوين خادم الاستدلال للنماذج مفتوحة المصدر. يجب عليك توجيهه إلى خادمك باستخدام علامة التبويب Embeddings في إعدادات المسؤول للمكون الإضافي للذكاء الاصطناعي.
نعم، لقد لعبت بها الأسبوع الذي تمت مشاركته فيه بصمت على GitHub وهي تعمل بشكل جيد. ما زلت أنتظر رؤية كيف ستظهر على لوحات المتصدرين MTEB، حيث لم تكن هناك آخر مرة نظرت فيها.
ومع ذلك، لدينا مثيلات Discourse مستضافة كبيرة تستخدم المكون الإضافي متعدد اللغات الذي يتم شحنه، e5، وهو يؤدي أداءً جيدًا جدًا.
أوه، عذرًا على ذلك. أحاول استخدام نموذج مفتوح المصدر من نقطة نهاية مخصصة لـ HuggingFace وأتساءل عما إذا كان ذلك ممكنًا أو ما إذا كان ضمن الخطط للتمكين في المستقبل القريب
لتوفير المساحة، هل من الممكن استخدام تضمينات مُكمّاة؟ أود استخدام تضمينات ثنائية مُكمّاة لتقليل حجم التخزين بشكل كبير. بعد إجراء بعض الاختبارات، حصلت على أداء يزيد عن 90% مع تخزين أقل بـ 32 مرة!
نقوم بتخزين التضمينات باستخدام نصف الدقة (نصف مساحة التخزين) واستخدام التكميم الثنائي للفهارس (أصغر بـ 32 مرة) افتراضيًا منذ بضعة أسابيع، لذا فإن مجرد تحديث موقعك إلى أحدث إصدار يجب أن يوفر لك تقليلًا كبيرًا في استخدام القرص.
إذا واجه أي شخص آخر مشاكل مع نقاط النهاية على الشبكة المحلية مثل 192.168.x.x - يبدو أن هذه محظورة بواسطة discourse (يفترض لأسباب أمنية) ويجب تجاوز الحظر. لقد أضعت بعض الساعات في اكتشاف ذلك!
@Falco لقد جربت إضافة النموذج وأرسلت طلب سحب. أعتذر إذا ارتكبت خطأ ما لأنني لست مطور برامج حقًا. كنت آمل أن تتمكن من إلقاء نظرة عليه ومعرفة ما إذا كان مناسبًا للإدراج.
للأسف، لم أتمكن من جعله يعمل مع TEI. تمكنت من جعل all-mpnet يعمل مع TEI، لكن أعتقد أن هناك خطأ ما فيما فعلته لجعل mxbai يعمل.
بالمناسبة، هل هناك أي فرصة لدعم https://github.com/michaelfeil/infinity كخادم تضمين؟
تعديل: أرى أن هذا سيكون فوضويًا لأن فهارس HNSW في قاعدة البيانات تبدو مبرمجة بشكل ثابت، لذا يجب إضافة النماذج الجديدة في النهاية لتجنب تعطيل الترتيب، ويحتاج كل نموذج جديد إلى إضافة فهرسه الخاص.
قام صديق بإرسال هذا الموضوع لي عبر الرسائل المباشرة.
بعض الإيجابيات/السلبيات:
يدعم infinity تضمينات متعددة الوسائط (أي إرسال صور/صوت) إلى
دعم بطاقات الرسوميات AMD
نماذج متعددة مدعومة في نفس الحاوية (تحكم في النموذج عبر المعلمة model).
أنواع بيانات إضافية مثل تكميم int8 للأوزان (هذا غير مهم في الغالب، ذاكرة التنشيط أكبر)
غالبًا ما تظهر نماذج جديدة عبر “رمز نمذجة مخصص” يتم شحنه في مستودع huggingface. يقرأ Infinity رمز pytorch هذا إذا لزم الأمر. سيساعدك هذا على تجنب “هل يمكنك دعم نماذج كذا وكذا” بشكل مستمر)
المزيد من النماذج المدعومة (مثل debertav2 لـ mixedbread)
لقد كان @roman مشغولاً بإعادة هيكلة إعدادات التضمين الخاصة بنا على:
يجب أن ننتهي قريباً جداً، وبمجرد الانتهاء من ذلك، سيكون إضافة الدعم لـ inifinity أمراً بسيطاً.
ما زلت أفكر كثيراً في التضمين متعدد النماذج، فهو يمنحك اختصاراً عند محاولة القيام بـ RAG على ملفات PDF لأنك تقوم بمعالجتها إلى صور وتضمين كل صورة، مما يتجنب الحاجة إلى OCR أو تحويل الصور المكلف إلى نص مدعوم بنموذج لغوي كبير.
بمجرد الانتهاء من طلب السحب هذا، سنكون أكثر من سعداء لإضافة دعم infinity (ودعم النماذج المتعددة) إلى إعدادات التضمين.