Niestandardowe umiejętności uczenia maszynowego

Ukończone

Korzystanie z umiejętności niestandardowych uczenia maszynowego działa tak samo jak dodawanie innych niestandardowych umiejętności do indeksu wyszukiwania.

W tym miejscu dowiesz się, jak używać AmlSkill umiejętności niestandardowych, i dowiesz się, jak skutecznie z niej korzystać.

Niestandardowy schemat umiejętności usługi Azure Machine Learning

W przypadku wzbogacania indeksu wyszukiwania za pomocą niestandardowej umiejętności usługi Azure Machine Learning (AML) wzbogacanie odbywa się na poziomie dokumentu. Zestaw umiejętności używany przez indeksator dokumentów musi zawierać element AmlSkill. Schemat tej umiejętności to:

{
      "@odata.type": "#Microsoft.Skills.Custom.AmlSkill",
      "name": "AML name",
      "description": "AML description",
      "context": "/document",
      "uri": "https://[Your AML endpoint]",
      "key": "Your AML endpoint key",
      "resourceId": null,
      "region": null,
      "timeout": "PT30S",
      "degreeOfParallelism": 1,
      "inputs": [
        {
          "name": "field name in the AML model",
          "source": "field from the document in the index"
        },
        {
          "name": "field name in the AML model",
          "source": "field from the document in the index"
        },

      ],
      "outputs": [
        {
          "name": "result field from the AML model",
          "targetName": "result field in the document"
        }
      ]
    }

Ważne

Identyfikator URI musi używać punktu końcowego HTTPS. Może to być zarządzany niestandardowy adres URL dostarczony przez firmę Microsoft lub własną nazwę domeny i certyfikat.

Pamiętaj, że niestandardowa umiejętność nie zawiera ustawień, batchSize ponieważ model AML przetworzy pojedynczy dokument naraz. Pozostałe ustawienia kontrolujące wydajność umiejętności to timeout i degreeOfParallelism. Powyższy schemat ustawił 30 sekund jako wartość limitu czasu. Stopień równoległości powinien zaczynać się od jednego. W zależności od infrastruktury może być możliwe zwiększenie tej liczby.

Najlepszym sposobem zarządzania wydajnością umiejętności AML jest odpowiednie skalowanie klastra wnioskowania Kubernetes w górę w celu zarządzania obciążeniem.

Indeks dokumentu wymaga pola do przechowywania wyników z modelu AML. Następnie dodasz mapowanie pól wyjściowych, aby przechowywać wyniki z niestandardowego zestawu umiejętności do pola w dokumencie w indeksie.

Kod JSON do wykonania tego mapowania pól wyjściowych to:

"outputFieldMappings": [
    {
      "sourceFieldName": "/result field in the document",
      "targetFieldName": "result field from the AML model"
    }
  ]

Model usługi Azure Machine Learning można utworzyć przy użyciu narzędzi deweloperskich, takich jak zestaw SDK języka Python, interfejsy API REST lub interfejs wiersza polecenia platformy Azure. Inną opcją jest skorzystanie z usługi Azure AI Machine Learning Studio, graficznego interfejsu użytkownika, który umożliwia tworzenie, trenowanie i wdrażanie modeli bez konieczności pisania kodu.

Diagram przedstawiający kroki wzbogacania indeksu wyszukiwania za pomocą modelu usługi Azure AI Machine Learning Studio.

Po utworzeniu modelu zmieniasz sposób, w jaki kod oceniania wywołuje model, aby umożliwić korzystanie z niego przez niestandardową umiejętność wyszukiwania.

Ostatnimi krokami jest utworzenie klastra Kubernetes w celu hostowania punktu końcowego dla modelu.

Tworzenie obszaru roboczego AML

Podczas tworzenia obszaru roboczego usługi AML platforma Azure utworzy również konta magazynu, magazyn kluczy i zasoby usługi Application Insights. Okienko Przegląd obszaru roboczego AML zawiera link umożliwiający uruchomienie usługi Azure AI Machine Learning Studio.

Tworzenie i trenowanie modelu w usłudze Azure Machine Learning Studio

Usługa Azure AI Machine Learning Studio umożliwia używanie projektanta do używania przeciągania i upuszczania w celu tworzenia potoków, które tworzą i trenują modele. Istnieje jeszcze łatwiejszy sposób tworzenia modeli przy użyciu wstępnie utworzonych szablonów.

