Szybki start: używanie wielowariancji Narzędzie do wykrywania anomalii biblioteki klienta
Artykuł
Ważne
Od 20 września 2023 r. nie będzie można tworzyć nowych zasobów Narzędzie do wykrywania anomalii. Usługa Narzędzie do wykrywania anomalii jest wycofywana 1 października 2026 r.
Rozpocznij pracę z wielowariancją biblioteki klienta Narzędzie do wykrywania anomalii dla języka C#. Wykonaj następujące kroki, aby zainstalować pakiet i rozpocząć korzystanie z algorytmów udostępnianych przez usługę. Nowe wielowariancyjne interfejsy API detektora anomalii umożliwiają deweloperom łatwe integrowanie zaawansowanej sztucznej inteligencji w celu wykrywania anomalii z grup metryk bez konieczności uczenia maszynowego lub etykietowania danych. Zależności i korelacje między różnymi sygnałami są automatycznie liczone jako kluczowe czynniki. Pomaga to aktywnie chronić złożone systemy przed awariami.
Użyj wielowariancji biblioteki klienta Narzędzie do wykrywania anomalii dla języka C#, aby:
Wykrywanie anomalii na poziomie systemu z grupy szeregów czasowych.
Kiedy każda pojedyncza seria czasowa nie powie Ci zbyt wiele i musisz przyjrzeć się wszystkim sygnałom, aby wykryć problem.
Predykatywna konserwacja kosztownych zasobów fizycznych z dziesiątkami do setek różnych typów czujników mierzących różne aspekty kondycji systemu.
Potrzebny będzie klucz i punkt końcowy z utworzonego zasobu, aby połączyć aplikację z interfejsem API Narzędzie do wykrywania anomalii. Wklej klucz i punkt końcowy do poniższego kodu w dalszej części przewodnika Szybki start.
Możesz użyć warstwy cenowej bezpłatna (F0), aby wypróbować usługę, a następnie uaktualnić ją do warstwy płatnej dla środowiska produkcyjnego.
Konfiguruj
Tworzenie konta magazynu
Wielowariancja Narzędzie do wykrywania anomalii wymaga przechowywania przykładowego pliku w usłudze Azure Blob Storage.
Przejdź do pozycji Kontrola dostępu (Zarządzanie dostępem i tożsamościami) i wybierz pozycję DODAJ , aby dodać przypisanie roli.
Wyszukaj rolę Czytelnik danych obiektu blob usługi Storage, wyróżnij ten typ konta, a następnie wybierz pozycję Dalej.
Wybierz pozycję Przypisz dostęp do tożsamości zarządzanej, a następnie wybierz pozycję Członkowie, a następnie wybierz utworzony wcześniej zasób Narzędzie do wykrywania anomalii, a następnie wybierz pozycję Przejrzyj i przypisz.
Ta konfiguracja może czasami być nieco myląca, jeśli masz problemy, zalecamy zapoznanie się z naszym wielowariantowym przykładem notesu Jupyter Notebook, który przeprowadzi cię przez ten proces bardziej szczegółowo.
Pobierz przykładowe dane
W tym przewodniku Szybki start użyto jednego pliku dla przykładowych danych sample_data_5_3000.csv. Ten plik można pobrać z przykładowych danych usługi GitHub
Możesz również pobrać przykładowe dane, uruchamiając polecenie:
Przekazywanie przykładowych danych do konta magazynu
Przejdź do konta magazynu, wybierz pozycję Kontenery i utwórz nowy kontener.
Wybierz pozycję Przekaż i przekaż sample_data_5_3000.csv
Wybierz przekazane dane i skopiuj adres URL obiektu blob, ponieważ musisz dodać go do przykładu kodu w kilku krokach.
Pobieranie klucza i punktu końcowego
Aby pomyślnie wykonać wywołanie usługi Narzędzie do wykrywania anomalii, potrzebne są następujące wartości:
Nazwa zmiennej
Wartość
ANOMALY_DETECTOR_ENDPOINT
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Przykładowy punkt końcowy: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY
Wartość klucza interfejsu API można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz użyć wartości KEY1 lub KEY2.
Przejdź do zasobu w witrynie Azure Portal. Punkt końcowy i klucze można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ potrzebujesz zarówno do uwierzytelniania wywołań interfejsu API. Możesz użyć wartości KEY1 lub KEY2. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi.
Tworzenie zmiennych środowiskowych
Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.
Ważne
Zalecamy uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft z tożsamościami zarządzanymi dla zasobów platformy Azure, aby uniknąć przechowywania poświadczeń przy użyciu aplikacji uruchamianych w chmurze.
Używaj kluczy interfejsu API z ostrożnością. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie. Jeśli używasz kluczy interfejsu API, przechowuj je bezpiecznie w usłudze Azure Key Vault, regularnie wymieniaj klucze i ograniczaj dostęp do usługi Azure Key Vault przy użyciu kontroli dostępu opartej na rolach i ograniczeń dostępu do sieci. Aby uzyskać więcej informacji na temat bezpiecznego używania kluczy interfejsu API w aplikacjach, zobacz Klucze interfejsu API w usłudze Azure Key Vault.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach Azure AI.
W oknie konsoli (takim jak cmd, PowerShell lub Bash) użyj dotnet new polecenia , aby utworzyć nową aplikację konsolową o nazwie anomaly-detector-quickstart-multivariate. To polecenie tworzy prosty projekt "Hello World" z pojedynczym plikiem źródłowym języka C#: Program.cs.
dotnet new console -n anomaly-detector-quickstart-multivariate
Zmień katalog na nowo utworzony folder aplikacji. Aplikację można skompilować za pomocą następujących funkcji:
dotnet build
Dane wyjściowe kompilacji nie powinny zawierać żadnych ostrzeżeń ani błędów.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
Instalowanie biblioteki klienta
W katalogu aplikacji zainstaluj bibliotekę klienta Narzędzie do wykrywania anomalii dla platformy .NET za pomocą następującego polecenia:
W katalogu projektu otwórz plik program.cs i zastąp ciąg następującym kodem:
using Azure.AI.AnomalyDetector;
using Azure;
using static System.Environment;
internal class Program
{
private static void Main(string[] args)
{
string endpoint = GetEnvironmentVariable("ANOMALY_DETECTOR_ENDPOINT");
string apiKey = GetEnvironmentVariable("ANOMALY_DETECTOR_API_KEY");
string datasource = "Path-to-sample-file-in-your-storage-account"; // example path:https://docstest001.blob.core.windows.net/test/sample_data_5_3000.csv
Console.WriteLine(endpoint);
var endpointUri = new Uri(endpoint);
var credential = new AzureKeyCredential(apiKey);
//create client
AnomalyDetectorClient client = new AnomalyDetectorClient(endpointUri, credential);
// train
TimeSpan offset = new TimeSpan(0);
DateTimeOffset start_time = new DateTimeOffset(2021, 1, 2, 0, 0, 0, offset);
DateTimeOffset end_time = new DateTimeOffset(2021, 1, 2, 5, 0, 0, offset);
string model_id = null;
try
{
model_id = TrainModel(client, datasource, start_time, end_time);
// detect
end_time = new DateTimeOffset(2021, 1, 2, 1, 0, 0, offset);
MultivariateDetectionResult result = BatchDetect(client, datasource, model_id, start_time, end_time);
if (result != null)
{
Console.WriteLine(string.Format("Result ID: {0}", result.ResultId.ToString()));
Console.WriteLine(string.Format("Result summary: {0}", result.Summary.ToString()));
Console.WriteLine(string.Format("Result length: {0}", result.Results.Count));
Console.WriteLine(string.Format("Anomalies found: {0}", result.Results.Where(r => r.Value.IsAnomaly).Count()));
}
// delete
DeleteModel(client, model_id);
}
catch (Exception e)
{
string msg = string.Format("Multivariate error. {0}", e.Message);
Console.WriteLine(msg);
throw;
}
int GetModelNumber(AnomalyDetectorClient client)
{
int model_number = 0;
foreach (var multivariateModel in client.GetMultivariateModels())
{
model_number++;
}
return model_number;
}
string TrainModel(AnomalyDetectorClient client, string datasource, DateTimeOffset start_time, DateTimeOffset end_time, int max_tryout = 500)
{
try
{
Console.WriteLine("Training new model...");
Console.WriteLine(string.Format("{0} available models before training.", GetModelNumber(client)));
ModelInfo request = new ModelInfo(datasource, start_time, end_time);
request.SlidingWindow = 200;
Console.WriteLine("Training new model...(it may take a few minutes)");
AnomalyDetectionModel response = client.TrainMultivariateModel(request);
string trained_model_id = response.ModelId;
Console.WriteLine(string.Format("Training model id is {0}", trained_model_id));
// Wait until the model is ready. It usually takes several minutes
ModelStatus? model_status = null;
int tryout_count = 1;
response = client.GetMultivariateModel(trained_model_id);
while (tryout_count < max_tryout & model_status != ModelStatus.Ready & model_status != ModelStatus.Failed)
{
Thread.Sleep(1000);
response = client.GetMultivariateModel(trained_model_id);
model_status = response.ModelInfo.Status;
Console.WriteLine(string.Format("try {0}, model_id: {1}, status: {2}.", tryout_count, trained_model_id, model_status));
tryout_count += 1;
};
if (model_status == ModelStatus.Ready)
{
Console.WriteLine("Creating model succeeds.");
Console.WriteLine(string.Format("{0} available models after training.", GetModelNumber(client)));
return trained_model_id;
}
if (model_status == ModelStatus.Failed)
{
Console.WriteLine("Creating model failed.");
Console.WriteLine("Errors:");
try
{
Console.WriteLine(string.Format("Error code: {0}, Message: {1}", response.ModelInfo.Errors[0].Code.ToString(), response.ModelInfo.Errors[0].Message.ToString()));
}
catch (Exception e)
{
Console.WriteLine(string.Format("Get error message fail: {0}", e.Message));
}
}
return null;
}
catch (Exception e)
{
Console.WriteLine(string.Format("Train error. {0}", e.Message));
throw;
}
}
MultivariateDetectionResult BatchDetect(AnomalyDetectorClient client, string datasource, string model_id, DateTimeOffset start_time, DateTimeOffset end_time, int max_tryout = 500)
{
try
{
Console.WriteLine("Start batch detect...");
MultivariateBatchDetectionOptions request = new MultivariateBatchDetectionOptions(datasource, 10, start_time, end_time);
Console.WriteLine("Start batch detection, this might take a few minutes...");
MultivariateDetectionResult response = client.DetectMultivariateBatchAnomaly(model_id, request);
string result_id = response.ResultId;
Console.WriteLine(string.Format("result id is: {0}", result_id));
// get detection result
MultivariateDetectionResult resultResponse = client.GetMultivariateBatchDetectionResult(result_id);
MultivariateBatchDetectionStatus result_status = resultResponse.Summary.Status;
int tryout_count = 0;
while (tryout_count < max_tryout & result_status != MultivariateBatchDetectionStatus.Ready & result_status != MultivariateBatchDetectionStatus.Failed)
{
Thread.Sleep(1000);
resultResponse = client.GetMultivariateBatchDetectionResult(result_id);
result_status = resultResponse.Summary.Status;
Console.WriteLine(string.Format("try: {0}, result id: {1} Detection status is {2}", tryout_count, result_id, result_status.ToString()));
Console.Out.Flush();
}
if (result_status == MultivariateBatchDetectionStatus.Failed)
{
Console.WriteLine("Detection failed.");
Console.WriteLine("Errors:");
try
{
Console.WriteLine(string.Format("Error code: {}. Message: {}", resultResponse.Summary.Errors[0].Code.ToString(), resultResponse.Summary.Errors[0].Message.ToString()));
}
catch (Exception e)
{
Console.WriteLine(string.Format("Get error message fail: {0}", e.Message));
}
return null;
}
return resultResponse;
}
catch (Exception e)
{
Console.WriteLine(string.Format("Detection error. {0}", e.Message));
throw;
}
}
void DeleteModel(AnomalyDetectorClient client, string model_id)
{
client.DeleteMultivariateModel(model_id);
int model_number = GetModelNumber(client);
Console.WriteLine(string.Format("{0} available models after deletion.", model_number));
}
}
}
Uruchamianie aplikacji
Uruchom aplikację za pomocą dotnet run polecenia z katalogu aplikacji.
dotnet run
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć subskrypcję usług Azure AI, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych zasobów skojarzonych z grupą zasobów.
Wprowadzenie do wielowariancyjnej biblioteki klienta Narzędzie do wykrywania anomalii dla języka JavaScript. Wykonaj następujące kroki, aby zainstalować pakiet i rozpocząć korzystanie z algorytmów udostępnianych przez usługę. Nowe wielowariancyjne interfejsy API detektora anomalii umożliwiają deweloperom łatwe integrowanie zaawansowanej sztucznej inteligencji w celu wykrywania anomalii z grup metryk bez konieczności uczenia maszynowego lub etykietowania danych. Zależności i korelacje między różnymi sygnałami są automatycznie liczone jako kluczowe czynniki. Pomaga to aktywnie chronić złożone systemy przed awariami.
Użyj wielowariancyjnej biblioteki klienta Narzędzie do wykrywania anomalii dla języka JavaScript, aby:
Wykrywanie anomalii na poziomie systemu z grupy szeregów czasowych.
Kiedy każda pojedyncza seria czasowa nie powie Ci zbyt wiele i musisz przyjrzeć się wszystkim sygnałom, aby wykryć problem.
Predykatywna konserwacja kosztownych zasobów fizycznych z dziesiątkami do setek różnych typów czujników mierzących różne aspekty kondycji systemu.
Potrzebny jest klucz i punkt końcowy z utworzonego zasobu, aby połączyć aplikację z interfejsem API Narzędzie do wykrywania anomalii. Wklej klucz i punkt końcowy do poniższego kodu w dalszej części przewodnika Szybki start.
Możesz użyć warstwy cenowej bezpłatna (F0), aby wypróbować usługę, a następnie uaktualnić ją do warstwy płatnej dla środowiska produkcyjnego.
Konfigurowanie
Tworzenie nowej aplikacji Node.js
W oknie konsoli (na przykład cmd, PowerShell lub Bash) utwórz nowy katalog dla aplikacji i przejdź do niego.
mkdir myapp && cd myapp
Uruchom polecenie npm init, aby utworzyć aplikację Node przy użyciu pliku package.json.
npm init
Utwórz plik o nazwie index.js i zaimportuj następujące biblioteki: "
Utwórz zmienne punktu końcowego i klucza platformy Azure zasobu. Utwórz inną zmienną dla przykładowego pliku danych.
Uwaga
Zawsze będziesz mieć możliwość użycia jednego z dwóch kluczy. Umożliwia to bezpieczną rotację kluczy. Na potrzeby tego przewodnika Szybki start użyj pierwszego klucza.
Zalecamy uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft z tożsamościami zarządzanymi dla zasobów platformy Azure, aby uniknąć przechowywania poświadczeń przy użyciu aplikacji uruchamianych w chmurze.
Używaj kluczy interfejsu API z ostrożnością. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie. Jeśli używasz kluczy interfejsu API, przechowuj je bezpiecznie w usłudze Azure Key Vault, regularnie wymieniaj klucze i ograniczaj dostęp do usługi Azure Key Vault przy użyciu kontroli dostępu opartej na rolach i ograniczeń dostępu do sieci. Aby uzyskać więcej informacji na temat bezpiecznego używania kluczy interfejsu API w aplikacjach, zobacz Klucze interfejsu API w usłudze Azure Key Vault.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach Azure AI.
Aby użyć interfejsów API wielowariancji Narzędzie do wykrywania anomalii, należy najpierw wytrenować własne modele. Dane szkoleniowe to zestaw wielu szeregów czasowych, które spełniają następujące wymagania:
Każda seria czasowa powinna być plikiem CSV z dwoma kolumnami (i tylko dwoma), "sygnaturą czasową" i "wartością" (wszystkie małe litery) jako wiersz nagłówka. Wartości "sygnatury czasowej" powinny być zgodne z normą ISO 8601; "wartość" może być liczbami całkowitymi lub dziesiętnymi z dowolną liczbą miejsc dziesiętnych. Na przykład:
timestamp
wartość
2019-04-01T00:00:00Z
5
2019-04-01T00:01:00Z
3,6
2019-04-01T00:02:00Z
100
...
...
Każdy plik CSV powinien mieć nazwę po innej zmiennej, która będzie używana do trenowania modelu. Na przykład "temperature.csv" i "humidity.csv". Wszystkie pliki CSV powinny być spakowane do jednego pliku zip bez żadnych podfolderów. Plik zip może mieć dowolną nazwę. Plik zip powinien zostać przekazany do usługi Azure Blob Storage. Po wygenerowaniu adresu URL sygnatur dostępu współdzielonego obiektu blob (sygnatury dostępu współdzielonego) dla pliku zip można go użyć do trenowania. Zapoznaj się z tym dokumentem, aby dowiedzieć się, jak wygenerować adresy URL sygnatur dostępu współdzielonego z usługi Azure Blob Storage.
Instalowanie biblioteki klienta
ms-rest-azure Zainstaluj pakiety NPM i azure-ai-anomalydetector . Biblioteka csv-parse jest również używana w tym przewodniku Szybki start:
npm install @azure/ai-anomaly-detector csv-parse
Plik aplikacji package.json jest aktualizowany przy użyciu zależności.
Przykłady kodu
Te fragmenty kodu pokazują, jak wykonać następujące czynności za pomocą biblioteki klienta Narzędzie do wykrywania anomalii dla Node.js:
Utwórz wystąpienie AnomalyDetectorClient obiektu przy użyciu punktu końcowego i poświadczeń.
const client = new AnomalyDetectorClient(endpoint, new AzureKeyCredential(apiKey));
Szkolenie modelu
Konstruowanie wyniku modelu
Najpierw musimy utworzyć żądanie modelu. Upewnij się, że godzina rozpoczęcia i zakończenia jest zgodna ze źródłem danych.
const Modelrequest = {
source: data_source,
startTime: new Date(2021,0,1,0,0,0),
endTime: new Date(2021,0,2,12,0,0),
slidingWindow:200
};
Trenowanie nowego modelu
Żądanie modelu jest przekazywane do metody klienta trainMultivariateModel Narzędzie do wykrywania anomalii.
console.log("Training a new model...")
const train_response = await client.trainMultivariateModel(Modelrequest)
const model_id = train_response.location?.split("/").pop() ?? ""
console.log("New model ID: " + model_id)
Aby sprawdzić, czy trenowanie modelu zostało ukończone, możesz śledzić stan modelu:
let model_response = await client.getMultivariateModel(model_id);
let model_status = model_response.modelInfo.status;
while (model_status != 'READY' && model_status != 'FAILED'){
await sleep(10000).then(() => {});
model_response = await client.getMultivariateModel(model_id);
model_status = model_response.modelInfo.status;
}
if (model_status == 'FAILED') {
console.log("Training failed.\nErrors:");
for (let error of model_response.modelInfo?.errors ?? []) {
console.log("Error code: " + error.code + ". Message: " + error.message);
}
}
console.log("TRAINING FINISHED.");
Wykrywanie anomalii
detectAnomaly Użyj funkcji igetDectectionResult, aby określić, czy istnieją jakiekolwiek anomalie w źródle danych.
console.log("Start detecting...");
const detect_request = {
source: data_source,
startTime: new Date(2021,0,2,12,0,0),
endTime: new Date(2021,0,3,0,0,0)
};
const result_header = await client.detectAnomaly(model_id, detect_request);
const result_id = result_header.location?.split("/").pop() ?? "";
let result = await client.getDetectionResult(result_id);
let result_status = result.summary.status;
while (result_status != 'READY' && result_status != 'FAILED'){
await sleep(2000).then(() => {});
result = await client.getDetectionResult(result_id);
result_status = result.summary.status;
}
if (result_status == 'FAILED') {
console.log("Detection failed.\nErrors:");
for (let error of result.summary.errors ?? []) {
console.log("Error code: " + error.code + ". Message: " + error.message)
}
}
console.log("Result status: " + result_status);
console.log("Result Id: " + result.resultId);
Eksportowanie modelu
Uwaga
Polecenie eksportu ma służyć do zezwalania na uruchamianie Narzędzie do wykrywania anomalii wielowariancji modeli w środowisku konteneryzowanym. Nie jest to obecnie obsługiwane w przypadku wielowariancji, ale obsługa zostanie dodana w przyszłości.
Aby wyeksportować wytrenowany model, użyj exportModel funkcji .
const export_result = await client.exportModel(model_id)
const model_path = "model.zip"
const destination = fs.createWriteStream(model_path)
export_result.readableStreamBody?.pipe(destination)
console.log("New model has been exported to "+model_path+".")
Usuwanie modelu
Aby usunąć istniejący model dostępny dla bieżącego zasobu, użyj deleteMultivariateModel funkcji .
client.deleteMultivariateModel(model_id)
console.log("New model has been deleted.")
Uruchamianie aplikacji
Przed uruchomieniem aplikacji przydatne może być sprawdzenie kodu pod kątem pełnego przykładowego kodu
Uruchom aplikację, wykonując polecenie node dla pliku szybkiego startu.
node index.js
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć subskrypcję usług Azure AI, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych zasobów skojarzonych z grupą zasobów.
Rozpocznij pracę z wielowariancją biblioteki klienta Narzędzie do wykrywania anomalii dla języka Python. Wykonaj następujące kroki, aby zainstalować pakiet i rozpocząć korzystanie z algorytmów dostarczonych przez usługę. Nowe wielowariancyjne interfejsy API detektora anomalii umożliwiają deweloperom łatwe integrowanie zaawansowanej sztucznej inteligencji w celu wykrywania anomalii z grup metryk bez konieczności uczenia maszynowego lub etykietowania danych. Zależności i korelacje między różnymi sygnałami są automatycznie liczone jako kluczowe czynniki. Pomaga to aktywnie chronić złożone systemy przed awariami.
Użyj wielowariancji biblioteki klienta Narzędzie do wykrywania anomalii dla języka Python, aby:
Wykrywanie anomalii na poziomie systemu z grupy szeregów czasowych.
Kiedy każda pojedyncza seria czasowa nie powie Ci zbyt wiele i musisz przyjrzeć się wszystkim sygnałom, aby wykryć problem.
Predykatywna konserwacja kosztownych zasobów fizycznych z dziesiątkami do setek różnych typów czujników mierzących różne aspekty kondycji systemu.
Po utworzeniu subskrypcji platformy Azure utwórz zasób Narzędzie do wykrywania anomalii w witrynie Azure Portal, aby uzyskać klucz i punkt końcowy. Poczekaj na wdrożenie i wybierz przycisk Przejdź do zasobu . Możesz użyć warstwy cenowej bezpłatna (F0), aby wypróbować usługę, a następnie uaktualnić ją do warstwy płatnej dla środowiska produkcyjnego.
Konfiguruj
Zainstaluj bibliotekę klienta. Bibliotekę klienta można zainstalować za pomocą następujących funkcji:
pip install --upgrade azure.ai.anomalydetector
Tworzenie konta magazynu
Wielowariancja Narzędzie do wykrywania anomalii wymaga przechowywania przykładowego pliku w usłudze Azure Blob Storage.
Przejdź do pozycji Kontrola dostępu (Zarządzanie dostępem i tożsamościami) i wybierz pozycję DODAJ , aby dodać przypisanie roli.
Wyszukaj rolę Czytelnik danych obiektu blob usługi Storage, wyróżnij ten typ konta, a następnie wybierz pozycję Dalej.
Wybierz pozycję Przypisz dostęp do tożsamości zarządzanej, a następnie wybierz pozycję Członkowie, a następnie wybierz utworzony wcześniej zasób Narzędzie do wykrywania anomalii, a następnie wybierz pozycję Przejrzyj i przypisz.
Ta konfiguracja może czasami być nieco myląca, jeśli masz problemy, zalecamy zapoznanie się z naszym wielowariantowym przykładem notesu Jupyter Notebook, który przeprowadzi cię przez ten proces bardziej szczegółowo.
Pobierz przykładowe dane
W tym przewodniku Szybki start użyto jednego pliku dla przykładowych danych sample_data_5_3000.csv. Ten plik można pobrać z przykładowych danych usługi GitHub
Możesz również pobrać przykładowe dane, uruchamiając polecenie:
Przekazywanie przykładowych danych do konta magazynu
Przejdź do konta magazynu, wybierz pozycję Kontenery i utwórz nowy kontener.
Wybierz pozycję Przekaż i przekaż sample_data_5_3000.csv
Wybierz przekazane dane i skopiuj adres URL obiektu blob, ponieważ musisz dodać go do przykładu kodu w kilku krokach.
Pobieranie klucza i punktu końcowego
Aby pomyślnie wykonać wywołanie usługi Narzędzie do wykrywania anomalii, potrzebne są następujące wartości:
Nazwa zmiennej
Wartość
ANOMALY_DETECTOR_ENDPOINT
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Przykładowy punkt końcowy: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY
Wartość klucza interfejsu API można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz użyć wartości KEY1 lub KEY2.
Przejdź do zasobu w witrynie Azure Portal. Punkt końcowy i klucze można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ potrzebujesz zarówno do uwierzytelniania wywołań interfejsu API. Możesz użyć wartości KEY1 lub KEY2. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi.
Tworzenie zmiennych środowiskowych
Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.
Ważne
Zalecamy uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft z tożsamościami zarządzanymi dla zasobów platformy Azure, aby uniknąć przechowywania poświadczeń przy użyciu aplikacji uruchamianych w chmurze.
Używaj kluczy interfejsu API z ostrożnością. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie. Jeśli używasz kluczy interfejsu API, przechowuj je bezpiecznie w usłudze Azure Key Vault, regularnie wymieniaj klucze i ograniczaj dostęp do usługi Azure Key Vault przy użyciu kontroli dostępu opartej na rolach i ograniczeń dostępu do sieci. Aby uzyskać więcej informacji na temat bezpiecznego używania kluczy interfejsu API w aplikacjach, zobacz Klucze interfejsu API w usłudze Azure Key Vault.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach Azure AI.
Utwórz nowy plik języka Python o nazwie sample_multivariate_detect.py. Następnie otwórz go w preferowanym edytorze lub środowisku IDE.
Zastąp zawartość sample_multivariate_detect.py następującym kodem. Należy zmodyfikować ścieżki zmiennych blob_url.
import time
from datetime import datetime, timezone
from azure.ai.anomalydetector import AnomalyDetectorClient
from azure.core.credentials import AzureKeyCredential
from azure.ai.anomalydetector.models import *
import os
SUBSCRIPTION_KEY = os.environ['ANOMALY_DETECTOR_API_KEY']
ANOMALY_DETECTOR_ENDPOINT = os.environ['ANOMALY_DETECTOR_ENDPOINT']
ad_client = AnomalyDetectorClient(ANOMALY_DETECTOR_ENDPOINT, AzureKeyCredential(SUBSCRIPTION_KEY))
time_format = "%Y-%m-%dT%H:%M:%SZ"
blob_url = "Path-to-sample-file-in-your-storage-account" # example path: https://docstest001.blob.core.windows.net/test/sample_data_5_3000.csv
train_body = ModelInfo(
data_source=blob_url,
start_time=datetime.strptime("2021-01-02T00:00:00Z", time_format),
end_time=datetime.strptime("2021-01-02T05:00:00Z", time_format),
data_schema="OneTable",
display_name="sample",
sliding_window=200,
align_policy=AlignPolicy(
align_mode=AlignMode.OUTER,
fill_n_a_method=FillNAMethod.LINEAR,
padding_value=0,
),
)
batch_inference_body = MultivariateBatchDetectionOptions(
data_source=blob_url,
top_contributor_count=10,
start_time=datetime.strptime("2021-01-02T00:00:00Z", time_format),
end_time=datetime.strptime("2021-01-02T05:00:00Z", time_format),
)
print("Training new model...(it may take a few minutes)")
model = ad_client.train_multivariate_model(train_body)
model_id = model.model_id
print("Training model id is {}".format(model_id))
## Wait until the model is ready. It usually takes several minutes
model_status = None
model = None
while model_status != ModelStatus.READY and model_status != ModelStatus.FAILED:
model = ad_client.get_multivariate_model(model_id)
print(model)
model_status = model.model_info.status
print("Model is {}".format(model_status))
time.sleep(30)
if model_status == ModelStatus.READY:
print("Done.\n--------------------")
# Return the latest model id
# Detect anomaly in the same data source (but a different interval)
result = ad_client.detect_multivariate_batch_anomaly(model_id, batch_inference_body)
result_id = result.result_id
# Get results (may need a few seconds)
anomaly_results = ad_client.get_multivariate_batch_detection_result(result_id)
print("Get detection result...(it may take a few seconds)")
while anomaly_results.summary.status != MultivariateBatchDetectionStatus.READY and anomaly_results.summary.status != MultivariateBatchDetectionStatus.FAILED:
anomaly_results = ad_client.get_multivariate_batch_detection_result(result_id)
print("Detection is {}".format(anomaly_results.summary.status))
time.sleep(5)
print("Result ID:\t", anomaly_results.result_id)
print("Result status:\t", anomaly_results.summary.status)
print("Result length:\t", len(anomaly_results.results))
# See detailed inference result
for r in anomaly_results.results:
print(
"timestamp: {}, is_anomaly: {:<5}, anomaly score: {:.4f}, severity: {:.4f}, contributor count: {:<4d}".format(
r.timestamp,
r.value.is_anomaly,
r.value.score,
r.value.severity,
len(r.value.interpretation) if r.value.is_anomaly else 0,
)
)
if r.value.interpretation:
for contributor in r.value.interpretation:
print(
"\tcontributor variable: {:<10}, contributor score: {:.4f}".format(
contributor.variable, contributor.contribution_score
)
)
Uruchamianie aplikacji
Uruchom aplikację, wykonując polecenie python dla pliku szybkiego startu.
Wyniki wyjściowe zostały obcięte w celu zwięzłości.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób Narzędzie do wykrywania anomalii, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych skojarzonych z nią zasobów. Możesz również rozważyć usunięcie utworzonych zmiennych środowiskowych, jeśli nie zamierzasz już ich używać.
Rozpocznij pracę z wielowariancją biblioteki klienta Narzędzie do wykrywania anomalii dla języka Java. Wykonaj następujące kroki, aby zainstalować pakiet za pomocą algorytmów dostarczonych przez usługę. Nowe wielowariancyjne interfejsy API detektora anomalii umożliwiają deweloperom łatwe integrowanie zaawansowanej sztucznej inteligencji w celu wykrywania anomalii z grup metryk bez konieczności uczenia maszynowego lub etykietowania danych. Zależności i korelacje między różnymi sygnałami są automatycznie liczone jako kluczowe czynniki. Pomaga to aktywnie chronić złożone systemy przed awariami.
Użyj wielowariancji biblioteki klienta Narzędzie do wykrywania anomalii dla języka Java, aby:
Wykrywanie anomalii na poziomie systemu z grupy szeregów czasowych.
Kiedy każda pojedyncza seria czasowa nie powie Ci zbyt wiele i musisz przyjrzeć się wszystkim sygnałom, aby wykryć problem.
Predykatywna konserwacja kosztownych zasobów fizycznych z dziesiątkami do setek różnych typów czujników mierzących różne aspekty kondycji systemu.
Będziesz potrzebować klucza i punktu końcowego z utworzonego zasobu, aby połączyć aplikację z interfejsem API Narzędzie do wykrywania anomalii. W dalszej części przewodnika Szybki start wklejesz klucz i punkt końcowy do poniższego kodu.
Możesz użyć warstwy cenowej bezpłatna (F0), aby wypróbować usługę, a następnie uaktualnić ją do warstwy płatnej dla środowiska produkcyjnego.
Konfigurowanie
Tworzenie nowego projektu narzędzia Gradle
W tym przewodniku Szybki start jest używany menedżer zależności narzędzia Gradle. Więcej informacji o bibliotece klienta można znaleźć w repozytorium centralnym programu Maven.
W oknie konsoli (na przykład cmd, PowerShell lub Bash) utwórz nowy katalog dla aplikacji i przejdź do niego.
mkdir myapp && cd myapp
gradle init Uruchom polecenie z katalogu roboczego. To polecenie tworzy podstawowe pliki kompilacji dla narzędzia Gradle, w tym build.gradle.kts , które są używane w czasie wykonywania do tworzenia i konfigurowania aplikacji.
gradle init --type basic
Po wyświetleniu monitu wybierz pozycję Język DSL, a następnie Kotlin.
Instalowanie biblioteki klienta
Znajdź plik build.gradle.kts i otwórz go przy użyciu preferowanego środowiska IDE lub edytora tekstów. Następnie skopiuj tę konfigurację kompilacji. Pamiętaj, aby uwzględnić zależności projektu.
Utwórz folder dla przykładowej aplikacji. W katalogu roboczym uruchom następujące polecenie:
mkdir -p src/main/java
Przejdź do nowego folderu i utwórz plik o nazwie MetricsAdvisorQuickstarts.java. Otwórz go w preferowanym edytorze lub środowisku IDE i dodaj następujące import instrukcje:
Utwórz zmienne punktu końcowego i klucza platformy Azure zasobu. Utwórz inną zmienną dla przykładowego pliku danych.
Uwaga
Zawsze będziesz mieć możliwość użycia jednego z dwóch kluczy. Umożliwia to bezpieczną rotację kluczy. Na potrzeby tego przewodnika Szybki start użyj pierwszego klucza.
Zalecamy uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft z tożsamościami zarządzanymi dla zasobów platformy Azure, aby uniknąć przechowywania poświadczeń przy użyciu aplikacji uruchamianych w chmurze.
Używaj kluczy interfejsu API z ostrożnością. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie. Jeśli używasz kluczy interfejsu API, przechowuj je bezpiecznie w usłudze Azure Key Vault, regularnie wymieniaj klucze i ograniczaj dostęp do usługi Azure Key Vault przy użyciu kontroli dostępu opartej na rolach i ograniczeń dostępu do sieci. Aby uzyskać więcej informacji na temat bezpiecznego używania kluczy interfejsu API w aplikacjach, zobacz Klucze interfejsu API w usłudze Azure Key Vault.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach Azure AI.
Aby użyć interfejsów API wielowariancji Narzędzie do wykrywania anomalii, należy najpierw wytrenować własne modele. Dane szkoleniowe to zestaw wielu szeregów czasowych, które spełniają następujące wymagania:
Każda seria czasowa powinna być plikiem CSV z dwoma kolumnami (i tylko dwoma), "sygnaturą czasową" i "wartością" (wszystkie małe litery) jako wiersz nagłówka. Wartości "sygnatury czasowej" powinny być zgodne z normą ISO 8601; "wartość" może być liczbami całkowitymi lub dziesiętnymi z dowolną liczbą miejsc dziesiętnych. Na przykład:
timestamp
wartość
2019-04-01T00:00:00Z
5
2019-04-01T00:01:00Z
3,6
2019-04-01T00:02:00Z
100
...
...
Każdy plik CSV powinien mieć nazwę po innej zmiennej, która będzie używana do trenowania modelu. Na przykład "temperature.csv" i "humidity.csv". Wszystkie pliki CSV powinny być spakowane do jednego pliku zip bez żadnych podfolderów. Plik zip może mieć dowolną nazwę. Plik zip powinien zostać przekazany do usługi Azure Blob Storage. Po wygenerowaniu adresu URL sygnatur dostępu współdzielonego obiektu blob (sygnatury dostępu współdzielonego) dla pliku zip można go użyć do trenowania. Zapoznaj się z tym dokumentem, aby dowiedzieć się, jak wygenerować adresy URL sygnatur dostępu współdzielonego z usługi Azure Blob Storage.
Przykłady kodu
Te fragmenty kodu pokazują, jak wykonać następujące czynności za pomocą biblioteki klienta Narzędzie do wykrywania anomalii dla Node.js:
Utwórz wystąpienie anomalyDetectorClient obiektu przy użyciu punktu końcowego i poświadczeń.
HttpHeaders headers = new HttpHeaders()
.put("Accept", ContentType.APPLICATION_JSON);
HttpPipelinePolicy authPolicy = new AzureKeyCredentialPolicy("Ocp-Apim-Subscription-Key",
new AzureKeyCredential(key));
AddHeadersPolicy addHeadersPolicy = new AddHeadersPolicy(headers);
HttpPipeline httpPipeline = new HttpPipelineBuilder().httpClient(HttpClient.createDefault())
.policies(authPolicy, addHeadersPolicy).build();
// Instantiate a client that will be used to call the service.
HttpLogOptions httpLogOptions = new HttpLogOptions();
httpLogOptions.setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS);
AnomalyDetectorClient anomalyDetectorClient = new AnomalyDetectorClientBuilder()
.pipeline(httpPipeline)
.endpoint(endpoint)
.httpLogOptions(httpLogOptions)
.buildClient();
Szkolenie modelu
Konstruowanie wyniku modelu i trenowanie modelu
Najpierw musimy utworzyć żądanie modelu. Upewnij się, że godzina rozpoczęcia i zakończenia jest zgodna ze źródłem danych.
Aby użyć Narzędzie do wykrywania anomalii wielowariancyjnych interfejsów API, musimy wytrenować własny model przed użyciem wykrywania. Dane używane do trenowania to partia szeregów czasowych, a każda seria czasowa powinna znajdować się w pliku CSV zawierającym tylko dwie kolumny, "sygnaturę czasową" i "wartość" (nazwy kolumn powinny być dokładnie takie same). Każdy plik CSV powinien mieć nazwę po każdej zmiennej dla szeregów czasowych. Cały szereg czasowy powinien zostać spakowany do jednego pliku zip i przekazany do usługi Azure Blob Storage, a nazwa pliku zip nie jest wymagana. Alternatywnie dodatkowy plik meta.json można dołączyć do pliku zip, jeśli chcesz, aby nazwa zmiennej różniła się od nazwy pliku .zip. Po wygenerowaniu adresu URL sygnatur dostępu współdzielonego obiektu blob (sygnatury dostępu współdzielonego) możemy użyć adresu URL do pliku zip na potrzeby trenowania.
Polecenie eksportu ma służyć do zezwalania na uruchamianie Narzędzie do wykrywania anomalii wielowariancji modeli w środowisku konteneryzowanym. Nie jest to obecnie obsługiwane w przypadku wielowariancji, ale obsługa zostanie dodana w przyszłości.
Aby wyeksportować wytrenowany model, użyj polecenia exportModelWithResponse.
Aplikację można skompilować za pomocą następujących funkcji:
gradle build
Uruchamianie aplikacji
Przed uruchomieniem może być przydatne sprawdzenie kodu pod kątem pełnego przykładowego kodu.
Uruchom aplikację z run celem:
gradle run
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć subskrypcję usług Azure AI, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych zasobów skojarzonych z grupą zasobów.
O Azure HPC é um recurso de nuvem criado especificamente para a carga de trabalho HPC & AI, usando processadores de ponta e interconexão InfiniBand de classe HPC, para oferecer o melhor desempenho, escalabilidade e valor de aplicativos. O Azure HPC permite que os utilizadores desbloqueiem a inovação, a produtividade e a agilidade empresarial, através de uma gama altamente disponível de tecnologias de HPC ou IA que podem ser alocadas dinamicamente à medida que as suas necessidades empresariais e técnicas mud
Gerencie a ingestão e a preparação de dados, o treinamento e a implantação de modelos e o monitoramento de soluções de aprendizado de máquina com Python, Azure Machine Learning e MLflow.