تحليل إنفاق Amazon SageMaker وتحديد فرص تحسين التكلفة استنادًا إلى الاستخدام ، الجزء 3: المعالجة ومهام رانجلر البيانات | خدمات أمازون ويب

تحليل إنفاق Amazon SageMaker وتحديد فرص تحسين التكلفة استنادًا إلى الاستخدام ، الجزء 3: المعالجة ومهام رانجلر البيانات | خدمات أمازون ويب

في عام 2021 ، أطلقنا خدمات دعم AWS الاستباقية كجزء من دعم مؤسسة AWS يخطط. منذ طرحه ، ساعدنا مئات العملاء على تحسين أعباء عملهم ، وتعيين حواجز الحماية ، وتحسين رؤية تكلفة أعباء عمل التعلم الآلي (ML) واستخدامهم.

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

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

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

يقدم SageMaker ميزتين مصممتين خصيصًا للمساعدة في حل هذه المشكلات: معالجة SageMaker و Data Wrangler. تمكّنك SageMaker Processing من تشغيل المعالجة المسبقة والمعالجة اللاحقة وتقييم النماذج بسهولة على بنية تحتية مُدارة بالكامل. يقلل Data Wrangler الوقت الذي يستغرقه تجميع البيانات وإعدادها عن طريق تبسيط عملية تكامل مصدر البيانات وهندسة الميزات باستخدام واجهة مرئية واحدة وبيئة معالجة بيانات موزعة بالكامل.

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

في هذا المنشور ، نقوم بتحليل عوامل التسعير وتقديم إرشادات تحسين التكلفة لوظائف SageMaker Processing و Data Wrangler.

معالجة SageMaker

SageMaker Processing هو حل مُدار لتشغيل معالجة البيانات وأحمال عمل تقييم النماذج. يمكنك استخدامه في خطوات معالجة البيانات مثل هندسة الميزات والتحقق من صحة البيانات وتقييم النموذج وتفسير النموذج في تدفقات عمل ML. باستخدام SageMaker Processing ، يمكنك إحضار نصوص المعالجة المخصصة الخاصة بك واختيار إنشاء حاوية مخصصة أو استخدام حاوية مُدارة من SageMaker مع أطر عمل مشتركة مثل scikit-Learn و Lime و Spark والمزيد.

تفرض SageMaker Processing عليك رسومًا مقابل نوع المثيل الذي تختاره ، بناءً على مدة الاستخدام والتخزين المتاح المرفق بهذا المثيل. في الجزء الأول ، أوضحنا كيفية البدء في استخدام مستكشف تكلفة AWS لتحديد فرص تحسين التكلفة في SageMaker.

يمكنك تصفية تكاليف المعالجة عن طريق تطبيق عامل تصفية على نوع الاستخدام. أسماء أنواع الاستخدام هذه هي كما يلي:

  • REGION-Processing:instanceType (فمثلا، USE1-Processing:ml.m5.large)
  • REGION-Processing:VolumeUsage.gp2 (فمثلا، USE1-Processing:VolumeUsage.gp2)

لمراجعة تكلفة معالجة SageMaker في Cost Explorer ، ابدأ بالتصفية باستخدام SageMaker لـ العطاءولل نوع الاستخدام، يمكنك تحديد جميع مثيلات المعالجة التي تعمل لساعات عن طريق إدخال ملف processing:ml البادئة واختيار القائمة في القائمة.

تحليل إنفاق Amazon SageMaker وتحديد فرص تحسين التكلفة بناءً على الاستخدام، الجزء 3: وظائف المعالجة والبيانات Wrangler | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

تجنب التكلفة في المعالجة وتطوير خطوط الأنابيب

قبل تحديد الحجم المناسب وتحسين مدة تشغيل وظيفة معالجة SageMaker ، نتحقق من المقاييس عالية المستوى حول عمليات تشغيل الوظائف السابقة. يمكنك الاختيار من بين طريقتين للقيام بذلك.

