Bagikan melalui


Memantau kualitas dan penggunaan token aplikasi alur prompt yang disebarkan

Penting

Item-item yang ditandai (pratinjau) dalam artikel ini saat ini sedang berada dalam pratinjau publik. Pratinjau ini disediakan tanpa kesepakatan tingkat layanan, dan kami tidak merekomendasikannya untuk penggunaan dalam lingkungan produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.

Memantau aplikasi yang disebarkan ke produksi adalah bagian penting dari siklus hidup aplikasi AI generatif. Perubahan perilaku data dan konsumen dapat memengaruhi aplikasi Anda dari waktu ke waktu. Perubahan tersebut dapat mengakibatkan sistem kedaluarsa yang berdampak negatif pada hasil bisnis dan mengekspos organisasi terhadap risiko kepatuhan, ekonomi, dan reputasi.

Nota

Untuk pendekatan yang lebih baik untuk melakukan pemantauan berkelanjutan aplikasi yang sudah diterapkan (selain arus perintah), pertimbangkan untuk menggunakan evaluasi online Azure AI.

Dengan menggunakan pemantauan Azure AI untuk aplikasi AI generatif, Anda dapat memantau aplikasi Anda dalam produksi untuk penggunaan token, kualitas pembuatan, dan metrik operasional.

Integrasi untuk memantau penyebaran alur perintah memungkinkan Anda untuk:

  • Kumpulkan data inferensi produksi dari aplikasi alur prompt yang sudah Anda sebarkan.
  • Terapkan metrik evaluasi AI yang Bertanggung Jawab seperti groundedness, koherensi, kefasihan, dan relevansi, yang dapat dioperasikan dengan metrik evaluasi aliran prompt.
  • Pantau perintah, penyelesaian, dan total penggunaan token di setiap penyebaran model dalam alur permintaan Anda.
  • Pantau metrik operasional, seperti jumlah permintaan, latensi, dan tingkat kesalahan.
  • Gunakan pemberitahuan dan default yang telah dikonfigurasi sebelumnya untuk menjalankan pemantauan secara berulang.
  • Gunakan visualisasi data dan konfigurasikan perilaku tingkat lanjut di portal Azure AI Foundry.

Prasyarat

Sebelum Anda mengikuti langkah-langkah dalam artikel ini, pastikan Anda memiliki prasyarat berikut:

Nota

Anda harus menggunakan proyek berbasis hub untuk fitur ini. Proyek Foundry tidak didukung. Lihat Bagaimana cara mengetahui jenis proyek mana yang saya miliki? dan Membuat proyek berbasis hub.

  • Alur kerja prompt yang siap untuk diterapkan. Jika Anda tidak memilikinya, lihat Mengembangkan alur permintaan.
  • Kontrol akses berbasis peran Azure digunakan untuk memberikan akses ke operasi di portal Azure AI Foundry. Untuk melakukan langkah-langkah dalam artikel ini, akun pengguna Anda harus diberi peran Pengembang Azure AI pada grup sumber daya. Untuk informasi selengkapnya tentang izin, lihat Kontrol akses berbasis peran di portal Azure AI Foundry.

Persyaratan untuk memantau metrik

Model bahasa transformator generatif yang telah dilatih sebelumnya (GPT) menghasilkan metrik pemantauan yang dikonfigurasi dengan instruksi evaluasi tertentu (templat perintah). Model-model ini bertindak sebagai evaluator untuk tugas urutan-ke-urutan. Penggunaan teknik ini untuk menghasilkan metrik pemantauan menunjukkan hasil empiris yang kuat dan korelasi tinggi dengan penilaian manusia jika dibandingkan dengan metrik evaluasi AI generatif standar. Untuk informasi selengkapnya tentang evaluasi alur perintah, lihat Mengirimkan pengujian batch dan mengevaluasi alur dan Mengevaluasi dan memantau metrik untuk AI generatif.

Model GPT berikut menghasilkan metrik pemantauan. Model GPT ini didukung dengan pemantauan dan dikonfigurasi sebagai sumber daya Azure OpenAI Anda:

  • GPT-3.5 Turbo
  • GPT-4
  • GPT-4-32k

