Panduan model dan modalitas10 November 2026Flatkey Team

Machine learning dengan Python: model pertama dan kapan menggunakan GPU

Tutorial praktis di CPU dengan scikit-learn, evaluasi kesalahan, dan keputusan infrastruktur berdasarkan pekerjaan nyata, tanpa memerlukan GPU untuk memulai.

Machine learning dengan Python: model pertama dan kapan menggunakan GPU

Untuk memulai machine learning dengan Python, pilih tugas kecil, pisahkan data pelatihan dan pengujian, lalu bandingkan model sederhana dengan baseline dasar. Anda tidak perlu menyewa GPU untuk latihan pertama. Dalam panduan ini, kita akan membangun pengklasifikasi lengkap di CPU, menafsirkan kesalahannya, dan memutuskan kapan masuk akal untuk mengubah infrastruktur.

Tujuannya adalah menghasilkan eksperimen yang dapat Anda ulangi dan jelaskan. Membuat satu prediksi yang benar kurang berguna dibanding mengetahui data apa yang dilihat model, bagaimana model dievaluasi, dan di mana model gagal.

Apa yang harus dipelajari terlebih dahulu dalam machine learning dengan Python

Proyek pembelajaran terawasi memiliki masukan, yang disebut fitur, dan jawaban yang diketahui, yang disebut target. Dalam contoh artikel ini, fiturnya adalah pengukuran bunga dan targetnya adalah spesies. Model mempelajari hubungan menggunakan set pelatihan lalu mencoba mengklasifikasikan contoh yang dipisahkan.

Sebelum memilih pustaka, tuliskan pertanyaan yang ingin dijawab:

Tugas Jenis jawaban Kemungkinan eksperimen pertama
Mengklasifikasikan sebuah observasi Satu kategori Regresi logistik atau pohon keputusan
Mengestimasi suatu jumlah Satu angka Regresi linear dan analisis kesalahan
Menemukan kelompok tanpa label Pengelompokan Metode clustering dan inspeksi kelompok
Bekerja dengan gambar atau bahasa dalam skala besar Representasi dan prediksi yang lebih kompleks Pustaka deep learning yang sesuai, setelah menentukan evaluasi

Jangan memilih jaringan saraf hanya karena terlihat lebih canggih. Jika solusi sederhana menyelesaikan tugas dalam biaya dan tenggat yang diperlukan, solusi tersebut menjadi baseline penting bagi alternatif apa pun setelahnya.

Siapkan lingkungan terisolasi

Anda memerlukan instalasi Python yang kompatibel dengan scikit-learn dan akses ke terminal. Buat folder kerja dan lingkungan virtual untuk menghindari konflik dengan proyek lain:

python -m venv .venv

Di macOS atau Linux, aktifkan dengan source .venv/bin/activate. Di PowerShell Windows, gunakan .venv\Scripts\Activate.ps1, sesuai kebijakan terminal setempat. Kemudian instal pustaka dan catat versinya:

python -m pip install scikit-learn
python -m pip freeze > requirements.txt

Gunakan python3 sebagai pengganti python jika itu adalah nama executable di komputer Anda. File dependensi membantu membuat ulang lingkungan; simpan juga versi Python, kode, dan konfigurasi eksperimen.

Model lengkap pertama: klasifikasi bunga

dataset Iris dari scikit-learn berisi 150 observasi, empat fitur numerik, dan tiga kelas. Dataset ini kecil dan cocok untuk mempelajari alur kerja, tetapi tidak membuktikan bahwa sistem siap untuk data nyata.

Simpan kode di bawah sebagai exemplo_iris.py dan jalankan python exemplo_iris.py. Kode ini menggunakan 120 observasi untuk pelatihan dan 30 untuk pengujian. Pembagian terstratifikasi mempertahankan representasi kelas; seed tetap memungkinkan pembagian yang sama diulangi.

import platform
from time import perf_counter
import sklearn
from sklearn.datasets import load_iris
from sklearn.dummy import DummyClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, f1_score, confusion_matrix
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.20, random_state=42, stratify=y
)
models = {
    "baseline": DummyClassifier(strategy="most_frequent"),
    "logistica": make_pipeline(
        StandardScaler(), LogisticRegression(max_iter=1000)
    ),
}
for name, model in models.items():
    start = perf_counter()
    model.fit(X_train, y_train)
    train_seconds = perf_counter() - start
    pred = model.predict(X_test)
    print(name, "acuracia=", round(accuracy_score(y_test, pred), 3),
          "f1_macro=", round(f1_score(
              y_test, pred, average="macro", zero_division=0
          ), 3))
    print("matriz de confusao:", confusion_matrix(y_test, pred).tolist())
    print("tempo de treino (s):", round(train_seconds, 6))