أولاً ، يمكنك الوصول إلى ملف اﻟﻤﻌﺎﻟﺠﺔ صفحة على وحدة تحكم SageMaker.

تحليل إنفاق Amazon SageMaker وتحديد فرص تحسين التكلفة بناءً على الاستخدام، الجزء 3: وظائف المعالجة والبيانات Wrangler | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

بدلا من ذلك ، يمكنك استخدام واجهة برمجة تطبيقات list_processing_jobs.

تحليل إنفاق Amazon SageMaker وتحديد فرص تحسين التكلفة بناءً على الاستخدام، الجزء 3: وظائف المعالجة والبيانات Wrangler | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

يمكن أن تكون حالة مهمة المعالجة InProgress, Completed, Failed, Stoppingالطرق أو Stopped.

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

تحسين التكلفة المتعلقة بالإدخال / الإخراج

توفر وظائف SageMaker Processing إمكانية الوصول إلى ثلاثة مصادر بيانات كجزء من الإدارة إدخال المعالجة: خدمة تخزين أمازون البسيطة (Amazon S3) ، أمازون أثيناو الأمازون الأحمر. لمزيد من المعلومات ، يرجى الرجوع إلى المعالجة, AthenaDataset التعريفو الانزياح الأحمر، على التوالي.

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

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

في المثال التالي لسجل العمل ، نرى أن معالجة البرنامج النصي استغرقت 15 دقيقة (بين Start custom script و End custom script).

تحليل إنفاق Amazon SageMaker وتحديد فرص تحسين التكلفة بناءً على الاستخدام، الجزء 3: وظائف المعالجة والبيانات Wrangler | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

ومع ذلك ، في وحدة تحكم SageMaker ، نرى أن الوظيفة استغرقت 4 دقائق إضافية (حوالي 25٪ من إجمالي وقت تشغيل الوظيفة).

تحليل إنفاق Amazon SageMaker وتحديد فرص تحسين التكلفة بناءً على الاستخدام، الجزء 3: وظائف المعالجة والبيانات Wrangler | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

هذا يرجع إلى حقيقة أنه بالإضافة إلى الوقت الذي استغرقه البرنامج النصي للمعالجة ، فإن تنزيل البيانات التي يديرها SageMaker وتحميلها استغرق أيضًا وقتًا (4 دقائق). إذا ثبت أن هذا يمثل جزءًا كبيرًا من التكلفة ، ففكر في طرق بديلة لتسريع وقت التنزيل ، مثل استخدام واجهة برمجة تطبيقات Boto3 مع المعالجة المتعددة لتنزيل الملفات بشكل متزامن ، أو استخدام مكتبات الجهات الخارجية مثل WebDataset أو s5cmd لتنزيل أسرع من Amazon S3 . لمزيد من المعلومات ، يرجى الرجوع إلى موازاة أعباء العمل S3 مع s5cmd. لاحظ أن مثل هذه الأساليب قد تفرض رسومًا في Amazon S3 بسبب نقل البيانات.

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

كما ذكرنا سابقًا ، تدعم SageMaker Processing أيضًا Athena و Amazon Redshift كمصادر للبيانات. عند إعداد مهمة معالجة باستخدام هذه المصادر ، يقوم SageMaker تلقائيًا بنسخ البيانات إلى Amazon S3 ، ويقوم مثيل المعالجة بجلب البيانات من موقع Amazon S3. ومع ذلك ، عند انتهاء المهمة ، لا توجد عملية تنظيف مُدارة وستظل البيانات المنسوخة في Amazon S3 وقد تتحمل رسوم تخزين غير مرغوب فيها. لذلك ، عند استخدام مصادر بيانات Athena و Amazon Redshift ، تأكد من تنفيذ إجراء تنظيف ، مثل وظيفة Lambda التي يعمل وفقًا لجدول زمني أو في خطوة لامدا كجزء من خط أنابيب SageMaker.

مثل التنزيل ، يمكن أن يكون تحميل عناصر المعالجة أيضًا فرصة للتحسين. عندما يتم تكوين مخرجات مهمة المعالجة باستخدام ملف ProcessingS3Output المعلمة ، يمكنك تحديد أي S3UploadMode ليستخدم. ال S3UploadMode القيمة الافتراضية للمعلمة هي EndOfJob، والتي ستجعل SageMaker يقوم بتحميل النتائج بعد اكتمال المهمة. ومع ذلك ، إذا كانت مهمة المعالجة تنتج ملفات متعددة ، فيمكنك تعيين S3UploadMode إلى Continuous، وبالتالي تمكين تحميل العناصر الأثرية في وقت واحد مع استمرار المعالجة ، وتقليل وقت تشغيل الوظيفة.

حالات مهمة معالجة الحجم الصحيح

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

لضبط اختيار المثيل بدقة ، نبدأ بتحليل مقاييس مهمة المعالجة في CloudWatch. لمزيد من المعلومات ، يرجى الرجوع إلى راقب Amazon SageMaker باستخدام Amazon CloudWatch.

تجمع CloudWatch البيانات الأولية من SageMaker وتعالجها في مقاييس قابلة للقراءة وشبه في الوقت الفعلي. على الرغم من الاحتفاظ بهذه الإحصائيات لمدة 15 شهرًا ، إلا أن وحدة تحكم CloudWatch تقصر البحث على المقاييس التي تم تحديثها في الأسبوعين الماضيين (وهذا يضمن عرض الوظائف الحالية فقط). يمكن العثور على مقاييس وظائف المعالجة في / aws / sagemaker / ProcessingJobs مساحة الاسم والمقاييس التي تم جمعها هي CPUUtilization, MemoryUtilization, GPUUtilization, GPUMemoryUtilizationو DiskUtilization.

تُظهر لقطة الشاشة التالية مثالاً في CloudWatch عن مهمة المعالجة التي رأيناها سابقًا.

تحليل إنفاق Amazon SageMaker وتحديد فرص تحسين التكلفة بناءً على الاستخدام، الجزء 3: وظائف المعالجة والبيانات Wrangler | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

في هذا المثال ، نرى متوسط ​​قيم وحدة المعالجة المركزية والذاكرة (وهي القيمة الافتراضية في CloudWatch): متوسط ​​استخدام وحدة المعالجة المركزية هو 0.04٪ ، والذاكرة 1.84٪ ، واستخدام القرص 13.7٪. من أجل الحجم الصحيح ، ضع في اعتبارك دائمًا الحد الأقصى لاستخدام وحدة المعالجة المركزية والذاكرة (في هذا المثال ، كان الحد الأقصى لاستخدام وحدة المعالجة المركزية 98٪ في أول 3 دقائق). كقاعدة عامة ، إذا كان الحد الأقصى لاستخدام وحدة المعالجة المركزية والذاكرة لديك باستمرار أقل من 40٪ ، فيمكنك قطع الجهاز بأمان إلى النصف. على سبيل المثال ، إذا كنت تستخدم مثيل ml.c5.4xlarge ، فيمكنك الانتقال إلى حجم ml.c5.2xlarge ، والذي قد يقلل التكلفة بنسبة 50٪.

وظائف Data Wrangler

البيانات رانجلر هي سمة من سمات أمازون ساجميكر ستوديو يوفر حلاً قابلاً للتكرار وقابلًا للتطوير لاستكشاف البيانات ومعالجتها. يمكنك استخدام واجهة Data Wrangler لاستيراد بياناتك وتحليلها وتحويلها وتوصيفها بشكل تفاعلي. يتم تسجيل هذه الخطوات في وصفة (ملف .flow) يمكنك استخدامها بعد ذلك في مهمة Data Wrangler. يساعدك هذا في إعادة تطبيق نفس تحويلات البيانات على بياناتك وأيضًا توسيع نطاق وظيفة معالجة البيانات المجمعة الموزعة ، إما كجزء من خط أنابيب ML أو بشكل مستقل.

