شعار زيفيرنت

أنشئ هياكل تدريب موزعة ومرنة وقابلة للتطوير باستخدام Kubeflow على AWS و Amazon SageMaker

التاريخ:

في هذا المنشور ، نوضح كيف Kubeflow على AWS (توزيع Kubeflow الخاص بـ AWS) يُستخدم مع حاويات AWS Deep Learning و نظام ملفات أمازون المرن (Amazon EFS) يبسط التعاون ويوفر المرونة في تدريب نماذج التعلم العميق على نطاق واسع على كليهما خدمة أمازون مطاطا Kubernetes (Amazon EKS) و الأمازون SageMaker باستخدام نهج العمارة الهجين.

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

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

لاحظ مجتمع المصادر المفتوحة وقام بتطوير طبقة أعلى Kubernetes تسمى Kubeflow. تهدف Kubeflow إلى جعل نشر تدفقات عمل ML من طرف إلى طرف على Kubernetes بسيطة ومحمولة وقابلة للتطوير. يمكنك استخدام Kubeflow لنشر أفضل أنظمة مفتوحة المصدر من أجل ML إلى البنى التحتية المتنوعة.

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

يوضح هذا المنشور كيف يمكن للعملاء الذين لديهم قيود محلية أو استثمارات Kubernetes الحالية مواجهة هذا التحدي باستخدام Amazon EKS و Kubeflow على AWS لتنفيذ خط أنابيب ML للتدريب الموزع بناءً على نهج مُدار ذاتيًا ، واستخدام SageMaker المُدار بالكامل من أجل بنية تحتية للتدريب مُحسّنة من حيث التكلفة ومدارة بالكامل وعلى نطاق الإنتاج. يتضمن ذلك التنفيذ التدريجي لهيكل التدريب الموزع المختلط الذي يسمح لك بالاختيار بين النهجين في وقت التشغيل ، مما يمنحك أقصى قدر من التحكم والمرونة مع الاحتياجات الصارمة لعمليات النشر الخاصة بك. سترى كيف يمكنك الاستمرار في استخدام المكتبات مفتوحة المصدر في البرنامج النصي التدريبي الخاص بالتعلم العميق مع الاستمرار في جعلها متوافقة للتشغيل على كل من Kubernetes و SageMaker بطريقة حيادية للنظام الأساسي.

كيف تساعد Kubeflow على AWS و SageMaker؟

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

تساعد Amazon EKS في توفير مستوى التحكم Kubernetes المُدار. يمكنك استخدام Amazon EKS لإنشاء مجموعات تدريب واسعة النطاق مع مثيلات وحدة المعالجة المركزية ووحدة معالجة الرسومات واستخدام مجموعة أدوات Kubeflow لتوفير أدوات مفتوحة المصدر ومتوافقة مع ML وتفعيل تدفقات عمل ML التي تكون محمولة وقابلة للتطوير باستخدام Kubeflow Pipelines لتحسين إنتاجية فريقك و تقليل الوقت اللازم للتسويق.

ومع ذلك ، يمكن أن يكون هناك نوعان من التحديات مع هذا النهج:

  • ضمان الاستفادة القصوى من الكتلة عبر فرق علوم البيانات. على سبيل المثال ، يجب عليك توفير مثيلات GPU عند الطلب والتأكد من استخدامها العالي للمهام التي تتطلب نطاقًا إنتاجيًا مثل التدريب على التعلم العميق ، واستخدام مثيلات وحدة المعالجة المركزية للمهام الأقل تطلبًا مثل المعالجة المسبقة للبيانات
  • ضمان التوفر العالي لمكونات البنية التحتية الثقيلة Kubeflow ، بما في ذلك قاعدة البيانات والتخزين والمصادقة ، التي يتم نشرها في عقدة عامل مجموعة Kubernetes. على سبيل المثال ، يقوم مستوى التحكم Kubeflow بإنشاء عناصر أثرية (مثل مثيلات MySQL أو سجلات pod أو تخزين MinIO) التي تنمو بمرور الوقت وتحتاج إلى أحجام تخزين قابلة لتغيير الحجم مع إمكانات المراقبة المستمرة.
  • تعد مشاركة مجموعة بيانات التدريب ، والتعليمات البرمجية ، وبيئات الحساب بين المطورين ومجموعات التدريب والمشاريع أمرًا صعبًا. على سبيل المثال ، إذا كنت تعمل على مجموعتك الخاصة من المكتبات وكانت تلك المكتبات ذات ترابط قوي ، فسيكون من الصعب حقًا مشاركة وتشغيل نفس الجزء من الكود بين علماء البيانات في نفس الفريق. أيضًا ، يتطلب منك كل تشغيل تدريب تنزيل مجموعة بيانات التدريب وإنشاء صورة التدريب بتغييرات التعليمات البرمجية الجديدة.

تساعد Kubeflow على AWS في مواجهة هذه التحديات وتوفر منتج Kubeflow شبه مُدار على مستوى المؤسسة. باستخدام Kubeflow على AWS ، يمكنك استبدال بعض خدمات مستوى التحكم Kubeflow مثل قاعدة البيانات والتخزين والمراقبة وإدارة المستخدم بخدمات مُدارة من AWS مثل خدمة قاعدة بيانات الأمازون (Amazon RDS) ، خدمة تخزين أمازون البسيطة (Amazon S3) ، نظام ملفات أمازون المرن (Amazon EFS) ، أمازون FSx, الأمازون CloudWatchو أمازون كوجنيتو.

