Mulai cepat: Menggunakan pustaka klien Detektor Anomali Multivariat
Penting
Mulai tanggal 20 September 2023 Anda tidak akan dapat membuat sumber daya Detektor Anomali baru. Layanan Detektor Anomali dihentikan pada tanggal 1 Oktober 2026.
Mulai dengan pustaka klien multivariat Anomaly Detector untuk C#. Ikuti langkah-langkah ini untuk menginstal paket dan mulai menggunakan algoritma yang disediakan oleh layanan. API detektor anomali multivariat baru memungkinkan pengembang dengan dengan mudah mengintegrasikan AI tingkat lanjut untuk mendeteksi anomali dari grup metrik, tanpa perlu pengetahuan pembelajaran mesin atau data berlabel. Dependensi dan interkorelasi antara sinyal yang berbeda secara otomatis dihitung sebagai faktor kunci. Ini membantu Anda untuk secara proaktif melindungi sistem kompleks Anda dari kegagalan.
Gunakan pustaka klien multivariat Anomaly Detector untuk C# untuk:
- Mendeteksi anomali tingkat sistem dari sekelompok rangkaian waktu.
- Ketika deret waktu individu tidak akan memberi tahu Anda banyak dan Anda harus melihat semua sinyal untuk mendeteksi masalah.
- Pemeliharaan predikat aset fisik mahal dengan puluhan hingga ratusan jenis sensor yang mengukur berbagai aspek kesehatan sistem.
Dokumentasi referensi pustaka | Kode sumber pustaka | Paket (NuGet)
Prasyarat
- Langganan Azure - Buat langganan secara gratis
- Versi .NET Core saat ini
- Setelah Anda memiliki langganan Azure, buat sumber daya Detektor Anomali di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Tunggu hingga disebarkan dan pilih tombol Buka sumber daya.
- Anda akan memerlukan kunci dan titik akhir dari sumber daya yang Anda buat untuk menghubungkan aplikasi Anda ke Anomaly Detector API. Tempelkan kunci dan titik akhir ke dalam kode di bawah ini nanti di mulai cepat.
Anda dapat menggunakan tingkat harga gratis (
F0
) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi.
- Anda akan memerlukan kunci dan titik akhir dari sumber daya yang Anda buat untuk menghubungkan aplikasi Anda ke Anomaly Detector API. Tempelkan kunci dan titik akhir ke dalam kode di bawah ini nanti di mulai cepat.
Anda dapat menggunakan tingkat harga gratis (
Penyiapan
Buat akun penyimpanan
Detektor Anomali Multivariat mengharuskan file sampel Anda disimpan di Azure Blob Storage.
- Membuat akun Azure Storage.
- Buka Kontrol Akses (IAM), dan pilih TAMBAHKAN untuk Menambahkan penetapan peran.
- Cari peran Pembaca Data Blob Penyimpanan, sorot jenis akun ini lalu pilih Berikutnya.
- Pilih tetapkan akses ke Identitas terkelola, dan Pilih Anggota, lalu pilih sumber daya Detektor Anomali yang Anda buat sebelumnya, lalu pilih Tinjau + tetapkan.
Konfigurasi ini terkadang sedikit membingungkan, jika Anda mengalami masalah, sebaiknya konsultasikan dengan sampel Jupyter Notebook multivariat kami, yang menelusuri proses ini lebih mendalam.
Mengunduh data sampel
Mulai cepat ini menggunakan satu file untuk data sample_data_5_3000.csv
sampel . File ini dapat diunduh dari data sampel GitHub kami
Anda juga dapat mengunduh data sampel dengan menjalankan:
curl "https://github.com/Azure-Samples/AnomalyDetector/blob/master/sampledata/multivariate/sample_data_5_3000.csv" --output sample_data_5_3000_.csv
Mengunggah data sampel ke Akun Penyimpanan
- Buka Akun Penyimpanan Anda, pilih Kontainer dan buat kontainer baru.
- Pilih Unggah dan unggah sample_data_5_3000.csv
- Pilih data yang Anda unggah dan salin URL Blob karena Anda perlu menambahkannya ke sampel kode dalam beberapa langkah.
Mengambil kunci dan titik akhir
Agar berhasil melakukan panggilan terhadap layanan Detektor Anomali, Anda memerlukan nilai berikut:
Nama variabel | Nilai |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Microsoft Azure. Contoh titik akhir: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
Nilai kunci API dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Azure. Anda dapat menggunakan KEY1 atau KEY2 . |
Buka sumber daya Anda di portal Azure. Titik Akhir dan Kunci dapat ditemukan di bagian Manajemen Sumber Daya. Salin titik akhir dan kunci akses Anda karena Anda memerlukan keduanya untuk mengautentikasi panggilan API Anda. Anda dapat menggunakan KEY1
atau KEY2
. Selalu miliki dua kunci untuk memungkinkan Anda memutar dan meregenerasi kunci dengan aman tanpa menyebabkan gangguan layanan.
Membuat variabel lingkungan
Buat dan tetapkan variabel lingkungan persisten untuk kunci dan titik akhir Anda.
Penting
Jika Anda menggunakan kunci API, simpan dengan aman di tempat lain, seperti di Azure Key Vault. Jangan sertakan kunci API langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik.
Untuk informasi selengkapnya tentang keamanan layanan AI, lihat Mengautentikasi permintaan ke layanan Azure AI.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Buat aplikasi .NET Core baru
Di jendela konsol (seperti cmd, PowerShell, atau Bash), gunakan perintah dotnet new
untuk membuat aplikasi konsol baru dengan nama anomaly-detector-quickstart-multivariate
. Perintah ini membuat proyek "Halo Dunia" sederhana dengan satu file sumber C#: Program.cs.
dotnet new console -n anomaly-detector-quickstart-multivariate
Ubah direktori Anda ke folder aplikasi yang baru dibuat. Anda dapat membangun aplikasi dengan:
dotnet build
Output build tidak boleh berisi peringatan atau kesalahan.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
Memasang pustaka klien
Dalam direktori aplikasi, pasang pustaka klien Anomaly Detector untuk .NET dengan perintah berikut:
dotnet add package Azure.AI.AnomalyDetector --prerelease
Dari direktori proyek, buka file program.cs dan ganti dengan kode berikut:
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));
}
}
}
Jalankan aplikasi
Menjalankan aplikasi dengan perintah dotnet run
dari direktori aplikasi Anda.
dotnet run
Membersihkan sumber daya
Jika Anda ingin membersihkan dan menghapus langganan layanan Azure AI, Anda dapat menghapus sumber daya atau grup sumber daya. Menghapus grup sumber daya juga menghapus sumber daya lain yang terkait dengan grup sumber daya.
Langkah berikutnya
Mulai menggunakan pustaka klien multivariat Detektor Anomali untuk JavaScript. Ikuti langkah-langkah ini untuk menginstal paket dan mulai menggunakan algoritma yang disediakan oleh layanan. API detektor anomali multivariat baru memungkinkan pengembang dengan dengan mudah mengintegrasikan AI tingkat lanjut untuk mendeteksi anomali dari grup metrik, tanpa perlu pengetahuan pembelajaran mesin atau data berlabel. Dependensi dan interkorelasi antara sinyal yang berbeda secara otomatis dihitung sebagai faktor kunci. Ini membantu Anda untuk secara proaktif melindungi sistem kompleks Anda dari kegagalan.
Gunakan pustaka klien multivariat Detektor Anomali untuk JavaScript untuk:
- Mendeteksi anomali tingkat sistem dari sekelompok rangkaian waktu.
- Ketika setiap rangkaian waktu individual tidak akan memberi tahu Anda banyak, dan Anda harus melihat semua sinyal untuk mendeteksi masalah.
- Pemeliharaan predikat aset fisik mahal dengan puluhan hingga ratusan jenis sensor yang mengukur berbagai aspek kesehatan sistem.
Dokumentasi referensi pustaka | Kode sumber pustaka | Paket (npm) | Kode sampel
Prasyarat
- Langganan Azure - Buat langganan secara gratis
- Versi terbaru Node.js
- Setelah Anda memiliki langganan Azure, buat sumber daya Detektor Anomali di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Tunggu hingga disebarkan dan pilih tombol Buka sumber daya.
- Anda akan memerlukan kunci dan titik akhir dari sumber daya yang Anda buat untuk menghubungkan aplikasi Anda ke API Detektor Anomali. Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini di mulai cepat.
Anda dapat menggunakan tingkat harga gratis (
F0
) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi.
- Anda akan memerlukan kunci dan titik akhir dari sumber daya yang Anda buat untuk menghubungkan aplikasi Anda ke API Detektor Anomali. Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini di mulai cepat.
Anda dapat menggunakan tingkat harga gratis (
Menyiapkan
Membuat aplikasi Node.js baru
Di jendela konsol (seperti cmd, PowerShell, atau Bash), buat direktori baru untuk aplikasi Anda, dan buka direktori tersebut.
mkdir myapp && cd myapp
Jalankan perintah npm init
untuk membuat aplikasi node dengan file package.json
.
npm init
Buat file bernama index.js
dan impor pustaka berikut: `
'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');
Buat variabel titik akhir dan kunci sumber daya Azure Anda. Buat variabel lain untuk contoh file data.
Catatan
Anda dapat menggunakan salah satu dari dua kunci kapan saja. Ini untuk memungkinkan rotasi kunci yang aman. Untuk keperluan mulai cepat ini, gunakan kunci pertama.
const apiKey = "YOUR_API_KEY";
const endpoint = "YOUR_ENDPOINT";
const data_source = "YOUR_SAMPLE_ZIP_FILE_LOCATED_IN_AZURE_BLOB_STORAGE_WITH_SAS";
Penting
Jangan lupa menghapus kunci dari kode setelah Anda selesai, dan jangan pernah mempostingnya secara publik. Untuk produksi, gunakan cara yang aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Lihat artikel keamanan layanan Azure AI untuk informasi selengkapnya.
Untuk menggunakan API multivariat Detektor Anomali, Anda harus terlebih dahulu melatih model Anda sendiri. Data pelatihan adalah kumpulan rangkaian waktu ganda yang memenuhi persyaratan berikut:
Setiap kali seri harus dalam bentuk file CSV dengan dua (dan hanya dua) kolom, "tanda waktu" dan "nilai" (semua dalam huruf kecil) sebagai baris header. Nilai "tanda waktu" harus sesuai dengan ISO 8601; "nilai" bisa menjadi bilangan bulat atau desimal dengan sejumlah angka di belakang koma. Contohnya:
rentang waktu | value |
---|---|
2019-04-01T00:00:00Z | 5 |
2019-04-01T00:01:00Z | 3.6 |
2019-04-01T00:02:00Z | 4 |
... |
... |
Setiap file CSV harus dinamai sesuai dengan variabel berbeda yang akan digunakan untuk pelatihan model. Misalnya, "temperature.csv" dan "humidity.csv". Semua file CSV harus di-zip ke dalam satu file zip tanpa subfolder. File zip dapat bernama apa pun yang Anda inginkan. File zip harus diunggah ke Azure Blob storage. Setelah Anda membuat URL SAS blob (Tanda tangan akses bersama) untuk file zip, URL tersebut dapat digunakan untuk pelatihan. Lihat dokumen ini tentang cara menghasilkan URL SAS dari Azure Blob Storage.
Memasang pustaka klien
Pasang paket NPM ms-rest-azure
dan azure-ai-anomalydetector
. Pustaka csv-parse juga digunakan dalam mulai cepat ini:
npm install @azure/ai-anomaly-detector csv-parse
File aplikasi package.json
Anda diperbarui dengan dependensi.
Contoh kode
Cuplikan kode ini memperlihatkan kepada Anda cara melakukan tugas berikut dengan pustaka klien Detektor Anomali untuk Node.js:
Mengautentikasi klien
Membuat objek AnomalyDetectorClient
dengan titik akhir dan info masuk Anda.
const client = new AnomalyDetectorClient(endpoint, new AzureKeyCredential(apiKey));
Latih model
Membangun hasil model
Pertama kita perlu membangun permintaan model. Pastikan waktu mulai dan waktu akhir sejajar dengan sumber data Anda.
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
};
Melatih model barul
Anda meneruskan permintaan model Anda ke metode klien trainMultivariateModel
Detektor Anomali.
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)
Untuk memeriksa apakah pelatihan model Anda selesai, Anda dapat melacak status model:
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.");
Mendeteksi anomali
Gunakan fungsi detectAnomaly
dan getDectectionResult
untuk menentukan apakah ada anomali dalam sumber data Anda.
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);
Mengekspor model
Catatan
Perintah ekspor digunakan untuk mengeksekusi model multivariat Anomaly Detector dalam lingkungan kontainer. Tindakan ini tidak didukung untuk multivariat saat ini, tetapi dukungan akan ditambahkan di masa depan.
Untuk mengekspor model terlatih Anda, gunakan fungsi exportModel
.
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+".")
Menghapus model
Untuk menghapus model yang tersedia untuk sumber daya saat ini, gunakan fungsi deleteMultivariateModel
.
client.deleteMultivariateModel(model_id)
console.log("New model has been deleted.")
Jalankan aplikasi
Sebelum menjalankan aplikasi, sebaiknya periksa kode Anda terhadap kode sampel lengkap
Jalankan aplikasi dengan perintah node
pada file mulai cepat Anda.
node index.js
Membersihkan sumber daya
Jika Anda ingin membersihkan dan menghapus langganan layanan Azure AI, Anda dapat menghapus sumber daya atau grup sumber daya. Menghapus grup sumber daya juga menghapus sumber daya lain yang terkait dengan grup sumber daya.
Langkah berikutnya
Dokumentasi referensi pustaka |Kode sumber pustaka | Paket (PyPi) |Temukan kode sampel di GitHub
Mulai menggunakan pustaka klien multivariat Detektor Anomali untuk Python. Ikuti langkah-langkah ini untuk menginstal paket, dan mulai menggunakan algoritma yang disediakan oleh layanan. API detektor anomali multivariat baru memungkinkan pengembang dengan dengan mudah mengintegrasikan AI tingkat lanjut untuk mendeteksi anomali dari grup metrik, tanpa perlu pengetahuan pembelajaran mesin atau data berlabel. Dependensi dan interkorelasi antara sinyal yang berbeda secara otomatis dihitung sebagai faktor kunci. Ini membantu Anda untuk secara proaktif melindungi sistem kompleks Anda dari kegagalan.
Gunakan pustaka klien multivariat Detektor Anomali untuk Python untuk:
- Mendeteksi anomali tingkat sistem dari sekelompok rangkaian waktu.
- Ketika setiap rangkaian waktu individual tidak akan memberi tahu Anda banyak, dan Anda harus melihat semua sinyal untuk mendeteksi masalah.
- Pemeliharaan predikat aset fisik mahal dengan puluhan hingga ratusan jenis sensor yang mengukur berbagai aspek kesehatan sistem.
Prasyarat
- Langganan Azure - buat langganan gratis
- Python 3.x
- Setelah Anda memiliki langganan Azure, buat sumber daya Detektor Anomali di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Tunggu hingga disebarkan dan pilih tombol Buka sumber daya. Anda dapat menggunakan tingkat harga gratis (
F0
) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi.
Penyiapan
Menginstal pustaka klien. Anda dapat memasang pustaka klien dengan:
pip install --upgrade azure.ai.anomalydetector
Buat akun penyimpanan
Detektor Anomali Multivariat mengharuskan file sampel Anda disimpan di Azure Blob Storage.
- Membuat akun Azure Storage.
- Buka Kontrol Akses (IAM), dan pilih TAMBAHKAN untuk Menambahkan penetapan peran.
- Cari peran Pembaca Data Blob Penyimpanan, sorot jenis akun ini lalu pilih Berikutnya.
- Pilih tetapkan akses ke Identitas terkelola, dan Pilih Anggota, lalu pilih sumber daya Detektor Anomali yang Anda buat sebelumnya, lalu pilih Tinjau + tetapkan.
Konfigurasi ini terkadang sedikit membingungkan, jika Anda mengalami masalah, sebaiknya konsultasikan dengan sampel Jupyter Notebook multivariat kami, yang menelusuri proses ini lebih mendalam.
Mengunduh data sampel
Mulai cepat ini menggunakan satu file untuk data sample_data_5_3000.csv
sampel . File ini dapat diunduh dari data sampel GitHub kami
Anda juga dapat mengunduh data sampel dengan menjalankan:
curl "https://github.com/Azure-Samples/AnomalyDetector/blob/master/sampledata/multivariate/sample_data_5_3000.csv" --output sample_data_5_3000_.csv
Mengunggah data sampel ke Akun Penyimpanan
- Buka Akun Penyimpanan Anda, pilih Kontainer dan buat kontainer baru.
- Pilih Unggah dan unggah sample_data_5_3000.csv
- Pilih data yang Anda unggah dan salin URL Blob karena Anda perlu menambahkannya ke sampel kode dalam beberapa langkah.
Mengambil kunci dan titik akhir
Agar berhasil melakukan panggilan terhadap layanan Detektor Anomali, Anda memerlukan nilai berikut:
Nama variabel | Nilai |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Microsoft Azure. Contoh titik akhir: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
Nilai kunci API dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Azure. Anda dapat menggunakan KEY1 atau KEY2 . |
Buka sumber daya Anda di portal Azure. Titik Akhir dan Kunci dapat ditemukan di bagian Manajemen Sumber Daya. Salin titik akhir dan kunci akses Anda karena Anda memerlukan keduanya untuk mengautentikasi panggilan API Anda. Anda dapat menggunakan KEY1
atau KEY2
. Selalu miliki dua kunci untuk memungkinkan Anda memutar dan meregenerasi kunci dengan aman tanpa menyebabkan gangguan layanan.
Membuat variabel lingkungan
Buat dan tetapkan variabel lingkungan persisten untuk kunci dan titik akhir Anda.
Penting
Jika Anda menggunakan kunci API, simpan dengan aman di tempat lain, seperti di Azure Key Vault. Jangan sertakan kunci API langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik.
Untuk informasi selengkapnya tentang keamanan layanan AI, lihat Mengautentikasi permintaan ke layanan Azure AI.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Membuat aplikasi Python baru
Buat file Python baru yang disebut sample_multivariate_detect.py. Lalu buka file di editor atau IDE pilihan Anda.
Ganti konten sample_multivariate_detect.py dengan kode berikut. Anda perlu memodifikasi jalur untuk variabel
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
)
)
Jalankan aplikasi
Jalankan aplikasi dengan perintah python
pada file mulai cepat Anda.
python sample_multivariate_detect.py
Output
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
Hasil output telah dipotong untuk brevity.
Membersihkan sumber daya
Jika Anda ingin membersihkan dan menghapus sumber daya Detektor Anomali, Anda dapat menghapus sumber daya atau grup sumber daya. Menghapus grup sumber daya juga menghapus sumber daya apa pun yang terkait dengannya. Anda juga mungkin ingin mempertimbangkan untuk menghapus variabel lingkungan yang Anda buat jika Anda tidak lagi berniat menggunakannya.
Mulai menggunakan pustaka klien multivariat Detektor Anomali untuk Java. Ikuti langkah-langkah ini untuk memasang paket mulai menggunakan algoritma yang disediakan oleh layanan. API detektor anomali multivariat baru memungkinkan pengembang dengan dengan mudah mengintegrasikan AI tingkat lanjut untuk mendeteksi anomali dari grup metrik, tanpa perlu pengetahuan pembelajaran mesin atau data berlabel. Dependensi dan interkorelasi antara sinyal yang berbeda secara otomatis dihitung sebagai faktor kunci. Ini membantu Anda untuk secara proaktif melindungi sistem kompleks Anda dari kegagalan.
Gunakan pustaka klien multivariat Detektor Anomali untuk Java untuk:
- Mendeteksi anomali tingkat sistem dari sekelompok rangkaian waktu.
- Ketika setiap rangkaian waktu individual tidak akan memberi tahu Anda banyak, dan Anda harus melihat semua sinyal untuk mendeteksi masalah.
- Pemeliharaan predikat aset fisik mahal dengan puluhan hingga ratusan jenis sensor yang mengukur berbagai aspek kesehatan sistem.
Dokumentasi referensi pustaka | Kode sumber pustaka | Paket (Maven) | Kode sampel
Prasyarat
- Langganan Azure - Buat langganan secara gratis
- Versi saat ini dari Java Development Kit (JDK)
- Alat build Gradle, atau manajer dependensi lainnya.
- Setelah Anda memiliki langganan Azure, buat sumber daya Detektor Anomali di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Tunggu hingga disebarkan dan pilih tombol Buka sumber daya.
- Anda akan memerlukan kunci dan titik akhir dari sumber daya yang Anda buat untuk menghubungkan aplikasi Anda ke API Detektor Anomali. Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini di mulai cepat.
Anda dapat menggunakan tingkat harga gratis (
F0
) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi.
- Anda akan memerlukan kunci dan titik akhir dari sumber daya yang Anda buat untuk menghubungkan aplikasi Anda ke API Detektor Anomali. Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini di mulai cepat.
Anda dapat menggunakan tingkat harga gratis (
Menyiapkan
Buat proyek Gradle baru
Mulai cepat ini menggunakan pengelola dependensi Gradle. Anda dapat menemukan informasi pustaka klien lainnya di Repositori Maven Central.
Di jendela konsol (seperti cmd, PowerShell, atau Bash), buat direktori baru untuk aplikasi Anda, dan buka direktori tersebut.
mkdir myapp && cd myapp
Jalankan perintah gradle init
dari direktori yang berfungsi. Perintah ini membuat file build penting untuk Gradle, termasuk build.gradle.kts yang digunakan pada runtime untuk membuat dan mengonfigurasi aplikasi Anda.
gradle init --type basic
Saat diminta untuk memilih DSL, pilih Kotlin.
Memasang pustaka klien
Temukan build.gradle.kts lalu buka dengan IDE atau editor teks pilihan Anda. Kemudian salin dalam konfigurasi build ini. Pastikan untuk menyertakan dependensi proyek.
dependencies {
compile("com.azure:azure-ai-anomalydetector")
}
Membuat file Java
Buat folder untuk aplikasi sampel Anda. Dari direktori kerja, jalankan perintah berikut:
mkdir -p src/main/java
Navigasi ke folder baru dan buat file yang disebut MetricsAdvisorQuickstarts.java. Buka di editor atau IDE pilihan Anda, lalu tambahkan pernyataan import
berikut:
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;
Buat variabel titik akhir dan kunci sumber daya Azure Anda. Buat variabel lain untuk contoh file data.
Catatan
Anda dapat menggunakan salah satu dari dua kunci kapan saja. Ini untuk memungkinkan rotasi kunci yang aman. Untuk keperluan mulai cepat ini, gunakan kunci pertama.
String key = "YOUR_API_KEY";
String endpoint = "YOUR_ENDPOINT";
Penting
Jangan lupa menghapus kunci dari kode setelah Anda selesai, dan jangan pernah mempostingnya secara publik. Untuk produksi, gunakan cara yang aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Lihat artikel keamanan layanan Azure AI untuk informasi selengkapnya.
Untuk menggunakan API multivariat Detektor Anomali, Anda harus terlebih dahulu melatih model Anda sendiri. Data pelatihan adalah kumpulan rangkaian waktu ganda yang memenuhi persyaratan berikut:
Setiap kali seri harus dalam bentuk file CSV dengan dua (dan hanya dua) kolom, "tanda waktu" dan "nilai" (semua dalam huruf kecil) sebagai baris header. Nilai "tanda waktu" harus sesuai dengan ISO 8601; "nilai" bisa menjadi bilangan bulat atau desimal dengan sejumlah angka di belakang koma. Contohnya:
rentang waktu | value |
---|---|
2019-04-01T00:00:00Z | 5 |
2019-04-01T00:01:00Z | 3.6 |
2019-04-01T00:02:00Z | 4 |
... |
... |
Setiap file CSV harus dinamai sesuai dengan variabel berbeda yang akan digunakan untuk pelatihan model. Misalnya, "temperature.csv" dan "humidity.csv". Semua file CSV harus di-zip ke dalam satu file zip tanpa subfolder. File zip dapat bernama apa pun yang Anda inginkan. File zip harus diunggah ke Azure Blob storage. Setelah Anda membuat URL SAS blob (Tanda tangan akses bersama) untuk file zip, URL tersebut dapat digunakan untuk pelatihan. Lihat dokumen ini tentang cara menghasilkan URL SAS dari Azure Blob Storage.
Contoh kode
Cuplikan kode ini memperlihatkan kepada Anda cara melakukan tugas berikut dengan pustaka klien Detektor Anomali untuk Node.js:
Mengautentikasi klien
Membuat objek anomalyDetectorClient
dengan titik akhir dan info masuk Anda.
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();
Latih model
Membangun hasil model dan model kereta
Pertama kita perlu membangun permintaan model. Pastikan waktu mulai dan waktu akhir sejajar dengan sumber data Anda.
Untuk menggunakan API multivariat Detektor Anomali, kita perlu melatih model kita sendiri sebelum menggunakan deteksi. Data yang digunakan untuk pelatihan adalah kumpulan seri waktu, setiap seri waktu harus dalam file CSV dengan hanya dua kolom, "cap waktu" dan "nilai"(nama kolom harus sama persis). Setiap file CSV harus dinamai sesuai dengan setiap variabel untuk seri waktu. Semua rangkaian waktu harus di-zip ke dalam satu file zip dan diunggah ke penyimpanan Azure Blob, dan tidak ada persyaratan untuk nama file zip. Atau, file extra meta.json dapat dimasukkan dalam file zip jika Anda ingin nama variabel berbeda dari nama file .zip Anda. Setelah kami membuat URL SAS bob (Tanda tangan akses bersama), kita dapat menggunakan url ke file zip untuk pelatihan.
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());
}
}
Mendeteksi anomali
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());
}
}
Mengekspor model
Catatan
Perintah ekspor digunakan untuk mengeksekusi model multivariat Anomaly Detector dalam lingkungan kontainer. Tindakan ini tidak didukung untuk multivariat saat ini, tetapi dukungan akan ditambahkan di masa depan.
Untuk mengekspor model terlatih Anda, gunakan exportModelWithResponse
.
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));
Menghapus model
Untuk menghapus model yang tersedia untuk sumber daya saat ini, gunakan fungsi deleteMultivariateModelWithResponse
.
Response<Void> deleteMultivariateModelWithResponse = anomalyDetectorClient.deleteMultivariateModelWithResponse(model_id, Context.NONE);
Jalankan aplikasi
Anda dapat membuat aplikasi dengan:
gradle build
Jalankan aplikasi
Sebelum menjalankannya dapat membantu untuk memeriksa kode Anda terhadap kode sampel lengkap.
Jalankan aplikasi dengan tujuan run
:
gradle run
Membersihkan sumber daya
Jika Anda ingin membersihkan dan menghapus langganan layanan Azure AI, Anda dapat menghapus sumber daya atau grup sumber daya. Menghapus grup sumber daya juga menghapus sumber daya lain yang terkait dengan grup sumber daya.