GPU untuk proyek Anda · pembayaran kripto tanpa KYC Cara menyewa
Bahasa Indonesia
Buka konsol
Panduan praktis / KERNODECK

Kontrol input sebelum memuat model.

Validasi dulu pembacaan dan skema, lalu tipe, dimensi, dan nilai data. Setelah itu periksa aturan yang melibatkan beberapa baris, seperti keunikan pengenal. Sampel digunakan untuk menyempurnakan kontrol ini; ia tidak membuktikan bahwa seluruh korpus sesuai. Muat model setelah ada laporan yang menyebutkan apa yang benar-benar telah dikontrol.

7 menit baca · Panduan untuk developer

1. Ubah ekspektasi model menjadi kontrak data

Mulailah dari objek yang diharapkan program Anda, sebelum memilih validator. Untuk input tabular, sebutkan nama kolom, tipe, dan satuan. Untuk gambar, tentukan dimensi, kanal, dan penanganan orientasi. Untuk teks, tentukan encoding, field wajib, dan kebijakan untuk input kosong. Suatu data bisa terbaca namun tidak cocok untuk komputasi.

Pisahkan tiga keputusan: tolak, terima apa adanya, atau transformasikan menurut aturan yang terdokumentasi. Mengonversi string menjadi angka, mengganti nilai yang hilang, dan memotong input mengubah konten yang diproses. Operasi ini tidak boleh terjadi hanya karena suatu alat memilih tipe default.

Contoh dalam panduan ini bersifat pedagogis dan tidak dijalankan. Contoh ini membahas objek yang berisi pengenal dan tiga nilai numerik antara −100 dan 100. Batas ini dibuat-buat untuk mengilustrasikan kontrak, tanpa satuan fisik maupun kaitan dengan kumpulan data Kernodeck. Batas tersebut harus diganti dengan aturan proyek yang sebenarnya.

Geser tabel untuk membaca semua kolom.
Kontrak contoh, untuk ditentukan sebelum inspeksi korpus.
TingkatAturanKegagalan yang terdeteksi
SkemaTepatnya id dan valuesField hilang atau tidak terduga.
Tipeid berupa string; values berupa daftar angkaAngka disajikan sebagai teks, boolean, atau nilai yang hilang.
BentukTiga nilai per objekVektor terlalu pendek atau terlalu panjang.
NilaiAngka finit dalam [−100, 100]NaN, infinitas, atau nilai di luar domain pedagogis.
KorpusPengenal unikDua objek memiliki pengenal yang sama.

2. Verifikasi pembacaan sebelum konversi

Tetapkan format dan dialeknya. Untuk CSV, dokumentasikan pemisah, encoding, dan keberadaan header. Pembaca CSV standar Python biasanya mengembalikan string; ia tidak memutuskan bahwa kolom Anda adalah bilangan bulat. Pengenal seperti 0012 dapat kehilangan maknanya jika konversi mengubahnya menjadi 12. Karena itu, pertahankan pengenal dalam tipe yang dimaksudkan.

Kontrol jumlah field dan nama kolom sebelum membuat objek bisnis. Baris yang tergeser karena pemisah tak terduga tidak boleh lolos hanya karena sebagian nilai tetap dapat dikonversi. Untuk file biner atau gambar, lakukan juga pembacaan yang sebenarnya: ekstensi yang benar tidak menjamin konten dapat didekode.

JSON yang sudah didekode belum merupakan kontrak yang tervalidasi. Modul Python secara default menerima beberapa nilai tak hingga dan nama yang berulang dalam sebuah objek. Jika format Anda melarangnya, konfigurasikan penolakan tersebut saat pendekodean, lalu terapkan aturan skema Anda. Tentukan juga batas ukuran yang sesuai sebelum memuat file lengkap ke memori.

3. Isolasi satu kesalahan per jenis aturan

Susun kumpulan kecil di mana setiap entri tidak valid hanya melanggar satu aturan penting. Dengan begitu Anda akan tahu apa yang dideteksi oleh pemeriksaan. Jika satu-satunya contoh yang salah menggabungkan identitas yang buruk, dimensi yang keliru, dan bilangan tak hingga, penolakannya tidak membuktikan bahwa ketiga aturan tersebut berfungsi.

