تكامل Git للتعلم الآلي من Azure

Git عبارة عن نظام شائع للتحكم في الإصدار يسمح لك بمشاركة مشاريعك والتعاون فيها.

يدعم التعلم الآلي من Azure بشكل كامل مستودعات Git لتعقب العمل - يمكنك استنساخ المستودعات مباشرة على نظام ملفات مساحة العمل المشتركة، أو استخدام Git على محطة العمل المحلية، أو استخدام Git من مسار CI/CD.

عند إرسال مهمة إلى التعلم الآلي من Azure، إذا تم تخزين ملفات المصدر في مستودع git محلي، فسيتم تعقب معلومات حول المستودع كجزء من عملية التدريب.

نظرا لأن التعلم الآلي من Azure يتعقب المعلومات من مستودع git محلي، فهو غير مرتبط بأي مستودع مركزي محدد. يمكن استنساخ مستودعك من GitHub أو GitLab أو Bitbucket أو Azure DevOps أو أي خدمة أخرى متوافقة مع git.

تلميح

استخدم Visual Studio Code للتفاعل مع Git من خلال واجهة مستخدم رسومية. للاتصال بمثيل حساب عن بعد في Azure التعلم الآلي باستخدام Visual Studio Code، راجع تشغيل Visual Studio Code المتكامل مع Azure التعلم الآلي (معاينة)

لمزيد من المعلومات حول ميزات التحكم في إصدار Visual Studio Code، راجع استخدام التحكم بالإصدار في VS Codeوالعمل مع GitHub في VS Code.

استنساخ مستودعات Git في نظام ملفات مساحة العمل

يوفر التعلم الآلي من Azure نظام ملفات مشترك لجميع المستخدمين في مساحة العمل. لاستنساخ مستودع Git في مشاركة الملف هذه، نوصي بإنشاء مثيل حساب وفتح محطة طرفية. بمجرد فتح المحطة الطرفية، يمكنك الوصول إلى عميل Git كامل ويمكنك استنساخ Git والعمل معه عبر تجربة Git CLI.

نوصي باستنساخ المستودع في دليل المستخدم الخاص بك بحيث لا يقوم الآخرون بإجراء تضاربات مباشرة على فرع العمل الخاص بك.

تلميح

هناك فرق في الأداء بين الاستنساخ إلى نظام الملفات المحلي لمثيل الحساب أو الاستنساخ إلى نظام الملفات المحملة (الذي تم تحميله كدليل ~/cloudfiles/code). بشكل عام، سيكون الاستنساخ إلى نظام الملفات المحلي أداء أفضل من نظام الملفات المحمل. ومع ذلك، تفقد نظام الملفات المحلي إذا قمت بحذف وإعادة إنشاء مثيل حساب. يتم الاحتفاظ بنظام الملف المحمل إذا قمت بحذف وإعادة إنشاء مثيل حساب.

يمكنك استنساخ أي مستودع Git يمكنك المصادقة عليه (GitHub وAzure Repos وBitBucket وما إلى ذلك)

لمزيد من المعلومات حول الاستنساخ، راجع الدليل حول كيفية استخدام Git CLI.

مصادقة حساب Git الخاص بك باستخدام SSH

إنشاء مفتاح SSH جديد

  1. افتح نافذة المحطة الطرفية في علامة تبويب دفتر ملاحظات التعلم الآلي Azure.

  2. الصق النص أدناه، واستبدله في عنوان بريدك الإلكتروني الخاص بك.

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

يؤدي هذا إلى إنشاء مفتاح ssh جديد، باستخدام البريد الإلكتروني المتوفر كتسمية.

> Generating public/private rsa key pair.
  1. عندما تتم مطالبتك بـ "أدخل ملفا لحفظ المفتاح فيه"، اضغط على مفتاح الإدخال Enter. هذا يقبل موقع الملف الافتراضي.

  2. تحقق من أن الموقع الافتراضي هو '/home/azureuser/.ssh' واضغط على مفتاح الإدخال Enter. وإلا حدد الموقع '/home/azureuser/.ssh'.

تلميح

تأكد من حفظ مفتاح SSH في '/home/azureuser/.ssh'. يتم حفظ هذا الملف على مثيل الحساب يمكن الوصول إليه فقط من قبل مالك مثيل الحساب

> Enter a file in which to save the key (/home/azureuser/.ssh/id_rsa): [Press enter]
  1. في المطالبة، اكتب عبارة مرور آمنة. نوصي بإضافة عبارة مرور إلى مفتاح SSH الخاص بك لمزيد من الأمان
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

إضافة المفتاح العام إلى حساب Git

  1. في نافذة المحطة الطرفية، انسخ محتويات ملف المفتاح العام. إذا قمت بإعادة تسمية المفتاح، فاستبدل id_rsa.pub باسم ملف المفتاح العام.
cat ~/.ssh/id_rsa.pub

تلميح

النسخ واللصق في المحطة الطرفية

  • Windows: Ctrl-Insert للنسخ واستخدام Ctrl-Shift-v أو Shift-Insert للصق.
  • نظام التشغيل Mac: Cmd-c للنسخ وCmd-v للصق.
  • قد لا يدعم FireFox/IE أذونات الحافظة بشكل صحيح.
  1. حدد إخراج مفتاح SSH وانسخه إلى الحافظة.
  2. بعد ذلك، اتبع الخطوات لإضافة مفتاح SSH إلى نوع الحساب المفضل لديك:

استنساخ مستودع Git باستخدام SSH

  1. انسخ محدد موقع الويب لاستنساخ SSH Git من مستودع Git.

  2. الصق عنوان محدد موقع الويب في git clone الأمر أدناه، لاستخدام عنوان محدد موقع الويب لمرجع SSH Git. يجب أن يبدو مثل:

git clone git@example.com:GitUser/azureml-example.git
Cloning into 'azureml-example'...

سترى استجابة مثل:

The authenticity of host 'example.com (192.30.255.112)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.255.112' (RSA) to the list of known hosts.

قد يعرض SSH بصمة SSH الخاصة بالخادم ويطلب منك التحقق منها. يجب التحقق من أن بصمة الإصبع المعروضة تطابق إحدى بصمات الأصابع في صفحة المفاتيح العامة SSH.

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

  1. عند سؤالك عما إذا كنت تريد متابعة الاتصال، اكتب yes. سيقوم Git باستنساخ المستودع وإعداد جهاز التحكم عن بعد الأصل للاتصال بـ SSH لأوامر Git المستقبلية.

تعقب التعليمات البرمجية التي تأتي من مستودعات Git

عند إرسال مهمة تدريب من عدة تطوير برامج Python أو واجهة سطر أوامر التعلم الآلي، تُحمل الملفات اللازمة لتدريب النموذج إلى مساحة عملك. إذا كان الأمر متوفرا git في بيئة التطوير الخاصة بك، فإن عملية التحميل تستخدمه للتحقق مما إذا كانت الملفات مخزنة في مستودع git. في هذه الحالة، فسوف تُحمل أيضاً المعلومات من مستودع git الخاص بك بمثابة جزء من مهمة التدريب. تُخزن هذه المعلومات في الخصائص الآتية لمهمة التدريب:

الخاصية الأمر Git المستخدم للحصول على القيمة ‏‏الوصف
azureml.git.repository_uri git ls-remote --get-url معرف الموارد المنتظم الذي تم استنساخ المستودع منه.
mlflow.source.git.repoURL git ls-remote --get-url معرف الموارد المنتظم الذي تم استنساخ المستودع منه.
azureml.git.branch git symbolic-ref --short HEAD الفرع النشط عند إرسال المهمة.
mlflow.source.git.branch git symbolic-ref --short HEAD الفرع النشط عند إرسال المهمة.
azureml.git.commit git rev-parse HEAD تجزئة تثبيت التعليمات البرمجية المُرسلة للمهمة.
mlflow.source.git.commit git rev-parse HEAD تجزئة تثبيت التعليمات البرمجية المُرسلة للمهمة.
azureml.git.dirty git status --porcelain . True، إذا كان الفرع/ التثبيت قذرا؛ خلاف ذلك، false.

تُرسل هذه المعلومات للمهمات التي تستخدم أداة تقدير أو البنية الأساسية لبرنامج ربط العمليات التجارية للتعلم الآلي أو تشغيل البرنامج النصي.

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

تلميح

للتحقق مما إذا كان الأمر git متوفرا في بيئة التطوير الخاصة بك، افتح جلسة عمل shell أو موجه الأوامر أو PowerShell أو واجهة سطر أوامر أخرى واكتب الأمر التالي:

git --version

إذا تم تثبيته، وفي المسار، تتلقى استجابة مشابهة لـ git version 2.4.1. لمزيد من المعلومات حول تثبيت git على بيئة التطوير الخاصة بك، راجع موقع Git على الويب.

عرض المعلومات المسجلة

تُخزن معلومات git في خصائص مهمة التدريب. يمكنك عرض هذه المعلومات باستخدام مدخل Azure أو Python SDK.

مدخل Azure

  1. من مدخل الاستوديو، حدد مساحة العمل الخاصة بك.
  2. حدد Jobs، ثم حدد إحدى تجاربك.
  3. حدد إحدى المهام من العمود Display name.
  4. حدد المخرجات + السجلات، ثم قم بتوسيع السجلات وإدخالاتazureml. حدد الارتباط الذي يبدأ بـ ###_azure.

تحتوي المعلومات المسجلة على نص مشابه لـ JSON التالي:

"properties": {
    "_azureml.ComputeTargetType": "batchai",
    "ContentSnapshotId": "5ca66406-cbac-4d7d-bc95-f5a51dd3e57e",
    "azureml.git.repository_uri": "git@github.com:azure/machinelearningnotebooks",
    "mlflow.source.git.repoURL": "git@github.com:azure/machinelearningnotebooks",
    "azureml.git.branch": "master",
    "mlflow.source.git.branch": "master",
    "azureml.git.commit": "4d2b93784676893f8e346d5f0b9fb894a9cf0742",
    "mlflow.source.git.commit": "4d2b93784676893f8e346d5f0b9fb894a9cf0742",
    "azureml.git.dirty": "True",
    "AzureML.DerivedImageName": "azureml/azureml_9d3568242c6bfef9631879915768deaf",
    "ProcessInfoFile": "azureml-logs/process_info.json",
    "ProcessStatusFile": "azureml-logs/process_status.json"
}

عرض الخصائص

بعد إرسال تشغيل تدريب، يتم إرجاع كائن Job . تحتوي سمة properties هذا الكائن على معلومات git المسجلة. على سبيل المثال، تسترد التعليمات البرمجية التالية تجزئة التثبيت:

ينطبق على: Python SDK azure-ai-ml v2 (الحالي)

job.properties["azureml.git.commit"]

الخطوات التالية