للحصول على إرشادات حول تحسين تطبيق Data Wrangler في Studio ، راجع الجزء 2 في هذه السلسلة.

في هذا القسم ، نركز على تحسين وظائف Data Wrangler.

يستخدم البيانات رانجلر وظائف معالجة SageMaker Spark مع حاوية Data Wrangler المُدارة. تقوم هذه الحاوية بتشغيل الاتجاهات من ملف .flow في الوظيفة. مثل أي مهام معالجة ، تفرض عليك Data Wrangler رسومًا مقابل المثيلات التي تختارها ، استنادًا إلى مدة الاستخدام والتخزين المقدم المرفق بهذا المثيل.

في Cost Explorer ، يمكنك تصفية تكاليف مهام Data Wrangler عن طريق تطبيق عامل تصفية على نوع الاستخدام. أسماء أنواع الاستخدام هذه هي:

  • REGION-processing_DW:instanceType (فمثلا، USE1-processing_DW:ml.m5.large)
  • REGION-processing_DW:VolumeUsage.gp2 (فمثلا، USE1-processing_DW:VolumeUsage.gp2)

لعرض تكلفة Data Wrangler الخاصة بك في Cost Explorer ، قم بتصفية الخدمة لاستخدام SageMaker و نوع الاستخدام، اختر ال processing_DW البادئة وحدد القائمة في القائمة. سيُظهر لك هذا كلاً من التكاليف المرتبطة باستخدام المثيل (بالساعات) وحجم التخزين (جيجابايت). (إذا كنت تريد الاطلاع على تكاليف Studio Data Wrangler ، يمكنك تصفية نوع الاستخدام حسب ملف Studio_DW اختصار.)

تحليل إنفاق Amazon SageMaker وتحديد فرص تحسين التكلفة بناءً على الاستخدام، الجزء 3: وظائف المعالجة والبيانات Wrangler | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

الحجم الصحيح وجدولة حالات مهام Data Wrangler

في الوقت الحالي ، يدعم Data Wrangler مثيلات m5 فقط بأحجام المثيل التالية: ml.m5.4xlarge و ml.m5.12xlarge و ml.m5.24xlarge. يمكنك استخدام ميزة الوظيفة الموزعة لضبط تكلفة وظيفتك بدقة. على سبيل المثال ، افترض أنك بحاجة إلى معالجة مجموعة بيانات تتطلب 350 جيجا بايت في ذاكرة الوصول العشوائي. قد لا تتمكن المعالجة من الحجم الكبير (4 جيجا بايت) والكبير 128 × (12 جيجا بايت) وسيقودك إلى استخدام مثيل m256xlarge (5.24 جيجا بايت). ومع ذلك ، يمكنك استخدام مثيلين m768xlarge (5.12 * 2 جيجا بايت = 256 جيجا بايت) وتقليل التكلفة بنسبة 512٪ أو ثلاث مثيلات m40xlarge (5.4 * 3 جيجا بايت = 128 جيجا بايت) وحفظ 384٪ من حجم m50xlarge تكلفة المثيل. يجب أن تلاحظ أن هذه تقديرات وأن المعالجة الموزعة قد تؤدي إلى بعض النفقات العامة التي ستؤثر على وقت التشغيل الكلي.

عند تغيير نوع المثيل ، تأكد من تحديث ملف تكوين شرارة وفقاً لذلك. على سبيل المثال ، إذا كان لديك مهمة مثيل أولية ml.m5.4xlarge تم تكوينها بخصائص spark.driver.memory تم ضبطه على 2048 و spark.executor.memory تم ضبطها على 55742 ، ثم توسيع نطاقها لاحقًا إلى ml.m5.12xlarge ، يجب زيادة قيم التكوين هذه ، وإلا فإنها ستكون العقبة في مهمة المعالجة. يمكنك تحديث هذه المتغيرات في Data Wrangler GUI أو في ملف التكوين الملحق بمسار التكوين (انظر الأمثلة التالية).