Dalam tabel, notasi tersebut merepresentasikan objek pedagogis yang sudah dibaca. Tak hingga adalah nilai numerik yang tidak finit, bukan sintaksis JSON yang harus diadopsi. Verdict diharapkan berdasarkan penalaran dan bukan keluaran dari program yang dijalankan. Objek kedua yang membawa a diuji setelah objek a yang valid untuk memeriksa keunikan.

Simpan kasus-kasus ini bersama kontrak Anda ketika kontrak tersebut berkembang. Jika Anda memutuskan untuk menerima string numerik, buat langkah konversi eksplisit dan simpan jejak keputusan tersebut. Jangan mengubah pemeriksaan secara diam-diam untuk menghilangkan penolakan pertama dari korpus.

Geser tabel untuk membaca semua kolom.
Kasus pedagogis dan diagnosis yang diharapkan.
Identitas dan nilaiVerdict yang diharapkanAturan yang diuji
a · [1, 2, 3]DiterimaReferensi valid.
b · ["4", 5, 6]Ditolak: tipeString bukanlah angka dalam kontrak ini.
c · [7, 8]Ditolak: bentukDua nilai, bukan tiga.
d · [0, tak hingga, 1]Ditolak: nilaiNilai yang tidak finit tidak dapat masuk ke dalam perhitungan.
a · [4, 5, 6], setelah a yang pertamaDitolak: duplikatKeunikan pada korpus.

4. Pertahankan validator eksplisit dan pesan yang dapat ditindaklanjuti

Cuplikan berikut menunjukkan pemeriksaan pada sebuah objek, setelah pendekodean. Cuplikan ini berhenti pada aturan pertama yang gagal dan tidak memproses file lengkap maupun semua format yang mungkin. Kontainer seen termasuk dalam penelusuran korpus: membuatnya ulang pada setiap baris akan membuat pemeriksaan duplikat menjadi tidak berguna.

Pesan yang berguna memuat aturan, file logis, dan posisi objek. Hindari menyalin seluruh isinya ke dalamnya. Untuk pengumpulan beberapa kesalahan, batasi detail yang disimpan sambil tetap mempertahankan penghitung yang lengkap. Laporan berukuran beberapa gigabyte juga tidak lebih membantu untuk menemukan penyebab pertama.

Pada array NumPy, pemeriksaan finitud per elemen dapat melengkapi pemeriksaan tipe dan bentuk. Pemeriksaan ini tidak menggantikan batas bisnis: bilangan yang finit masih bisa berupa panjang negatif atau nilai yang dinyatakan dalam satuan yang salah.

Cuplikan pedagogis yang tidak dijalankan — validasi objek yang didekode
import math


def valider_objet(item, seen):
    if type(item) is not dict or set(item) != {"id", "values"}:
        raise ValueError("SCHEMA")
    identifiant = item["id"]
    if type(identifiant) is not str or not identifiant.strip():
        raise ValueError("IDENTIFIANT")
    if identifiant in seen:
        raise ValueError("DOUBLON")
    values = item["values"]
    if type(values) is not list or len(values) != 3:
        raise ValueError("FORME")
    for value in values:
        if type(value) not in (int, float):
            raise ValueError("TYPE")
        if not (-100 <= value <= 100) or not math.isfinite(value):
            raise ValueError("VALEUR")
    seen.add(identifiant)
    return item

5. Beralih dari sampel ke korpus lengkap

Sampel yang pendek memungkinkan perbaikan pembaca dan kontrak dengan cepat. Pilih kasus-kasus biasa dan kasus batas: masukan kosong, ukuran maksimum, karakter tidak biasa, partisi pertama dan terakhir. Pemilihan baris-baris awal saja dapat melewatkan anomali yang terletak di file yang lebih belakang atau pada kategori yang jarang.