يؤدي استبدال مكونات Kubeflow هذه إلى فصل الأجزاء المهمة من مستوى التحكم Kubeflow عن Kubernetes ، مما يوفر تصميمًا آمنًا وقابلًا للتطوير ومرنًا ومنخفض التكلفة. يعمل هذا النهج أيضًا على تحرير موارد التخزين وحساب الموارد من مستوى بيانات EKS ، والتي قد تحتاجها التطبيقات مثل التدريب على النموذج الموزع أو خوادم الكمبيوتر المحمول للمستخدم. يوفر Kubeflow على AWS أيضًا تكاملًا أصليًا لدفاتر Jupyter مع صور Deep Learning Container (DLC) ، والتي تم تعبئتها مسبقًا وتكوينها مسبقًا باستخدام أطر التعلم العميق المحسّنة من AWS مثل PyTorch و TensorFlow التي تسمح لك بالبدء في كتابة رمز التدريب الخاص بك على الفور دون التعامل مع قرارات التبعية وتحسينات إطار العمل. أيضًا ، يتيح لك تكامل Amazon EFS مع مجموعات التدريب وبيئة التطوير مشاركة التعليمات البرمجية الخاصة بك ومجموعة بيانات التدريب التي تمت معالجتها ، والتي تتجنب إنشاء صورة الحاوية وتحميل مجموعات بيانات ضخمة بعد كل تغيير في التعليمات البرمجية. تساعدك عمليات التكامل هذه مع Kubeflow على AWS على تسريع بناء النموذج ووقت التدريب والسماح بتعاون أفضل مع مشاركة أسهل للبيانات والتعليمات البرمجية.

تساعد Kubeflow على AWS في بناء نظام أساسي قوي ومتاح للغاية للتعلم الآلي. توفر هذه المنصة المرونة لبناء نماذج التعلم العميق وتدريبها وتوفر الوصول إلى العديد من مجموعات الأدوات مفتوحة المصدر ، والرؤى حول السجلات ، والتصحيح التفاعلي للتجربة. ومع ذلك ، فإن تحقيق أقصى استفادة من موارد البنية التحتية أثناء تدريب نماذج التعلم العميق على مئات من وحدات معالجة الرسومات لا يزال ينطوي على الكثير من النفقات العامة التشغيلية. يمكن معالجة ذلك باستخدام SageMaker ، وهي خدمة مُدارة بالكامل تم تصميمها وتحسينها للتعامل مع مجموعات التدريب عالية الأداء والمُحسّنة من حيث التكلفة والتي يتم توفيرها فقط عند الطلب ، وتوسيع نطاقها حسب الحاجة ، وإغلاقها تلقائيًا عند اكتمال الوظائف ، وبالتالي توفير ما يقرب من 100 ٪ استخدام الموارد. يمكنك دمج SageMaker مع Kubeflow Pipelines باستخدام مكونات SageMaker المُدارة. يتيح لك ذلك تشغيل تدفقات عمل ML كجزء من خطوط أنابيب Kubeflow ، حيث يمكنك استخدام Kubernetes للتدريب المحلي و SageMaker للتدريب على مستوى المنتج في بنية مختلطة.

حل نظرة عامة

تصف البنية التالية كيفية استخدامنا لخطوط أنابيب Kubeflow لبناء ونشر تدفقات عمل ML المحمولة والقابلة للتطوير من طرف إلى طرف لتشغيل التدريب الموزع بشكل مشروط على Kubernetes باستخدام تدريب Kubeflow أو SageMaker استنادًا إلى معلمة وقت التشغيل.

تدريب Kubeflow عبارة عن مجموعة من مشغلي Kubernetes الذين يضيفون إلى Kubeflow دعمًا للتدريب الموزع لنماذج ML باستخدام أطر عمل مختلفة مثل TensorFlow و PyTorch وغيرها. pytorch-operator هو تطبيق Kubeflow لـ Kubernetes مورد مخصص (PyTorchJob) لتشغيل وظائف تدريب PyTorch الموزعة على Kubernetes.

نستخدم مكون PyTorchJob Launcher كجزء من خط أنابيب Kubeflow لتشغيل تدريب PyTorch الموزع أثناء مرحلة التجريب عندما نحتاج إلى المرونة والوصول إلى جميع الموارد الأساسية للتصحيح التفاعلي والتحليل.

نستخدم أيضًا مكونات SageMaker لخطوط أنابيب Kubeflow لتشغيل تدريب النموذج الخاص بنا على نطاق الإنتاج. يتيح لنا ذلك الاستفادة من ميزات SageMaker القوية مثل الخدمات المُدارة بالكامل ، ووظائف التدريب الموزعة مع أقصى استخدام لوحدة معالجة الرسومات ، والتدريب الفعال من حيث التكلفة من خلال الأمازون الحوسبة المرنة السحابية (Amazon EC2) مثيلات بقعة.

كجزء من عملية إنشاء سير العمل ، يمكنك إكمال الخطوات التالية (كما هو موضح في الرسم التخطيطي السابق) لإنشاء خط الأنابيب هذا:

  1. استخدم ملف بيان Kubeflow لإنشاء لوحة معلومات Kubeflow والوصول إلى دفاتر Jupyter من لوحة معلومات Kubeflow المركزية.
  2. استخدم SDK لخط أنابيب Kubeflow لإنشاء خطوط أنابيب Kubeflow وتجميعها باستخدام كود Python. يحول تجميع خطوط الأنابيب وظيفة Python إلى مورد سير عمل ، وهو تنسيق YAML متوافق مع Argo.
  3. استخدم عميل Kubeflow Pipelines SDK لاستدعاء نقطة نهاية خدمة خط الأنابيب لتشغيل خط الأنابيب.
  4. يقوم خط الأنابيب بتقييم متغيرات وقت التشغيل الشرطي ويقرر بين SageMaker أو Kubernetes كبيئة تشغيل الهدف.
  5. استخدم مكون Kubeflow PyTorch Launcher لتشغيل التدريب الموزع على بيئة Kubernetes الأصلية ، أو استخدم مكون SageMaker لإرسال التدريب على النظام الأساسي المُدار من SageMaker.

