Rychlý start: Použití vícevariátové Detektor anomálií klientské knihovny
Důležité
Od 20. září 2023 nebudete moct vytvářet nové Detektor anomálií prostředky. Služba Detektor anomálií se 1. října 2026 vyřadí z provozu.
Začínáme s Detektor anomálií multivariate klientské knihovny pro jazyk C#. Podle těchto kroků nainstalujte balíček a začněte používat algoritmy poskytované službou. Nová rozhraní API detektoru anomálií umožňují vývojářům snadno integrovat pokročilou AI pro detekci anomálií ze skupin metrik bez nutnosti znalostí strojového učení nebo označených dat. Závislosti a vzájemné korelace mezi různými signály se automaticky počítají jako klíčové faktory. To vám pomůže proaktivně chránit složité systémy před selháními.
Pomocí Detektor anomálií vícevariátové klientské knihovny pro jazyk C# můžete:
- Detekce anomálií na úrovni systému ze skupiny časových řad
- Když vám žádná jednotlivá časová řada moc neřekne a budete se muset podívat na všechny signály, abyste zjistili problém.
- Predikativní údržba drahých fyzických prostředků s desítkami až stovkami různých typů senzorů, které měří různé aspekty stavu systému.
Referenční dokumentace ke | knihovně – Balíček zdrojového kódu | knihovny (NuGet)
Požadavky
- Předplatné Azure: Můžete si ho vytvořit zdarma.
- Aktuální verze .NET Core
- Jakmile budete mít předplatné Azure, vytvořte na webu Azure Portal prostředek Detektor anomálií, abyste získali klíč a koncový bod. Počkejte, až se nasazení nasadí, a vyberte tlačítko Přejít k prostředku .
- K připojení aplikace k rozhraní API Detektor anomálií budete potřebovat klíč a koncový bod z prostředku, který vytvoříte. Klíč a koncový bod vložte do kódu níže v rychlém startu.
K vyzkoušení služby můžete použít cenovou úroveň
F0
Free a později upgradovat na placenou úroveň pro produkční prostředí.
- K připojení aplikace k rozhraní API Detektor anomálií budete potřebovat klíč a koncový bod z prostředku, který vytvoříte. Klíč a koncový bod vložte do kódu níže v rychlém startu.
K vyzkoušení služby můžete použít cenovou úroveň
Nastavení
Vytvoření účtu úložiště
Multivariát Detektor anomálií vyžaduje uložení ukázkového souboru ve službě Azure Blob Storage.
- Vytvořte účet azure Storage.
- Přejděte do Řízení přístupu (IAM) a vyberte přidat přiřazení role.
- Vyhledejte roli Čtenář dat objektů blob služby Storage, zvýrazněte tento typ účtu a pak vyberte Další.
- Vyberte přiřadit přístup ke spravované identitě a vyberte Členy a pak zvolte Detektor anomálií prostředek, který jste vytvořili dříve, a pak vyberte Zkontrolovat a přiřadit.
Tato konfigurace může být někdy trochu matoucí, pokud máte potíže, doporučujeme projít si naši ukázku poznámkového bloku Jupyter s více proměnnými, která vás provede podrobnějším postupem.
Stažení ukázkových dat
Tento rychlý start používá jeden soubor pro ukázková data sample_data_5_3000.csv
. Tento soubor si můžete stáhnout z našich ukázkových dat GitHubu.
Ukázková data si můžete stáhnout také spuštěním následujícího příkazu:
curl "https://github.com/Azure-Samples/AnomalyDetector/blob/master/sampledata/multivariate/sample_data_5_3000.csv" --output sample_data_5_3000_.csv
Nahrání ukázkových dat do účtu úložiště
- Přejděte do svého účtu úložiště, vyberte Kontejnery a vytvořte nový kontejner.
- Vyberte Nahrát a nahrát sample_data_5_3000.csv
- Vyberte data, která jste nahráli, a zkopírujte adresu URL objektu blob, protože ji potřebujete přidat do ukázky kódu v několika krocích.
Načtení klíče a koncového bodu
K úspěšnému volání služby Detektor anomálií potřebujete následující hodnoty:
Název proměnné | Hodnota |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
Tuto hodnotu najdete v části Klíče a koncový bod při zkoumání prostředku na webu Azure Portal. Příklad koncového bodu: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
Hodnotu klíče rozhraní API najdete v části Klíče a koncový bod při zkoumání prostředku na webu Azure Portal. Použít můžete předponu KEY1 nebo KEY2 . |
Na webu Azure Portal přejděte ke svému prostředku. Koncový bod a klíče najdete v části Správa prostředků. Zkopírujte koncový bod i přístupový klíč, jak potřebujete pro ověřování volání rozhraní API. Použít můžete předponu KEY1
nebo KEY2
. Vždy mít dva klíče vám umožní bezpečně otáčet a znovu vygenerovat klíče, aniž by to způsobilo přerušení služeb.
Vytvoření proměnných prostředí
Vytvořte a přiřaďte trvalé proměnné prostředí pro klíč a koncový bod.
Důležité
Pokud používáte klíč rozhraní API, uložte ho bezpečně někam jinam, například ve službě Azure Key Vault. Nezahrnujte klíč rozhraní API přímo do kódu a nikdy ho nevštěvujte veřejně.
Další informace o zabezpečení služeb AI najdete v tématu Ověřování požadavků na služby Azure AI.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Vytvoření nové aplikace .NET Core
V okně konzoly (například cmd, PowerShell nebo Bash) pomocí dotnet new
příkazu vytvořte novou konzolovou aplikaci s názvem anomaly-detector-quickstart-multivariate
. Tento příkaz vytvoří jednoduchý projekt Hello World s jedním zdrojovým souborem jazyka C#: Program.cs.
dotnet new console -n anomaly-detector-quickstart-multivariate
Změňte adresář na nově vytvořenou složku aplikace. Aplikaci můžete sestavit pomocí následujících:
dotnet build
Výstup sestavení by neměl obsahovat žádná upozornění ani chyby.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
Instalace klientské knihovny
V adresáři aplikace nainstalujte klientskou knihovnu Detektor anomálií pro .NET pomocí následujícího příkazu:
dotnet add package Azure.AI.AnomalyDetector --prerelease
V adresáři projektu otevřete soubor program.cs a nahraďte následujícím kódem:
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));
}
}
}
Spuštění aplikace
Spusťte aplikaci příkazem dotnet run
z adresáře aplikace.
dotnet run
Vyčištění prostředků
Pokud chcete vyčistit a odebrat předplatné služeb Azure AI, můžete odstranit prostředek nebo skupinu prostředků. Odstraněním skupiny prostředků odstraníte také všechny ostatní prostředky přidružené ke skupině prostředků.
Další kroky
Začínáme s Detektor anomálií multivariate klientské knihovny pro JavaScript. Podle těchto kroků nainstalujte balíček a začněte používat algoritmy poskytované službou. Nová rozhraní API detektoru anomálií umožňují vývojářům snadno integrovat pokročilou AI pro detekci anomálií ze skupin metrik bez nutnosti znalostí strojového učení nebo označených dat. Závislosti a vzájemné korelace mezi různými signály se automaticky počítají jako klíčové faktory. To vám pomůže proaktivně chránit složité systémy před selháními.
Pomocí Detektor anomálií vícevariátové klientské knihovny pro JavaScript můžete:
- Detekce anomálií na úrovni systému ze skupiny časových řad
- Když vám žádná jednotlivá časová řada moc neřekne a budete se muset podívat na všechny signály, abyste zjistili problém.
- Predikativní údržba drahých fyzických prostředků s desítkami až stovkami různých typů senzorů, které měří různé aspekty stavu systému.
Referenční dokumentace | ke knihovně – Balíček zdrojového kódu | knihovny (npm) | Ukázkový kód
Požadavky
- Předplatné Azure: Můžete si ho vytvořit zdarma.
- Aktuální verze Node.js
- Jakmile budete mít předplatné Azure, vytvořte na webu Azure Portal prostředek Detektor anomálií, abyste získali klíč a koncový bod. Počkejte, až se nasazení nasadí, a vyberte tlačítko Přejít k prostředku .
- K připojení aplikace k rozhraní DETEKTOR ANOMÁLIÍ API budete potřebovat klíč a koncový bod z prostředku, který vytvoříte. Klíč a koncový bod vložíte do kódu níže v rychlém startu.
K vyzkoušení služby můžete použít cenovou úroveň
F0
Free a později upgradovat na placenou úroveň pro produkční prostředí.
- K připojení aplikace k rozhraní DETEKTOR ANOMÁLIÍ API budete potřebovat klíč a koncový bod z prostředku, který vytvoříte. Klíč a koncový bod vložíte do kódu níže v rychlém startu.
K vyzkoušení služby můžete použít cenovou úroveň
Nastavení
Vytvoření nové aplikace Node.js
V okně konzoly (například cmd, PowerShell nebo Bash) vytvořte pro vaši aplikaci nový adresář a přejděte do něj.
mkdir myapp && cd myapp
Spuštěním příkazu npm init
vytvoříte aplikaci uzlu se souborem package.json
.
npm init
Vytvořte soubor s názvem index.js
a naimportujte následující knihovny:
'use strict'
const fs = require('fs');
const parse = require("csv-parse/lib/sync");
const { AnomalyDetectorClient } = require('@azure/ai-anomaly-detector');
const { AzureKeyCredential } = require('@azure/core-auth');
Vytvořte proměnné koncového bodu a klíče Azure vašeho prostředku. Vytvořte další proměnnou pro ukázkový datový soubor.
Poznámka:
Vždy budete mít možnost použít jeden ze dvou klíčů. To je povolení obměně zabezpečených klíčů. Pro účely tohoto rychlého startu použijte první klíč.
const apiKey = "YOUR_API_KEY";
const endpoint = "YOUR_ENDPOINT";
const data_source = "YOUR_SAMPLE_ZIP_FILE_LOCATED_IN_AZURE_BLOB_STORAGE_WITH_SAS";
Důležité
Nezapomeňte klíč z kódu odebrat, až to budete hotovi, a nikdy ho veřejně neposílejte. V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v článku zabezpečení služeb Azure AI.
Pokud chcete použít Detektor anomálií vícevariátová rozhraní API, musíte nejprve trénovat vlastní modely. Trénovací data jsou sada více časových řad, které splňují následující požadavky:
Každá časová řada by měla být soubor CSV se dvěma (a pouze dvěma) sloupci, "timestamp" a "value" (vše malými písmeny) jako řádek záhlaví. Hodnoty "časového razítka" by měly odpovídat normě ISO 8601; Hodnota může být celá čísla nebo desetinná místa s libovolným počtem desetinných míst. Příklad:
časové razítko | hodnota |
---|---|
2019-04-01T00:00:00Z | 5 |
2019-04-01T00:01:00Z | 3,6 |
2019-04-01T00:02:00Z | 4 |
... |
... |
Každý soubor CSV by měl být pojmenován za jinou proměnnou, která se použije pro trénování modelu. Například "temperature.csv" a "humidity.csv". Všechny soubory CSV by se měly zazipovat do jednoho souboru ZIP bez jakýchkoli podsložek. Soubor ZIP může mít jakýkoli název, který chcete. Soubor ZIP by se měl nahrát do úložiště objektů blob v Azure. Jakmile vygenerujete adresu URL SAS objektu blob (sdílené přístupové podpisy) pro soubor ZIP, můžete ho použít k trénování. V tomto dokumentu se dozvíte, jak vygenerovat adresy URL SAS ze služby Azure Blob Storage.
Instalace klientské knihovny
ms-rest-azure
Nainstalujte balíčky NPM.azure-ai-anomalydetector
Knihovna csv-parse se také používá v tomto rychlém startu:
npm install @azure/ai-anomaly-detector csv-parse
Soubor vaší aplikace package.json
se aktualizuje o závislosti.
Příklady kódu
Tyto fragmenty kódu ukazují, jak pomocí Detektor anomálií klientské knihovny pro Node.js provést následující akce:
Ověření klienta
Vytvořte instanci objektu AnomalyDetectorClient
pomocí koncového bodu a přihlašovacích údajů.
const client = new AnomalyDetectorClient(endpoint, new AzureKeyCredential(apiKey));
Učení modelu
Vytvoření výsledku modelu
Nejprve musíme vytvořit požadavek modelu. Ujistěte se, že počáteční a koncový čas odpovídá vašemu zdroji dat.
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
};
Trénování nového modelu
Požadavek modelu předáte metodě klienta trainMultivariateModel
Detektor anomálií.
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)
Pokud chcete zkontrolovat, jestli je trénování modelu dokončené, můžete sledovat stav 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.");
Detekce anomálií
Pomocí funkcí detectAnomaly
můžete getDectectionResult
určit, jestli ve zdroji dat existují nějaké anomálie.
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);
Export modelu
Poznámka:
Příkaz pro export je určený k povolení spouštění Detektor anomálií vícevariát modelů v kontejnerizovaném prostředí. Tato možnost není aktuálně podporována pro vícevariát, ale podpora bude přidána v budoucnu.
K exportu exportModel
natrénovaného modelu použijte funkci.
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+".")
Odstranění modelu
K odstranění existujícího modelu, který je k dispozici pro aktuální prostředek, použijte deleteMultivariateModel
funkci.
client.deleteMultivariateModel(model_id)
console.log("New model has been deleted.")
Spuštění aplikace
Před spuštěním aplikace může být užitečné zkontrolovat kód proti úplnému vzorovém kódu.
Spusťte aplikaci pomocí příkazu node
pro soubor rychlého startu.
node index.js
Vyčištění prostředků
Pokud chcete vyčistit a odebrat předplatné služeb Azure AI, můžete odstranit prostředek nebo skupinu prostředků. Odstraněním skupiny prostředků odstraníte také všechny ostatní prostředky přidružené ke skupině prostředků.
Další kroky
Referenční dokumentace ke |knihovně – Balíček zdrojového kódu | knihovny (PyPi) |Vyhledání ukázkového kódu na GitHubu
Začínáme s Detektor anomálií multivariate klientskou knihovnou pro Python. Podle těchto kroků nainstalujte balíček a začněte používat algoritmy poskytované službou. Nová rozhraní API detektoru anomálií umožňují vývojářům snadno integrovat pokročilou AI pro detekci anomálií ze skupin metrik bez nutnosti znalostí strojového učení nebo označených dat. Závislosti a vzájemné korelace mezi různými signály se automaticky počítají jako klíčové faktory. To vám pomůže proaktivně chránit složité systémy před selháními.
Pomocí Detektor anomálií vícevariátové klientské knihovny pro Python můžete:
- Detekce anomálií na úrovni systému ze skupiny časových řad
- Když vám žádná jednotlivá časová řada moc neřekne a budete se muset podívat na všechny signály, abyste zjistili problém.
- Predikativní údržba drahých fyzických prostředků s desítkami až stovkami různých typů senzorů, které měří různé aspekty stavu systému.
Požadavky
- Předplatné Azure – Vytvoření předplatného zdarma
- Python 3.x
- Jakmile budete mít předplatné Azure, vytvořte na webu Azure Portal prostředek Detektor anomálií, abyste získali klíč a koncový bod. Počkejte, až se nasazení nasadí, a vyberte tlačítko Přejít k prostředku . K vyzkoušení služby můžete použít cenovou úroveň
F0
Free a později upgradovat na placenou úroveň pro produkční prostředí.
Nastavení
Nainstalujte klientskou knihovnu. Klientskou knihovnu můžete nainstalovat pomocí následujících:
pip install --upgrade azure.ai.anomalydetector
Vytvoření účtu úložiště
Multivariát Detektor anomálií vyžaduje uložení ukázkového souboru ve službě Azure Blob Storage.
- Vytvořte účet azure Storage.
- Přejděte do Řízení přístupu (IAM) a vyberte přidat přiřazení role.
- Vyhledejte roli Čtenář dat objektů blob služby Storage, zvýrazněte tento typ účtu a pak vyberte Další.
- Vyberte přiřadit přístup ke spravované identitě a vyberte Členy a pak zvolte Detektor anomálií prostředek, který jste vytvořili dříve, a pak vyberte Zkontrolovat a přiřadit.
Tato konfigurace může být někdy trochu matoucí, pokud máte potíže, doporučujeme projít si naši ukázku poznámkového bloku Jupyter s více proměnnými, která vás provede podrobnějším postupem.
Stažení ukázkových dat
Tento rychlý start používá jeden soubor pro ukázková data sample_data_5_3000.csv
. Tento soubor si můžete stáhnout z našich ukázkových dat GitHubu.
Ukázková data si můžete stáhnout také spuštěním následujícího příkazu:
curl "https://github.com/Azure-Samples/AnomalyDetector/blob/master/sampledata/multivariate/sample_data_5_3000.csv" --output sample_data_5_3000_.csv
Nahrání ukázkových dat do účtu úložiště
- Přejděte do svého účtu úložiště, vyberte Kontejnery a vytvořte nový kontejner.
- Vyberte Nahrát a nahrát sample_data_5_3000.csv
- Vyberte data, která jste nahráli, a zkopírujte adresu URL objektu blob, protože ji potřebujete přidat do ukázky kódu v několika krocích.
Načtení klíče a koncového bodu
K úspěšnému volání služby Detektor anomálií potřebujete následující hodnoty:
Název proměnné | Hodnota |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
Tuto hodnotu najdete v části Klíče a koncový bod při zkoumání prostředku na webu Azure Portal. Příklad koncového bodu: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
Hodnotu klíče rozhraní API najdete v části Klíče a koncový bod při zkoumání prostředku na webu Azure Portal. Použít můžete předponu KEY1 nebo KEY2 . |
Na webu Azure Portal přejděte ke svému prostředku. Koncový bod a klíče najdete v části Správa prostředků. Zkopírujte koncový bod i přístupový klíč, jak potřebujete pro ověřování volání rozhraní API. Použít můžete předponu KEY1
nebo KEY2
. Vždy mít dva klíče vám umožní bezpečně otáčet a znovu vygenerovat klíče, aniž by to způsobilo přerušení služeb.
Vytvoření proměnných prostředí
Vytvořte a přiřaďte trvalé proměnné prostředí pro klíč a koncový bod.
Důležité
Pokud používáte klíč rozhraní API, uložte ho bezpečně někam jinam, například ve službě Azure Key Vault. Nezahrnujte klíč rozhraní API přímo do kódu a nikdy ho nevštěvujte veřejně.
Další informace o zabezpečení služeb AI najdete v tématu Ověřování požadavků na služby Azure AI.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Vytvoření nové aplikace v Pythonu
Vytvořte nový soubor Pythonu s názvem sample_multivariate_detect.py. Pak ho otevřete v preferovaném editoru nebo integrovaném vývojovém prostředí (IDE).
Obsah sample_multivariate_detect.py nahraďte následujícím kódem. Je třeba upravit cesty pro proměnné
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
)
)
Spuštění aplikace
Spusťte aplikaci pomocí příkazu python
pro soubor rychlého startu.
python sample_multivariate_detect.py
Výstup
10 available models before training.
Training new model...(it may take a few minutes)
Training model id is 3a695878-a88f-11ed-a16c-b290e72010e0
{'modelId': '3a695878-a88f-11ed-a16c-b290e72010e0', 'createdTime': '2023-02-09T15:34:23Z', 'lastUpdatedTime': '2023-02-09T15:34:23Z', 'modelInfo': {'dataSource': 'https://docstest001.blob.core.windows.net/test/sample_data_5_3000 (1).csv', 'dataSchema': 'OneTable', 'startTime': '2021-01-02T00:00:00Z', 'endTime': '2021-01-02T05:00:00Z', 'displayName': 'sample', 'slidingWindow': 200, 'alignPolicy': {'alignMode': 'Outer', 'fillNAMethod': 'Linear', 'paddingValue': 0.0}, 'status': 'CREATED', 'errors': [], 'diagnosticsInfo': {'modelState': {'epochIds': [], 'trainLosses': [], 'validationLosses': [], 'latenciesInSeconds': []}, 'variableStates': []}}}
Model is CREATED
{'modelId': '3a695878-a88f-11ed-a16c-b290e72010e0', 'createdTime': '2023-02-09T15:34:23Z', 'lastUpdatedTime': '2023-02-09T15:34:55Z', 'modelInfo': {'dataSource': 'https://docstest001.blob.core.windows.net/test/sample_data_5_3000 (1).csv', 'dataSchema': 'OneTable', 'startTime': '2021-01-02T00:00:00Z', 'endTime': '2021-01-02T05:00:00Z', 'displayName': 'sample', 'slidingWindow': 200, 'alignPolicy': {'alignMode': 'Outer', 'fillNAMethod': 'Linear', 'paddingValue': 0.0}, 'status': 'READY', 'errors': [], 'diagnosticsInfo': {'modelState': {'epochIds': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100], 'trainLosses': [1.0493712276220322, 0.5454281121492386, 0.42524269968271255, 0.38019897043704987, 0.3472398854792118, 0.34301353991031647, 0.3219067454338074, 0.3108387663960457, 0.30357857793569565, 0.29986055195331573], 'validationLosses': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 'latenciesInSeconds': [0.3412797451019287, 0.25798678398132324, 0.2556419372558594, 0.3165152072906494, 0.2748451232910156, 0.26111531257629395, 0.2571413516998291, 0.257282018661499, 0.2549862861633301, 0.25806593894958496]}, 'variableStates': [{'variable': 'series_0', 'filledNARatio': 0.0, 'effectiveCount': 301, 'firstTimestamp': '2021-01-02T00:00:00Z', 'lastTimestamp': '2021-01-02T05:00:00Z'}, {'variable': 'series_1', 'filledNARatio': 0.0, 'effectiveCount': 301, 'firstTimestamp': '2021-01-02T00:00:00Z', 'lastTimestamp': '2021-01-02T05:00:00Z'}, {'variable': 'series_2', 'filledNARatio': 0.0, 'effectiveCount': 301, 'firstTimestamp': '2021-01-02T00:00:00Z', 'lastTimestamp': '2021-01-02T05:00:00Z'}, {'variable': 'series_3', 'filledNARatio': 0.0, 'effectiveCount': 301, 'firstTimestamp': '2021-01-02T00:00:00Z', 'lastTimestamp': '2021-01-02T05:00:00Z'}, {'variable': 'series_4', 'filledNARatio': 0.0, 'effectiveCount': 301, 'firstTimestamp': '2021-01-02T00:00:00Z', 'lastTimestamp': '2021-01-02T05:00:00Z'}]}}}
Model is READY
Done.
--------------------
10 available models after training.
Get detection result...(it may take a few seconds)
Detection is CREATED
Detection is READY
Result ID: 70a6cdf8-a88f-11ed-a461-928899e62c38
Result status: READY
Result length: 301
timestamp: 2021-01-02 00:00:00+00:00, is_anomaly: 0 , anomaly score: 0.1770, severity: 0.0000, contributor count: 0
timestamp: 2021-01-02 00:01:00+00:00, is_anomaly: 0 , anomaly score: 0.3446, severity: 0.0000, contributor count: 0
timestamp: 2021-01-02 00:02:00+00:00, is_anomaly: 0 , anomaly score: 0.2397, severity: 0.0000, contributor count: 0
timestamp: 2021-01-02 00:03:00+00:00, is_anomaly: 0 , anomaly score: 0.1270, severity: 0.0000, contributor count: 0
timestamp: 2021-01-02 00:04:00+00:00, is_anomaly: 0 , anomaly score: 0.3321, severity: 0.0000, contributor count: 0
timestamp: 2021-01-02 00:05:00+00:00, is_anomaly: 0 , anomaly score: 0.4053, severity: 0.0000, contributor count: 0
timestamp: 2021-01-02 00:06:00+00:00, is_anomaly: 0 , anomaly score: 0.4371, severity: 0.0000, contributor count: 0
timestamp: 2021-01-02 00:07:00+00:00, is_anomaly: 1 , anomaly score: 0.6615, severity: 0.3850, contributor count: 5
contributor variable: series_3 , contributor score: 0.2939
contributor variable: series_1 , contributor score: 0.2834
contributor variable: series_4 , contributor score: 0.2329
contributor variable: series_0 , contributor score: 0.1543
contributor variable: series_2 , contributor score: 0.0354
Výsledky výstupu byly zkráceny kvůli stručnosti.
Vyčištění prostředků
Pokud chcete vyčistit a odebrat prostředek Detektor anomálií, můžete prostředek nebo skupinu prostředků odstranit. Odstraněním skupiny prostředků se odstraní také všechny ostatní prostředky, které jsou k ní přidružené. Můžete také zvážit odstranění proměnných prostředí, které jste vytvořili, pokud už je nechcete používat.
Začínáme s Detektor anomálií multivariate klientské knihovny pro Javu Pomocí těchto kroků nainstalujte balíček pomocí algoritmů poskytovaných službou. Nová rozhraní API detektoru anomálií umožňují vývojářům snadno integrovat pokročilou AI pro detekci anomálií ze skupin metrik bez nutnosti znalostí strojového učení nebo označených dat. Závislosti a vzájemné korelace mezi různými signály se automaticky počítají jako klíčové faktory. To vám pomůže proaktivně chránit složité systémy před selháními.
Pomocí Detektor anomálií vícevariátové klientské knihovny pro Javu můžete:
- Detekce anomálií na úrovni systému ze skupiny časových řad
- Když vám žádná jednotlivá časová řada moc neřekne a budete se muset podívat na všechny signály, abyste zjistili problém.
- Predikativní údržba drahých fyzických prostředků s desítkami až stovkami různých typů senzorů, které měří různé aspekty stavu systému.
Referenční dokumentace ke | knihovně – balíček zdrojového kódu | knihovny (Maven) | – ukázkový kód
Požadavky
- Předplatné Azure: Můžete si ho vytvořit zdarma.
- Aktuální verze sady Java Development Kit(JDK)
- Nástroj sestavení Gradle nebo jiný správce závislostí.
- Jakmile budete mít předplatné Azure, vytvořte na webu Azure Portal prostředek Detektor anomálií, abyste získali klíč a koncový bod. Počkejte, až se nasazení nasadí, a vyberte tlačítko Přejít k prostředku .
- K připojení aplikace k rozhraní DETEKTOR ANOMÁLIÍ API budete potřebovat klíč a koncový bod z prostředku, který vytvoříte. Klíč a koncový bod vložíte do kódu níže v rychlém startu.
K vyzkoušení služby můžete použít cenovou úroveň
F0
Free a později upgradovat na placenou úroveň pro produkční prostředí.
- K připojení aplikace k rozhraní DETEKTOR ANOMÁLIÍ API budete potřebovat klíč a koncový bod z prostředku, který vytvoříte. Klíč a koncový bod vložíte do kódu níže v rychlém startu.
K vyzkoušení služby můžete použít cenovou úroveň
Nastavení
Vytvoření nového projektu Gradle
V tomto rychlém startu se používá správce závislostí Gradle. Další informace o klientské knihovně najdete v centrálním úložišti Maven.
V okně konzoly (například cmd, PowerShell nebo Bash) vytvořte pro vaši aplikaci nový adresář a přejděte do něj.
mkdir myapp && cd myapp
gradle init
Spusťte příkaz z pracovního adresáře. Tento příkaz vytvoří základní soubory sestavení pro Gradle, včetně build.gradle.kts , které se používají za běhu k vytvoření a konfiguraci aplikace.
gradle init --type basic
Po zobrazení výzvy k výběru DSL vyberte Kotlin.
Instalace klientské knihovny
Vyhledejte build.gradle.kts a otevřete ho pomocí preferovaného integrovaného vývojového prostředí (IDE) nebo textového editoru. Pak zkopírujte tuto konfiguraci sestavení. Nezapomeňte zahrnout závislosti projektu.
dependencies {
compile("com.azure:azure-ai-anomalydetector")
}
Vytvoření souboru Java
Vytvořte složku pro ukázkovou aplikaci. Z pracovního adresáře spusťte následující příkaz:
mkdir -p src/main/java
Přejděte do nové složky a vytvořte soubor s názvem MetricsAdvisorQuickstarts.java. Otevřete ho v preferovaném editoru nebo integrovaném vývojovém prostředí a přidejte následující import
příkazy:
package com.azure.ai.anomalydetector;
import com.azure.ai.anomalydetector.models.*;
import com.azure.core.credential.AzureKeyCredential;
import com.azure.core.http.*;
import com.azure.core.http.policy.*;
import com.azure.core.http.rest.PagedIterable;
import com.azure.core.http.rest.PagedResponse;
import com.azure.core.http.rest.Response;
import com.azure.core.http.rest.StreamResponse;
import com.azure.core.util.Context;
import reactor.core.publisher.Flux;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.nio.ByteBuffer;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Iterator;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
Vytvořte proměnné koncového bodu a klíče Azure vašeho prostředku. Vytvořte další proměnnou pro ukázkový datový soubor.
Poznámka:
Vždy budete mít možnost použít jeden ze dvou klíčů. To je povolení obměně zabezpečených klíčů. Pro účely tohoto rychlého startu použijte první klíč.
String key = "YOUR_API_KEY";
String endpoint = "YOUR_ENDPOINT";
Důležité
Nezapomeňte klíč z kódu odebrat, až to budete hotovi, a nikdy ho veřejně neposílejte. V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v článku zabezpečení služeb Azure AI.
Pokud chcete použít Detektor anomálií vícevariátová rozhraní API, musíte nejprve trénovat vlastní modely. Trénovací data jsou sada více časových řad, které splňují následující požadavky:
Každá časová řada by měla být soubor CSV se dvěma (a pouze dvěma) sloupci, "timestamp" a "value" (vše malými písmeny) jako řádek záhlaví. Hodnoty "časového razítka" by měly odpovídat normě ISO 8601; Hodnota může být celá čísla nebo desetinná místa s libovolným počtem desetinných míst. Příklad:
časové razítko | hodnota |
---|---|
2019-04-01T00:00:00Z | 5 |
2019-04-01T00:01:00Z | 3,6 |
2019-04-01T00:02:00Z | 4 |
... |
... |
Každý soubor CSV by měl být pojmenován za jinou proměnnou, která se použije pro trénování modelu. Například "temperature.csv" a "humidity.csv". Všechny soubory CSV by se měly zazipovat do jednoho souboru ZIP bez jakýchkoli podsložek. Soubor ZIP může mít jakýkoli název, který chcete. Soubor ZIP by se měl nahrát do úložiště objektů blob v Azure. Jakmile vygenerujete adresu URL SAS objektu blob (sdílené přístupové podpisy) pro soubor ZIP, můžete ho použít k trénování. V tomto dokumentu se dozvíte, jak vygenerovat adresy URL SAS ze služby Azure Blob Storage.
Příklady kódu
Tyto fragmenty kódu ukazují, jak pomocí Detektor anomálií klientské knihovny pro Node.js provést následující akce:
Ověření klienta
Vytvořte instanci objektu anomalyDetectorClient
pomocí koncového bodu a přihlašovacích údajů.
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();
Učení modelu
Vytvoření výsledku modelu a trénování modelu
Nejprve musíme vytvořit požadavek modelu. Ujistěte se, že počáteční a koncový čas odpovídá vašemu zdroji dat.
Abychom mohli použít Detektor anomálií vícevariát rozhraní API, musíme před použitím detekce vytrénovat vlastní model. Data použitá pro trénování jsou dávka časových řad, každá časová řada by měla být v souboru CSV s pouze dvěma sloupci, "timestamp" a "value"(názvy sloupců by měly být úplně stejné). Každý soubor CSV by měl být pojmenován za každou proměnnou časové řady. Všechny časové řady by se měly zazipovat do jednoho souboru ZIP a nahrát je do úložiště objektů blob v Azure a není potřeba název souboru ZIP. Případně můžete do souboru ZIP zahrnout další meta.json soubor, pokud chcete, aby se název proměnné lišit od názvu souboru .zip. Jakmile vygenerujeme adresu URL SAS objektu blob (sdílené přístupové podpisy), můžeme k trénování použít adresu URL souboru ZIP.
Path path = Paths.get("test-data.csv");
List<String> requestData = Files.readAllLines(path);
List<TimeSeriesPoint> series = requestData.stream()
.map(line -> line.trim())
.filter(line -> line.length() > 0)
.map(line -> line.split(",", 2))
.filter(splits -> splits.length == 2)
.map(splits -> {
TimeSeriesPoint timeSeriesPoint = new TimeSeriesPoint();
timeSeriesPoint.setTimestamp(OffsetDateTime.parse(splits[0]));
timeSeriesPoint.setValue(Float.parseFloat(splits[1]));
return timeSeriesPoint;
})
.collect(Collectors.toList());
Integer window = 28;
AlignMode alignMode = AlignMode.OUTER;
FillNAMethod fillNAMethod = FillNAMethod.LINEAR;
Integer paddingValue = 0;
AlignPolicy alignPolicy = new AlignPolicy()
.setAlignMode(alignMode)
.setFillNAMethod(fillNAMethod)
.setPaddingValue(paddingValue);
String source = "YOUR_SAMPLE_ZIP_FILE_LOCATED_IN_AZURE_BLOB_STORAGE_WITH_SAS";
OffsetDateTime startTime = OffsetDateTime.of(2021, 1, 2, 0, 0, 0, 0, ZoneOffset.UTC);
OffsetDateTime endTime = OffsetDateTime.of(2021, 1, 3, 0, 0, 0, 0, ZoneOffset.UTC);
String displayName = "Devops-MultiAD";
ModelInfo request = new ModelInfo()
.setSlidingWindow(window)
.setAlignPolicy(alignPolicy)
.setSource(source)
.setStartTime(startTime)
.setEndTime(endTime)
.setDisplayName(displayName);
TrainMultivariateModelResponse trainMultivariateModelResponse = anomalyDetectorClient.trainMultivariateModelWithResponse(request, Context.NONE);
String header = trainMultivariateModelResponse.getDeserializedHeaders().getLocation();
String[] substring = header.split("/");
UUID modelId = UUID.fromString(substring[substring.length - 1]);
System.out.println(modelId);
//Check model status until the model is ready
Response<Model> trainResponse;
while (true) {
trainResponse = anomalyDetectorClient.getMultivariateModelWithResponse(modelId, Context.NONE);
ModelStatus modelStatus = trainResponse.getValue().getModelInfo().getStatus();
if (modelStatus == ModelStatus.READY || modelStatus == ModelStatus.FAILED) {
break;
}
TimeUnit.SECONDS.sleep(10);
}
if (trainResponse.getValue().getModelInfo().getStatus() != ModelStatus.READY){
System.out.println("Training failed.");
List<ErrorResponse> errorMessages = trainResponse.getValue().getModelInfo().getErrors();
for (ErrorResponse errorMessage : errorMessages) {
System.out.println("Error code: " + errorMessage.getCode());
System.out.println("Error message: " + errorMessage.getMessage());
}
}
Detekce anomálií
DetectionRequest detectionRequest = new DetectionRequest().setSource(source).setStartTime(startTime).setEndTime(endTime);
DetectAnomalyResponse detectAnomalyResponse = anomalyDetectorClient.detectAnomalyWithResponse(modelId, detectionRequest, Context.NONE);
String location = detectAnomalyResponse.getDeserializedHeaders().getLocation();
String[] substring = location.split("/");
UUID resultId = UUID.fromString(substring[substring.length - 1]);
DetectionResult detectionResult;
while (true) {
detectionResult = anomalyDetectorClient.getDetectionResult(resultId);
DetectionStatus detectionStatus = detectionResult.getSummary().getStatus();;
if (detectionStatus == DetectionStatus.READY || detectionStatus == DetectionStatus.FAILED) {
break;
}
TimeUnit.SECONDS.sleep(10);
}
if (detectionResult.getSummary().getStatus() != DetectionStatus.READY){
System.out.println("Inference failed");
List<ErrorResponse> detectErrorMessages = detectionResult.getSummary().getErrors();
for (ErrorResponse errorMessage : detectErrorMessages) {
System.out.println("Error code: " + errorMessage.getCode());
System.out.println("Error message: " + errorMessage.getMessage());
}
}
Export modelu
Poznámka:
Příkaz pro export je určený k povolení spouštění Detektor anomálií vícevariát modelů v kontejnerizovaném prostředí. Tato možnost není aktuálně podporována pro vícevariát, ale podpora bude přidána v budoucnu.
K exportu vytrénovaného modelu použijte exportModelWithResponse
příkaz .
StreamResponse response_export = anomalyDetectorClient.exportModelWithResponse(model_id, Context.NONE);
Flux<ByteBuffer> value = response_export.getValue();
FileOutputStream bw = new FileOutputStream("result.zip");
value.subscribe(s -> write(bw, s), (e) -> close(bw), () -> close(bw));
Odstranění modelu
K odstranění existujícího modelu, který je k dispozici pro aktuální prostředek, použijte deleteMultivariateModelWithResponse
funkci.
Response<Void> deleteMultivariateModelWithResponse = anomalyDetectorClient.deleteMultivariateModelWithResponse(model_id, Context.NONE);
Spuštění aplikace
Aplikaci můžete sestavit pomocí následujících:
gradle build
Spuštění aplikace
Před spuštěním může být užitečné zkontrolovat kód proti úplnému vzorovém kódu.
Spusťte aplikaci s run
cílem:
gradle run
Vyčištění prostředků
Pokud chcete vyčistit a odebrat předplatné služeb Azure AI, můžete odstranit prostředek nebo skupinu prostředků. Odstraněním skupiny prostředků odstraníte také všechny ostatní prostředky přidružené ke skupině prostředků.