Zrzut ekranu przedstawiający wszystkie wstępnie utworzone składniki w usłudze Azure AI Machine Learning Studio.

Jednak chcesz utworzyć modele, należy je zarejestrować w usłudze Azure AI Machine Learning Studio, aby można było wdrożyć model w usłudze internetowej.

Zmienianie sposobu działania modelu w celu umożliwienia jego wywołania przez niestandardową umiejętność AML

Trenowane modele zwykle używają wielu przykładów danych. Zestawy danych będą miały wiele wierszy i będą podzielone i używane do trenowania i testowania modelu. Kod, który obsługuje te dane i przekazuje je do modelu, musi zostać zmieniony w celu obsługi pojedynczych wierszy.

Odpowiedź JSON z modelu powinna również zawierać tylko przewidywanie wyjściowe.

Jeśli na przykład dane są tablicą obiektów JSON:

[ 
    {
        "attribute-1": null,
        "attribute-2": null
    },
    {
        "attribute-1": null,
        "attribute-2": null
    },
    {
        "attribute-1": null,
        "attribute-2": null
    }
]

Kod oceniania języka Python będzie musiał przetworzyć dane w danym momencie:

data = json.loads(data)
for row in data:
    for key, val in row.items():
        input_entry[key].append(decode_nan(val))

Aby zmienić wejściowy zestaw danych na pojedynczy rekord:

{
    "attribute-1": null,
    "attribute-2": null
}

Kod języka Python będzie musiał zmienić się na:

data = json.loads(data)
for key, val in data.items():
    input_entry[key].append(decode_nan(val))

W przypadku odpowiedzi z kodu oceniania domyślny kod zwraca cały dokument JSON:

return json.dumps({"result": result.data_frame.values.tolist()})

Umiejętność niestandardowa musi być w stanie mapować pojedynczą odpowiedź z modelu. Dlatego kod powinien zwracać kod JSON, który jest tylko ostatnim atrybutem.

output = result.data_frame.values.tolist()
# return the last column of the the first row of the dataframe
return {
    "predicted_outcome": output[0][-1]
}

Tworzenie punktu końcowego dla modelu do użycia

Model jest wdrażany w punkcie końcowym. Usługa Azure AI Machine Learning Studio obsługuje wdrażanie modelu w punkcie końcowym w czasie rzeczywistym, punkcie końcowym partii lub usłudze internetowej. W tej chwili niestandardowa AmlSkill umiejętność usługi Azure AI Search obsługuje tylko punkty końcowe usługi internetowej.

Innym ograniczeniem jest to, że punkt końcowy musi być klastrem usługi Azure Kubernetes Service (AKS). Wystąpienia kontenerów nie są obsługiwane.

Jeśli masz doświadczenie w tworzeniu klastrów usługi AKS i zarządzaniu nimi, możesz ręcznie utworzyć klastry w witrynie Azure Portal i odwołać się do nich podczas tworzenia punktu końcowego. Jednak łatwiej jest umożliwić usłudze Azure AI Machine Learning Studio tworzenie klastra i zarządzanie nim.

Jeśli przejdziesz do sekcji obliczeniowej programu Studio, możesz utworzyć klastry wnioskowania. Następnie program AML przeprowadzi Cię przez proces wybierania rozmiaru klastra, a nawet włączenia protokołu HTTPS i utworzenia nazwy domeny. Będzie on w formacie location.cloudapp.azure.com:443.

Łączenie niestandardowej umiejętności AML z punktem końcowym

W przypadku wszystkich powyższych elementów musisz zaktualizować usługa wyszukiwania usługi Azure AI. Kroki, które należy wykonać, są podobne do przykładów przedstawionych w tym module, więc nie będziemy szczegółowo omawiać tutaj szczegółowych informacji, ale zostaną wyświetlone kroki do wykonania.

  1. Najpierw, aby wzbogacić indeks wyszukiwania, do indeksu zostanie dodane nowe pole, aby uwzględnić dane wyjściowe dla modelu.
  2. Następnie zaktualizujesz zestaw umiejętności indeksu i dodasz niestandardową #Microsoft.Skills.Custom.AmlSkill umiejętność.
  3. Następnie zmienisz indeksator, aby zamapować dane wyjściowe z niestandardowej umiejętności na pole utworzone w indeksie.
  4. Ostatnim krokiem jest ponowne uruchomienie indeksatora w celu wzbogacenia indeksu za pomocą modelu AML.