يوضح الشكل التالي مكونات خطوط أنابيب Kubeflow المتضمنة في البنية التي تمنحنا المرونة للاختيار بين بيئات Kubernetes أو SageMaker الموزعة.

مكونات خطوط أنابيب كوبفلو

استخدام حالة سير العمل

نستخدم النهج التالي خطوة بخطوة لتثبيت حالة الاستخدام وتشغيلها للتدريب الموزع باستخدام Amazon EKS و SageMaker باستخدام Kubeflow على AWS.

المتطلبات الأساسية المسبقة

في هذا الدليل ، يجب أن يكون لديك المتطلبات الأساسية التالية:

  • An حساب AWS.
  • آلة مع Docker و واجهة سطر الأوامر AWS (AWS CLI) مثبت.
  • اختياريا ، يمكنك استخدام سحابة AWS 9، بيئة تطوير متكاملة قائمة على السحابة (IDE) تتيح إكمال جميع الأعمال من متصفح الويب الخاص بك. للحصول على تعليمات الإعداد ، ارجع إلى إعداد Cloud9 IDE. من بيئة Cloud9 الخاصة بك ، اختر علامة الجمع وافتح محطة جديدة.
  • قم بإنشاء دور مع اسم sagemakerrole. أضف السياسات المُدارة AmazonSageMakerFullAccess و AmazonS3FullAccess لمنح SageMaker إمكانية الوصول إلى حاويات S3. يتم استخدام هذا الدور بواسطة وظيفة SageMaker المقدمة كجزء من خطوة خطوط أنابيب Kubeflow.
  • تأكد من أن حسابك يحتوي على حد نوع مورد تدريب SageMaker لـ ml.p3.2xlarge زاد إلى 2 استخدام وحدة التحكم في حصص الخدمة

1. قم بتثبيت Amazon EKS و Kubeflow على AWS

يمكنك استخدام عدة طرق مختلفة لبناء مجموعة Kubernetes ونشر Kubeflow. في هذا المنشور ، نركز على نهج نعتقد أنه يضفي البساطة على العملية. أولاً ، نقوم بإنشاء مجموعة EKS ، ثم نقوم بنشر Kubeflow على AWS v1.5 عليها. لكل مهمة من هذه المهام ، نستخدم مشروعًا مفتوح المصدر مقابلًا يتبع مبادئ هل الإطار. بدلاً من تثبيت مجموعة من المتطلبات الأساسية لكل مهمة ، نقوم ببناء حاويات Docker التي تحتوي على جميع الأدوات اللازمة وتؤدي المهام من داخل الحاويات.

نستخدم Do Framework في هذا المنشور ، والذي يعمل على أتمتة نشر Kubeflow مع Amazon EFS كإضافة. للحصول على Kubeflow الرسمي حول خيارات نشر AWS لعمليات نشر الإنتاج ، يرجى الرجوع إلى قابل للفتح.

قم بتكوين دليل العمل الحالي و AWS CLI

نقوم بتكوين دليل عمل حتى نتمكن من الرجوع إليه كنقطة انطلاق للخطوات التالية:

export working_dir=$PWD

نقوم أيضًا بتكوين ملف تعريف AWS CLI. للقيام بذلك ، تحتاج إلى معرف مفتاح الوصول ومفتاح الوصول السري لملف إدارة الهوية والوصول AWS (انا) المستخدم حساب بامتيازات إدارية (أرفق السياسة المدارة الحالية) والوصول الآلي. انظر الكود التالي:

aws configure --profile=kubeflow
AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: us-west-2
Default output format [None]: json

# (In Cloud9, select “Cancel” and “Permanently disable” when the AWS managed temporary credentials dialog pops up)

export AWS_PROFILE=kubeflow

1.1 إنشاء مجموعة EKS

إذا كان لديك بالفعل مجموعة EKS متاحة ، فيمكنك التخطي إلى القسم التالي. في هذا المنشور ، نستخدم ملف مشروع aws-do-eks لإنشاء مجموعتنا.

  1. أولا استنساخ المشروع في دليل العمل الخاص بك
    cd ${working_dir}
    git clone https://github.com/aws-samples/aws-do-eks
    cd aws-do-eks/

  2. ثم قم ببناء وتشغيل ملف aws-do-eks حاوية:
    ./build.sh
    ./run.sh

    build.sh يقوم البرنامج النصي بإنشاء صورة حاوية Docker تحتوي على جميع الأدوات والبرامج النصية اللازمة لتوفير وتشغيل مجموعات EKS. ال run.sh يبدأ البرنامج النصي الحاوية باستخدام صورة Docker التي تم إنشاؤها ويحافظ عليها ، حتى نتمكن من استخدامها كبيئة إدارة EKS الخاصة بنا. لمعرفة حالة ملف aws-do-eks حاوية ، يمكنك تشغيلها ./status.sh. إذا كانت الحاوية في حالة "خروج" ، يمكنك استخدام ./start.sh البرنامج النصي لإحضار الحاوية ، أو لإعادة تشغيل الحاوية ، يمكنك تشغيل ./stop.sh تليها ./run.sh.

  3. فتح قذيفة في الجري aws-do-eks حاوية:
  4. لمراجعة تكوين مجموعة EKS لنشر KubeFlow ، قم بتشغيل الأمر التالي:
    vi ./eks-kubeflow.yaml

    بشكل افتراضي ، يُنشئ هذا التكوين كتلة باسم eks-kubeflow في ال us-west-2 منطقة بها ستة عقد m5.xlarge. أيضًا ، لا يتم تمكين تشفير وحدات تخزين EBS افتراضيًا. يمكنك تمكينه عن طريق إضافة "volumeEncrypted: true" إلى nodegroup وسيتم تشفيرها باستخدام المفتاح الافتراضي. قم بتعديل إعدادات التكوينات الأخرى إذا لزم الأمر.

  5. لإنشاء الكتلة ، قم بتشغيل الأمر التالي:
    export AWS_PROFILE=kubeflow
    eksctl create cluster -f ./eks-kubeflow.yaml

    قد تستغرق عملية توفير الكتلة ما يصل إلى 30 دقيقة.

  6. للتحقق من إنشاء الكتلة بنجاح ، قم بتشغيل الأمر التالي:
    kubectl get nodes

    الإخراج من الأمر السابق للكتلة التي تم إنشاؤها بنجاح يشبه الكود التالي:

    root@cdf4ecbebf62:/eks# kubectl get nodes
    NAME                                           STATUS   ROLES    AGE   VERSION
    ip-192-168-0-166.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-13-28.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-45-240.us-west-2.compute.internal   Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-63-84.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-75-56.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-85-226.us-west-2.compute.internal   Ready       23m   v1.21.14-eks-ba74326

قم بإنشاء وحدة تخزين EFS لوظيفة تدريب SageMaker

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

نقوم بإنشاء وحدة تخزين EFS ونشر برنامج تشغيل واجهة تخزين حاوية EFS (CSI). يتم تحقيق ذلك من خلال برنامج نصي للنشر موجود في /eks/deployment/csi/efs في حدود aws-do-eks حاوية.

يفترض هذا البرنامج النصي أن لديك مجموعة EKS واحدة في حسابك. تعيين CLUSTER_NAME= في حال كان لديك أكثر من مجموعة EKS.

cd /eks/deployment/csi/efs
./deploy.sh

يوفر هذا البرنامج النصي وحدة تخزين EFS ويقوم بإنشاء أهداف تحميل للشبكات الفرعية للكتلة VPC. ثم ينشر برنامج تشغيل EFS CSI ويقوم بإنشاء ملف efs-sc فئة التخزين و efs-pv حجم ثابت في مجموعة EKS.

عند الانتهاء بنجاح من البرنامج النصي ، يجب أن ترى مخرجات مثل ما يلي:

Generating efs-sc.yaml ...

Applying efs-sc.yaml ...
storageclass.storage.k8s.io/efs-sc created
NAME            PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
efs-sc          efs.csi.aws.com         Delete          Immediate              false                  1s
gp2 (default)   kubernetes.io/aws-ebs   Delete          WaitForFirstConsumer   false                  36m

Generating efs-pv.yaml ...
Applying efs-pv.yaml ...
persistentvolume/efs-pv created
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
efs-pv   5Gi        RWX            Retain           Available           efs-sc                  10s

Done ...

قم بإنشاء نقطة نهاية Amazon S3 VPC

أنت تستخدم VPC خاصًا يمكن لوظيفة تدريب SageMaker ونظام ملفات EFS الوصول إليها. لمنح مجموعة تدريب SageMaker الوصول إلى حاويات S3 من VPC الخاص بك ، يمكنك إنشاء نقطة نهاية VPC:

cd /eks/vpc 
export CLUSTER_NAME= 
export REGION= 
./vpc-endpoint-create.sh

يمكنك الآن الخروج من aws-do-eks غلاف الحاوية وانتقل إلى القسم التالي:

exit

root@cdf4ecbebf62:/eks/deployment/csi/efs# exit
exit
TeamRole:~/environment/aws-do-eks (main) $

1.2 نشر Kubeflow على AWS على Amazon EKS

لنشر Kubeflow على Amazon EKS ، نستخدم امتداد مشروع aws-do-kubeflow.

  1. استنساخ المستودع باستخدام الأوامر التالية:
    cd ${working_dir}
    git clone https://github.com/aws-samples/aws-do-kubeflow
    cd aws-do-kubeflow

  2. ثم قم بتكوين المشروع:
    ./config.sh

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

    ./build.sh
    ./run.sh
    ./exec.sh

    build.sh ينشئ البرنامج النصي صورة حاوية Docker تحتوي على جميع الأدوات اللازمة لنشر وإدارة Kubeflow على مجموعة Kubernetes موجودة. ال run.sh يبدأ البرنامج النصي حاوية ، باستخدام صورة Docker ، ويفتح البرنامج النصي exec.sh غلاف أمر في الحاوية ، والتي يمكننا استخدامها كبيئة إدارة Kubeflow الخاصة بنا. يمكنك استخدام ال ./status.sh النصي لمعرفة ما إذا كان aws-do-kubeflow الحاوية قيد التشغيل و ./stop.sh و ./run.sh البرامج النصية لإعادة تشغيله حسب الحاجة.

  3. بعد فتح قذيفة في aws-do-eks حاوية ، يمكنك التحقق من أن سياق الكتلة المكون كما هو متوقع:
    root@ip-172-31-43-155:/kubeflow# kubectx
    kubeflow@eks-kubeflow.us-west-2.eksctl.io

  4. لنشر Kubeflow على مجموعة EKS ، قم بتشغيل ملف deploy.sh النصي:
    ./kubeflow-deploy.sh

    يكون النشر ناجحًا عندما تدخل كل الكبسولات الموجودة في مساحة الاسم kubeflow في حالة التشغيل. الإخراج النموذجي يشبه الكود التالي:

    Waiting for all Kubeflow pods to start Running ...
    
    Waiting for all Kubeflow pods to start Running ...
    
    Restarting central dashboard ...
    pod "centraldashboard-79f489b55-vr6lp" deleted
    /kubeflow/deploy/distro/aws/kubeflow-manifests /kubeflow/deploy/distro/aws
    /kubeflow/deploy/distro/aws
    
    Kubeflow deployment succeeded
    Granting cluster access to kubeflow profile user ...
    Argument not provided, assuming default user namespace kubeflow-user-example-com ...
    clusterrolebinding.rbac.authorization.k8s.io/kubeflow-user-example-com-cluster-admin-binding created
    Setting up access to Kubeflow Pipelines ...
    Argument not provided, assuming default user namespace kubeflow-user-example-com ...
    
    Creating pod-default for namespace kubeflow-user-example-com ...
    poddefault.kubeflow.org/access-ml-pipeline created

  5. لمراقبة حالة حاضنات KubeFlow ، في نافذة منفصلة ، يمكنك استخدام الأمر التالي:
    watch kubectl -n kubeflow get pods

  6. صحافة CTRL + C عندما تكون جميع الكبسولات قيد التشغيل ، فقم بتعريض لوحة معلومات Kubeflow خارج المجموعة عن طريق تشغيل الأمر التالي:
    ./kubeflow-expose.sh