تحليل إنفاق Amazon SageMaker وتحديد فرص تحسين التكلفة بناءً على الاستخدام، الجزء 3: وظائف المعالجة والبيانات Wrangler | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

تحليل إنفاق Amazon SageMaker وتحديد فرص تحسين التكلفة بناءً على الاستخدام، الجزء 3: وظائف المعالجة والبيانات Wrangler | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

ميزة أخرى مقنعة في Data Wrangler هي القدرة على تعيين وظيفة مجدولة. إذا كنت تقوم بمعالجة البيانات بشكل دوري ، فيمكنك إنشاء جدول لتشغيل مهمة المعالجة تلقائيًا. على سبيل المثال ، يمكنك إنشاء جدول يقوم بتشغيل مهمة معالجة تلقائيًا عندما تحصل على بيانات جديدة (على سبيل المثال ، راجع تصدير إلى Amazon S3 or قم بالتصدير إلى متجر ميزات Amazon SageMaker). ومع ذلك ، يجب أن تلاحظ أنه عند إنشاء جدول ، يقوم Data Wrangler بإنشاء ملف eventRule في EventBridge. هذا يعني أنه سيتم محاسبتك أيضًا على قواعد الأحداث التي تقوم بإنشائها (بالإضافة إلى المثيلات المستخدمة لتشغيل مهمة المعالجة). لمزيد من المعلومات، راجع تسعير Amazon EventBridge.

وفي الختام

في هذا المنشور ، قدمنا ​​إرشادات حول تحليل التكلفة وأفضل الممارسات عند المعالجة المسبقة

البيانات باستخدام وظائف SageMaker Processing و Data Wrangler. على غرار المعالجة المسبقة ، هناك العديد من الخيارات وإعدادات التكوين في بناء نماذج ML والتدريب عليها وتشغيلها والتي قد تؤدي إلى تكاليف غير ضرورية. لذلك ، نظرًا لأن التعلم الآلي يثبت نفسه كأداة قوية عبر الصناعات ، يجب أن تظل أعباء العمل في ML فعالة من حيث التكلفة.

يقدم SageMaker مجموعة ميزات واسعة وعميقة لتسهيل كل خطوة في خط أنابيب ML.

توفر هذه القوة أيضًا فرصًا مستمرة لتحسين التكلفة دون المساس بالأداء أو خفة الحركة.


حول المؤلف

تحليل إنفاق Amazon SageMaker وتحديد فرص تحسين التكلفة بناءً على الاستخدام، الجزء 3: وظائف المعالجة والبيانات Wrangler | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.ديبالي راجال هو أخصائي أول في الذكاء الاصطناعي / تعلم الآلة في AWS. تعمل مع عملاء المؤسسات الذين يقدمون إرشادات تقنية مع أفضل الممارسات لنشر حلول AI / ML وصيانتها في نظام AWS البيئي. عملت مع مجموعة واسعة من المنظمات في العديد من حالات استخدام التعلم العميق التي تتضمن البرمجة اللغوية العصبية ورؤية الكمبيوتر. إنها شغوفة بتمكين المنظمات للاستفادة من الذكاء الاصطناعي التوليدي لتعزيز تجربة استخدامها. تستمتع في أوقات فراغها بالأفلام والموسيقى والأدب.

تحليل إنفاق Amazon SageMaker وتحديد فرص تحسين التكلفة بناءً على الاستخدام، الجزء 3: وظائف المعالجة والبيانات Wrangler | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.أوري روزنبرغ هو المدير الفني المتخصص في الذكاء الاصطناعي والتعلم الآلي في أوروبا والشرق الأوسط وأفريقيا. مقرها خارج إسرائيل ، تعمل Uri على تمكين عملاء المؤسسات في جميع الأشياء من ML لتصميم وبناء وتشغيل على نطاق واسع. في أوقات فراغه ، يستمتع بركوب الدراجات والمشي لمسافات طويلة ومشاهدة غروب الشمس (مرة واحدة في اليوم على الأقل).

الطابع الزمني:

اكثر من التعلم الآلي من AWS