print("Python:", platform.python_version(),
      "scikit-learn:", sklearn.__version__)

DummyClassifier menyediakan pembanding yang tidak mempelajari hubungan antara fitur dan kelas. Dengan strategi yang digunakan di sini, model ini memprediksi kelas yang paling sering muncul dalam pelatihan. Jika model yang lebih rumit tidak meningkatkan baseline seperti ini, selidiki data, tujuan, dan evaluasi sebelum menghabiskan lebih banyak sumber daya. Lihat strateginya di dokumentasi DummyClassifier.

Regresi logistik menerima data melalui sebuah Pipeline: pertama standardisasi, lalu pengklasifikasi. Transformasi disesuaikan pada data pelatihan dan diterapkan kembali pada data pengujian. Hal ini mencegah perhitungan skala menggunakan informasi yang seharusnya disimpan untuk evaluasi, suatu bentuk umum kebocoran data. Dokumentasi praktik terbaik scikit-learn menjelaskan kehati-hatian ini.

Cara menafsirkan keluaran tanpa menipu diri sendiri

Pada eksekusi contoh ini di CPU, dengan Python 3.14.4 dan scikit-learn 1.9.1, kami memperoleh hasil di bawah ini. Ini adalah hasil dari latihan dan pembagian data ini, bukan janji untuk kumpulan data lain.

Model Akurasi pada pengujian F1 makro
Baseline kelas paling sering 0,333 0,167
Standardisasi + regresi logistik 0,933 0,933

Matriks model kedua adalah [[10, 0, 0], [0, 9, 1], [0, 1, 9]]: dua dari 30 bunga pada pengujian tertukar antara dua kelas terakhir. Ini lebih informatif daripada hanya mengatakan bahwa model benar sekitar 93%.

Akurasi menunjukkan proporsi prediksi yang benar pada kumpulan yang dievaluasi. F1 makro menghitung F1 untuk setiap kelas dan mengambil rata-rata tanpa memberi bobot lebih besar pada kelas yang paling sering. Matriks kebingungan menunjukkan kelas mana yang tertukar. Gunakan ketiga pembacaan tersebut untuk memahami perilaku, alih-alih hanya mencari angka terbesar.

Waktu yang dicetak hanyalah waktu pelatihan dari eksekusi tersebut di komputer Anda. Pada kumpulan sekecil ini, waktu bervariasi menurut mesin dan noise pengukuran. Jangan gunakan angka ini untuk menjanjikan penghematan di cloud atau membandingkan CPU dan GPU.

Hasil Iris juga tidak boleh dijadikan ekspektasi akurasi untuk produk Anda. Pada data sendiri, distribusi, kualitas label, dan biaya kesalahan dapat sepenuhnya berbeda. Satu kegagalan yang jarang terjadi mungkin lebih penting daripada puluhan prediksi benar yang mudah.

Sebelum mengubah algoritme, jawablah:

  1. Apakah model mengungguli baseline dasar dengan menggunakan pengujian yang persis sama?
  2. Kelas mana yang menampung kesalahan dan apa dampaknya pada tugas?
  3. Apakah terdapat informasi dalam masukan yang hanya tersedia setelah prediksi?
  4. Apakah pengujian merepresentasikan contoh baru atau berisi duplikat dan observasi yang terkait dengan pelatihan?
  5. Apakah kinerja tetap terjaga pada pembagian data valid lainnya?

Dari latihan ke kumpulan data nyata

Pembagian acak praktis untuk Iris. Namun, ini mungkin tidak memadai jika Anda memprediksi peristiwa masa depan, memiliki beberapa baris per pelanggan, atau menemukan salinan dari observasi yang sama. Dalam kasus ini, pertimbangkan pemisahan berdasarkan waktu atau kelompok, sesuai dengan cara model akan digunakan. Parameter random_state tidak memperbaiki pembagian yang secara konseptual keliru. referensi train_test_split menjelaskan kontrol yang tersedia untuk pembagian sederhana ini.

Sisihkan validasi untuk memilih konfigurasi dan pertahankan pengujian akhir yang terpisah. Jika Anda berkali-kali melihat pengujian untuk memutuskan penyesuaian berikutnya, pengujian itu mulai memengaruhi pilihan Anda. Untuk proyek kecil, spreadsheet eksperimen sudah membantu:

Catatan Apa yang perlu dicatat
Data Asal, tanggal, ukuran, kolom, dan aturan pengecualian
Pembagian Berdasarkan waktu, kelompok, atau acak; seed jika berlaku
Model Algoritme, parameter, dan versi dependensi
Evaluasi Metrik utama, kesalahan per kelas, dan perbandingan dengan baseline
Operasi Waktu, memori, ukuran artefak, dan biaya yang diukur
Keputusan Apa yang membaik dan masalah mana yang masih terbuka

