

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Buat baseline kualitas model
<a name="model-monitor-model-quality-baseline"></a>

Buat pekerjaan dasar yang membandingkan prediksi model Anda dengan label kebenaran dasar dalam kumpulan data dasar yang telah Anda simpan di Amazon S3. Biasanya, Anda menggunakan dataset pelatihan sebagai dataset dasar. Pekerjaan dasar menghitung metrik untuk model dan menyarankan kendala untuk digunakan untuk memantau penyimpangan kualitas model.

Untuk membuat pekerjaan dasar, Anda harus memiliki kumpulan data yang berisi prediksi dari model Anda bersama dengan label yang mewakili Ground Truth untuk data Anda.

Untuk membuat pekerjaan dasar, gunakan `ModelQualityMonitor` kelas yang disediakan oleh SageMaker Python SDK, dan selesaikan langkah-langkah berikut.

**Untuk membuat pekerjaan dasar kualitas model**

1.  Pertama, buat instance dari `ModelQualityMonitor` kelas. Cuplikan kode berikut menunjukkan cara melakukan ini.

   ```
   from sagemaker import get_execution_role, session, Session
   from sagemaker.model_monitor import ModelQualityMonitor
                   
   role = get_execution_role()
   session = Session()
   
   model_quality_monitor = ModelQualityMonitor(
       role=role,
       instance_count=1,
       instance_type='ml.m5.xlarge',
       volume_size_in_gb=20,
       max_runtime_in_seconds=1800,
       sagemaker_session=session
   )
   ```

1. Sekarang panggil `suggest_baseline` metode `ModelQualityMonitor` objek untuk menjalankan pekerjaan dasar. Cuplikan kode berikut mengasumsikan bahwa Anda memiliki kumpulan data dasar yang berisi prediksi dan label yang disimpan di Amazon S3.

   ```
   baseline_job_name = "MyBaseLineJob"
   job = model_quality_monitor.suggest_baseline(
       job_name=baseline_job_name,
       baseline_dataset=baseline_dataset_uri, # The S3 location of the validation dataset.
       dataset_format=DatasetFormat.csv(header=True),
       output_s3_uri = baseline_results_uri, # The S3 location to store the results.
       problem_type='BinaryClassification',
       inference_attribute= "prediction", # The column in the dataset that contains predictions.
       probability_attribute= "probability", # The column in the dataset that contains probabilities.
       ground_truth_attribute= "label" # The column in the dataset that contains ground truth labels.
   )
   job.wait(logs=False)
   ```

1. Setelah pekerjaan dasar selesai, Anda dapat melihat kendala yang dihasilkan oleh pekerjaan. Pertama, dapatkan hasil pekerjaan dasar dengan memanggil `latest_baselining_job` metode objek. `ModelQualityMonitor`

   ```
   baseline_job = model_quality_monitor.latest_baselining_job
   ```

1. Pekerjaan dasar menunjukkan kendala, yang merupakan ambang batas untuk metrik yang memodelkan ukuran monitor. Jika metrik melampaui ambang batas yang disarankan, Model Monitor melaporkan pelanggaran. Untuk melihat kendala yang dihasilkan oleh pekerjaan dasar, panggil `suggested_constraints` metode pekerjaan dasar. Cuplikan kode berikut memuat batasan untuk model klasifikasi biner ke dalam kerangka data Pandas.

   ```
   import pandas as pd
   pd.DataFrame(baseline_job.suggested_constraints().body_dict["binary_classification_constraints"]).T
   ```

   Kami menyarankan Anda melihat batasan yang dihasilkan dan memodifikasinya seperlunya sebelum menggunakannya untuk pemantauan. Misalnya, jika kendala terlalu agresif, Anda mungkin mendapatkan lebih banyak peringatan untuk pelanggaran daripada yang Anda inginkan.

   Jika kendala Anda berisi angka yang dinyatakan dalam notasi ilmiah, Anda perlu mengubahnya menjadi float. Contoh [skrip preprocessing](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-pre-and-post-processing.html#model-monitor-pre-processing-script) python berikut menunjukkan cara mengonversi angka dalam notasi ilmiah menjadi float. 

   ```
   import csv
   
   def fix_scientific_notation(col):
       try:
           return format(float(col), "f")
       except:
           return col
   
   def preprocess_handler(csv_line):
       reader = csv.reader([csv_line])
       csv_record = next(reader)
       #skip baseline header, change HEADER_NAME to the first column's name
       if csv_record[0] == “HEADER_NAME”:
          return []
       return { str(i).zfill(20) : fix_scientific_notation(d) for i, d in enumerate(csv_record)}
   ```

   Anda dapat menambahkan skrip pra-pemrosesan ke baseline atau jadwal pemantauan sebagai`record_preprocessor_script`, seperti yang didefinisikan dalam dokumentasi [Model](https://sagemaker.readthedocs.io/en/stable/api/inference/model_monitor.html) Monitor.

1. Ketika Anda puas dengan kendala, berikan mereka sebagai `constraints` parameter saat Anda membuat jadwal pemantauan. Untuk informasi selengkapnya, lihat [Jadwalkan pekerjaan pemantauan kualitas model](model-monitor-model-quality-schedule.md).

Batasan dasar yang disarankan terkandung dalam file constraints.json di lokasi yang Anda tentukan. `output_s3_uri` Untuk informasi tentang skema untuk file ini di. [Skema untuk Kendala (file kendala json)](model-monitor-byoc-constraints.md)