Een model implementeren, promoveren en terugdraaien met GitHub Actions
Wanneer het model is geregistreerd en productiepromotie is beveiligd door een GitHub-omgeving, bent u klaar om voorspellingen te leveren zonder dat elke gebruiker wordt blootgesteld aan een niet-geteste versie.
Een eindpunt en een implementatie maken
Een beheerd online-eindpunt biedt een stabiel HTTPS-adres dat een clienttoepassing, zoals het planningssysteem van Proseware, aanroept om een voorspelling te krijgen. Het eindpunt zelf voert het model niet uit. Een of meer implementaties, die elk een specifieke geregistreerde modelversie koppelen aan een rekenconfiguratie en, voor MLflow-modellen, een automatisch gegenereerde omgeving en scorescript, doen de werkelijke service. Als u de eindpunt-URL stabiel houdt terwijl u implementaties eronder vervangt, betekent dit dat het planningssysteem nooit hoeft te veranderen, zelfs als het no-show-model opnieuw wordt getraind en opnieuw wordt geïmplementeerd.
Tip
Meer informatie over het implementeren van machine learning-modellen naar online-eindpunten.
Een nieuwe versie veilig promoveren
Een eindpunt kan meerdere implementaties tegelijk hosten en u bepaalt welk percentage inkomend verkeer elke implementatie ontvangt. Met deze installatie kunt u een nieuwe modelversie op dezelfde manier implementeren als bij elke productiesoftwarewijziging: implementeer de nieuwe versie naast het huidige verkeer op 0% verkeer, bevestig dat deze zich gedraagt zoals verwacht, waarna het verkeer geleidelijk wordt verplaatst, een benadering die vaak een blauwgroene implementatie wordt genoemd. Als de nieuwe versie minder goed presteert, verplaatst u verkeer terug naar de vorige implementatie in plaats van het eindpunt uit te schakelen.
Tip
Meer informatie over veilige implementatie voor online-eindpunten.
Testen voordat u verkeer verplaatst
Voordat een nieuwe implementatie liveverkeer ontvangt, verzendt u aanvragen rechtstreeks naar die implementatie en vergelijkt u de reacties op wat u verwacht. Pas nadat de nieuwe uitrol deze controles heeft doorstaan, verhoogt u het toegewezen verkeer. Omdat het enkele minuten kan duren voordat een implementatie de status Gereed heeft bereikt, moet een geautomatiseerde test wachten totdat de implementatie is ingericht voordat aanvragen worden verzonden.
De pijplijn automatiseren met GitHub Actions
Het handmatig herhalen van registratie, implementatie en testen voor ieder opnieuw getraind model is niet schaalbaar, dus automatiseert het team van Proseware de pijplijn met GitHub Actions en de Azure Machine Learning CLI (v2). De huidige aanbevolen manier om een werkstroom te verifiëren voor Azure is federatieve referenties van OpenID Connect (OIDC), waarmee GitHub Actions een kortstondig toegangstoken kan aanvragen in plaats van een clientgeheim op te slaan als opslagplaatsgeheim. Je configureert een gefedereerde referentie voor een Microsoft Entra-toepassing, met als bereik je repository en branch, en verwijst er vervolgens naar in de workflow met de actie azure/login:
permissions:
id-token: write
contents: read
env:
RESOURCE_GROUP: ${{ vars.AZURE_RESOURCE_GROUP }}
WORKSPACE_NAME: ${{ vars.AZURE_WORKSPACE_NAME }}
ENDPOINT_NAME: ${{ vars.AZURE_ENDPOINT_NAME }}
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Sign in to Azure
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Register and deploy the model
run: |
az extension add -n ml -y
az ml model create \
--file model.yml \
--resource-group $RESOURCE_GROUP \
--workspace-name $WORKSPACE_NAME
az ml online-deployment create \
--name green \
--endpoint-name $ENDPOINT_NAME \
--file green-deployment.yml \
--resource-group $RESOURCE_GROUP \
--workspace-name $WORKSPACE_NAME
- name: Test the new deployment
run: |
az ml online-endpoint invoke \
--name $ENDPOINT_NAME \
--deployment-name green \
--request-file sample-request.json \
--resource-group $RESOURCE_GROUP \
--workspace-name $WORKSPACE_NAME
- name: Send limited traffic to the new deployment
run: |
az ml online-endpoint update \
--name $ENDPOINT_NAME \
--traffic "blue=90 green=10" \
--resource-group $RESOURCE_GROUP \
--workspace-name $WORKSPACE_NAME
Het permissions-blok van de werkstroom verleent de taak de id-token die deze nodig heeft om bij Azure een token aan te vragen. De azure/login stap wisselt dat token uit voor een geverifieerde Azure CLI sessie. Nadat een directe test is geslaagd, verzendt de werkstroom 10% verkeer naar de nieuwe green implementatie. Promoveer het verder pas nadat het productiegedrag voldoet aan uw acceptatiecriteria.
Terugdraaien naar het vorige model
Houd de vorige blue implementatie beschikbaar totdat het nieuwe model de observatieperiode heeft voltooid. Als er fouten of onaanvaardbare voorspellingen worden weergegeven na de promotie, routeert u al het verkeer terug naar blue:
az ml online-endpoint update \
--name $ENDPOINT_NAME \
--traffic "blue=100 green=0" \
--resource-group $RESOURCE_GROUP \
--workspace-name $WORKSPACE_NAME
Als u verkeer wijzigt, blijft de eindpunt-URL behouden en wordt het eindpunt sneller hersteld dan het verwijderen en opnieuw maken van het eindpunt. Nadat verkeer terugkeert naar het vorige model, onderzoekt u de green implementatie zonder dat gebruikers aan het model worden blootgesteld. Verwijder de vorige implementatie pas nadat het nieuwe model voldoet aan de acceptatiecriteria voor de vereiste observatieperiode.
Tip
Meer informatie over het verbinden van GitHub Actions met Azure met OpenID Connect.