Metrik yang didukung untuk pemantauan

Metrik berikut didukung untuk pemantauan.

Ukuran Deskripsi
Keterhubungan dengan kenyataan Mengukur seberapa baik jawaban yang dihasilkan model selaras dengan informasi dari data sumber (konteks yang ditentukan pengguna.)
Relevansi Mengukur sejauh mana respons model yang dihasilkan berkaitan dan terkait langsung dengan pertanyaan yang diberikan.
Koherensi Mengukur sejauh mana respons yang dihasilkan model secara logis konsisten dan terhubung.
Kefasihan Mengukur kecakapan tata bahasa dari jawaban yang dihasilkan oleh AI generatif.

Pemetaan nama kolom

Saat membuat alur, Anda perlu memastikan bahwa nama kolom Anda dipetakan. Nama kolom data input berikut digunakan untuk mengukur keamanan dan kualitas pembuatan.

Nama kolom input Definisi Diperlukan/Opsional
Pertanyaan Perintah asli yang diberikan (juga dikenal sebagai "input" atau "pertanyaan"). Diperlukan
Jawaban Penyelesaian akhir dari panggilan API yang dikembalikan (juga dikenal sebagai "output" atau "jawaban"). Diperlukan
Konteks Data konteks apa pun yang dikirim ke panggilan API, bersama dengan perintah asli. Misalnya, jika Anda berharap untuk mendapatkan hasil pencarian hanya dari sumber informasi atau situs web bersertifikat tertentu, Anda dapat menentukan konteks ini dalam langkah-langkah evaluasi. Fakultatif

Parameter yang diperlukan untuk metrik

Parameter yang dikonfigurasi dalam aset data Anda menentukan metrik apa yang dapat Anda hasilkan, sesuai dengan tabel ini.

Ukuran Pertanyaan Jawaban Konteks
Koherensi Diperlukan Diperlukan -
Kefasihan Diperlukan Diperlukan -
Keterhubungan dengan kenyataan Diperlukan Diperlukan Diperlukan
Relevansi Diperlukan Diperlukan Diperlukan

Untuk informasi selengkapnya tentang persyaratan pemetaan data tertentu untuk setiap metrik, lihat Persyaratan metrik kueri dan respons.

Menyiapkan pemantauan untuk alur perintah

Untuk menyiapkan pemantauan untuk aplikasi alur perintah, Anda harus terlebih dahulu menyebarkan aplikasi alur perintah dengan pengumpulan data inferensi. Kemudian Anda dapat mengonfigurasi pemantauan untuk aplikasi yang disebarkan.

Menyebarkan aplikasi alur perintah Anda dengan pengumpulan data inferensi

Di bagian ini, Anda mempelajari cara menyebarkan alur prompt dengan mengaktifkan pengumpulan data inferensi. Untuk informasi selengkapnya tentang cara menerapkan alur prompt Anda, lihat Menerapkan alur untuk inferensi real-time.

Petunjuk / Saran

