إنشاء مثيل حوسبة Azure التعلم الآلي وإدارته
تعرف على كيفية إنشاء مثيل حوسبة وإدارته في مساحة عمل Azure التعلم الآلي.
استخدم مثيل حوسبة كبيئة تطوير تم تكوينها وإدارتها بالكامل في السحابة. للتطوير والاختبار، يمكنك أيضا استخدام المثيل كهدف حساب تدريبي أو لهدف استدلال. يمكن لمثيل الحوسبة تشغيل مهام متعددة بالتوازي ويحتوي على قائمة انتظار مهام. كبيئة تطوير، لا يمكن مشاركة مثيل الحوسبة مع مستخدمين آخرين في مساحة العمل الخاصة بك.
ستتعلم في هذا المقال طريقة إجراء ما يلي:
- إنشاء مثيل حوسبة
- إدارة مثيل حوسبة (بدء التشغيل والإيقاف وإعادة التشغيل والحذف)
- إنشاء جدول زمني لبدء مثيل الحوسبة (معاينة) وإيقافه تلقائيا
- استخدام برنامج نصي للإعداد لتخصيص مثيل الحوسبة وتكوينه
يمكن لمثيلات الحوسبة تشغيل المهام بأمان في بيئة شبكة افتراضية، دون مطالبة المؤسسات بفتح منافذ SSH. يتم تنفيذ المهمة في بيئة حاوية وحزم تبعيات النموذج الخاص بك في حاوية Docker.
المتطلبات الأساسية
مساحة عمل Azure التعلم الآلي. لمزيد من المعلومات، راجع إنشاء مساحة عمل Azure التعلم الآلي.
ملحق Azure CLI لخدمة التعلم الآلي (v1) أو Azure التعلم الآلي Python SDKأوملحق Azure التعلم الآلي Visual Studio Code.
إنشاء
هام
العناصر التي تم وضع علامة عليها (معاينة) أدناه موجودة حاليا في المعاينة العامة. يتم توفير إصدار المعاينة بدون اتفاقية مستوى الخدمة، ولا يوصى به لأحمال عمل الإنتاج. بعض الميزات ربما لا تكون مدعمة أو بها بعض القدرات المقيدة لمزيد من المعلومات، راجع شروط الاستخدام التكميلية لمعاينات Microsoft Azure.
تقدير الوقت: حوالي 5 دقائق.
يعد إنشاء مثيل حوسبة عملية لمرة واحدة لمساحة العمل الخاصة بك. يمكنك إعادة استخدام الحوسبة كمحطة عمل تطوير أو كهدف حساب للتدريب. يمكنك إرفاق مثيلات حوسبة متعددة بمساحة العمل الخاصة بك.
يتم توحيد النوى المخصصة لكل منطقة لكل حصة تناسبية لعائلة VM وإجمالي الحصة النسبية الإقليمية، والتي تنطبق على إنشاء مثيل الحوسبة، ومشاركتها مع حصة مجموعة الحوسبة الخاصة بتدريب Azure التعلم الآلي. لا يؤدي إيقاف مثيل الحوسبة إلى تحرير الحصة النسبية لضمان قدرتك على إعادة تشغيل مثيل الحوسبة. لا يمكن تغيير حجم الجهاز الظاهري لمثيل الحوسبة بمجرد إنشائه.
يوضح المثال التالي كيفية إنشاء مثيل حوسبة:
import datetime
import time
from azureml.core.compute import ComputeTarget, ComputeInstance
from azureml.core.compute_target import ComputeTargetException
# Choose a name for your instance
# Compute instance name should be unique across the azure region
compute_name = "ci{}".format(ws._workspace_id)[:10]
# Verify that instance does not exist already
try:
instance = ComputeInstance(workspace=ws, name=compute_name)
print('Found existing instance, use it.')
except ComputeTargetException:
compute_config = ComputeInstance.provisioning_configuration(
vm_size='STANDARD_D3_V2',
ssh_public_access=False,
# vnet_resourcegroup_name='<my-resource-group>',
# vnet_name='<my-vnet-name>',
# subnet_name='default',
# admin_user_ssh_public_key='<my-sshkey>'
)
instance = ComputeInstance.create(ws, compute_name, compute_config)
instance.wait_for_completion(show_output=True)
لمزيد من المعلومات حول الفئات والأساليب والمعلمات المستخدمة في هذا المثال، راجع المستندات المرجعية التالية:
يمكنك أيضا إنشاء مثيل حوسبة باستخدام قالب Azure Resource Manager.
تمكين الوصول إلى SSH
يتم تعطيل الوصول إلى SSH افتراضيا. لا يمكن تغيير الوصول إلى SSH بعد الإنشاء. تأكد من تمكين الوصول إذا كنت تخطط لتصحيح الأخطاء بشكل تفاعلي باستخدام VS Code Remote.
بعد تحديد التالي: الإعدادات متقدم:
- قم بتشغيل تمكين الوصول إلى SSH.
- في مصدر المفتاح العام SSH، حدد أحد الخيارات من القائمة المنسدلة:
- إذا قمت بإنشاء زوج مفاتيح جديد:
- أدخل اسما للمفتاح في اسم زوج المفاتيح.
- حدد "Create".
- حدد تنزيل المفتاح الخاص وقم بإنشاء حوسبة. عادة ما يتم تنزيل المفتاح في مجلد التنزيلات .
- إذا قمت بتحديد استخدام المفتاح العمومي الموجود المخزن في Azure، فابحث عن المفتاح الموجود في المفتاح المخزن وحدده.
- إذا قمت بتحديد استخدام المفتاح العمومي الموجود، فقم بتوفير مفتاح RSA عام بتنسيق سطر واحد (بدءا من "ssh-rsa") أو تنسيق PEM متعدد الأسطر. يمكنك إنشاء مفاتيح SSH باستخدام ssh-keygen على Linux و OS X ، أو PuTTYGen على Windows.
- إذا قمت بإنشاء زوج مفاتيح جديد:
بمجرد إنشاء مثيل الحوسبة وتشغيله، راجع الاتصال مع وصول SSH.
إنشاء نيابة عن (معاينة)
بصفتك مسؤولا، يمكنك إنشاء مثيل حوسبة نيابة عن عالم بيانات وتعيين المثيل له من خلال:
الاستوديو، باستخدام الإعدادات المتقدمة
قالب Azure Resource Manager. للحصول على تفاصيل حول كيفية العثور على TenantID وObjectID المطلوبين في هذا القالب، راجع البحث عن معرفات كائنات الهوية لتكوين المصادقة. يمكنك أيضا العثور على هذه القيم في مدخل Azure Active Directory.
REST API
يحتاج عالم البيانات الذي تقوم بإنشاء مثيل الحوسبة له إلى أذونات التحكم في الوصول المستندة إلى دور Azure (Azure RBAC) التالية:
- Microsoft.MachineLearningServices/مساحات العمل/الحوسبات/البدء/العمل
- Microsoft.MachineLearningServices/مساحات العمل/الحوسبة/الإيقاف/الإجراء
- Microsoft.MachineLearningServices/workspaces/computes/restart/action
- Microsoft.MachineLearningServices/مساحات العمل/الحوسبات/الوصول إلى التطبيقات/الإجراءات
- Microsoft.MachineLearningServices/مساحات العمل/الحوسبة/التحديثالجداول الزمنية/الإجراءات
يمكن لعالم البيانات بدء مثيل الحوسبة وإيقافه وإعادة تشغيله. يمكنهم استخدام مثيل الحوسبة من أجل:
- Jupyter
- جوبيتر لاب
- RStudio
- أجهزة الكمبيوتر المحمولة المدمجة
جدولة التشغيل والإيقاف التلقائي (معاينة)
حدد جداول زمنية متعددة للإيقاف التلقائي والتشغيل التلقائي. على سبيل المثال ، قم بإنشاء جدول زمني للبدء في الساعة 9 صباحا والتوقف في الساعة 6 مساء من الاثنين إلى الخميس ، وجدول زمني ثان يبدأ في الساعة 9 صباحا ويتوقف في الساعة 4 مساء ليوم الجمعة. يمكنك إنشاء ما مجموعه أربعة جداول لكل مثيل حوسبة.
يمكن أيضا تعريف الجداول الزمنية للإنشاء نيابة عن مثيلات الحوسبة. يمكنك إنشاء جدول زمني لإنشاء مثيل حساب في حالة توقف. هذا مفيد بشكل خاص عندما يقوم مستخدم بإنشاء مثيل حوسبة نيابة عن مستخدم آخر.
إنشاء جدول زمني في الاستوديو
في الصفحة الثانية من النموذج، افتح إظهار الإعدادات المتقدمة.
حدد إضافة جدول لإضافة جدول جديد.
حدد بدء مثيل الحوسبة أو إيقاف مثيل الحوسبة.
حدد المنطقة الزمنية.
حدد وقت بدء التشغيل أو وقت إيقاف التشغيل.
حدد الأيام التي يكون فيها هذا الجدول نشطا.
حدد إضافة جدول مرة أخرى إذا كنت تريد إنشاء جدول آخر.
بمجرد إنشاء مثيل الحوسبة، يمكنك عرض جداول جديدة أو تحريرها أو إضافتها من قسم تفاصيل مثيل الحوسبة. يرجى ملاحظة أن تصنيفات المنطقة الزمنية لا تأخذ في الاعتبار التوفير في ضوء النهار. على سبيل المثال ، (UTC + 01:00) أمستردام ، برلين ، برن ، روما ، ستوكهولم ، فيينا هي في الواقع UTC + 02:00 خلال التوقيت الصيفي.
إنشاء جدول زمني باستخدام قالب Resource Manager
يمكنك جدولة البدء والإيقاف التلقائيين لمثيل حساب باستخدام قالب Resource Manager.
في قالب Resource Manager، أضف:
"schedules": "[parameters('schedules')]"
ثم استخدم تعبيرات cron أو LogicApps لتحديد الجدول الزمني الذي يبدأ المثيل أو يوقفه في ملف المعلمة:
"schedules": {
"value": {
"computeStartStop": [
{
"triggerType": "Cron",
"cron": {
"timeZone": "UTC",
"expression": "0 18 * * *"
},
"action": "Stop",
"status": "Enabled"
},
{
"triggerType": "Cron",
"cron": {
"timeZone": "UTC",
"expression": "0 8 * * *"
},
"action": "Start",
"status": "Enabled"
},
{
"triggerType": "Recurrence",
"recurrence": {
"frequency": "Day",
"interval": 1,
"timeZone": "UTC",
"schedule": {
"hours": [17],
"minutes": [0]
}
},
"action": "Stop",
"status": "Enabled"
}
]
}
}
يمكن أن يكون للإجراء قيمة "ابدأ" أو "إيقاف".
بالنسبة لنوع المشغل ،
Recurrenceاستخدم نفس بناء الجملة مثل التطبيق المنطقي ، باستخدام مخطط التكرار هذا.بالنسبة لنوع
cronالمشغل ، استخدم بناء جملة cron القياسي:// Crontab expression format: // // * * * * * // - - - - - // | | | | | // | | | | +----- day of week (0 - 6) (Sunday=0) // | | | +------- month (1 - 12) // | | +--------- day of month (1 - 31) // | +----------- hour (0 - 23) // +------------- min (0 - 59) // // Star (*) in the value field above means all legal values as in // braces for that column. The value column can have a * or a list // of elements separated by commas. An element is either a number in // the ranges shown above or two numbers in the range separated by a // hyphen (meaning an inclusive range).
دعم Azure Policy لتعيين جدول زمني افتراضيا
استخدم نهج Azure لفرض وجود جدول إيقاف تشغيل لكل مثيل حوسبة في اشتراك أو افتراضي لجدول إذا لم يكن هناك شيء. فيما يلي نموذج لسياسة افتراضية لجدول إيقاف التشغيل في الساعة 10 مساء بتوقيت المحيط الهادي.
{
"mode": "All",
"policyRule": {
"if": {
"allOf": [
{
"field": "Microsoft.MachineLearningServices/workspaces/computes/computeType",
"equals": "ComputeInstance"
},
{
"field": "Microsoft.MachineLearningServices/workspaces/computes/schedules",
"exists": "false"
}
]
},
"then": {
"effect": "append",
"details": [
{
"field": "Microsoft.MachineLearningServices/workspaces/computes/schedules",
"value": {
"computeStartStop": [
{
"triggerType": "Cron",
"cron": {
"startTime": "2021-03-10T21:21:07",
"timeZone": "Pacific Standard Time",
"expression": "0 22 * * *"
},
"action": "Stop",
"status": "Enabled"
}
]
}
}
]
}
}
}
تخصيص مثيل الحوسبة باستخدام برنامج نصي (معاينة)
استخدم برنامج نصي للإعداد للحصول على طريقة تلقائية لتخصيص مثيل الحوسبة وتكوينه في وقت التوفير. بصفتك مسؤولا، يمكنك كتابة برنامج نصي للتخصيص لاستخدامه لتوفير جميع مثيلات الحوسبة في مساحة العمل وفقا لمتطلباتك.
بعض الأمثلة على ما يمكنك القيام به في برنامج نصي للإعداد:
- تثبيت الحزم والأدوات والبرامج
- تحميل البيانات
- إنشاء بيئة كوندا مخصصة وحبات Jupyter
- استنساخ مستودعات git وتعيين تكوين git
- تعيين بروكسيات الشبكة
- تعيين متغيرات البيئة
- تثبيت ملحقات JupyterLab
إنشاء البرنامج النصي للإعداد
البرنامج النصي للإعداد هو برنامج نصي shell ، والذي يعمل كمستخدم rootuser. إنشاء البرنامج النصي أو تحميله إلى ملفات دفاتر الملاحظات :
- سجل الدخول إلى الاستوديو وحدد مساحة العمل الخاصة بك.
- على اليسار، حدد Notebooks.
- استخدم أداة إضافة ملفات لإنشاء البرنامج النصي shell للإعداد أو تحميله. تأكد من انتهاء اسم ملف البرنامج النصي ب ".sh". عند إنشاء ملف جديد، قم أيضا بتغيير نوع الملف إلى bash(.sh).
عند تشغيل البرنامج النصي، يكون دليل العمل الحالي للبرنامج النصي هو الدليل الذي تم تحميله فيه. على سبيل المثال، إذا قمت بتحميل البرنامج النصي إلى Usersadmin>، فإن موقع البرنامج النصي على مثيل الحوسبة ودليل العمل الحالي عند تشغيل البرنامج النصي هو /home/azureuser/cloudfiles/code/Users/admin. سيمكنك ذلك من استخدام المسارات النسبية في البرنامج النصي.
يمكن الإشارة إلى وسيطات البرنامج النصي في البرنامج النصي باسم $ 1 ، $ 2 ، إلخ.
إذا كان البرنامج النصي الخاص بك يقوم بشيء محدد ل azureuser مثل تثبيت بيئة conda أو jupyter kernel ، فسيتعين عليك وضعه داخل كتلة sudo -u azureuser مثل هذا
#!/bin/bash
set -e
# This script installs a pip package in compute instance azureml_py38 environment.
sudo -u azureuser -i <<'EOF'
PACKAGE=numpy
ENVIRONMENT=azureml_py38
conda activate "$ENVIRONMENT"
pip install "$PACKAGE"
conda deactivate
EOF
يقوم الأمر sudo -u azureuser بتغيير دليل العمل الحالي إلى / home/azureuser. لا يمكنك أيضا الوصول إلى وسيطات البرنامج النصي في هذه الكتلة.
للحصول على أمثلة أخرى للبرامج النصية، راجع أمثلة azureml.
يمكنك أيضا استخدام متغيرات البيئة التالية في البرنامج النصي:
- CI_RESOURCE_GROUP
- CI_WORKSPACE
- CI_NAME
- CI_LOCAL_UBUNTU_USER. هذا يشير إلى azureuser
يمكنك استخدام البرنامج النصي للإعداد بالاقتران مع Azure Policy لفرض برنامج نصي للإعداد أو وضعه افتراضيا لكل إنشاء مثيل حوسبة. القيمة الافتراضية لمهلة البرنامج النصي للإعداد هي 15 دقيقة. يمكن تغيير ذلك من خلال واجهة مستخدم الاستوديو أو من خلال قوالب ARM باستخدام المعلمة DURATION. المدة عبارة عن رقم نقطة عائمة مع لاحقة اختيارية: "s" للثواني (الافتراضية) أو "m" للدقائق أو "h" للساعات أو "d" لعدة أيام.
استخدام البرنامج النصي في الاستوديو
بمجرد تخزين البرنامج النصي، حدده أثناء إنشاء مثيل الحوسبة الخاص بك:
- سجل الدخول إلى الاستوديو وحدد مساحة العمل الخاصة بك.
- على يمين الصفحة، اختر حساب.
- حدد " +New" لإنشاء مثيل حساب جديد.
- املأ النموذج.
- في الصفحة الثانية من النموذج، افتح إظهار الإعدادات المتقدمة.
- فعل التوفير باستخدام البرنامج النصي للإعداد.
- استعرض للوصول إلى البرنامج النصي shell الذي قمت بحفظه. أو قم بتحميل برنامج نصي من جهاز الكمبيوتر الخاص بك.
- أضف وسيطات الأوامر حسب الحاجة.
إذا كانت مساحة تخزين مساحة العمل متصلة بشبكة ظاهرية، فقد لا تتمكن من الوصول إلى ملف البرنامج النصي للإعداد إلا إذا كنت تقوم بالوصول إلى الاستوديو من داخل الشبكة الظاهرية.
استخدام البرنامج النصي في قالب Resource Manager
في قالب Resource Manager، أضف setupScripts لاستدعاء البرنامج النصي للإعداد عند توفير مثيل الحوسبة. على سبيل المثال:
"setupScripts":{
"scripts":{
"creationScript":{
"scriptSource":"workspaceStorage",
"scriptData":"[parameters('creationScript.location')]",
"scriptArguments":"[parameters('creationScript.cmdArguments')]"
}
}
}
تحدد scriptData أعلاه موقع البرنامج النصي للإنشاء في مشاركة ملفات دفاتر الملاحظات مثل المستخدمون/المسؤول/testscript.sh. scriptArguments اختياري أعلاه ويحدد الوسيطات الخاصة بالبرنامج النصي للإنشاء.
يمكنك بدلا من ذلك توفير البرنامج النصي المضمن لقالب Resource Manager. يمكن أن يشير الأمر shell إلى أي تبعيات تم تحميلها في مشاركة ملفات دفاتر الملاحظات. عند استخدام سلسلة مضمنة، يكون دليل العمل الخاص بالبرنامج النصي هو / mnt/batch/tasks/shared/LS_root/mounts/clusters/ciname/code/Users.
على سبيل المثال، حدد سلسلة أوامر مشفرة base64 ل scriptData:
"setupScripts":{
"scripts":{
"creationScript":{
"scriptSource":"inline",
"scriptData":"[base64(parameters('inlineCommand'))]",
"scriptArguments":"[parameters('creationScript.cmdArguments')]"
}
}
}
إعداد سجلات البرنامج النصي
تظهر السجلات من تنفيذ البرنامج النصي للإعداد في مجلد السجلات في صفحة تفاصيل مثيل الحساب. يتم تخزين السجلات مرة أخرى إلى مشاركة ملفات دفاتر الملاحظات ضمن مجلد اسم> مثيل Logscompute<. يتم عرض وسيطات ملف البرنامج النصي والأوامر لمثيل حساب معين في صفحة التفاصيل.
إدارة
بدء تشغيل مثيل حوسبة وإيقافه وإعادة تشغيله وحذفه. لا يتم تقليل مثيل الحوسبة تلقائيا، لذا تأكد من إيقاف المورد لمنع الرسوم المستمرة. يؤدي إيقاف عرض مثيل الحوسبة إلى تحديد موقعه. ثم ابدأ تشغيله مرة أخرى عندما تحتاج إليه. أثناء إيقاف مثيل الحوسبة لإيقاف الفوترة لساعات الحساب، ستظل تتم محاسبتك على القرص وعنوان IP العام وموازن التحميل القياسي.
يمكنك إنشاء جدول زمني لمثيل الحوسبة للبدء والتوقف تلقائيا استنادا إلى وقت ويوم من أيام الأسبوع.
تلميح
يحتوي مثيل الحوسبة على قرص نظام تشغيل سعة 120 جيجابايت. في حالة نفاد مساحة القرص، استخدم المحطة الطرفية لمسح 1-2 غيغابايت على الأقل قبل إيقاف مثيل الحوسبة أو إعادة تشغيله. يرجى عدم إيقاف مثيل الحوسبة عن طريق إصدار إيقاف تشغيل sudo من المحطة الطرفية. يعتمد حجم القرص المؤقت على مثيل الحوسبة على حجم الجهاز الظاهري المختار ويتم تثبيته على /mnt.
في الأمثلة أدناه، اسم مثيل الحوسبة هو مثيل
الحصول على الحالة
# get_status() gets the latest status of the ComputeInstance target instance.get_status()التوقف
# stop() is used to stop the ComputeInstance # Stopping ComputeInstance will stop the billing meter and persist the state on the disk. # Available Quota will not be changed with this operation. instance.stop(wait_for_completion=True, show_output=True)بدء
# start() is used to start the ComputeInstance if it is in stopped state instance.start(wait_for_completion=True, show_output=True)إعادة التشغيل
# restart() is used to restart the ComputeInstance instance.restart(wait_for_completion=True, show_output=True)حذف
# delete() is used to delete the ComputeInstance target. Useful if you want to re-use the compute name instance.delete(wait_for_completion=True, show_output=True)
يسمح لك Azure RBAC بالتحكم في المستخدمين في مساحة العمل الذين يمكنهم إنشاء مثيل حوسبة وحذفه وتشغيله وإيقافه وإعادة تشغيله. يمكن لجميع المستخدمين في دور مساهم مساحة العمل والمالك إنشاء مثيلات الحوسبة وحذفها وتشغيلها وإيقافها وإعادة تشغيلها عبر مساحة العمل. ومع ذلك، يسمح فقط لمنشئ مثيل حوسبة معين، أو المستخدم المعين إذا تم إنشاؤه نيابة عنه، بالوصول إلى Jupyter وJupyterLab وRStudio على مثيل الحوسبة هذا. يتم تخصيص مثيل الحوسبة لمستخدم واحد لديه حق الوصول إلى الجذر ، ويمكنه الوصول إلى المحطة الطرفية من خلال Jupyter / JupyterLab / RStudio. سيكون لمثيل الحوسبة تسجيل دخول مستخدم واحد وستستخدم جميع الإجراءات هوية هذا المستخدم ل Azure RBAC وإسناد عمليات تشغيل التجربة. يتم التحكم في الوصول إلى SSH من خلال آلية المفتاح العام / الخاص.
يمكن التحكم في هذه الإجراءات بواسطة Azure RBAC:
- Microsoft.MachineLearningServices/مساحات العمل/الحوسبة/القراءة
- Microsoft.MachineLearningServices/مساحات العمل/الحوسبة/الكتابة
- Microsoft.MachineLearningServices/مساحات العمل/الحوسبة/الحذف
- Microsoft.MachineLearningServices/مساحات العمل/الحوسبات/البدء/العمل
- Microsoft.MachineLearningServices/مساحات العمل/الحوسبة/الإيقاف/الإجراء
- Microsoft.MachineLearningServices/workspaces/computes/restart/action
- Microsoft.MachineLearningServices/مساحات العمل/الحوسبة/التحديثالجداول الزمنية/الإجراءات
لإنشاء مثيل حوسبة، ستحتاج إلى أذونات للإجراءات التالية:
- Microsoft.MachineLearningServices/مساحات العمل/الحوسبة/الكتابة
- Microsoft.MachineLearningServices/workspaces/checkComputeNameAvailability/action

v2 (معاينة)