يجب أن ترى الإخراج الذي يشبه الكود التالي:

root@ip-172-31-43-155:/kubeflow# ./kubeflow-expose.sh
root@ip-172-31-43-155:/kubeflow# Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from [::1]:8080 -> 8080

يقوم منفذ الأمر هذا بإعادة توجيه خدمة بوابة دخول Istio من المجموعة الخاصة بك إلى المنفذ المحلي 8080. للوصول إلى لوحة معلومات Kubeflow ، قم بزيارة http://localhost:8080 وقم بتسجيل الدخول باستخدام بيانات اعتماد المستخدم الافتراضية (user@example.com/ 12341234). إذا كنت تقوم بتشغيل aws-do-kubeflow حاوية في AWS Cloud9 ، ثم يمكنك الاختيار أرسال، ثم اختر معاينة التطبيق قيد التشغيل. إذا كنت تعمل على Docker Desktop ، فقد تحتاج إلى تشغيل ملف ./kubeflow-expose.sh النصي خارج aws-do-kubeflow حاوية.

2. قم بإعداد Kubeflow على بيئة AWS

لإعداد Kubeflow الخاص بك على بيئة AWS ، نقوم بإنشاء وحدة تخزين EFS ودفتر Jupyter.

2.1 إنشاء وحدة تخزين EFS

لإنشاء وحدة تخزين EFS ، أكمل الخطوات التالية:

  • في لوحة معلومات Kubeflow ، اختر مجلدات في جزء التنقل.
  • اختار حجم جديد.
  • في حالة الاسم، أدخل efs-sc-claim.
  • في حالة حجم الصوت، أدخل 10.
  • في حالة فئة التخزين، اختر efs-sc.
  • في حالة وضع الوصول، اختر اقرأ واكتب مرة واحدة.
  • اختار إنشاء.

2.2 إنشاء دفتر Jupyter

لإنشاء دفتر ملاحظات جديد ، أكمل الخطوات التالية:

  • في لوحة معلومات Kubeflow ، اختر دفاتر في جزء التنقل.
  • اختار دفتر جديد.
  • في حالة الاسم، أدخل aws-hybrid-nb.
  • في حالة صورة Jupyter Docketاختر الصورة c9e4w0g3/notebook-servers/jupyter-pytorch:1.11.0-cpu-py38-ubuntu20.04-e3-v1.1 (أحدث صورة متوفرة من Jupyter-pytorch DLC).
  • في حالة وحدة المعالجة المركزية‏:، أدخل 1.
  • في حالة مكبر الصوت : يدعم، مع دعم ميكروفون مدمج لمنع الضوضاء ، أدخل 5.
  • في حالة وحدات معالجة الرسومات، اترك بصيغة بدون اضاءة.
  • لا تقم بإجراء أي تغييرات على حجم مساحة العمل والقسم الخاص به.
  • في مجلة أحجام البيانات القسم، اختر إرفاق وحدة التخزين الموجودة وتوسيع قسم الحجم الحالي
  • في حالة الاسم، اختر efs-sc-claim.
  • في حالة مسار الجبل، أدخل /home/jovyan/efs-sc-claim.
    يؤدي ذلك إلى تحميل وحدة تخزين EFS على جراب دفتر ملاحظات Jupyter ، ويمكنك رؤية المجلد efs-sc-claim في واجهة مختبر Jupyter. يمكنك حفظ مجموعة بيانات التدريب ورمز التدريب في هذا المجلد حتى تتمكن مجموعات التدريب من الوصول إليها دون الحاجة إلى إعادة إنشاء صور الحاوية للاختبار.
  • أختار السماح بالوصول إلى خطوط أنابيب Kubeflow في قسم التكوين.
  • اختار إطلاق.
    تحقق من أن دفتر الملاحظات الخاص بك قد تم إنشاؤه بنجاح (قد يستغرق دقيقتين).
  • على دفاتر الصفحة ، اختر التواصل لتسجيل الدخول إلى بيئة JupyterLab.
  • على بوابة القائمة، اختر استنساخ مستودع.
  • في حالة استنساخ الريبو، أدخل https://github.com/aws-samples/aws-do-kubeflow.

3. قم بتشغيل التدريب الموزع

بعد إعداد دفتر Jupyter ، يمكنك تشغيل العرض التوضيحي بأكمله باستخدام الخطوات عالية المستوى التالية من المجلد aws-do-kubeflow/workshop في المستودع المستنسخ:

  • البرنامج النصي للتدريب على موازٍ للبيانات الموزعة (DDP) من PyTorch: قم بإحالة برنامج تدريب PyTorch DDP cifar10-distributed-gpu-final.py ، والذي يتضمن عينة من الشبكة العصبية التلافيفية والمنطق لتوزيع التدريب على مجموعة وحدة المعالجة المركزية ووحدة معالجة الرسومات متعددة العقد. (راجع 3.1 للحصول على التفاصيل)
  • تثبيت المكتبات: قم بتشغيل الكمبيوتر الدفتري 0_initialize_dependencies.ipynb لتهيئة جميع التبعيات. (راجع 3.2 للحصول على التفاصيل)
  • قم بتشغيل تدريب وظيفي موزع في PyTorch على Kubernetes: قم بتشغيل الكمبيوتر الدفتري 1_submit_pytorchdist_k8s.ipynb لإنشاء وتقديم تدريب موزع على حاوية أساسية واحدة واثنين من حاويات العمال باستخدام ملف PyTorchJob YAML لمورد Kubernetes المخصص باستخدام كود Python. (راجع 3.3 للحصول على التفاصيل)
  • إنشاء خط أنابيب هجين Kubeflow: قم بتشغيل الكمبيوتر الدفتري 2_create_pipeline_k8s_sagemaker.ipynb لإنشاء خط أنابيب Kubeflow المختلط الذي يدير تدريبًا موزعًا على SageMaker أو Amazon EKS باستخدام متغير وقت التشغيل training_runtime. (راجع 3.4 للحصول على التفاصيل)

تأكد من تشغيل دفتر الملاحظات 1_submit_pytorchdist_k8s.ipynb قبل أن تبدأ دفتر الملاحظات 2_create_pipeline_k8s_sagemaker.ipynb.

في الأقسام التالية ، نناقش كل خطوة من هذه الخطوات بالتفصيل.

3.1 البرنامج النصي التدريبي موازٍ للبيانات الموزعة (DDP) من PyTorch

كجزء من التدريب الموزع ، نقوم بتدريب نموذج تصنيف تم إنشاؤه بواسطة شبكة عصبية تلافيفية بسيطة تعمل على مجموعة بيانات CIFAR10. نص التدريب cifar10-distributed-gpu-final.py يحتوي فقط على مكتبات مفتوحة المصدر ومتوافق للتشغيل على مجموعات تدريب Kubernetes و SageMaker على أجهزة GPU أو مثيلات وحدة المعالجة المركزية. دعونا نلقي نظرة على بعض الجوانب المهمة في البرنامج النصي للتدريب قبل تشغيل أمثلة دفاتر الملاحظات الخاصة بنا.

نستخدم torch.distributed الوحدة النمطية ، التي تحتوي على دعم PyTorch وأساسيات الاتصال للتوازي متعدد العمليات عبر العقد في الكتلة:

...
import torch
import torch.distributed as dist
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torch.utils.data
import torch.utils.data.distributed
import torchvision
from torchvision import datasets, transforms
...

نقوم بإنشاء نموذج بسيط لتصنيف الصور باستخدام مجموعة من الطبقات الالتفافية ، والتجميع الأقصى ، والطبقات الخطية التي يتم فيها تطبيق وظيفة تنشيط إعادة التشغيل في التمرير الأمامي لتدريب النموذج:

# Define models
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 6, 5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 5 * 5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)

def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16 * 5 * 5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x

نحن نستخدم torch DataLoader الذي يجمع بين مجموعة البيانات و DistributedSampler (يقوم بتحميل مجموعة فرعية من البيانات بطريقة موزعة باستخدام torch.nn.parallel.DistributedDataParallel) ويوفر عملية واحدة أو مكرر متعدد العمليات عبر البيانات:

# Define data loader for training dataset
def _get_train_data_loader(batch_size, training_dir, is_distributed):
logger.info("Get train data loader")

train_set = torchvision.datasets.CIFAR10(root=training_dir,
train=True,
download=False,
transform=_get_transforms())

train_sampler = (
torch.utils.data.distributed.DistributedSampler(train_set) if is_distributed else None
)

return torch.utils.data.DataLoader(
train_set,
batch_size=batch_size,
shuffle=train_sampler is None,
sampler=train_sampler)
...

إذا كانت مجموعة التدريب تحتوي على وحدات معالجة رسومات (GPU) ، يقوم البرنامج النصي بتشغيل التدريب على أجهزة CUDA ويحمل متغير الجهاز جهاز CUDA الافتراضي:

device = "cuda" if torch.cuda.is_available() else "cpu"
...

قبل تشغيل التدريب الموزع باستخدام PyTorch DistributedDataParallel لتشغيل المعالجة الموزعة على عقد متعددة ، تحتاج إلى تهيئة البيئة الموزعة عن طريق الاتصال init_process_group. تتم تهيئة هذا على كل جهاز من مجموعة التدريب.

dist.init_process_group(backend=args.backend, rank=host_rank, world_size=world_size)
...

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

model = Net().to(device)

if is_distributed:
model = torch.nn.parallel.DistributedDataParallel(model)

...

3.2 تثبيت المكتبات

ستقوم بتثبيت جميع المكتبات اللازمة لتشغيل مثال التدريب الموزع PyTorch. يتضمن ذلك Kubeflow Pipelines SDK و Training Operator Python SDK وعميل Python لـ Kubernetes و Amazon SageMaker Python SDK.

#Please run the below commands to install necessary libraries

!pip install kfp==1.8.4

!pip install kubeflow-training

!pip install kubernetes

!pip install sagemaker

3.3 قم بتشغيل تدريب وظيفي موزع على PyTorch على Kubernetes

دفتر مذكرات 1_submit_pytorchdist_k8s.ipynb ينشئ ملف PyTorchJob YAML لمورد Kubernetes المخصص باستخدام تدريب Kubeflow وعميل Kubernetes Python SDK. فيما يلي بعض المقتطفات المهمة من دفتر الملاحظات هذا.

