Tworzenie kopii zapasowych i odzyskiwanie niestandardowych modeli klasyfikacji tekstu
Podczas tworzenia zasobu języka należy określić region, w którym ma zostać utworzony. Od tego czasu zasób i wszystkie powiązane z nim operacje odbywają się w określonym regionie serwera platformy Azure. Problem z siecią, który dotyczy całego regionu, zdarza się rzadko, ale nie jest niemożliwy. Jeśli rozwiązanie musi być zawsze dostępne, należy zaprojektować je w trybie failover w innym regionie. Wymaga to dwóch zasobów języka sztucznej inteligencji platformy Azure w różnych regionach i możliwość synchronizowania modeli niestandardowych między regionami.
Jeśli aplikacja lub firma zależy od użycia niestandardowego modelu klasyfikacji tekstu, zalecamy utworzenie repliki projektu w innym obsługiwanym regionie. Dzięki temu, jeśli wystąpi awaria regionalna, możesz uzyskać dostęp do modelu w innym regionie pracy awaryjnej, w którym został zreplikowany projekt.
Replikowanie projektu oznacza wyeksportowanie metadanych i zasobów projektu i zaimportowanie ich do nowego projektu. Spowoduje to jedynie skopiowanie ustawień projektu i otagowanych danych. Nadal musisz wytrenować i wdrożyć modele, które będą dostępne do użycia z interfejsami API przewidywania.
W tym artykule dowiesz się, jak używać interfejsów API eksportu i importowania do replikowania projektu z jednego zasobu do innego istniejącego w różnych obsługiwanych regionach geograficznych, wskazówek dotyczących synchronizacji projektów i zmian wymaganych do użycia środowiska uruchomieniowego.
Wymagania wstępne
- Dwa zasoby języka sztucznej inteligencji platformy Azure w różnych regionach świadczenia usługi Azure. Utwórz zasób języka i połącz je z kontem usługi Azure Storage. Zaleca się połączenie obu zasobów języka z tym samym kontem magazynu, chociaż może to spowodować nieco większe opóźnienie podczas importowania projektu i trenowanie modelu.
Uzyskiwanie punktu końcowego kluczy zasobów
Wykonaj poniższe kroki, aby uzyskać klucze i punkt końcowy zasobów podstawowych i pomocniczych. Zostaną one użyte w poniższych krokach.
Przejdź do strony przeglądu zasobu w witrynie Azure Portal
Z menu po lewej stronie wybierz pozycję Klucze i punkt końcowy. Użyjesz punktu końcowego i klucza dla żądań interfejsu API
Napiwek
Zanotuj klucze i punkty końcowe dla zasobów podstawowych i pomocniczych. Użyj tych wartości, aby zastąpić następujące symbole zastępcze: {PRIMARY-ENDPOINT}
, {SECONDARY-ENDPOINT}
{PRIMARY-RESOURCE-KEY}
i {SECONDARY-RESOURCE-KEY}
.
Zanotuj również nazwę projektu, nazwę modelu i nazwę wdrożenia. Użyj tych wartości, aby zastąpić następujące symbole zastępcze: {PROJECT-NAME}
, {MODEL-NAME}
i {DEPLOYMENT-NAME}
.
Eksportowanie zasobów projektu podstawowego
Rozpocznij od wyeksportowania zasobów projektu z projektu w zasobie podstawowym.
Przesyłanie zadania eksportu
Zastąp symbole zastępcze w poniższym żądaniu swoim {PRIMARY-ENDPOINT}
i {PRIMARY-RESOURCE-KEY}
uzyskanym w pierwszym kroku.
Utwórz żądanie POST przy użyciu następującego adresu URL, nagłówków i treści JSON w celu wyeksportowania projektu.
Adres URL żądania
Podczas tworzenia żądania interfejsu API użyj następującego adresu URL. Zastąp poniższe wartości symboli zastępczych własnymi wartościami.
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/:export?stringIndexType=Utf16CodeUnit&api-version={API-VERSION}
Symbol zastępczy | Wartość | Przykład |
---|---|---|
{ENDPOINT} |
Punkt końcowy do uwierzytelniania żądania interfejsu API. | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
Nazwa projektu. Ta wartość jest uwzględniana w wielkości liter. | MyProject |
{API-VERSION} |
Wersja wywoływanego interfejsu API. Wartością, do których odwołuje się tutaj, jest najnowsza wersja modelu wydana. | 2022-05-01 |
Nagłówki
Użyj następującego nagłówka, aby uwierzytelnić żądanie.
Key | Wartość |
---|---|
Ocp-Apim-Subscription-Key |
Klucz do zasobu. Służy do uwierzytelniania żądań interfejsu API. |
Treść
Użyj następującego kodu JSON w treści żądania, określając, że chcesz wyeksportować wszystkie zasoby.
{
"assetsToExport": ["*"]
}
Po wysłaniu żądania interfejsu API otrzymasz odpowiedź wskazującą 202
, że zadanie zostało przesłane poprawnie. W nagłówkach odpowiedzi wyodrębnij operation-location
wartość. Zostanie on sformatowany w następujący sposób:
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/export/jobs/{JOB-ID}?api-version={API-VERSION}
{JOB-ID}
służy do identyfikowania żądania, ponieważ ta operacja jest asynchroniczna. Użyjesz tego adresu URL, aby uzyskać stan zadania eksportu.
Uzyskiwanie stanu zadania eksportu
Zastąp symbole zastępcze w poniższym żądaniu swoim {PRIMARY-ENDPOINT}
i {PRIMARY-RESOURCE-KEY}
uzyskanym w pierwszym kroku.
Użyj następującego żądania GET , aby uzyskać stan eksportowania zasobów projektu. Zastąp poniższe wartości symboli zastępczych własnymi wartościami.
Adres URL żądania
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/export/jobs/{JOB-ID}?api-version={API-VERSION}
Symbol zastępczy | Wartość | Przykład |
---|---|---|
{ENDPOINT} |
Punkt końcowy do uwierzytelniania żądania interfejsu API. | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
Nazwa projektu. Ta wartość jest uwzględniana w wielkości liter. | myProject |
{JOB-ID} |
Identyfikator lokalizowania stanu trenowania modelu. Jest to wartość nagłówka location otrzymana w poprzednim kroku. |
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx |
{API-VERSION} |
Wersja wywoływanego interfejsu API. Wartość, do których odwołuje się tutaj, dotyczy najnowszej wersji wydanej. Dowiedz się więcej o innych dostępnych wersjach interfejsu API | 2022-05-01 |
Nagłówki
Użyj następującego nagłówka, aby uwierzytelnić żądanie.
Key | Wartość |
---|---|
Ocp-Apim-Subscription-Key |
Klucz do zasobu. Służy do uwierzytelniania żądań interfejsu API. |
Treść odpowiedzi
{
"resultUrl": "{RESULT-URL}",
"jobId": "string",
"createdDateTime": "2021-10-19T23:24:41.572Z",
"lastUpdatedDateTime": "2021-10-19T23:24:41.572Z",
"expirationDateTime": "2021-10-19T23:24:41.572Z",
"status": "unknown",
"errors": [
{
"code": "unknown",
"message": "string"
}
]
}
Użyj adresu URL z resultUrl
klucza w treści, aby wyświetlić wyeksportowane zasoby z tego zadania.
Pobieranie wyników eksportu
Prześlij żądanie GET przy użyciu {RESULT-URL}
otrzymanego z poprzedniego kroku, aby wyświetlić wyniki zadania eksportu.
Nagłówki
Użyj następującego nagłówka, aby uwierzytelnić żądanie.
Key | Wartość |
---|---|
Ocp-Apim-Subscription-Key |
Klucz do zasobu. Służy do uwierzytelniania żądań interfejsu API. |
Skopiuj treść odpowiedzi, ponieważ będzie ona używana jako treść na potrzeby następnego zadania importu.
Importowanie do nowego projektu
Teraz zaimportuj wyeksportowane zasoby projektu w nowym projekcie w regionie pomocniczym, aby można je było replikować.
Przesyłanie zadania importu
Zastąp symbole zastępcze w poniższym żądaniu swoim {SECONDARY-ENDPOINT}
i {SECONDARY-RESOURCE-KEY}
uzyskanym w pierwszym kroku.
Prześlij żądanie POST przy użyciu następującego adresu URL, nagłówków i treści JSON, aby zaimportować plik etykiet. Upewnij się, że plik etykiet jest zgodne z akceptowanym formatem.
Jeśli projekt o tej samej nazwie już istnieje, dane tego projektu zostaną zastąpione.
{Endpoint}/language/authoring/analyze-text/projects/{projectName}/:import?api-version={API-VERSION}
Symbol zastępczy | Wartość | Przykład |
---|---|---|
{ENDPOINT} |
Punkt końcowy do uwierzytelniania żądania interfejsu API. | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
Nazwa projektu. Ta wartość jest uwzględniana w wielkości liter. | myProject |
{API-VERSION} |
Wersja wywoływanego interfejsu API. Wartość, do których odwołuje się tutaj, dotyczy najnowszej wersji wydanej. Dowiedz się więcej o innych dostępnych wersjach interfejsu API | 2022-05-01 |
Nagłówki
Użyj następującego nagłówka, aby uwierzytelnić żądanie.
Key | Wartość |
---|---|
Ocp-Apim-Subscription-Key |
Klucz do zasobu. Służy do uwierzytelniania żądań interfejsu API. |
Treść
Użyj następującego kodu JSON w żądaniu. Zastąp poniższe wartości symboli zastępczych własnymi wartościami.
{
"projectFileVersion": "{API-VERSION}",
"stringIndexType": "Utf16CodeUnit",
"metadata": {
"projectName": "{PROJECT-NAME}",
"storageInputContainerName": "{CONTAINER-NAME}",
"projectKind": "customMultiLabelClassification",
"description": "Trying out custom multi label text classification",
"language": "{LANGUAGE-CODE}",
"multilingual": true,
"settings": {}
},
"assets": {
"projectKind": "customMultiLabelClassification",
"classes": [
{
"category": "Class1"
},
{
"category": "Class2"
}
],
"documents": [
{
"location": "{DOCUMENT-NAME}",
"language": "{LANGUAGE-CODE}",
"dataset": "{DATASET}",
"classes": [
{
"category": "Class1"
},
{
"category": "Class2"
}
]
},
{
"location": "{DOCUMENT-NAME}",
"language": "{LANGUAGE-CODE}",
"dataset": "{DATASET}",
"classes": [
{
"category": "Class2"
}
]
}
]
}
}
Klucz | Symbol zastępczy | Wartość | Przykład |
---|---|---|---|
api-version | {API-VERSION} |
Wersja wywoływanego interfejsu API. Używana tutaj wersja musi być tą samą wersją interfejsu API w adresie URL. Dowiedz się więcej o innych dostępnych wersjach interfejsu API | 2022-05-01 |
projectName | {PROJECT-NAME} |
Nazwa projektu. Ta wartość jest uwzględniana w wielkości liter. | myProject |
projectKind | customMultiLabelClassification |
Rodzaj projektu. | customMultiLabelClassification |
język | {LANGUAGE-CODE} |
Ciąg określający kod języka dokumentów używanych w projekcie. Jeśli projekt jest projektem wielojęzycznym, wybierz kod języka większości dokumentów. Zobacz Obsługa języków, aby dowiedzieć się więcej o obsłudze wielojęzycznej. | en-us |
wielojęzyczny | true |
Wartość logiczna, która umożliwia posiadanie dokumentów w wielu językach w zestawie danych, a po wdrożeniu modelu można wykonywać zapytania względem modelu w dowolnym obsługiwanym języku (niekoniecznie zawarte w dokumentach szkoleniowych. Zobacz Obsługa języków, aby dowiedzieć się więcej o obsłudze wielojęzycznej. | true |
storageInputContainerName | {CONTAINER-NAME} |
Nazwa kontenera usługi Azure Storage, w którym zostały przekazane dokumenty. | myContainer |
obiektów | [] | Tablica zawierająca wszystkie klasy, które znajdują się w projekcie. Są to klasy, do których chcesz sklasyfikować dokumenty. | [] |
documents | [] | Tablica zawierająca wszystkie dokumenty w projekcie i klasy oznaczone dla tego dokumentu. | [] |
lokalizacja | {DOCUMENT-NAME} |
Lokalizacja dokumentów w kontenerze magazynu. Ponieważ wszystkie dokumenty znajdują się w katalogu głównym kontenera, powinien to być nazwa dokumentu. | doc1.txt |
zestaw danych | {DATASET} |
Zestaw testowy, do którego ten dokument zostanie podzielony przed rozpoczęciem trenowania. Aby uzyskać więcej informacji na temat dzielenia danych, zobacz Jak wytrenować model . Możliwe wartości dla tego pola to Train i Test . |
Train |
Po wysłaniu żądania interfejsu API otrzymasz odpowiedź wskazującą 202
, że zadanie zostało przesłane poprawnie. W nagłówkach odpowiedzi wyodrębnij operation-location
wartość. Zostanie on sformatowany w następujący sposób:
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/import/jobs/{JOB-ID}?api-version={API-VERSION}
{JOB-ID}
służy do identyfikowania żądania, ponieważ ta operacja jest asynchroniczna. Użyjesz tego adresu URL, aby uzyskać stan zadania importu.
Możliwe scenariusze błędów dla tego żądania:
- Wybrany zasób nie ma odpowiednich uprawnień dla konta magazynu.
- Określona
storageInputContainerName
wartość nie istnieje. - Jest używany nieprawidłowy kod języka lub jeśli typ kodu języka nie jest ciągiem.
multilingual
wartość jest ciągiem, a nie wartością logiczną.
Pobieranie stanu zadania importu
Zastąp symbole zastępcze w poniższym żądaniu swoim {SECONDARY-ENDPOINT}
i {SECONDARY-RESOURCE-KEY}
uzyskanym w pierwszym kroku.
Użyj następującego żądania GET , aby uzyskać stan importowania projektu. Zastąp poniższe wartości symboli zastępczych własnymi wartościami.
Adres URL żądania
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/import/jobs/{JOB-ID}?api-version={API-VERSION}
Symbol zastępczy | Wartość | Przykład |
---|---|---|
{ENDPOINT} |
Punkt końcowy do uwierzytelniania żądania interfejsu API. | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
Nazwa projektu. Ta wartość jest uwzględniana w wielkości liter. | myProject |
{JOB-ID} |
Identyfikator lokalizowania stanu trenowania modelu. Ta wartość znajduje się w wartości nagłówka location otrzymanej w poprzednim kroku. |
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx |
{API-VERSION} |
Wersja wywoływanego interfejsu API. Wartość, do których odwołuje się tutaj, dotyczy najnowszej wersji wydanej. Dowiedz się więcej o innych dostępnych wersjach interfejsu API | 2022-05-01 |
Nagłówki
Użyj następującego nagłówka, aby uwierzytelnić żądanie.
Key | Wartość |
---|---|
Ocp-Apim-Subscription-Key |
Klucz do zasobu. Służy do uwierzytelniania żądań interfejsu API. |
Szkolenie modelu
Po zaimportowaniu projektu skopiowano tylko zasoby i metadane i zasoby projektu. Nadal musisz wytrenować model, co spowoduje naliczenie użycia na twoim koncie.
Przesyłanie zadania szkoleniowego
Zastąp symbole zastępcze w poniższym żądaniu swoim {SECONDARY-ENDPOINT}
i {SECONDARY-RESOURCE-KEY}
uzyskanym w pierwszym kroku.
Prześlij żądanie POST przy użyciu następującego adresu URL, nagłówków i treści JSON, aby przesłać zadanie szkoleniowe. Zastąp poniższe wartości symboli zastępczych własnymi wartościami.
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/:train?api-version={API-VERSION}
Symbol zastępczy | Wartość | Przykład |
---|---|---|
{ENDPOINT} |
Punkt końcowy do uwierzytelniania żądania interfejsu API. | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
Nazwa projektu. Ta wartość jest uwzględniana w wielkości liter. | myProject |
{API-VERSION} |
Wersja wywoływanego interfejsu API. Wartość, do których odwołuje się tutaj, dotyczy najnowszej wersji wydanej. Dowiedz się więcej o innych dostępnych wersjach interfejsu API | 2022-05-01 |
Nagłówki
Użyj następującego nagłówka, aby uwierzytelnić żądanie.
Key | Wartość |
---|---|
Ocp-Apim-Subscription-Key |
Klucz do zasobu. Służy do uwierzytelniania żądań interfejsu API. |
Treść żądania
Użyj następującego kodu JSON w treści żądania. Model zostanie podany po zakończeniu {MODEL-NAME}
trenowania. Tylko pomyślne zadania szkoleniowe będą tworzyć modele.
{
"modelLabel": "{MODEL-NAME}",
"trainingConfigVersion": "{CONFIG-VERSION}",
"evaluationOptions": {
"kind": "percentage",
"trainingSplitPercentage": 80,
"testingSplitPercentage": 20
}
}
Klucz | Symbol zastępczy | Wartość | Przykład |
---|---|---|---|
modelLabel | {MODEL-NAME} |
Nazwa modelu, która zostanie przypisana do modelu po pomyślnym wytrenowanym. | myModel |
trainingConfigVersion | {CONFIG-VERSION} |
Jest to wersja modelu, która będzie używana do trenowania modelu. | 2022-05-01 |
evaluationOptions | Opcja dzielenia danych między zestawy trenowania i testowania. | {} |
|
kind | percentage |
Metody podzielone. Możliwe wartości to percentage lub manual . Aby uzyskać więcej informacji, zobacz Jak wytrenować model . |
percentage |
trainingSplitPercentage | 80 |
Procent oznakowanych danych, które mają zostać uwzględnione w zestawie treningowym. Zalecana wartość to 80 . |
80 |
testingSplitPercentage | 20 |
Procent oznakowanych danych, które mają zostać uwzględnione w zestawie testów. Zalecana wartość to 20 . |
20 |
Uwaga
Wartości trainingSplitPercentage
i testingSplitPercentage
są wymagane tylko wtedy, gdy Kind
jest ustawiona wartość percentage
, a suma obu wartości procentowych powinna być równa 100.
Po wysłaniu żądania interfejsu API otrzymasz odpowiedź wskazującą 202
, że zadanie zostało przesłane poprawnie. W nagłówkach odpowiedzi wyodrębnij location
wartość. Zostanie on sformatowany w następujący sposób:
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}
Element {JOB-ID} służy do identyfikowania żądania, ponieważ ta operacja jest asynchroniczna. Możesz użyć tego adresu URL, aby uzyskać stan trenowania.
Pobieranie stanu szkolenia
Zastąp symbole zastępcze w poniższym żądaniu swoim {SECONDARY-ENDPOINT}
i {SECONDARY-RESOURCE-KEY}
uzyskanym w pierwszym kroku.
Użyj następującego żądania GET , aby uzyskać stan postępu trenowania modelu. Zastąp poniższe wartości symboli zastępczych własnymi wartościami.
Adres URL żądania
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}
Symbol zastępczy | Wartość | Przykład |
---|---|---|
{ENDPOINT} |
Punkt końcowy do uwierzytelniania żądania interfejsu API. | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
Nazwa projektu. Ta wartość jest uwzględniana w wielkości liter. | myProject |
{JOB-ID} |
Identyfikator lokalizowania stanu trenowania modelu. Ta wartość znajduje się w wartości nagłówka location otrzymanej w poprzednim kroku. |
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx |
{API-VERSION} |
Wersja wywoływanego interfejsu API. Wartość, do których odwołuje się tutaj, dotyczy najnowszej wersji wydanej. Zobacz cykl życia modelu, aby dowiedzieć się więcej o innych dostępnych wersjach interfejsu API. | 2022-05-01 |
Nagłówki
Użyj następującego nagłówka, aby uwierzytelnić żądanie.
Key | Wartość |
---|---|
Ocp-Apim-Subscription-Key |
Klucz do zasobu. Służy do uwierzytelniania żądań interfejsu API. |
Treść odpowiedzi
Po wysłaniu żądania otrzymasz następującą odpowiedź.
{
"result": {
"modelLabel": "{MODEL-NAME}",
"trainingConfigVersion": "{CONFIG-VERSION}",
"estimatedEndDateTime": "2022-04-18T15:47:58.8190649Z",
"trainingStatus": {
"percentComplete": 3,
"startDateTime": "2022-04-18T15:45:06.8190649Z",
"status": "running"
},
"evaluationStatus": {
"percentComplete": 0,
"status": "notStarted"
}
},
"jobId": "{JOB-ID}",
"createdDateTime": "2022-04-18T15:44:44Z",
"lastUpdatedDateTime": "2022-04-18T15:45:48Z",
"expirationDateTime": "2022-04-25T15:44:44Z",
"status": "running"
}
Wdrażanie modelu
Jest to krok umożliwiający udostępnienie wytrenowanego modelu użycia formularzy za pośrednictwem interfejsu API przewidywania środowiska uruchomieniowego.
Napiwek
Użyj tej samej nazwy wdrożenia co projekt podstawowy, aby ułatwić konserwację i minimalne zmiany w systemie w celu obsługi przekierowania ruchu.
Przesyłanie zadania wdrożenia
Zastąp symbole zastępcze w poniższym żądaniu swoim {SECONDARY-ENDPOINT}
i {SECONDARY-RESOURCE-KEY}
uzyskanym w pierwszym kroku.
Prześlij żądanie PUT przy użyciu następującego adresu URL, nagłówków i treści JSON, aby przesłać zadanie wdrożenia. Zastąp poniższe wartości symboli zastępczych własnymi wartościami.
{Endpoint}/language/authoring/analyze-text/projects/{projectName}/deployments/{deploymentName}?api-version={API-VERSION}
Symbol zastępczy | Wartość | Przykład |
---|---|---|
{ENDPOINT} |
Punkt końcowy do uwierzytelniania żądania interfejsu API. | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
Nazwa projektu. Ta wartość jest uwzględniana w wielkości liter. | myProject |
{DEPLOYMENT-NAME} |
Nazwa wdrożenia. Ta wartość jest uwzględniana w wielkości liter. | staging |
{API-VERSION} |
Wersja wywoływanego interfejsu API. Wartość, do których odwołuje się tutaj, dotyczy najnowszej wersji wydanej. Dowiedz się więcej o innych dostępnych wersjach interfejsu API | 2022-05-01 |
Nagłówki
Użyj następującego nagłówka, aby uwierzytelnić żądanie.
Key | Wartość |
---|---|
Ocp-Apim-Subscription-Key |
Klucz do zasobu. Służy do uwierzytelniania żądań interfejsu API. |
Treść żądania
Użyj następującego kodu JSON w treści żądania. Użyj nazwy modelu, który chcesz przypisać do wdrożenia.
{
"trainedModelLabel": "{MODEL-NAME}"
}
Klucz | Symbol zastępczy | Wartość | Przykład |
---|---|---|---|
trainedModelLabel | {MODEL-NAME} |
Nazwa modelu, która zostanie przypisana do wdrożenia. Można przypisywać tylko pomyślnie wytrenowane modele. Ta wartość jest uwzględniana w wielkości liter. | myModel |
Po wysłaniu żądania interfejsu API otrzymasz odpowiedź wskazującą 202
, że zadanie zostało przesłane poprawnie. W nagłówkach odpowiedzi wyodrębnij operation-location
wartość. Zostanie on sformatowany w następujący sposób:
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
Element {JOB-ID} służy do identyfikowania żądania, ponieważ ta operacja jest asynchroniczna. Możesz użyć tego adresu URL, aby uzyskać stan wdrożenia.
Pobieranie stanu wdrożenia
Zastąp symbole zastępcze w poniższym żądaniu swoim {SECONDARY-ENDPOINT}
i {SECONDARY-RESOURCE-KEY}
uzyskanym w pierwszym kroku.
Użyj następującego żądania GET , aby wykonać zapytanie dotyczące stanu zadania wdrożenia. Możesz użyć adresu URL otrzymanego z poprzedniego kroku lub zastąpić poniższe wartości symboli zastępczych własnymi wartościami.
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
Symbol zastępczy | Wartość | Przykład |
---|---|---|
{ENDPOINT} |
Punkt końcowy do uwierzytelniania żądania interfejsu API. | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
Nazwa projektu. Ta wartość jest uwzględniana w wielkości liter. | myProject |
{DEPLOYMENT-NAME} |
Nazwa wdrożenia. Ta wartość jest uwzględniana w wielkości liter. | staging |
{JOB-ID} |
Identyfikator lokalizowania stanu trenowania modelu. Jest to wartość nagłówka location otrzymana w poprzednim kroku. |
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx |
{API-VERSION} |
Wersja wywoływanego interfejsu API. Wartość, do których odwołuje się tutaj, dotyczy najnowszej wersji wydanej. Dowiedz się więcej o innych dostępnych wersjach interfejsu API | 2022-05-01 |
Nagłówki
Użyj następującego nagłówka, aby uwierzytelnić żądanie.
Key | Wartość |
---|---|
Ocp-Apim-Subscription-Key |
Klucz do zasobu. Służy do uwierzytelniania żądań interfejsu API. |
Treść odpowiedzi
Po wysłaniu żądania otrzymasz następującą odpowiedź. Nie sonduj tego punktu końcowego , dopóki parametr stanu nie zmieni się na "powodzenie". Powinien zostać wyświetlony 200
kod wskazujący powodzenie żądania.
{
"jobId":"{JOB-ID}",
"createdDateTime":"{CREATED-TIME}",
"lastUpdatedDateTime":"{UPDATED-TIME}",
"expirationDateTime":"{EXPIRATION-TIME}",
"status":"running"
}
Zmiany w wywoływaniu środowiska uruchomieniowego
W systemie w kroku, w którym wywołujesz interfejs API przewidywania środowiska uruchomieniowego, sprawdź kod odpowiedzi zwrócony z interfejsu API zadania przesyłania. Jeśli zauważysz spójny błąd podczas przesyłania żądania, może to oznaczać awarię w regionie podstawowym. Awaria nie oznacza awarii, może to być przejściowy problem. Ponów próbę przesłania zadania za pomocą utworzonego zasobu pomocniczego. W przypadku drugiego żądania użyj elementu {SECONDARY-ENDPOINT}
i {SECONDARY-RESOURCE-KEY}
, jeśli wykonano powyższe kroki i {DEPLOYMENT-NAME}
będzie to samo, {PROJECT-NAME}
więc żadne zmiany nie są wymagane do treści żądania.
Jeśli powrócisz do korzystania z zasobu pomocniczego, zauważysz niewielki wzrost opóźnienia ze względu na różnicę w regionach, w których wdrożono model.
Sprawdzanie, czy projekty nie są zsynchronizowane
Utrzymanie świeżości obu projektów jest ważną częścią procesu. Należy często sprawdzać, czy jakiekolwiek aktualizacje zostały wprowadzone do projektu podstawowego, aby przenieść je do projektu pomocniczego. W ten sposób, jeśli region podstawowy ulegnie awarii i przejdziesz do regionu pomocniczego, należy oczekiwać podobnej wydajności modelu, ponieważ zawiera on już najnowsze aktualizacje. Ustawienie częstotliwości sprawdzania, czy projekty są zsynchronizowane, jest ważnym wyborem, zalecamy wykonanie tej kontroli codziennie, aby zagwarantować świeżość danych w modelu pomocniczym.
Pobieranie szczegółów projektu
Użyj następującego adresu URL, aby uzyskać szczegóły projektu. Jeden z kluczy zwróconych w treści wskazuje ostatnią datę modyfikacji projektu. Powtórz poniższy krok dwa razy, jeden dla projektu podstawowego, a drugi dla projektu pomocniczego i porównaj znacznik czasu zwrócony dla obu z nich, aby sprawdzić, czy nie są one zsynchronizowane.
Użyj następującego żądania GET , aby uzyskać szczegóły projektu. Zastąp poniższe wartości symboli zastępczych własnymi wartościami.
{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}?api-version={API-VERSION}
Symbol zastępczy | Wartość | Przykład |
---|---|---|
{ENDPOINT} |
Punkt końcowy do uwierzytelniania żądania interfejsu API. | https://<your-custom-subdomain>.cognitiveservices.azure.com |
{PROJECT-NAME} |
Nazwa projektu. Ta wartość jest uwzględniana w wielkości liter. | myProject |
{API-VERSION} |
Wersja wywoływanego interfejsu API. Wartość, do których odwołuje się tutaj, dotyczy najnowszej wersji wydanej. Dowiedz się więcej o innych dostępnych wersjach interfejsu API | 2022-05-01 |
Nagłówki
Użyj następującego nagłówka, aby uwierzytelnić żądanie.
Key | Wartość |
---|---|
Ocp-Apim-Subscription-Key |
Klucz do zasobu. Służy do uwierzytelniania żądań interfejsu API. |
Treść odpowiedzi
{
"createdDateTime": "2021-10-19T23:24:41.572Z",
"lastModifiedDateTime": "2021-10-19T23:24:41.572Z",
"lastTrainedDateTime": "2021-10-19T23:24:41.572Z",
"lastDeployedDateTime": "2021-10-19T23:24:41.572Z",
"projectKind": "customMultiLabelClassification",
"storageInputContainerName": "{CONTAINER-NAME}",
"projectName": "{PROJECT-NAME}",
"multilingual": false,
"description": "Project description",
"language": "{LANGUAGE-CODE}"
}
Po wysłaniu żądania interfejsu API otrzymasz odpowiedź wskazującą 200
powodzenie i treść odpowiedzi JSON ze szczegółami projektu.
Powtórz te same kroki dla replikowanego projektu przy użyciu metod {SECONDARY-ENDPOINT}
i {SECONDARY-RESOURCE-KEY}
. Porównaj zwrócone lastModifiedDateTime
dane z obu projektów. Jeśli projekt podstawowy został zmodyfikowany wcześniej niż pomocniczy, należy powtórzyć kroki eksportowania, importowania, trenowania i wdrażania modelu.
Następne kroki
W tym artykule przedstawiono sposób używania interfejsów API eksportu i importowania do replikowania projektu do zasobu języka pomocniczego w innym regionie. Następnie zapoznaj się z dokumentacją referencyjną interfejsu API, aby zobaczyć, co jeszcze można zrobić za pomocą interfejsów API tworzenia.