Validasi lengkap menelusuri semua entri terkait dan menerapkan aturan global. Untuk volume besar, proses file secara bertahap dan catat identitasnya. Menyimpan semua identitas di memori cocok untuk contoh kecil, tetapi bisa menjadi terlalu mahal; pilihlah strategi keunikan yang sesuai dengan volume, tanpa melepaskan pemeriksaan.

Laporan harus mencantumkan cakupannya: sampel penyetelan, keseluruhan satu partisi, atau keseluruhan korpus yang ditentukan. Simpan jumlah yang dibaca, diterima, dan ditolak, serta aturan yang diterapkan. Jika berkas berubah setelahnya, laporan lama tidak otomatis memvalidasi entri baru.

6. Memutuskan apa yang harus dilakukan dengan data yang ditolak

Hentikan pekerjaan ketika kesalahan membuat makna perhitungan tidak valid: kolom penting tidak ada, satuan tidak kompatibel, atau pencocokan pengenal hilang. Jika tugas Anda mengizinkan pengecualian elemen yang terisolasi, tentukan kebijakan ini sebelum peluncuran, simpan penolakan, dan hitung hasil pada cakupan yang benar-benar diterima.

Penyisihan bukanlah koreksi. Jika Anda menggantikan nilai yang hilang atau menormalkan masukan, buat versi baru yang dapat diidentifikasi dan validasi ulang. Simpan transformasi dan parameternya bersama eksperimen. Jika tidak, dua percobaan dengan nama yang sama dapat menggunakan data yang berbeda.

Sebelum GPU, periksa lagi batch yang benar-benar dibangun: urutan dimensi, tipe numerik, mask yang mungkin ada, dan pencocokan dengan target. Validasi berkas mendahului transformasi; itu tidak membuktikan bahwa pipeline selanjutnya mempertahankan properti tersebut. Satu kasus yang representatif memungkinkan untuk memverifikasi batas terakhir ini.

7. Menghasilkan otorisasi peluncuran yang dapat dipahami

Keluaran yang diharapkan adalah laporan singkat yang menjawab empat pertanyaan: masukan apa, aturan apa, cakupan apa, dan keputusan apa. Status valid harus merujuk pada identitas korpus yang tepat. Status parsial harus menyebutkan apa yang masih perlu diperiksa. Penolakan harus memungkinkan untuk menemukan kembali objek terkait tanpa menyebarkan isinya secara tidak perlu.

Tambahkan pemeriksaan pada validator itu sendiri: kasus yang benar lolos, setiap kasus yang salah ditolak dengan alasan yang tepat, dan penghitungnya cocok. Lalu verifikasi satu bagian kecil di dalam aplikasi. Pemeriksaan ganda ini mencegah kekeliruan antara kepatuhan data dengan kualitas model atau ketersediaan GPU.

Masukan yang patuh tetap bisa bias, salah label, atau tidak sesuai dengan pertanyaan yang diteliti. Panduan ini mencakup kepatuhan struktural dan aturan eksplisit; panduan ini tidak menjamin keterwakilan maupun hak penggunaan. Keputusan-keputusan ini melengkapi berkas sebelum pemrosesan yang panjang.

Pertanyaan Anda

Apakah berkas JSON yang dapat dibaca sudah valid untuk model saya?

Tidak. Dekode memverifikasi suatu representasi, bukan bidang, dimensi, satuan, dan batasan bisnis Anda. Terapkan kontrak eksplisit setelah pembacaan dan konfigurasikan penolakan format yang diperlukan.

Bisakah saya memvalidasi hanya baris-baris pertama?

Baris-baris itu berguna untuk menyetel pembaca, tetapi tidak memvalidasi sisa korpus. Nyatakan bahwa itu adalah sampel, lalu telusuri semua entri yang diperlukan dan verifikasi aturan global sebelum peluncuran penuh.

Apakah baris yang salah harus dihapus secara otomatis?

Tidak. Tentukan dulu kebijakan penolakan yang kompatibel dengan tugas. Simpan penghitung dan elemen yang perlu ditangani; pengecualian mengubah cakupan dan dapat memutarbalikkan analisis jika tidak terlihat.