Karena Anda bisa mengkustomisasi panel kiri di portal Azure AI Foundry, Anda mungkin melihat item yang berbeda dari yang diperlihatkan dalam langkah-langkah ini. Jika Anda tidak melihat apa yang Anda cari, pilih ... Lainnya di bagian bawah panel kiri.

  1. Masuk ke Azure AI Foundry.

  2. Jika Anda belum berada di proyek Anda, pilihlah proyek tersebut.

    Nota

    Anda harus menggunakan proyek berbasis hub untuk fitur ini. Proyek Foundry tidak didukung. Lihat Bagaimana cara mengetahui jenis proyek mana yang saya miliki? dan Membuat proyek berbasis hub.

  3. Di panel kiri, pilih Alur perintah.

  4. Pilih alur perintah yang Anda buat sebelumnya.

    Artikel ini mengasumsikan bahwa Anda membuat alur perintah yang siap untuk penyebaran. Jika Anda tidak memilikinya, lihat Mengembangkan alur permintaan.

  5. Konfirmasikan bahwa alur Anda berhasil berjalan dan bahwa input dan output yang diperlukan dikonfigurasi untuk metrik yang ingin Anda nilai.

    Menyediakan parameter minimum yang diperlukan (pertanyaan/input dan jawaban/output) hanya menyediakan dua metrik: koherensi dan kefasihan. Anda harus mengonfigurasi alur seperti yang dijelaskan di bagian persyaratan untuk metrik pemantauan. Contoh ini menggunakan question (Pertanyaan) dan chat_history (Konteks) sebagai input alur, dan answer (Jawaban) digunakan sebagai output alur.

  6. Pilih Sebarkan untuk mulai menyebarkan alur Anda.

    Cuplikan layar yang memperlihatkan editor alur perintah dengan tombol Sebarkan.

  7. Di jendela penyebaran, pastikan pengumpulan data Inferensi diaktifkan untuk mengumpulkan data inferensi aplikasi Anda dengan lancar ke Azure Blob Storage. Pengumpulan data ini diperlukan untuk pemantauan.

    Cuplikan layar yang memperlihatkan pengaturan dasar dalam wizard penyebaran.

  8. Lanjutkan melalui langkah-langkah di jendela penyebaran untuk menyelesaikan pengaturan tingkat lanjut.

  9. Pada halaman Tinjau , tinjau konfigurasi penyebaran dan pilih Buat untuk menyebarkan alur Anda.

    Cuplikan layar yang memperlihatkan halaman Tinjau di wizard penyebaran dengan semua pengaturan selesai.

    Secara default, semua input dan output aplikasi alur prompt yang Anda sebarkan dikumpulkan ke penyimpanan blob Anda. Saat pengguna memanggil penyebaran, data dikumpulkan agar dapat digunakan oleh monitor Anda.

  10. Pilih tab Uji pada halaman penyebaran. Kemudian uji penyebaran Anda untuk memastikan bahwa sistem berfungsi sebagaimana mestinya.

    Cuplikan layar yang memperlihatkan halaman pengujian penyebaran.

    Pemantauan mengharuskan setidaknya satu titik data berasal dari sumber selain tab Uji dalam penyebaran. Sebaiknya gunakan REST API yang tersedia di tab Konsumsi untuk mengirim permintaan sampel ke deployment Anda. Untuk informasi selengkapnya tentang cara mengirim permintaan sampel ke penyebaran Anda, lihat Membuat penyebaran online.

Mengonfigurasi pemantauan

Di bagian ini, Anda mempelajari cara mengonfigurasi pemantauan untuk aplikasi alur prompt yang disebarkan.

  1. Di panel kiri, buka Aset saya>Model + titik akhir.

  2. Pilih implementasi alur perintah yang Anda buat.

  3. Dalam kotak Aktifkan pemantauan kualitas pembuatan , pilih Aktifkan.

    Cuplikan layar yang memperlihatkan halaman penyebaran menyoroti pemantauan kualitas pembuatan.

  4. Mulai konfigurasikan pemantauan dengan memilih metrik yang Anda inginkan.

  5. Konfirmasikan bahwa nama kolom Anda dipetakan dari alur Anda seperti yang ditentukan dalam Pemetaan nama kolom.

  6. Pilih nilai Koneksi Azure OpenAI dan Penyebaran yang ingin Anda gunakan untuk memantau alur prompt aplikasi Anda.

  7. Pilih Opsi tingkat lanjut untuk melihat opsi lainnya untuk dikonfigurasi.

    Cuplikan layar yang memperlihatkan kolom yang dipetakan untuk metrik pemantauan.

  8. Sesuaikan laju pengambilan sampel dan ambang batas untuk metrik yang Dikonfigurasi. Tentukan alamat email yang harus menerima pemberitahuan saat skor rata-rata untuk metrik tertentu berada di bawah ambang batas.

    Cuplikan layar yang memperlihatkan opsi tingkat lanjut saat Anda memetakan kolom untuk metrik pemantauan.

    Jika pengumpulan data tidak diaktifkan untuk penyebaran Anda, pembuatan monitor memungkinkan pengumpulan data inferensi ke penyimpanan blob Anda. Proses ini membuat penyebaran menjadi offline selama beberapa menit.

  9. Pilih Buat untuk membuat monitor Anda.