Saat mengganti Iris dengan tabel sendiri, validasi tipe, bidang yang hilang, dan kategori sebelum melatih. Pertahankan transformasi bersama model agar prediksi menggunakan persiapan data yang sama. Kolom yang berubah satuan dapat menyebabkan masalah meskipun kode terus berjalan.

Kapan GPU membantu — dan kapan tidak

Contoh dalam panduan ini berjalan di CPU. Menambahkan kartu ke mesin tidak secara otomatis membuat semua kode scikit-learn menggunakannya. Proyek ini mendokumentasikan dukungan GPU untuk sekumpulan estimator dan konfigurasi yang terbatas, termasuk melalui masukan dan opsi tertentu. Periksa jalur tepat dari algoritme yang dipilih.

GPU layak diuji ketika terdapat implementasi yang kompatibel dan beban kerja yang dapat memanfaatkannya, seperti pelatihan jaringan saraf tertentu atau pemrosesan batch. Meski demikian, peningkatannya harus menutupi transfer data, persiapan lingkungan, dan biaya infrastruktur.

Situasi yang diamati Tindakan berikutnya yang direkomendasikan
Data sedikit dan pelatihan cepat di CPU Prioritaskan kualitas data dan evaluasi
Pembacaan atau persiapan menghabiskan sebagian besar waktu Ukur penyimpanan, pemuatan, dan transformasi
Algoritme tanpa jalur yang kompatibel dengan GPU Tinjau kembali pustaka atau tetap gunakan CPU
Pelatihan yang kompatibel dengan GPU menghabiskan sebagian besar siklus Jalankan pengujian terkontrol pada konfigurasi kandidat
Model besar atau volume inferensi tinggi Ukur memori, latensi, dan konkurensi dengan beban kerja nyata

Bandingkan total waktu hingga memperoleh hasil yang berguna, bukan hanya waktu eksekusi suatu operasi. Sertakan instalasi, transfer, pelatihan, validasi, penyimpanan, dan periode tidak aktif. Alternatif yang lebih cepat per epoch dapat lebih buruk jika memerlukan lebih banyak percobaan untuk mencapai kualitas yang diperlukan.

Ketika proyek mencapai tahap ini, Flatkey Cloud GPU memungkinkan Anda mengevaluasi opsi sewa GPU NVIDIA. Konfirmasikan konfigurasi, wilayah, ketersediaan, dan ketentuan untuk beban kerja yang direncanakan. Bawa ukuran dataset, pustaka, memori yang diperlukan, dan tujuan pengujian; tutorial ini tidak mengharuskan Anda menyewa GPU untuk menyelesaikannya.

Sebelum menggunakan model

Tentukan format input yang diterima, perilaku untuk kolom yang tidak valid, dan cara memantau kesalahan setelah dipublikasikan. Simpan versi model dan persiapan data bersama-sama. Uji satu prediksi dengan data yang representatif di luar notebook sebelum memikirkan skala.

Jika langkah berikutnya adalah menyajikan model bahasa dengan infrastruktur sendiri, panduan deployment vLLM membahas jenis beban kerja lain. Jangan samakan pengklasifikasi tabular kecil dengan pengoperasian LLM: kebutuhan memori, evaluasi, dan server berbeda.

Pertanyaan umum

Apakah saya memerlukan GPU untuk mempelajari machine learning dengan Python?

Tidak. Contoh yang disajikan dapat dijalankan di CPU. Pilih infrastruktur yang lebih besar ketika ada bottleneck yang terukur dan implementasi yang dapat memanfaatkannya.

Mengapa menggunakan baseline sebelum model yang lebih kompleks?

Baseline menunjukkan apa yang dapat diperoleh dengan aturan sederhana. Ini memungkinkan Anda menilai apakah model mempelajari sesuatu yang berguna dan apakah kompleksitas tambahan dapat dibenarkan.

Apakah seed yang sama menjamin hasil yang sama di lingkungan apa pun?

Seed menetapkan pilihan acak yang dikendalikan oleh parameter tersebut. Catat juga versi dan lingkungan; perbedaan implementasi dan eksekusi dapat memengaruhi hasil. Jangan samakan keterulangan suatu pembagian dengan jaminan performa universal.

Apa proyek berikutnya setelah Iris?

Pilih tugas kecil dengan data yang Anda pahami, target yang dapat diverifikasi, dan kriteria keberhasilan. Ulangi prosesnya: baseline, pembagian yang benar, model, analisis kesalahan, dan pengukuran. Kebiasaan ini adalah dasar untuk berkembang dalam machine learning dengan Python tanpa meningkatkan biaya sebelum diperlukan.