Python-szkript összetevő végrehajtása
Ez a cikk a Python-szkript végrehajtása összetevőt ismerteti az Azure Machine Learning Designerben.
Használja ezt az összetevőt Python-kód futtatásához. A Python architektúrájáról és tervezési alapelveiről a Python-kód Azure Machine Learning Designerben való futtatását ismertető cikkben talál további információt.
A Pythonnal olyan feladatokat hajthat végre, amelyeket a meglévő összetevők nem támogatnak, például:
- Adatok vizualizációja a használatával
matplotlib
. - Python-kódtárak használata a munkaterület adatkészleteinek és modelljeinek számbavételéhez.
- Az Adatok importálása összetevő által nem támogatott forrásokból származó adatok olvasása, betöltése és manipulálása.
- Saját mélytanulási kód futtatása.
Támogatott Python-csomagok
Az Azure Machine Learning a Python Anaconda-disztribúcióját használja, amely számos általános adatfeldolgozási segédprogramot tartalmaz. Az Anaconda verzióját automatikusan frissítjük. Az aktuális verzió a következő:
- Anaconda 4.5+ disztribúció Python 3.6-hoz
A teljes listát az Előre telepített Python-csomagok című szakaszban találja.
Ha olyan csomagokat szeretne telepíteni, amelyek nem szerepelnek az előre telepített listában (például scikit-misc), adja hozzá a következő kódot a szkripthez:
import os
os.system(f"pip install scikit-misc")
A következő kóddal telepíthet csomagokat a jobb teljesítmény érdekében, különösen a következtetéshez:
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")
Megjegyzés
Ha a folyamat több Olyan Python-szkriptfuttatási összetevőt tartalmaz, amelyekhez olyan csomagokra van szükség, amelyek nem szerepelnek az előtelepített listában, telepítse a csomagokat az egyes összetevőkben.
Figyelmeztetés
Az Excute Python Script összetevő nem támogatja az extra natív kódtáraktól függő csomagok telepítését olyan parancsokkal, mint az "apt-get", például Java, PyODBC stb. Ennek az az oka, hogy ezt az összetevőt egyszerű környezetben hajtja végre, csak előre telepített Pythonnal és nem rendszergazdai engedélyekkel.
Hozzáférés az aktuális munkaterülethez és a regisztrált adathalmazokhoz
A munkaterületen regisztrált adathalmazokhoz való hozzáféréshez tekintse meg az alábbi mintakódot:
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,
Fájlok feltöltése
A Python-szkript végrehajtása összetevő támogatja a fájlok feltöltését az Azure Machine Learning Python SDK használatával.
Az alábbi példa bemutatja, hogyan tölthet fel egy képfájlt a Python-szkript végrehajtása összetevőbe:
# 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,
A folyamatfuttatás befejezése után megtekintheti a rendszerkép előnézetét az összetevő jobb oldali paneljén.
A fájlt bármely adattárba feltöltheti az alábbi kóddal. A fájl előnézetét csak a tárfiókban tekintheti meg.
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,
Python-szkript végrehajtásának konfigurálása
A Python-szkript végrehajtása összetevő minta Python-kódot tartalmaz, amelyet kiindulási pontként használhat. A Python-szkript végrehajtása összetevő konfigurálásához adja meg a Python-szkript szövegmezőben futtatandó bemeneteket és Python-kódot.
Adja hozzá a Python-szkript végrehajtása összetevőt a folyamathoz.
Adja hozzá és csatlakozzon az Adathalmaz1 adathalmazhoz a tervezőtől, amelyet bemenetként szeretne használni. Hivatkozzon erre az adatkészletre a Python-szkriptben DataFrame1 néven.
Az adathalmaz használata nem kötelező. Akkor használja, ha a Python használatával szeretne adatokat létrehozni, vagy Python-kóddal közvetlenül az összetevőbe importálja az adatokat.
Ez az összetevő támogatja egy második adathalmaz hozzáadását a Dataset2-en. Hivatkozzon a Python-szkript második adatkészletére DataFrame2 néven.
Az Azure Machine Learningben tárolt adathalmazokat a rendszer automatikusan pandas-adatkeretekké alakítja, amikor ezzel az összetevővel töltődik be.
Új Python-csomagok vagy -kód hozzáadásához csatlakoztassa az ezeket az egyéni erőforrásokat tartalmazó tömörített fájlt a Script bundle porthoz. Vagy ha a szkript nagyobb, mint 16 KB, használja a Szkriptcsomag portot, hogy elkerülje az olyan hibákat, mint a CommandLine túllépi az 16597 karakteres korlátot.
- Csomagolja a szkriptet és más egyéni erőforrásokat egy zip-fájlba.
- Töltse fel a zip-fájlt Fájladatkészletként a stúdióba.
- Húzza az adathalmaz-összetevőt a tervező szerzői lapjának bal oldali összetevőpaneljén található Adathalmazok listából.
- Csatlakoztassa az adathalmaz-összetevőt a Python-szkript végrehajtása összetevő Script Bundle portjához.
A feltöltött tömörített archívumban található bármely fájl használható a folyamat végrehajtása során. Ha az archívum könyvtárszerkezetet tartalmaz, a struktúra megmarad.
Fontos
Használjon egyedi és kifejező nevet a szkriptcsomagban lévő fájlokhoz, mivel egyes gyakori szavak (például
test
,app
stb.) a beépített szolgáltatások számára vannak fenntartva.Az alábbiakban egy példaszkriptet mutatunk be, amely egy Python-szkriptfájlt és egy txt fájlt tartalmaz:
A tartalma
my_script.py
a következő:def my_func(dataframe1): return dataframe1
Az alábbi mintakód bemutatja, hogyan lehet a szkriptcsomagban lévő fájlokat használni:
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]])
A Python-szkript szövegmezőbe írja be vagy illessze be az érvényes Python-szkriptet.
Megjegyzés
Legyen óvatos a szkript írásakor. Győződjön meg arról, hogy nincsenek szintaktikai hibák, például be nem jelentett változók, nem importált összetevők vagy függvények használata. Ügyeljen az előre telepített összetevők listájára. A listán nem szereplő összetevők importálásához telepítse a megfelelő csomagokat a szkriptbe, például:
import os os.system(f"pip install scikit-misc")
A Python-szkript szövegmezője előre fel van töltve néhány megjegyzésben szereplő utasítással, valamint az adathozzáféréshez és a kimenethez tartozó mintakóddal. Ezt a kódot szerkesztenie vagy cserélnie kell. A behúzáshoz és a burkolathoz kövesse a Python-konvenciókat:
- A szkriptnek tartalmaznia kell egy nevű
azureml_main
függvényt az összetevő belépési pontjaként. - A belépési pont függvénynek két bemeneti argumentumot kell tartalmaznia, és
Param<dataframe2>
, még akkor is,Param<dataframe1>
ha ezeket az argumentumokat nem használja a szkript. - A harmadik bemeneti porthoz csatlakoztatott tömörített fájlok kibontva és tárolva lesznek a könyvtárban
.\Script Bundle
, amely szintén hozzá lesz adva a Pythonhozsys.path
.
Ha a .zip fájl tartalmazza
mymodule.py
, importálja a paranccsalimport mymodule
.Két adatkészlet adható vissza a tervezőnek, amelynek típussorozatnak
pandas.DataFrame
kell lennie. Létrehozhat más kimeneteket a Python-kódban, és közvetlenül az Azure Storage-ba írhatja őket.Figyelmeztetés
Nem ajánlott adatbázishoz vagy más külső tárolóhoz csatlakozni a Python-szkript végrehajtása összetevőben. Használhatja az Adatok importálása összetevőt és az Adatok exportálása összetevőt
- A szkriptnek tartalmaznia kell egy nevű
Küldje el a folyamatot.
Ha az összetevő elkészült, ellenőrizze a kimenetet, ha a várt módon.
Ha az összetevő nem működik, hibaelhárítást kell végeznie. Válassza ki az összetevőt, és nyissa meg a Kimenetek+naplók elemet a jobb oldali panelen. Nyissa meg 70_driver_log.txt , és keressen rá a azureml_main, majd megtalálhatja, hogy melyik sor okozta a hibát. A "/tmp/tmp01_ID/user_script.py fájl", a 17. sor azureml_main" például azt jelzi, hogy a hiba a Python-szkript 17 sorában történt.
Results (Eredmények)
A beágyazott Python-kóddal végzett számítások eredményeit a következő formában kell megadni: pandas.DataFrame
, amely automatikusan Azure Machine Learning-adathalmaz-formátumra lesz konvertálva. Ezután az eredményeket a folyamat más összetevőivel együtt használhatja.
Az összetevő két adathalmazt ad vissza:
Results Dataset 1, amelyet az első visszaadott pandas-adatkeret határoz meg egy Python-szkriptben.
Result Dataset 2, amelyet a második visszaadott pandas-adatkeret határoz meg egy Python-szkriptben.
Előre telepített Python-csomagok
Az előre telepített csomagok a következők:
- 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
- cachetools==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
- titkosítás==2,8
- cycler==0.10.0
- kapor==0.3.1.1
- disztribúció==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
- kiegyensúlyozatlan-learn==0.4.3
- isodate==0.6.0
- itsdangerous==1.1.0
- jeepney==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
- requests==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
- six==1.14.0
- smart-open==1.10.0
- urllib3==1.25.8
- websocket-client==0.57.0
- werkzeug==0.16.1
- wheel==0.34.2
Következő lépések
Tekintse meg az Azure Machine Learning számára elérhető összetevőket .
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: