إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توضح هذه المقالة مكون Execute Python Script في مصمم التعلم الآلي من Azure.
استخدم هذا المكون لتشغيل التعليمات البرمجية ل Python. لمزيد من المعلومات حول مبادئ تصميم وبنية Python، راجع كيفية تشغيل تعليمة Python البرمجية في مصمم التعلم الآلي من Azure.
باستخدام Python، يمكنك تنفيذ مهام لا تدعمها المكونات الموجودة، مثل:
- تصور البيانات باستخدام
matplotlib. - استخدام مكتبات Python لتعداد مجموعات البيانات والنماذج في مساحة العمل الخاصة بك.
- قراءة البيانات وتحميلها ومعالجتها من مصادر لا يدعمها مكون استيراد البيانات .
- قم بتشغيل التعليمات البرمجية للتعلم العميق الخاص بك.
حزم Python المدعومة
يستخدم التعلم الآلي من Azure توزيع Anaconda ل Python، والذي يتضمن العديد من الأدوات المساعدة الشائعة لمعالجة البيانات. سنقوم بتحديث إصدار Anaconda تلقائيا. الإصدار الحالي هو:
- توزيع Anaconda ل Python 3.10
للحصول على قائمة كاملة، راجع القسم حزم Python المثبتة مسبقا.
لتثبيت الحزم غير الموجودة في القائمة المثبتة مسبقا (على سبيل المثال، scikit-misc)، أضف التعليمات البرمجية التالية إلى البرنامج النصي الخاص بك:
import os
os.system(f"pip install scikit-misc")
استخدم التعليمات البرمجية التالية لتثبيت الحزم للحصول على أداء أفضل، خاصة للاستدلال:
import importlib.util
package_name = 'scikit-misc'
spec = importlib.util.find_spec(package_name)
if spec is None:
import os
os.system(f"pip install scikit-misc")
ملاحظة
إذا كانت البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك تحتوي على العديد من مكونات Execute Python Script التي تحتاج إلى حزم غير موجودة في القائمة المثبتة مسبقا، فقم بتثبيت الحزم في كل مكون.
تحذير
لا يدعم مكون Excute Python Script تثبيت الحزم التي تعتمد على مكتبات أصلية إضافية مع أمر مثل "apt-get"، مثل Java وPyODBC وما إلى ذلك. وذلك لأن هذا المكون يتم تنفيذه في بيئة بسيطة مع Python مثبت مسبقا فقط وبإذن غير مسؤول.
الوصول إلى مساحة العمل الحالية ومجموعات البيانات المسجلة
يمكنك الرجوع إلى نموذج التعليمات البرمجية التالي للوصول إلى مجموعات البيانات المسجلة في مساحة العمل الخاصة بك:
def azureml_main(dataframe1 = None, dataframe2 = None):
# Execution logic goes here
print(f'Input pandas.DataFrame #1: {dataframe1}')
from azureml.core import Run
run = Run.get_context(allow_offline=True)
#access to current workspace
ws = run.experiment.workspace
#access to registered dataset of current workspace
from azureml.core import Dataset
dataset = Dataset.get_by_name(ws, name='test-register-tabular-in-designer')
dataframe1 = dataset.to_pandas_dataframe()
# If a zip file is connected to the third input port,
# it is unzipped under "./Script Bundle". This directory is added
# to sys.path. Therefore, if your zip file contains a Python file
# mymodule.py you can import it using:
# import mymodule
# Return value must be of a sequence of pandas.DataFrame
# E.g.
# - Single return value: return dataframe1,
# - Two return values: return dataframe1, dataframe2
return dataframe1,
تحميل الملفات
يدعم مكون Execute Python Script تحميل الملفات باستخدام Azure Machine Learning Python SDK.
يوضح المثال التالي كيفية تحميل ملف صورة في مكون Execute Python Script:
# The script MUST contain a function named azureml_main,
# which is the entry point for this component.
# Imports up here can be used to
import pandas as pd
# The entry point function must have two input arguments:
# Param<dataframe1>: a pandas.DataFrame
# Param<dataframe2>: a pandas.DataFrame
def azureml_main(dataframe1 = None, dataframe2 = None):
# Execution logic goes here
print(f'Input pandas.DataFrame #1: {dataframe1}')
from matplotlib import pyplot as plt
plt.plot([1, 2, 3, 4])
plt.ylabel('some numbers')
img_file = "line.png"
plt.savefig(img_file)
from azureml.core import Run
run = Run.get_context(allow_offline=True)
run.upload_file(f"graphics/{img_file}", img_file)
# Return value must be of a sequence of pandas.DataFrame
# For example:
# - Single return value: return dataframe1,
# - Two return values: return dataframe1, dataframe2
return dataframe1,
بعد الانتهاء من تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية، يمكنك معاينة الصورة في اللوحة اليمنى للمكون.
يمكنك أيضا تحميل ملف إلى أي مخزن بيانات باستخدام التعليمات البرمجية التالية. يمكنك فقط معاينة الملف في حساب التخزين الخاص بك.
import pandas as pd
# The entry point function MUST have two input arguments.
# If the input port is not connected, the corresponding
# dataframe argument will be None.
# Param<dataframe1>: a pandas.DataFrame
# Param<dataframe2>: a pandas.DataFrame
def azureml_main(dataframe1 = None, dataframe2 = None):
# Execution logic goes here
print(f'Input pandas.DataFrame #1: {dataframe1}')
from matplotlib import pyplot as plt
import os
plt.plot([1, 2, 3, 4])
plt.ylabel('some numbers')
img_file = "line.png"
# Set path
path = "./img_folder"
os.mkdir(path)
plt.savefig(os.path.join(path,img_file))
# Get current workspace
from azureml.core import Run
run = Run.get_context(allow_offline=True)
ws = run.experiment.workspace
# Get a named datastore from the current workspace and upload to specified path
from azureml.core import Datastore
datastore = Datastore.get(ws, datastore_name='workspacefilestore')
datastore.upload(path)
return dataframe1,
كيفية تكوين Execute Python Script
يحتوي مكون Execute Python Script على نموذج تعليمة Python البرمجية التي يمكنك استخدامها كنقطة بداية. لتكوين مكون Execute Python Script، قم بتوفير مجموعة من المدخلات ورمز Python لتشغيله في مربع نص البرنامج النصي Python .
أضف مكون Execute Python Script إلى البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك.
أضف واتصل على Dataset1 أي مجموعات بيانات من المصمم الذي تريد استخدامه للإدخل. راجع مجموعة البيانات هذه في برنامج Python النصي الخاص بك ك DataFrame1.
استخدام مجموعة بيانات اختياري. استخدمه إذا كنت تريد إنشاء بيانات باستخدام Python، أو استخدم تعليمة Python البرمجية لاستيراد البيانات مباشرة إلى المكون.
يدعم هذا المكون إضافة مجموعة بيانات ثانية على Dataset2. الرجوع إلى مجموعة البيانات الثانية في برنامج Python النصي الخاص بك ك DataFrame2.
يتم تحويل مجموعات البيانات المخزنة في التعلم الآلي من Azure تلقائيا إلى إطارات بيانات pandas عند تحميلها مع هذا المكون.
لتضمين حزم أو تعليمات برمجية جديدة ل Python، قم بتوصيل الملف المضغوط الذي يحتوي على هذه الموارد المخصصة بمنفذ حزمة البرنامج النصي . أو إذا كان البرنامج النصي الخاص بك أكبر من 16 كيلوبايت، فاستخدم منفذ حزمة البرنامج النصي لتجنب أخطاء مثل تجاوز CommandLine الحد الأقصى وهو 16597 حرفا.
- تجميع البرنامج النصي والموارد المخصصة الأخرى في ملف مضغوط.
- قم بتحميل الملف المضغوط كمجموعة بيانات ملف إلى الاستوديو.
- اسحب مكون مجموعة البيانات من قائمة Datasets في جزء المكون الأيسر في صفحة تأليف المصمم.
- قم بتوصيل مكون مجموعة البيانات بمنفذ حزمة البرنامج النصي لمكون Execute Python Script .
يمكن استخدام أي ملف موجود في الأرشيف المضغوط الذي تم تحميله أثناء تنفيذ البنية الأساسية لبرنامج ربط العمليات التجارية. إذا كان الأرشيف يتضمن بنية دليل، يتم الاحتفاظ بالبنية.
هام
يرجى استخدام اسم فريد وهادف للملفات في حزمة البرنامج النصي نظرا لأن بعض الكلمات الشائعة (مثل
test،appوما إلى ذلك) محجوزة للخدمات المضمنة.فيما يلي مثال على حزمة البرنامج النصي، والذي يحتوي على ملف برنامج نصي Python وملف txt:
فيما يلي محتوى
my_script.py:def my_func(dataframe1): return dataframe1فيما يلي نموذج التعليمات البرمجية الذي يوضح كيفية استهلاك الملفات في حزمة البرنامج النصي:
import pandas as pd from my_script import my_func def azureml_main(dataframe1 = None, dataframe2 = None): # Execution logic goes here print(f'Input pandas.DataFrame #1: {dataframe1}') # Test the custom defined Python function dataframe1 = my_func(dataframe1) # Test to read custom uploaded files by relative path with open('./Script Bundle/my_sample.txt', 'r') as text_file: sample = text_file.read() return dataframe1, pd.DataFrame(columns=["Sample"], data=[[sample]])في مربع النص برنامج Python النصي ، اكتب أو الصق برنامج Python النصي الصالح.
ملاحظة
كن حذرا عند كتابة البرنامج النصي الخاص بك. تأكد من عدم وجود أخطاء في بناء الجملة، مثل استخدام متغيرات غير معلنة أو مكونات أو دالات غير محددة. انتبه أكثر إلى قائمة المكونات المثبتة مسبقا. لاستيراد المكونات غير المدرجة، قم بتثبيت الحزم المقابلة في البرنامج النصي، مثل:
import os os.system(f"pip install scikit-misc")يتم ملء مربع النص البرنامج النصي Python مسبقا مع بعض الإرشادات في التعليقات، ونموذج التعليمات البرمجية للوصول إلى البيانات والإخراج. يجب تحرير هذه التعليمة البرمجية أو استبدالها. اتبع اصطلاحات Python للمسافة البادئة والغلاف:
- يجب أن يحتوي البرنامج النصي على دالة تسمى
azureml_mainكنقطة إدخال لهذا المكون. - يجب أن تحتوي دالة نقطة الإدخال على وسيطتي إدخال، و
Param<dataframe1>،Param<dataframe2>حتى عندما لا يتم استخدام هذه الوسيطات في البرنامج النصي الخاص بك. - يتم فك ضغط الملفات المضغوطة المتصلة بمنفذ الإدخال الثالث وتخزينها في الدليل
.\Script Bundle، والذي تتم إضافته أيضا إلى Pythonsys.path.
إذا كان ملف .zip يحتوي على
mymodule.py، فاستورده باستخدامimport mymodule.يمكن إرجاع مجموعتي بيانات إلى المصمم، والتي يجب أن تكون سلسلة من النوع
pandas.DataFrame. يمكنك إنشاء مخرجات أخرى في التعليمات البرمجية ل Python وكتابتها مباشرة إلى تخزين Azure.تحذير
لا يوصى بالاتصال بقاعدة بيانات أو مخازن خارجية أخرى في مكون Execute Python Script. يمكنك استخدام مكون Import Data ومكونExport Data
- يجب أن يحتوي البرنامج النصي على دالة تسمى
إرسال البنية الأساسية.
إذا اكتمل المكون، فتحقق من الإخراج إذا كان كما هو متوقع.
إذا فشل المكون، تحتاج إلى القيام ببعض استكشاف الأخطاء وإصلاحها. حدد المكون، وافتح Outputs+logs في الجزء الأيمن. افتح 70_driver_log.txt وابحث في azureml_main، ثم يمكنك العثور على السطر الذي تسبب في الخطأ. على سبيل المثال، يشير "ملف "/tmp/tmp01_ID/user_script.py"، السطر 17، في azureml_main" إلى حدوث الخطأ في السطر 17 من البرنامج النصي Python.
النتائج
يجب توفير نتائج أي حسابات بواسطة التعليمات البرمجية ل Python المضمنة ك pandas.DataFrame، والتي يتم تحويلها تلقائيا إلى تنسيق مجموعة بيانات التعلم الآلي من Azure. يمكنك بعد ذلك استخدام النتائج مع مكونات أخرى في البنية الأساسية لبرنامج ربط العمليات التجارية.
يقوم المكون بإرجاع مجموعتي بيانات:
مجموعة بيانات النتائج 1، المحددة بواسطة أول إطار بيانات Pandas تم إرجاعه في برنامج نصي Python.
نتيجة مجموعة البيانات 2، التي تم تعريفها بواسطة إطار بيانات pandas الثاني الذي تم إرجاعه في برنامج نصي Python.
حزم Python المثبتة مسبقا
الحزم المثبتة مسبقا هي:
- adal==1.2.2
- applicationinsights==0.11.9
- attrs==19.3.0
- azure-common==1.1.25
- azure-core==1.3.0
- azure-graphrbac==0.61.1
- azure-identity==1.3.0
- azure-mgmt-authorization==0.60.0
- azure-mgmt-containerregistry==2.8.0
- azure-mgmt-keyvault==2.2.0
- azure-mgmt-resource==8.0.1
- azure-mgmt-storage==8.0.0
- azure-storage-blob==1.5.0
- azure-storage-common==1.4.2
- azureml-core==1.1.5.5
- azureml-dataprep-native==14.1.0
- azureml-dataprep==1.3.5
- azureml-defaults==1.1.5.1
- azureml-designer-classic-modules==0.0.118
- azureml-designer-core==0.0.31
- azureml-designer-internal==0.0.18
- azureml-model-management-sdk==1.0.1b6.post1
- azureml-pipeline-core==1.1.5
- azureml-telemetry==1.1.5.3
- backports.tempfile==1.0
- backports.weakref==1.0.post1
- boto3==1.12.29
- botocore==1.15.29
- ذاكرة التخزين المؤقت==4.0.0
- certifi==2019.11.28
- cffi==1.12.3
- chardet==3.0.4
- click==7.1.1
- cloudpickle==1.3.0
- configparser==3.7.4
- contextlib2==0.6.0.post1
- التشفير==2.8
- cycler==0.10.0
- dill==0.3.1.1
- توزيع==1.4.0
- docker==4.2.0
- docutils==0.15.2
- dotnetcore2==2.1.13
- flask==1.0.3
- fusepy==3.0.1
- gensim==3.8.1
- google-api-core==1.16.0
- google-auth==1.12.0
- google-cloud-core==1.3.0
- google-cloud-storage==1.26.0
- google-resumable-media==0.5.0
- googleapis-common-protos==1.51.0
- gunicorn==19.9.0
- idna==2.9
- غير متوازن-learn==0.4.3
- isodate==0.6.0
- itsdangerous==1.1.0
- جيبني==0.4.3
- jinja2==2.11.1
- jmespath==0.9.5
- joblib==0.14.0
- json-logging-py==0.2
- jsonpickle==1.3
- jsonschema==3.0.1
- kiwisolver==1.1.0
- liac-arff==2.4.0
- lightgbm==2.2.3
- markupsafe==1.1.1
- matplotlib==3.1.3
- more-itertools==6.0.0
- msal-extensions==0.1.3
- msal==1.1.0
- msrest==0.6.11
- msrestazure==0.6.3
- ndg-httpsclient==0.5.1
- nimbusml==1.6.1
- numpy==1.18.2
- oauthlib==3.1.0
- pandas==0.25.3
- pathspec==0.7.0
- pip==20.0.2
- portalocker==1.6.0
- protobuf==3.11.3
- pyarrow==0.16.0
- pyasn1-modules==0.2.8
- pyasn1==0.4.8
- pycparser==2.20
- pycryptodomex==3.7.3
- pyjwt==1.7.1
- pyopenssl==19.1.0
- pyparsing==2.4.6
- pyrsistent==0.16.0
- python-dateutil==2.8.1
- pytz==2019.3
- requests-oauthlib==1.3.0
- الطلبات==2.23.0
- rsa==4.0
- ruamel.yaml==0.15.89
- s3transfer==0.3.3
- scikit-learn==0.22.2
- scipy==1.4.1
- secretstorage==3.1.2
- setuptools==46.1.1.post20200323
- ستة==1.14.0
- smart-open==1.10.0
- urllib3==1.25.8
- websocket-client==0.57.0
- werkzeug==0.16.1
- عجلة==0.34.2
الخطوات التالية
راجع مجموعة المكونات المتوفرة للتعلم الآلي من Azure.