نقوم بإنشاء PyTorchJob YAML مع الحاويات الأولية والعاملة كما هو موضح في الكود التالي:

# Define PyTorchJob custom resource manifest
pytorchjob = V1PyTorchJob(
api_version="kubeflow.org/v1",
kind="PyTorchJob",
metadata=V1ObjectMeta(name=pytorch_distributed_jobname,namespace=user_namespace),
spec=V1PyTorchJobSpec(
run_policy=V1RunPolicy(clean_pod_policy="None"),
pytorch_replica_specs={"Master": master,
"Worker": worker}
)
)

يتم إرسال هذا إلى مستوى التحكم Kubernetes باستخدام PyTorchJobClient:

# Creates and Submits PyTorchJob custom resource file to Kubernetes
pytorchjob_client = PyTorchJobClient()

pytorch_job_manifest=pytorchjob_client.create(pytorchjob):

اعرض سجلات تدريب Kubernetes

يمكنك عرض سجلات التدريب إما من نفس دفتر Jupyter باستخدام كود Python أو من غلاف عميل Kubernetes.

3.4 إنشاء خط أنابيب Kubeflow مختلط

دفتر مذكرات 2_create_pipeline_k8s_sagemaker.ipynb يقوم بإنشاء خط أنابيب Kubeflow مختلط استنادًا إلى متغير وقت التشغيل الشرطي training_runtime، كما هو موضح في الكود التالي. دفتر الملاحظات يستخدم SDK Kubeflow خطوط الأنابيب وقد تم توفير مجموعة من حزم Python لتحديد خطوط سير عمل ML وتشغيلها. كجزء من SDK هذا ، نستخدم الحزم التالية:

  • مصمم حزمة اللغة الخاصة بالمجال (DSL) dsl.pipeline، الذي يزين دوال بايثون لإرجاع خط أنابيب
  • dsl.Condition الحزمة ، والتي تمثل مجموعة من العمليات التي يتم تشغيلها فقط عند استيفاء شرط معين ، مثل التحقق من training_runtime قيمة sagemaker or kubernetes

انظر الكود التالي:

# Define your training runtime value with either 'sagemaker' or 'kubernetes'
training_runtime='sagemaker'

# Create Hybrid Pipeline using Kubeflow PyTorch Training Operators and Amazon SageMaker Service
@dsl.pipeline(name="PyTorch Training pipeline", description="Sample training job test")
def pytorch_cnn_pipeline():

# Pipeline Step 1: to evaluate the condition. You can enter any logic here. For demonstration we are checking if GPU is needed for training
condition_result = check_condition_op(training_runtime)

# Pipeline Step 2: to run training on Kuberentes using PyTorch Training Operators. This will be executed if gpus are not needed
with dsl.Condition(condition_result.output == 'kubernetes', name="PyTorch_Comp"):
train_task = pytorch_job_op(
name=training_job_name,
namespace=user_namespace,
master_spec=json.dumps(master_spec_loaded), # Please refer file at pipeline_yaml_specifications/pipeline_master_spec.yml
worker_spec=json.dumps(worker_spec_loaded), # Please refer file at pipeline_yaml_specifications/pipeline_worker_spec.yml
delete_after_done=False
).after(condition_result)

# Pipeline Step 3: to run training on SageMaker using SageMaker Components for Pipeline. This will be executed if gpus are needed
with dsl.Condition(condition_result.output == 'sagemaker', name="SageMaker_Comp"):
training = sagemaker_train_op(
region=region,
image=train_image,
job_name=training_job_name,
training_input_mode=training_input_mode,
hyperparameters='{ 
"backend": "'+str(pytorch_backend)+'", 
"batch-size": "64", 
"epochs": "3", 
"lr": "'+str(learning_rate)+'", 
"model-type": "custom", 
"sagemaker_container_log_level": "20", 
"sagemaker_program": "cifar10-distributed-gpu-final.py", 
"sagemaker_region": "us-west-2", 
"sagemaker_submit_directory": "'+source_s3+'" 
}',
channels=channels,
instance_type=instance_type,
instance_count=instance_count,
volume_size=volume_size,
max_run_time=max_run_time,
model_artifact_path=f's3://{bucket_name}/jobs',
network_isolation=network_isolation,
traffic_encryption=traffic_encryption,
role=role,
vpc_subnets=subnet_id,
vpc_security_group_ids=security_group_id
).after(condition_result)

نقوم بتكوين تدريب SageMaker الموزع باستخدام مثيلين ml.p3.2xlarge.

بعد تحديد خط الأنابيب ، يمكنك تجميع خط الأنابيب لمواصفات Argo YAML باستخدام Kubeflow Pipelines SDK's kfp.compiler حزمة. يمكنك تشغيل خط الأنابيب هذا باستخدام عميل Kubeflow Pipeline SDK ، الذي يستدعي نقطة نهاية خدمة خطوط الأنابيب ويمرر رؤوس المصادقة المناسبة مباشرةً من دفتر الملاحظات. انظر الكود التالي:

# DSL Compiler that compiles pipeline functions into workflow yaml.
kfp.compiler.Compiler().compile(pytorch_cnn_pipeline, "pytorch_cnn_pipeline.yaml")

# Connect to Kubeflow Pipelines using the Kubeflow Pipelines SDK client
client = kfp.Client()

experiment = client.create_experiment(name="kubeflow")

# Run a specified pipeline
my_run = client.run_pipeline(experiment.id, "pytorch_cnn_pipeline", "pytorch_cnn_pipeline.yaml")

# Please click “Run details” link generated below this cell to view your pipeline. You can click every pipeline step to see logs.

