Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben a cikkben megtudhatja, hogyan használhatja a Pythont, a PyTorchot és az Azure Functionst egy előre betanított modell betöltésére egy kép tartalom alapján történő besorolásához. Mivel minden munkát helyileg végez, és nem hoz létre Azure-erőforrásokat a felhőben, az oktatóanyag elvégzése nem jár költséggel.
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
- Python 3.7.4 vagy újabb. (A Python 3.8.x és a Python 3.6.x is ellenőrzött az Azure Functionsben.)
- Az Azure Functions Core Tools
- Kódszerkesztő, például Visual Studio Code
Előfeltételek ellenőrzése
- Egy terminál vagy parancsablakban futtassa
func --versionaz Azure Functions Core Tools 2.7.1846-os vagy újabb verzióját. - Futtassa
python --version(Linux/macOS) vagypy --version(Windows) a Python 3.7.x-es verziójelentéseinek ellenőrzéséhez.
Az oktatóanyag-adattár klónozása
Egy terminál vagy parancsablakban klónozza a következő adattárat a Git használatával:
git clone https://github.com/Azure-Samples/functions-python-pytorch-tutorial.gitLépjen a mappába, és vizsgálja meg annak tartalmát.
cd functions-python-pytorch-tutorial- A start az oktatóanyag munkamappája.
- A befejezés a végső eredmény és a teljes megvalósítás a referencia számára.
- az erőforrások tartalmazzák a gépi tanulási modellt és a segédkódtárakat.
- A frontend egy olyan webhely, amely meghívja a függvényalkalmazást.
Python virtuális környezet létrehozása és aktiválása
Lépjen a kezdőmappára , és futtassa a következő parancsokat egy virtuális környezet .venvlétrehozásához és aktiválásához.
cd start
python -m venv .venv
source .venv/bin/activate
Ha a Python nem telepítette a venv-csomagot a Linux-disztribúcióra, futtassa a következő parancsot:
sudo apt-get install python3-venv
Ebben az aktivált virtuális környezetben minden további parancsot futtat. (A virtuális környezetből való kilépéshez futtassa deactivatea .)
Helyi függvényprojekt létrehozása
Az Azure Functionsben a függvényprojekt egy tároló egy vagy több egyedi függvény számára, amelyek mindegyike egy adott eseményindítóra válaszol. A projekt összes függvénye ugyanazokkal a helyi és üzemeltetési konfigurációkkal rendelkezik. Ebben a szakaszban egy olyan függvényprojektet hoz létre, amely egyetlen, HTTP-végpontot biztosító kazánplatétfüggvényt classify tartalmaz. Egy későbbi szakaszban konkrétabb kódot adhat hozzá.
A kezdőmappában az Azure Functions Core Tools használatával inicializálhat egy Python-függvényalkalmazást:
func init --worker-runtime pythonAz inicializálás után a start mappa különböző fájlokat tartalmaz a projekthez, beleértve a local.settings.json és host.json nevű konfigurációs fájlokat. Mivel local.settings.json tartalmazhat az Azure-ból letöltött titkos kulcsokat, a fájl alapértelmezés szerint ki van zárva a .gitignore fájlból a forrásvezérlőből.
Tipp.
Mivel egy függvényprojekt egy adott futtatókörnyezethez van kötve, a projekt összes függvényét ugyanazzal a nyelvvel kell írni.
Adjon hozzá egy függvényt a projekthez az alábbi paranccsal, ahol az
--nameargumentum a függvény egyedi neve, az--templateargumentum pedig a függvény eseményindítóját határozza meg.func newhozzon létre egy olyan almappát, amely megfelel a függvény nevének, amely a projekt választott nyelvének megfelelő kódfájlt és egy function.json nevű konfigurációs fájlt tartalmaz.func new --name classify --template "HTTP trigger"Ez a parancs létrehoz egy olyan mappát, amely megfelel a függvény nevének, osztályozza. Ebben a mappában két fájl található: __init__.py, amely tartalmazza a függvénykódot, és function.json, amely leírja a függvény eseményindítóját, valamint annak bemeneti és kimeneti kötéseit. A fájlok tartalmával kapcsolatos részletekért lásd a Python fejlesztői útmutatójának programozási modelljét .
Függvény helyi futtatása
Indítsa el a függvényt úgy, hogy elindítja a helyi Azure Functions-futtatókörnyezet-gazdagépet a start mappában:
func startHa a végpont megjelenik
classifya kimenetben, keresse meg az URL-címet.http://localhost:7071/api/classify?name=AzureA kimenetben a "Hello Azure!" üzenetnek kell megjelennie.Állítsa le a gazdagépet a Ctrl C billentyűkombinációval.-
A PyTorch-modell importálása és segédkód hozzáadása
Ha módosítani szeretné a függvényt, classify hogy a rendszerképet a tartalma alapján osztályozza, egy előre betanított ResNet-modellt használ. A PyTorch-ból származó előre betanított modell 1000 ImageNet-osztályból 1-re osztályoz egy képet. Ezután hozzáadhat néhány segédkódot és függőséget a projekthez.
A kezdőmappában futtassa az alábbi parancsot az előrejelzési kód és a címkék besorolási mappába másolásához.
cp ../resources/predict.py classify cp ../resources/labels.txt classifyEllenőrizze, hogy az osztályozási mappa tartalmaz-e predict.py és labels.txt nevű fájlokat. Ha nem, ellenőrizze, hogy futtatta-e a parancsot a kezdőmappában .
Nyissa meg a start/requirements.txt egy szövegszerkesztőben, és adja hozzá a segédkódhoz szükséges függőségeket, amelyek a következőképpen néznek ki:
azure-functions requests -f https://download.pytorch.org/whl/torch_stable.html torch==1.13.0+cpu torchvision==0.14.0+cpuTipp.
A fáklya és a fáklya változatának meg kell egyeznie a PyTorch vision adattár verziótáblájában felsorolt értékekkel.
Mentse requirements.txt, majd futtassa a következő parancsot a kezdőmappából a függőségek telepítéséhez.
pip install --no-cache-dir -r requirements.txt
A telepítés eltarthat néhány percig, amíg a függvényt a következő szakaszban módosíthatja.
Tipp.
Windows rendszeren a következő hibaüzenet jelenhet meg: "Nem telepíthet csomagokat egy EnvironmentError miatt: [Errno 2] Nincs ilyen fájl vagy könyvtár:", majd egy fájl hosszú elérési útja, például sharded_mutable_dense_hashtable.cpython-37.pyc. Ez a hiba általában azért fordul elő, mert a mappa elérési útja túl hosszú lesz. Ebben az esetben állítsa be a beállításkulcsot
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem@LongPathsEnabled1a hosszú útvonalak engedélyezéséhez. Másik lehetőségként ellenőrizze, hogy a Python-értelmező hol van telepítve. Ha ez a hely hosszú elérési úttal rendelkezik, próbálkozzon újra egy rövidebb elérési úttal rendelkező mappában.
A függvény frissítése előrejelzések futtatásához
Nyissa meg a classify/__init__.py egy szövegszerkesztőben, és adja hozzá a következő sorokat a meglévő
importutasítások után a szabványos JSON-kódtár és a prediktív segédek importálásához:import logging import azure.functions as func import json # Import helper script from .predict import predict_image_from_urlCserélje le a
mainfüggvény teljes tartalmát a következő kódra:def main(req: func.HttpRequest) -> func.HttpResponse: image_url = req.params.get('img') logging.info('Image URL received: ' + image_url) results = predict_image_from_url(image_url) headers = { "Content-type": "application/json", "Access-Control-Allow-Origin": "*" } return func.HttpResponse(json.dumps(results), headers = headers)Ez a függvény egy kép URL-címét kapja meg egy lekérdezési
imgsztring nevű paraméterben. Ezután a segédtárból kéripredict_image_from_url, hogy töltse le és osztályozza a képet a PyTorch-modellel. A függvény ezután egy HTTP-választ ad vissza az eredményekkel együtt.Fontos
Mivel ezt a HTTP-végpontot egy másik tartományban üzemeltetett weblap hívja meg, a válasz tartalmaz egy
Access-Control-Allow-Originfejlécet, amely megfelel a böngésző forrásközi erőforrás-megosztási (CORS) követelményeinek.Egy éles alkalmazásban váltson
*a weblap konkrét eredetére a hozzáadott biztonság érdekében.Mentse a módosításokat, majd feltételezve, hogy a függőségek telepítése befejeződött, indítsa újra a helyi függvény gazdagépét.
func startGyőződjön meg arról, hogy a gazdagépet a kezdőmappában futtatja, és a virtuális környezet aktiválva van. Ellenkező esetben a gazdagép elindul, de a függvény meghívásakor hibaüzenetek jelennek meg.func startA böngészőben nyissa meg a következő URL-címet a függvény meghívásához egy Bernese Mountain Dog-rendszerkép URL-címével, és győződjön meg arról, hogy a visszaadott JSON berni hegyi kutyaként osztályozza a képet.
http://localhost:7071/api/classify?img=https://raw.githubusercontent.com/Azure-Samples/functions-python-pytorch-tutorial/master/resources/assets/Bernese-Mountain-Dog-Temperament-long.jpgFuttassa a gazdagépet, mert a következő lépésben használja.
A függvény teszteléséhez futtassa a helyi webalkalmazás előtérét
A függvényvégpont egy másik webalkalmazásból való meghívásának teszteléséhez egy egyszerű alkalmazás található az adattár előtérmappájában.
Nyisson meg egy új terminált vagy parancssort, és aktiválja a virtuális környezetet (a pythonos virtuális környezet létrehozása és aktiválása című cikkben leírtak szerint).
Nyissa meg az adattár előtérmappáját.
HTTP-kiszolgáló indítása a Pythonnal:
python -m http.serverNyissa meg
localhost:8000a böngészőben, majd írja be az alábbi fényképES URL-címek egyikét a szövegmezőbe, vagy használja a nyilvánosan elérhető képek URL-címét.https://raw.githubusercontent.com/Azure-Samples/functions-python-pytorch-tutorial/master/resources/assets/Bernese-Mountain-Dog-Temperament-long.jpghttps://github.com/Azure-Samples/functions-python-pytorch-tutorial/blob/master/resources/assets/bald-eagle.jpg?raw=truehttps://raw.githubusercontent.com/Azure-Samples/functions-python-pytorch-tutorial/master/resources/assets/penguin.jpg
Válassza a Küldés lehetőséget a függvényvégpont meghívásához a rendszerkép besorolásához.
Ha a böngésző hibát jelez a kép URL-címének elküldésekor, ellenőrizze azt a terminált, amelyen a függvényalkalmazást futtatja. Ha a "Nem található modul "PIL" hibaüzenet jelenik meg, előfordulhat, hogy a függvényalkalmazást a start mappában indította el anélkül, hogy először aktiválta volna a korábban létrehozott virtuális környezetet. Ha továbbra is hibákat lát, futtassa
pip install -r requirements.txtújra a virtuális környezetet aktiválva, és keressen hibákat.
Az erőforrások eltávolítása
Mivel az oktatóanyag teljes egésze helyileg fut a gépen, nincs törölendő Azure-erőforrás vagy szolgáltatás.
Következő lépések
Ebben az oktatóanyagban megtanulta, hogyan hozhat létre és szabhat testre EGY HTTP API-végpontot az Azure Functions használatával a képek PyTorch-modellel való besorolásához. Azt is megtanulta, hogyan hívhatja meg az API-t egy webalkalmazásból. Az oktatóanyagban szereplő technikákkal bármilyen összetettségű API-kat hozhat létre, mindezt az Azure Functions által biztosított kiszolgáló nélküli számítási modellen való futtatás során.
Lásd még: