riset-teknologi-informasi/slide/slide-09-implementation-environment.md
hb_alim e3e1e8db41 feat: add slide deck and book prompt template
- slide/: 16 Marp slide files with inline UPB CSS theme
  (slide-01 through slide-16, covering all RTI-20252 topics)
- slide/theme/: upb.css canonical theme + logo-upb.png
- docs/AI-BOOK-PROMPT-TEMPLATE.md: RTI-20252 book authoring prompt
2026-04-13 15:04:45 +07:00

40 KiB
Raw Blame History

marp paginate class header footer
true true bagian-iii RTI — Riset Teknologi Informasi | Universitas Putra Bangsa Kebumen 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 (M9M11)  ·  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 57), 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

# 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

# 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

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]


---

<!-- _class: section-header bagian-iii -->

# 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

<div class="final">
"Implementasi yang baik bukan yang paling cepat, tetapi yang menghasilkan hasil yang bisa dipercaya dan diverifikasi."
</div>

### 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), 74597478.

- 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), 12401241.

- Wohlin, C., Runeson, P., Höst, M., Ohlsson, M. C., Regnell, B., & Wesslén, A. (2012). *Experimentation in software engineering*. Springer.