إذا حصلت على ملف sagemaker import خطأ ، قم بتشغيل! pip قم بتثبيت sagemaker وأعد تشغيل kernel (على ملف نواة القائمة، اختر أعد تشغيل Kernel).

اختيار تشغيل التفاصيل الارتباط الموجود أسفل الخلية الأخيرة لعرض خط أنابيب Kubeflow.

كرر خطوة إنشاء خط الأنابيب باستخدام training_runtime='kubernetes' لاختبار تشغيل خط الأنابيب في بيئة Kubernetes. ال training_runtime يمكن أيضًا تمرير متغير في خط أنابيب CI / CD في سيناريو الإنتاج.

اعرض سجلات تشغيل خط أنابيب Kubeflow لمكون SageMaker

تُظهر لقطة الشاشة التالية تفاصيل خط الأنابيب الخاصة بنا لمكون SageMaker.

اختر خطوة وظيفة التدريب وعلى سجلات علامة التبويب ، اختر ارتباط سجلات CloudWatch للوصول إلى سجلات SageMaker.

تُظهر لقطة الشاشة التالية سجلات CloudWatch لكل من مثيلات ml.p3.2xlarge.

اختر أيًا من المجموعات لمشاهدة السجلات.

اعرض سجلات تشغيل خط أنابيب Kubeflow لمكون Kubeflow PyTorchJob Launcher

توضح لقطة الشاشة التالية تفاصيل خط الأنابيب لمكون Kubeflow الخاص بنا.

قم بتشغيل الأوامر التالية باستخدام Kubectl على هيكل عميل Kubernetes المتصل بمجموعة Kubernetes لمشاهدة السجلات (استبدل مساحة الاسم وأسماء البودات):

kubectl get pods -n kubeflow-user-example-com
kubectl logs  -n kubeflow-user-example-com -f

4.1 التنظيف

لتنظيف جميع الموارد التي أنشأناها في الحساب ، نحتاج إلى إزالتها بترتيب عكسي.

  1. احذف تثبيت Kubeflow عن طريق التشغيل ./kubeflow-remove.sh في ال aws-do-kubeflow وعاء. المجموعة الأولى من الأوامر اختيارية ويمكن استخدامها في حال لم يكن لديك بالفعل غلاف أوامر في ملف aws-do-kubeflow الحاوية مفتوحة.
    cd aws-do-kubeflow
    ./status.sh
    ./start.sh
    ./exec.sh
    
    ./kubeflow-remove.sh

  2. XNUMX. من قائمة aws-do-eks مجلد الحاوية ، قم بإزالة وحدة تخزين EFS. المجموعة الأولى من الأوامر اختيارية ويمكن استخدامها في حال لم يكن لديك بالفعل غلاف أوامر في ملف aws-do-eks الحاوية مفتوحة.
    cd aws-do-eks
    ./status.sh
    ./start.sh
    ./exec.sh
    
    cd /eks/deployment/csi/efs
    ./delete.sh
    ./efs-delete.sh

    يعد حذف Amazon EFS ضروريًا لتحرير واجهة الشبكة المرتبطة بـ VPC الذي أنشأناه لمجموعتنا. لاحظ أن حذف وحدة تخزين EFS يدمر أي بيانات مخزنة عليه.

  3. XNUMX. من قائمة aws-do-eks حاوية ، قم بتشغيل ملف eks-delete.sh البرنامج النصي لحذف الكتلة وأي موارد أخرى مرتبطة بها ، بما في ذلك VPC:
    cd /eks
    ./eks-delete.sh

نبذة عامة

في هذا المنشور ، ناقشنا بعض التحديات النموذجية للتدريب النموذجي الموزع وتدفقات عمل ML. قدمنا ​​نظرة عامة على Kubeflow حول توزيع AWS وشاركنا مشروعين مفتوحين المصدر (aws-do-eks و aws-do-kubeflow) التي تبسط توفير البنية التحتية ونشر Kubeflow عليها. أخيرًا ، وصفنا وأظهرنا بنية هجينة تمكّن أعباء العمل من الانتقال بسلاسة بين التشغيل على Kubernetes المُدارة ذاتيًا والبنية التحتية SageMaker المُدارة بالكامل. نحن نشجعك على استخدام هذه البنية الهجينة لحالات الاستخدام الخاصة بك.

يمكنك متابعة مستودع AWS Labs لتتبع جميع مساهمات AWS في Kubeflow. يمكنك أيضًا أن تجدنا على قناة Kubeflow #AWS Slack؛ ستساعدنا ملاحظاتك هناك في تحديد أولويات الميزات التالية للمساهمة في مشروع Kubeflow.

شكر خاص لـ Sree Arasanagatta (مدير تطوير البرمجيات AWS ML) و Suraj Kota (مهندس تطوير البرمجيات) على دعمهما لإطلاق هذا المنشور.


عن المؤلفين

كانوالجيت خورمي هو مهندس حلول متخصص في AI / ML في Amazon Web Services. إنه يعمل مع منتج AWS والهندسة والعملاء لتقديم التوجيه والمساعدة الفنية لمساعدتهم على تحسين قيمة حلول ML المختلطة الخاصة بهم عند استخدام AWS. Kanwaljit متخصص في مساعدة العملاء في استخدام الحاويات وتطبيقات التعلم الآلي.

جوتام كومار هو مهندس برمجيات مع AWS AI Deep Learning. لقد طور حاويات AWS Deep Learning و AWS Deep Learning AMI. إنه متحمس لبناء أدوات وأنظمة للذكاء الاصطناعي. في أوقات فراغه ، يستمتع بركوب الدراجات وقراءة الكتب.

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

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة

الدردشة معنا

أهلاً! كيف يمكنني مساعدك؟