Wdrażanie, podwyższanie poziomu i wycofywanie modelu za pomocą GitHub Actions
Po zarejestrowaniu modelu i zabezpieczeniu promowania do środowiska produkcyjnego za pomocą środowiska GitHub możesz już udostępniać predykcje bez narażania wszystkich użytkowników na nieprzetestowaną wersję.
Tworzenie punktu końcowego i wdrożenia
Zarządzany punkt końcowy online udostępnia stabilny adres HTTPS, pod który aplikacja kliencka, taka jak system planowania firmy Proseware, wysyła żądania, aby uzyskać prognozę. Sam punkt końcowy nie uruchamia modelu. Co najmniej jedno wdrożenie, z których każda łączy określoną zarejestrowaną wersję modelu z konfiguracją obliczeniową, a w przypadku modeli MLflow automatycznie wygenerowane środowisko i skrypt oceniania wykonują rzeczywistą obsługę. Utrzymywanie stałego adresu URL endpointu podczas podmieniania wdrożeń działających pod nim oznacza, że system planowania nigdy nie musi być zmieniany, nawet gdy model przewidujący niepojawienie się pacjenta jest ponownie trenowany i wdrażany.
Napiwek
Dowiedz się więcej o wdrażaniu modeli uczenia maszynowego w punktach końcowych online.
Bezpieczne wdrażanie nowej wersji
Punkt końcowy może hostować więcej niż jedno wdrożenie naraz i kontrolować, jaki procent ruchu przychodzącego otrzymuje każde wdrożenie. Ta konfiguracja umożliwia wdrożenie nowej wersji modelu w taki sam sposób, w jaki można wdrożyć dowolną zmianę oprogramowania produkcyjnego: wdrożyć nową wersję wraz z bieżącą wersją na 0% ruchu, potwierdzić, że działa zgodnie z oczekiwaniami, a następnie stopniowo przesuwać ruch do niego, czyli podejście często nazywane wdrożeniem niebieskim zielonym. Jeśli nowa wersja działa gorzej, przekierowujesz ruch z powrotem na poprzednie wdrożenie, zamiast wyłączać punkt końcowy.
Napiwek
Dowiedz się więcej o bezpiecznym wdrożeniu punktów końcowych online.
Przetestuj przed przełączeniem ruchu
Zanim nowe wdrożenie zacznie obsługiwać jakikolwiek ruch produkcyjny, wysyłasz żądania bezpośrednio do tego wdrożenia i porównujesz jego odpowiedzi z oczekiwanymi wynikami. Dopiero gdy nowe wdrożenie przejdzie te kontrole, zwiększasz przypisany do niego ruch. Ponieważ osiągnięcie przez wdrożenie stanu gotowości może potrwać kilka minut, test automatyczny musi poczekać na zakończenie aprowizacji wdrożenia, zanim wyśle żądania.
Zautomatyzować potok za pomocą GitHub Actions
Ręczne powtarzanie rejestracji, wdrażania i testowania dla każdego ponownie trenowanego modelu nie jest skalowane, dlatego zespół firmy Proseware automatyzuje potok przy użyciu GitHub Actions i interfejsu wiersza polecenia Azure Machine Learning (wersja 2). Obecnie zalecanym sposobem uwierzytelniania przepływu pracy na platformie Azure są federacyjne poświadczenia OpenID Connect (OIDC), które umożliwiają usłudze GitHub Actions żądanie krótkotrwałego tokenu dostępu zamiast przechowywania klucza tajnego klienta jako wpisu tajnego repozytorium. Należy skonfigurować poświadczenie federacyjne w aplikacji Microsoft Entra, powiązane z repozytorium i gałęzią, a następnie odwołać się do niego w przepływie pracy za pomocą akcji 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
Blok permissions przepływu pracy przyznaje zadaniu uprawnienie id-token, którego potrzebuje, aby zażądać tokenu z platformy Azure. Ten krok azure/login zamienia ten token na uwierzytelnioną sesję Azure CLI. Po pomyślnym zakończeniu bezpośredniego testu przepływ pracy kieruje 10% ruchu do nowego wdrożenia green. Promuj go dalej dopiero wtedy, gdy jego działanie w środowisku produkcyjnym spełni Twoje kryteria akceptacji.
Przywróć poprzedni model
Zachowaj dostęp do poprzedniego blue wdrożenia, dopóki nowy model nie zakończy okresu obserwacji. Jeśli po wdrożeniu pojawią się błędy lub nieakceptowalne predykcje, przekieruj cały ruch z powrotem do blue:
az ml online-endpoint update \
--name $ENDPOINT_NAME \
--traffic "blue=100 green=0" \
--resource-group $RESOURCE_GROUP \
--workspace-name $WORKSPACE_NAME
Zmiana ruchu zachowuje adres URL punktu końcowego i zapewnia szybsze odzyskiwanie niż usuwanie i ponowne tworzenie punktu końcowego. Po przywróceniu ruchu do poprzedniego modelu zbadaj wdrożenie green, nie udostępniając go użytkownikom. Usuń poprzednie wdrożenie dopiero po spełnieniu kryteriów akceptacji nowego modelu dla wymaganego okresu obserwacji.
Napiwek
Dowiedz się więcej o nawiązywaniu połączenia GitHub Actions z Azure za pomocą programu OpenID Connect.