HyperAI

تم إصدار PyTorch 1.5، TorchServe بالتعاون مع AWS

منذ 5 أعوام
أخبار المصانع الكبيرة
神经小兮
特色图像

أصدرت PyTorch مؤخرًا تحديثًا للإصدار 1.5. وباعتبارها إطار عمل للتعلم الآلي يحظى بشعبية متزايدة، جلبت PyTorch أيضًا ترقيات وظيفية رئيسية هذه المرة. بالإضافة إلى ذلك، تعاونت Facebook وAWS لإطلاق مكتبتين مهمتين من PyTorch.

مع تزايد استخدام PyTorch في بيئات الإنتاج، أصبح تزويد المجتمع بأدوات ومنصات أفضل لتوسيع نطاق التدريب ونشر النماذج بكفاءة أولوية قصوى بالنسبة لـ PyTorch.

تم إصدار PyTorch 1.5 مؤخرًا.تم ترقية المكتبات الرئيسية torchvision وtorchtext وtorchaudio، وتم تقديم ميزات مثل تحويل النماذج من Python API إلى C++ API.

بجانب،كما تعاونت فيسبوك مع أمازون لإطلاق أداتين رئيسيتين: إطار عمل تقديم النموذج TorchServe ووحدة التحكم TorchElastic Kubernetes.

تهدف TorchServe إلى توفير مسار نظيف ومتوافق وعالي الجودة للنشر واسع النطاق لاستدلال نموذج PyTorch.

يتيح وحدة التحكم TorchElastic Kubernetes للمطورين استخدام مجموعات Kubernetes بسرعة لإنشاء وظائف تدريب موزعة مقاومة للأخطاء في PyTorch.

يبدو أن هذه خطوة من جانب Facebook وAmazon لإعلان الحرب على TensorFlow في إطار نموذج الذكاء الاصطناعي للأداء واسع النطاق.

TorchServe: لمهام الاستدلال

إن نشر نماذج التعلم الآلي للاستدلال على نطاق واسع ليس بالأمر السهل. يتعين على المطورين جمع وتعبئة عناصر النموذج، وإنشاء مجموعة خدمة آمنة، وتثبيت مكتبات البرامج وتكوينها للتنبؤ، وإنشاء واجهات برمجة التطبيقات ونقاط النهاية واستخدامها، وإنشاء سجلات ومقاييس للمراقبة، وإدارة إصدارات متعددة من النموذج عبر خوادم متعددة محتملة.

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

في السابق، لم يكن لدى المطورين الذين يستخدمون PyTorch طريقة مدعومة رسميًا لنشر نماذج PyTorch. إن إصدار إطار عمل خدمة نموذج الإنتاج TorchServe سوف يغير هذا الوضع، مما يجعل من الأسهل وضع النماذج في الإنتاج.

في المثال التالي، سنوضح كيفية استخراج نموذج مدرب من Torchvision ونشره باستخدام TorchServe.

#Download a trained PyTorch modelwget https://download.pytorch.org/models/densenet161-8d451a50.pth #Package model for TorchServe and create model archive .mar filetorch-model-archiver \ --model-name densenet161 \ --version 1.0 \ --model-file examples/image_classifier/densenet_161/model.py \ --serialized-file densenet161–8d451a50.pth \ --extra-files examples/image_classifier/index_to_name.json \ --handler image_classifier mkdir model_storemv densenet161.mar model_store/ #Start TorchServe model server and register DenseNet161 modeltorchserve — start — model-store model_store — models densenet161=densenet161.mar

الإصدار التجريبي من TorchServe متاح الآن.تشمل الميزات ما يلي:

  • واجهة برمجة التطبيقات الأصلية:يدعم واجهة برمجة التطبيقات الاستدلالية للتنبؤ وواجهة برمجة التطبيقات الإدارية لإدارة خوادم النموذج.
  • النشر الآمن:يتضمن دعم HTTPS للنشر الآمن.
  • قدرات قوية لإدارة النماذج:يسمح بالتكوين الكامل للنماذج والإصدارات والعاملين الفرديين عبر واجهة سطر الأوامر أو ملفات التكوين أو واجهة برمجة التطبيقات وقت التشغيل.
  • أرشيف النماذج:يوفر أدوات لأداء "أرشفة النموذج"، وهي عملية تجميع النموذج والمعلمات والملفات الداعمة في قطعة أثرية واحدة دائمة. باستخدام واجهة سطر أوامر بسيطة، يمكنك حزم وتصدير ملف ".mar" واحد يحتوي على كل ما تحتاجه لخدمة نموذج PyTorch. يمكن مشاركة ملف .mar وإعادة استخدامه.
  • معالجات النماذج المضمنة:يدعم إجراءات معالجة النموذج التي تغطي حالات الاستخدام الأكثر شيوعًا مثل تصنيف الصور واكتشاف الكائنات وتصنيف النص وتجزئة الصور. يدعم TorchServe أيضًا المعالجات المخصصة.
  • التسجيل والقياسات:يدعم التسجيل القوي والمقاييس في الوقت الفعلي لمراقبة خدمات الاستدلال ونقاط النهاية والأداء واستخدام الموارد والأخطاء. ومن الممكن أيضًا إنشاء سجلات مخصصة وتحديد مقاييس مخصصة.
  • إدارة النماذج:يدعم الإدارة المتزامنة لعدة نماذج أو إصدارات متعددة من نفس النموذج. يمكنك استخدام إصدارات النموذج للرجوع إلى إصدار سابق، أو لتوجيه حركة المرور إلى إصدارات مختلفة لإجراء اختبار A/B.
  • الصور المعدة مسبقًا:بمجرد الاستعداد، يمكنك نشر ملف Dockerfile وصورة Docker الخاصة بـTorchServe في بيئات تعتمد على وحدة المعالجة المركزية ووحدة معالجة الرسومات NVIDIA. يمكن العثور على أحدث ملفات Dockerfiles والصور هنا.