Mengonsumsi hasil pemantauan

Setelah Anda membuat monitor, proses ini berjalan setiap hari untuk mengukur penggunaan token dan metrik kualitas pembuatan.

  1. Buka tab Pemantauan (pratinjau) dalam penyebaran untuk melihat hasil pemantauan. Di sini, Anda akan melihat gambaran umum hasil pemantauan selama jendela waktu yang dipilih. Gunakan pemilih tanggal untuk mengubah jendela waktu data yang Anda pantau. Metrik berikut tersedia dalam gambaran umum ini:

    • Jumlah permintaan total: Jumlah total permintaan yang dikirim ke penyebaran selama jendela waktu yang dipilih.
    • Jumlah token total: Jumlah total token yang digunakan oleh penyebaran selama jendela waktu yang dipilih.
    • Jumlah token prompt: Jumlah token prompt yang digunakan oleh deployment selama jendela waktu yang dipilih.
    • Jumlah token penyelesaian: Jumlah token penyelesaian yang digunakan oleh penyebaran selama jendela waktu yang dipilih.
  2. Lihat metrik pada tab Penggunaan token . (Tab ini dipilih secara default.) Di sini, Anda dapat melihat penggunaan token aplikasi Anda dari waktu ke waktu. Anda juga dapat melihat distribusi token perintah dan penyelesaian dari waktu ke waktu. Anda dapat mengubah nilai cakupan Trendline untuk memantau semua token di seluruh aplikasi atau penggunaan token untuk penyebaran tertentu (misalnya, GPT-4) yang dipergunakan dalam aplikasi Anda.

    Cuplikan layar yang memperlihatkan penggunaan token di halaman pemantauan penyebaran.

  3. Buka tab Kualitas pembuatan untuk memantau kualitas aplikasi Anda dari waktu ke waktu. Metrik berikut diperlihatkan dalam bagan waktu:

    • Jumlah pelanggaran: Jumlah pelanggaran untuk metrik tertentu (misalnya, kefasihan) adalah jumlah pelanggaran selama jendela waktu yang dipilih. Pelanggaran terjadi untuk metrik ketika metrik dihitung (defaultnya adalah harian) jika nilai komputasi untuk metrik berada di bawah nilai ambang yang ditetapkan.
    • Skor rata-rata: Skor rata-rata untuk metrik tertentu (misalnya, kefasihan) adalah jumlah skor untuk semua instans (atau permintaan) yang dibagi dengan jumlah instans (atau permintaan) selama jendela waktu yang dipilih.

    Kartu Pelanggaran kualitas pembuatan menunjukkan tingkat pelanggaran selama jendela waktu yang dipilih. Tingkat pelanggaran adalah jumlah pelanggaran yang dibagi dengan jumlah total kemungkinan pelanggaran. Anda dapat menyesuaikan ambang batas untuk metrik dalam pengaturan. Secara default, metrik dihitung setiap hari. Anda juga dapat menyesuaikan frekuensi ini di pengaturan.

    Cuplikan layar yang memperlihatkan garis tren kualitas pembuatan di halaman pemantauan penyebaran.

  4. Pada tab Pemantauan (Pratinjau) , Anda juga dapat melihat tabel komprehensif dari semua permintaan sampel yang dikirim ke penyebaran selama jendela waktu yang dipilih.

    Pemantauan menetapkan laju pengambilan sampel default pada 10%. Misalnya, jika 100 permintaan dikirim ke penyebaran Anda, 10 diambil sampel dan digunakan untuk menghitung metrik kualitas generasi. Anda dapat menyesuaikan laju pengambilan sampel di pengaturan.

    Cuplikan layar yang memperlihatkan tombol Telusuri untuk kualitas generasi.

  5. Pilih tombol Lacak di sisi kanan baris dalam tabel untuk melihat detail pelacakan untuk permintaan tertentu. Tampilan ini menyediakan detail pelacakan komprehensif untuk permintaan ke aplikasi Anda.

    Cuplikan layar yang memperlihatkan informasi pelacakan.

  6. Tutup tampilan jejak.

  7. Buka tab Operasional untuk melihat metrik operasional dari penyebaran dalam waktu hampir real-time. Kami mendukung metrik operasional berikut:

    • Jumlah permintaan
    • Keterlambatan
    • Tingkat kesalahan

    Cuplikan layar yang memperlihatkan tab operasional untuk penyebaran.

