تهيئة بيئات للتطوير والإنتاج

مكتمل

داخل DevOps، تشير البيئة إلى مجموعة من الموارد. يتم استخدام هذه الموارد لتوزيع تطبيق، أو باستخدام مشاريع التعلم الآلي، لتوزيع نموذج.

استخدام البيئات للتسليم المستمر

يعتمد عدد البيئات التي تعمل باستخدامها على مؤسستك. عادة، هناك بيئتان على الأقل: التطوير أو dev والإنتاج أو prod. بالإضافة إلى ذلك، يمكنك إضافة بيئات بينها مثل بيئة التشغيل المرحلي أو ما قبل الإنتاج (pre-prod).

مع التسليم المستمر، يتمثل النهج النموذجي في:

  1. تجربة تدريب النموذج في بيئة التطوير.
  2. انقل أفضل نموذج إلى بيئة التشغيل المرحلي أو ما قبل التشغيل لتوزيع النموذج واختباره.
  3. وأخيرا حرر النموذج إلى بيئة الإنتاج لتوزيع النموذج بحيث يمكن للمستخدمين النهائيين استهلاكه.

إشعار

في هذه الوحدة، نشير إلى تفسير DevOps للبيئات. لاحظ أن التعلم الآلي من Azure يستخدم أيضًا بيئات المصطلح لوصف مجموعة من حزم Python اللازمة لتشغيل برنامج نصي. هذان المفهومان للبيئات مستقلان عن بعضهما البعض. تعرف على المزيد حول بيئات التعلم الآلي من Azure.

تنظيم بيئات التعلم الآلي من Azure

عند تنفيذ MLOps، والعمل باستخدام نماذج التعلم الآلي على نطاق واسع، من أفضل الممارسات العمل باستخدام بيئات منفصلة لمراحل مختلفة.

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

سيؤدي وجود بيئات منفصلة إلى تسهيل التحكم في الوصول إلى الموارد. يمكن بعد ذلك ربط كل بيئة بمساحة عمل تعلم آلي من Azure منفصلة.

Diagram of multiple environments set-up.

ضمن Azure، ستستخدم التحكم في الوصول استنادًا إلى الدور (RBAC) لمنح الزملاء المستوى المناسب من الوصول إلى المجموعة الفرعية من الموارد التي يحتاجون إلى العمل باستخدامها.

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

للعمل باستخدام البيئات لمراحل مختلفة من تطوير النموذج، يمكنك استهداف بيئة عند تشغيل Azure Pipeline أو سير عمل باستخدام GitHub Actions.

بيئات Azure DevOps

للعمل باستخدام البيئات في Azure DevOps، تحتاج أولاً إلى إنشاء البيئات. بعد ذلك، يمكنك تحديد البيئة التي تريد التوزيع إليها داخل Azure Pipeline.

  1. داخل Azure DevOps، وسّع القائمة Pipelines.
  2. حدد البيئات.
  3. أنشئ new environment.
  4. أطلق اسمًا على بيئتك.
  5. اختر None للموارد. يمكنك استهداف مساحة عمل تعلم آلي من Azure معينة في البنية الأساسية لبرنامج ربط العمليات التجارية نفسها.
  6. حدد إنشاء.

Screenshot of creating new environment in Azure DevOps.

بعد إنشاء البيئات في Azure DevOps ووجود مساحات عمل مختلفة للتعلم الآلي من Azure مقترنة بكل بيئة، يمكنك تحديد البيئة التي تريد التوزيع إليها في ملف AZURE Pipelines YAML:

trigger: 
- main

stages:
- stage: deployDev
  displayName: 'Deploy to development environment'
  jobs:
    - deployment: publishPipeline
      displayName: 'Model Training'
      pool:
        vmImage: 'Ubuntu-18.04'
      environment: dev
      strategy:
       runOnce:
         deploy:
          steps:
          - template: aml-steps.yml
            parameters:
              serviceconnectionname: 'spn-aml-workspace-dev'

قيمة environment في ملف YAML هي dev، مما يشير إلى أن النموذج مدرب في بيئة التطوير. من خلال service connection، يمكنك تحديد مساحة عمل التعلم الآلي من Azure التي تريد استخدامها لتدريب النموذج.

بيئات GitHub

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

لإنشاء بيئة داخل مستودع GitHub (repo):

  1. انتقل إلى علامة التبويب Settings داخل المستودع.
  2. حدد البيئات.
  3. أنشئ new environment.
  4. أدخل اسمًا.
  5. حدد Configure environment.

Screenshot of creating new environment in GitHub.

لربط بيئة بمساحة عمل تعلم آلي من Azure معينة، يمكنك إنشاء environment secret لمنح تلك البيئة فقط حق الوصول إلى مساحة عمل التعلم الآلي من Azure.

لاستخدام بيئة في سير عمل، يمكنك إضافة البيئة التي تريد التوزيع إليها عن طريق تضمينها في ملف YAML:

name: Train model

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    environment:
        name: dev 
    steps:
    - name: check out repo
      uses: actions/checkout@v2
    - name: install az ml extension
      run: az extension add -n ml -y
    - name: azure login
      uses: azure/login@v1
      with:
        creds: ${{secrets.AZURE_CREDENTIALS}}
    - name: set current directory
      run: cd src
    - name: run pipeline
      run: az ml job create --file src/aml_service/pipeline-job.yml --resource-group dev-ml-rg --workspace-name dev-ml-ws

في المثال، يحتوي سر AZURE_CREDENTIALS على معلومات الاتصال بمساحة عمل التعلم الآلي من Azure المستخدمة لهذه البيئة.