--- marp: true paginate: true class: bagian-iii header: 'RTI — Riset Teknologi Informasi | Universitas Putra Bangsa Kebumen' footer: 'Helmi Bahar Alim, S.Kom., M.Kom. | 2026' --- # Bab 9 — Implementation & Environment ## Reproducibility sebagai Standar Ilmiah *Pertemuan 9 (M9)  |  Sub-CPMK 3.1  |  CPMK03  |  CPL06* Fase: **Executing** (M9–M11)  ·  Bagian III: Execution **Universitas Putra Bangsa**  |  Fak. Sains & Teknologi  ·  Prodi Teknik Informatika --- ## Agenda Pertemuan 9 1. Bridge dari Fase Designing — dari desain ke implementasi 2. Reproducible Implementation Model 3. Implementasi riset ≠ coding biasa 4. Kontrol lingkungan: hardware, OS, library, seed 5. Repeatability vs Reproducibility — perbedaan penting 6. Dokumentasi wajib: setup, parameter, dataset 7. Best practices: version control, config logging, isolation 8. Cognitive Traps & Studi Kasus 9. Output Praktis: Documentation Setup + README --- ## Capaian Pembelajaran Setelah pertemuan ini, mahasiswa mampu: - Menjelaskan perbedaan antara **repeatability** dan **reproducibility** - Mengidentifikasi semua komponen **environment** yang harus dikontrol - Mengimplementasikan **version control** dan **config logging** untuk eksperimen - Membuat **dokumentasi setup** yang memungkinkan orang lain mereplikasi eksperimen - Membuat **README eksperimen** yang standar > Sub-CPMK 3.1 → Mengimplementasikan eksperimen dengan kontrol reproducibility (CPL06) --- ## Bridge dari Fase Designing Di Fase Designing (Bab 5–7), Anda merancang: - Variabel yang akan diukur (Bab 5) - Arsitektur sistem yang terkontrol (Bab 6) - Desain eksperimen lengkap dengan skenario (Bab 7) **Sekarang: Fase Executing dimulai.** > Kualitas implementasi menentukan apakah desain eksperimen yang sudah baik bisa menghasilkan data yang **valid dan reproducible**. Implementasi yang buruk (tanpa dokumentasi, tanpa version control, tanpa environment isolation) bisa merusak eksperimen yang desainnya sempurna. --- ## Reproducible Implementation Model *Dari desain eksperimen ke hasil yang bisa dipercaya*
**Experiment Design** ↓ Implementation ↓ Environment Setup (dikontrol & didokumentasikan) ↓ Execution Consistency (setiap run identik) ↓ Reproducibility (orang lain bisa mereplikasi) ↓ **Trustworthy Result**
> Jika eksperimen tidak bisa direplikasi oleh peneliti lain → hasilnya tidak bisa dipercaya secara ilmiah, terlepas dari seberapa bagus angkanya. --- ## Implementasi Riset ≠ Coding Biasa | Aspek | Coding Biasa | Implementasi Riset | |-------|-------------|-------------------| | **Tujuan** | Sistem berfungsi | Eksperimen dapat direplikasi | | **Konfigurasi** | Hardcoded dalam kode | Dipisah dalam config file (YAML/JSON) | | **Random seed** | Diabaikan | Ditetapkan dan di-log | | **Versi library** | "Yang terbaru" | Dikunci (requirements.txt/conda env) | | **Hasil** | "Jalan, selesai" | Di-log lengkap, timestamped | | **Dokumentasi** | Minimal | Wajib, cukup detail untuk replikasi | **Prinsip:** Jika Anda menjalankan ulang kode Anda sendiri 6 bulan kemudian dan hasilnya berbeda → reproducibility gagal. --- ## Komponen Environment yang Harus Dikontrol *Semuanya didokumentasikan, semuanya di-version control*
- **Hardware:** CPU/GPU (model, RAM, VRAM) - **OS:** Ubuntu 20.04 / Windows 11 (versi spesifik) - **Language:** Python 3.10.12 (bukan "Python 3") - **Framework:** PyTorch 2.1.0 / TensorFlow 2.13.0 - **Libraries:** numpy 1.24.3, scikit-learn 1.3.0, transformers 4.35.0 - **Dataset:** nama, sumber URL, tanggal diunduh, checksum (MD5/SHA256) - **Random Seed:** seed=42 — set di semua library - **Config:** hyperparameter dalam config.yaml (tidak hardcoded)
**Tool:** `conda env export > environment.yml` atau `pip freeze > requirements.txt` --- ## Repeatability vs Reproducibility | | Repeatability | Reproducibility | |-|--------------|----------------| | **Definisi** | Hasil sama oleh **peneliti yang sama** di kondisi yang sama | Hasil sama oleh **peneliti berbeda** dari deskripsi metode | | **Standar** | Minimum — harus dicapai | Target — yang membuat sains berkembang | | **Syarat** | Kode + environment + data tersedia | Kode + environment + data + dokumentasi terbuka | | **Gagal karena** | Seed tidak di-set, library berbeda | Dokumentasi tidak cukup, data tidak publik | **Dalam laporan riset:** - Reportkan mean ± std dari multiple runs (minimal 5) → menunjukkan repeatability - Sertakan kode + environment file → memungkinkan reproducibility --- ## Best Practices: Version Control untuk Eksperimen ### Git untuk Kode ```bash # Setiap eksperimen = branch tersendiri git checkout -b exp/03-attention-mechanism git commit -m "Exp03: baseline BiLSTM+CRF untuk NER" # Tag untuk eksperimen yang final git tag exp-03-final ``` ### Logging Eksperimen Setiap run harus menghasilkan log yang berisi: ``` timestamp: 2026-04-13 09:15:32 experiment_id: exp-03 model: BiLSTM+CRF config: config_03.yaml dataset: CoNLL2003, split=42 random_seed: 42 result: {f1: 0.872, precision: 0.889, recall: 0.856} duration: 1h23m hardware: RTX 3090, 24GB VRAM ``` --- ## Template README Eksperimen ```markdown # Eksperimen [N]: [Nama Eksperimen] ## Tujuan [Menguji hipotesis apa? Terkait RQ mana?] ## Environment - Python 3.10.12 - PyTorch 2.1.0 - CUDA 11.8 - GPU: NVIDIA RTX 3090 ## Setup ```bash conda env create -f environment.yml conda activate rti-exp ``` ## Cara Menjalankan ```bash python train.py --config configs/exp_03.yaml ``` ## Hasil Terakhir | Run | F1 | Precision | Recall | |-----|-----|-----------|--------| | 1 | 87.2% | 88.9% | 85.6% | | ... | | | | | Mean ± Std | 87.1 ± 0.3% | | | ## Catatan [Anomali, variasi, observasi penting selama eksekusi] ``` --- # Cognitive Traps ## Bab 9 — Implementation & Environment --- ## Cognitive Traps — Bab 9 **"Kode sudah jalan, dokumentasi bisa dibuat nanti"** Dokumentasi yang dibuat setelah eksperimen sering tidak lengkap — detail kecil yang kritis (versi library, seed, preprocessing decision) sudah terlupakan. Dokumentasi harus **bersamaan dengan implementasi**. **"Environment = install library yang diperlukan"** Environment yang tidak terdokumentasi berarti "pip install terbaru" — dan library berubah versi. Satu perbedaan versi library bisa mengubah hasil secara signifikan. **"Satu run sudah cukup — hasilnya sudah bagus"** Satu run tidak bisa membuktikan stabilitas. Variance antar run bisa besar. Minimal 5 run dengan fixed seed berbeda, laporkan mean ± std. --- ## Studi Kasus 1 — Implementasi Tidak Reproducible (Basic) **Konteks:** Mahasiswa A mengirimkan kode ke dosen. Dosen menjalankan kode tersebut — hasilnya berbeda 12% dari yang dilaporkan. **Penyebab:** - Library tidak di-lock (transformers versi beda → tokenizer berubah) - Random seed tidak di-set → augmentasi data berbeda setiap run - Preprocessing ada operasi random (shuffle tanpa seed) - Config disimpan di dalam fungsi, tidak di file terpisah **Dampak:** Hasil tidak bisa diverifikasi → laporan tidak diterima. **Checklist reproducibility:** - [ ] `requirements.txt` / `environment.yml` tersedia - [ ] Semua random seed ditetapkan - [ ] Config dipisah dari kode - [ ] README berisi langkah menjalankan dari awal --- ## Studi Kasus 2 — Library Version Mismatch (Advanced) **Konteks:** Paper melaporkan F1 = 94.2% menggunakan `scikit-learn`. Peneliti lain mencoba mereplikasi: F1 = 91.8%. **Investigasi:** | Komponen | Paper | Replikasi | |---------|-------|----------| | scikit-learn | 0.24.2 | 1.3.0 | | Implementasi `F1-score` | macro average | micro average (default berubah) | | Preprocessing | StandardScaler | Sama | **Penyebab:** Perubahan default parameter `average` di `sklearn.metrics.f1_score` antara versi 0.24 dan 1.x. **Dampak:** 3 bulan upaya replikasi, hasilnya tetap tidak bisa dicocokkan. **Pelajaran:** Lock versi library. Sebutkan versi dalam paper. Gunakan checksum dataset. --- ## Research vs Engineering — Implementation | Aspek | Engineering | Research | |-------|------------|---------| | Kode | Fungsional | Fungsional + reproducible | | Config | Bisa hardcoded | Harus dieksternalisasi | | Versi library | "Yang terbaru" | Di-lock dalam environment file | | Random seed | Opsional | Wajib, didokumentasikan | | Logging | Debug logging | Experiment logging (ID, params, result, time) | | Dokumentasi | README basic | README eksperimen (langkah-langkah detail) | --- ## Ringkasan Pertemuan 9 | Konsep | Inti | |--------|------| | Reproducible Implementation | Design → Implementation → Environment → Consistency → Reproducibility | | Kontrol Environment | Hardware + OS + Python version + Library versions + Dataset checksum | | Repeatability vs Reproducibility | Same researcher (min) vs different researcher (target) | | Version Control | Branch per eksperimen, tag versi final | | Logging | Setiap run: timestamp, config, result, hardware | | README Eksperimen | Cukup detail untuk orang lain jalankan dari awal | --- ## Final Statement & Output Praktis
"Implementasi yang baik bukan yang paling cepat, tetapi yang menghasilkan hasil yang bisa dipercaya dan diverifikasi."
### Output Praktis M9 Buat **2 dokumen**: 1. **Documentation Setup** — environment.yml / requirements.txt + semua konfigurasi eksperimen 2. **README Eksperimen** — langkah setup sampai menjalankan, annotated dengan tujuan tiap langkah *Dokumen ini menjadi Appendix "Experiment Reproducibility" dalam laporan riset.* --- ## Referensi Utama — Bab 9 - Pineau, J., Vincent-Lamarre, P., Sinha, K., Larivière, V., Beygelzimer, A., d'Alché-Buc, F., Fox, E., & Larochelle, H. (2021). Improving reproducibility in machine learning research. *Journal of Machine Learning Research, 22*(1), 7459–7478. - Stodden, V., McNutt, M., Bailey, D. H., Deelman, E., Gil, Y., Hanson, B., Heroux, M. A., Ioannidis, J. P. A., & Taufer, M. (2016). Enhancing reproducibility for computational methods. *Science, 354*(6317), 1240–1241. - Wohlin, C., Runeson, P., Höst, M., Ohlsson, M. C., Regnell, B., & Wesslén, A. (2012). *Experimentation in software engineering*. Springer.