Hasil pada tab Pemantauan (pratinjau) penyebaran Anda memberikan wawasan untuk membantu Anda meningkatkan performa alur prompt aplikasi Anda secara proaktif.

Konfigurasi pemantauan tingkat lanjut dengan SDK v2

Pemantauan juga mendukung opsi konfigurasi tingkat lanjut dengan SDK v2. Skenario berikut didukung.

Mengaktifkan pemantauan untuk penggunaan token

Jika Anda hanya ingin mengaktifkan pemantauan penggunaan token untuk aplikasi alur prompt yang disebarkan, sesuaikan skrip berikut dengan skenario Anda:

from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
    MonitorSchedule,
    CronTrigger,
    MonitorDefinition,
    ServerlessSparkCompute,
    MonitoringTarget,
    AlertNotification,
    GenerationTokenStatisticsSignal,
)
from azure.ai.ml.entities._inputs_outputs import Input
from azure.ai.ml.constants import MonitorTargetTasks, MonitorDatasetContext

# Authentication package
from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()

# Update your Azure resources details
subscription_id = "INSERT YOUR SUBSCRIPTION ID"
resource_group = "INSERT YOUR RESOURCE GROUP NAME"
project_name = "INSERT YOUR PROJECT NAME" # This is the same as your Azure AI Foundry project name
endpoint_name = "INSERT YOUR ENDPOINT NAME" # This is your deployment name without the suffix (e.g., deployment is "contoso-chatbot-1", endpoint is "contoso-chatbot")
deployment_name = "INSERT YOUR DEPLOYMENT NAME"

# These variables can be renamed but it is not necessary
monitor_name ="gen_ai_monitor_tokens" 
defaulttokenstatisticssignalname ="token-usage-signal" 

# Determine the frequency to run the monitor, and the emails to recieve email alerts
trigger_schedule = CronTrigger(expression="15 10 * * *")
notification_emails_list = ["test@example.com", "def@example.com"]

ml_client = MLClient(
    credential=credential,
    subscription_id=subscription_id,
    resource_group_name=resource_group,
    workspace_name=project_name,
)

spark_compute = ServerlessSparkCompute(instance_type="standard_e4s_v3", runtime_version="3.3")
monitoring_target = MonitoringTarget(
    ml_task=MonitorTargetTasks.QUESTION_ANSWERING,
    endpoint_deployment_id=f"azureml:{endpoint_name}:{deployment_name}",
)

# Create an instance of a token statistic signal
token_statistic_signal = GenerationTokenStatisticsSignal()

monitoring_signals = {
    defaulttokenstatisticssignalname: token_statistic_signal,
}

monitor_settings = MonitorDefinition(
compute=spark_compute,
monitoring_target=monitoring_target,
monitoring_signals = monitoring_signals,
alert_notification=AlertNotification(emails=notification_emails_list),
)

model_monitor = MonitorSchedule(
    name = monitor_name,
    trigger=trigger_schedule,
    create_monitor=monitor_settings
)

ml_client.schedules.begin_create_or_update(model_monitor)

Mengaktifkan pemantauan untuk kualitas generasi

Jika Anda hanya ingin mengaktifkan pemantauan kualitas generasi untuk aplikasi alur perintah yang telah diterapkan, sesuaikan skrip berikut dengan skenario Anda:

from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
    MonitorSchedule,
    CronTrigger,
    MonitorDefinition,
    ServerlessSparkCompute,
    MonitoringTarget,
    AlertNotification,
    GenerationSafetyQualityMonitoringMetricThreshold,
    GenerationSafetyQualitySignal,
    BaselineDataRange,
    LlmData,
)
from azure.ai.ml.entities._inputs_outputs import Input
from azure.ai.ml.constants import MonitorTargetTasks, MonitorDatasetContext

# Authentication package
from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()

# Update your Azure resources details
subscription_id = "INSERT YOUR SUBSCRIPTION ID"
resource_group = "INSERT YOUR RESOURCE GROUP NAME"
project_name = "INSERT YOUR PROJECT NAME" # This is the same as your Azure AI Foundry project name
endpoint_name = "INSERT YOUR ENDPOINT NAME" # This is your deployment name without the suffix (e.g., deployment is "contoso-chatbot-1", endpoint is "contoso-chatbot")
deployment_name = "INSERT YOUR DEPLOYMENT NAME"
aoai_deployment_name ="INSERT YOUR AOAI DEPLOYMENT NAME"
aoai_connection_name = "INSERT YOUR AOAI CONNECTION NAME"

# These variables can be renamed but it is not necessary
app_trace_name = "app_traces"
app_trace_Version = "1"
monitor_name ="gen_ai_monitor_generation_quality" 
defaultgsqsignalname ="gsq-signal"

# Determine the frequency to run the monitor and the emails to receive email alerts
trigger_schedule = CronTrigger(expression="15 10 * * *")
notification_emails_list = ["test@example.com", "def@example.com"]

ml_client = MLClient(
    credential=credential,
    subscription_id=subscription_id,
    resource_group_name=resource_group,
    workspace_name=project_name,
)

spark_compute = ServerlessSparkCompute(instance_type="standard_e4s_v3", runtime_version="3.3")
monitoring_target = MonitoringTarget(
    ml_task=MonitorTargetTasks.QUESTION_ANSWERING,
    endpoint_deployment_id=f"azureml:{endpoint_name}:{deployment_name}",
)

# Set thresholds for the passing rate (0.7 = 70%)
aggregated_groundedness_pass_rate = 0.7
aggregated_relevance_pass_rate = 0.7
aggregated_coherence_pass_rate = 0.7
aggregated_fluency_pass_rate = 0.7

# Create an instance of a gsq signal
generation_quality_thresholds = GenerationSafetyQualityMonitoringMetricThreshold(
    groundedness = {"aggregated_groundedness_pass_rate": aggregated_groundedness_pass_rate},
    relevance={"aggregated_relevance_pass_rate": aggregated_relevance_pass_rate},
    coherence={"aggregated_coherence_pass_rate": aggregated_coherence_pass_rate},
    fluency={"aggregated_fluency_pass_rate": aggregated_fluency_pass_rate},
)
input_data = Input(
    type="uri_folder",
    path=f"{endpoint_name}-{deployment_name}-{app_trace_name}:{app_trace_Version}",
)
data_window = BaselineDataRange(lookback_window_size="P7D", lookback_window_offset="P0D")
production_data = LlmData(
    data_column_names={"prompt_column": "question", "completion_column": "answer", "context_column": "context"},
    input_data=input_data,
    data_window=data_window,
)

gsq_signal = GenerationSafetyQualitySignal(
    connection_id=f"/subscriptions/{subscription_id}/resourceGroups/{resource_group}/providers/Microsoft.MachineLearningServices/workspaces/{project_name}/connections/{aoai_connection_name}",
    metric_thresholds=generation_quality_thresholds,
    production_data=[production_data],
    sampling_rate=1.0,
    properties={
        "aoai_deployment_name": aoai_deployment_name,
        "enable_action_analyzer": "false",
        "azureml.modelmonitor.gsq_thresholds": '[{"metricName":"average_fluency","threshold":{"value":4}},{"metricName":"average_coherence","threshold":{"value":4}}]',
    },
)

monitoring_signals = {
    defaultgsqsignalname: gsq_signal,
}

monitor_settings = MonitorDefinition(
compute=spark_compute,
monitoring_target=monitoring_target,
monitoring_signals = monitoring_signals,
alert_notification=AlertNotification(emails=notification_emails_list),
)

model_monitor = MonitorSchedule(
    name = monitor_name,
    trigger=trigger_schedule,
    create_monitor=monitor_settings
)

ml_client.schedules.begin_create_or_update(model_monitor)

Setelah membuat monitor dari SDK, Anda dapat menggunakan hasil pemantauan di portal Azure AI Foundry.