تعليمات التثبيت، والبرامج التعليمية، والوثائق متاحة أيضًا على pytorch.org/serve.

TorchElastic: وحدة تحكم K8S متكاملة

مع تزايد حجم نماذج تدريب التعلم الآلي الحالية، مثل RoBERTa وTuringNLG، أصبحت الحاجة إلى توسيع نطاقها إلى مجموعات موزعة مهمة بشكل متزايد. لتلبية هذه الحاجة، غالبًا ما يتم استخدام المثيلات القابلة للإلغاء (مثل Amazon EC2 Spot Instances).

لكن هذه الحالات القابلة للقطع في حد ذاتها غير قابلة للتنبؤ، لذا فإن هذا هو المكان الذي تأتي فيه الأداة الثانية، TorchElastic.

يتيح تكامل Kubernetes وTorchElastic لمطوري PyTorch تدريب نماذج التعلم الآلي على مجموعة من عقد الحوسبة.يمكن تغيير هذه العقد بشكل ديناميكي دون تعطيل عملية تدريب النموذج.

حتى في حالة فشل العقدة، فإن التسامح مع الأخطاء المدمج في TorchElastic يسمح لك بإيقاف التدريب مؤقتًا على مستوى العقدة واستئناف التدريب بمجرد أن تصبح العقدة سليمة مرة أخرى.

يدعم التسامح مع الأخطاء المدمج في TorchElastic استئناف نقطة التوقف

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

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

للاستفادة من هذه الإمكانات، يقوم المستخدمون ببساطة بتحديد معلمات التدريب في تعريف وظيفة بسيط، وتدير حزمة Kubernetes-TorchElastic دورة حياة الوظيفة.

فيما يلي مثال بسيط لتكوين TorchElastic لمهمة تدريب Imagenet:

apiVersion: elastic.pytorch.org/v1alpha1kind: ElasticJobmetadata:  name: imagenet  namespace: elastic-jobspec:  rdzvEndpoint: $ETCD_SERVER_ENDPOINT  minReplicas: 1  maxReplicas: 2  replicaSpecs:    Worker:      replicas: 2      restartPolicy: ExitCode      template:        apiVersion: v1        kind: Pod        spec:          containers:            - name: elasticjob-worker              image: torchelastic/examples:0.2.0rc1              imagePullPolicy: Always              args:                - "--nproc_per_node=1"                - "/workspace/examples/imagenet/main.py"                - "--arch=resnet18"                - "--epochs=20"                - "--batch-size=32"

مايكروسوفت وجوجل، هل أنتم في حالة ذعر؟

قد يكون للتعاون بين الشركتين لإطلاق مكتبة PyTorch الجديدة معنى أعمق، لأن روتين "عدم اللعب معك" ليس المرة الأولى التي يظهر فيها في تاريخ تطوير نموذج الإطار.

في ديسمبر 2017، أعلنت AWS وFacebook وMicrosoft أنها ستعمل بشكل مشترك على تطوير ONNX لبيئات الإنتاج.ويأتي هذا لمواجهة احتكار TensorFlow التابع لشركة Google للاستخدام الصناعي.

وبعد ذلك، قامت أطر التعلم العميق السائدة مثل Apache MXNet وCaffe2 وPyTorch بتنفيذ درجات متفاوتة من الدعم لـ ONNX، مما يسهل انتقال الخوارزميات والنماذج بين أطر عمل مختلفة.

أرادت AWS وFacebook وMicrosoft استخدام ONNX لتوحيد عالم الإطار

ومع ذلك، فإن رؤية ONNX المتمثلة في ربط الأوساط الأكاديمية والصناعة لم تلبي في الواقع التوقعات الأصلية. لا يزال كل إطار عمل يستخدم نظام الخدمة الخاص به، وفي الأساس، فقط MXNet وPyTorch قد اخترقا ONNX.

اليوم،أطلقت PyTorch نظام الخدمة الخاص بها، وفقد ONNX تقريبًا معنى وجوده (قالت MXNet إنها كانت في حيرة).

من ناحية أخرى، يتم ترقية PyTorch وتحديثه باستمرار، كما تتحسن التوافقية وسهولة استخدام الإطار.إنه يقترب من منافسه الأقوى، TensorFlow، بل ويتفوق عليه.

على الرغم من أن Google لديها خدماتها السحابية وأطر عملها الخاصة، فإن الجمع بين موارد AWS السحابية ونظام إطار عمل Facebook سيجعل من الصعب على Google التعامل مع هذا المزيج القوي.

تم طرد شركة مايكروسوفت من الدردشة الجماعية من قبل اثنين من الثلاثي السابق في ONNX. ما هي خططهم للخطوة القادمة؟

-- زيادة--