Lompat ke konten
dokumentasi.id
Commit ce728f6
v1
Star659

3

Instalasi dan Kebutuhan Lingkungan

Halaman ini merangkum paket Python yang harus tersedia sebelum main.py atau predict.py dijalankan, beserta batas versi yang ditulis di requirements.txt. Berkas itu hanya berisi delapan baris dependensi tanpa komentar requirements.txt:1-8. Instalasi dijalankan dari akar repository dengan pip install -r requirements.txt, lalu semua perintah pelatihan memakai interpreter yang sama.

Dependensi Inti dan Batas Versi

PaketConstraintBarisJejak pemakaian
transformers>=2.9.0requirements.txt:1main.py:10-12, utils/functions.py:286-292
pandas>=0.25.3requirements.txt:2predict.py:99-105
numpy>=1.17.4requirements.txt:3main.py:17-21
scikit-learn>=0.22.1requirements.txt:4utils/metrics.py:2
tensorflow>=1.15.0requirements.txt:5tidak diimpor; utils/functions.py:270
torch>=1.5.0requirements.txt:6main.py:17-21
nltk==3.4.5requirements.txt:7main.py:10-12, predict.py:9-11
unidecode>=1.1.1requirements.txt:8tidak diimpor

Tujuh paket memakai batas minimum >=, sedangkan nltk dipin persis requirements.txt:7. pip karena itu memasang tepat nltk versi 3.4.5, bukan versi terbaru.

torch>=1.5.0 requirements.txt:6 dan numpy>=1.17.4 requirements.txt:3 dipakai sejak awal proses: set_seed memanggil torch.manual_seed, torch.cuda.manual_seed, dan np.random.seed main.py:17-21. pandas>=0.25.3 requirements.txt:2 muncul saat hasil prediksi dirangkum menjadi pd.DataFrame dan disimpan lewat to_csv predict.py:99-105. scikit-learn>=0.22.1 requirements.txt:4 memasok accuracy_score, f1_score, recall_score, dan precision_score yang diimpor utils/metrics.py utils/metrics.py:2.

transformers>=2.9.0 requirements.txt:1 memasok AdamW untuk optimizer main.py:10-12 dan fungsi from_pretrained yang dipakai load_model untuk mengunduh checkpoint seperti bert-base-multilingual-uncased utils/functions.py:286-292. nltk==3.4.5 requirements.txt:7 memasok TweetTokenizer yang diimpor main.py dan predict.py main.py:10-12, predict.py:9-11.

Dua paket tidak punya jejak import di kode Python: tensorflow>=1.15.0 requirements.txt:5 dan unidecode>=1.1.1 requirements.txt:8. Pembacaan checkpoint tetap dilakukan sebagai tensor PyTorch karena load_eval_model memanggil from_pretrained(..., from_tf=False, ...) utils/functions.py:270.

graph TD
  A["pip install -r requirements.txt"] --> B["Dependensi inti terpasang"]
  B --> C["torch / numpy"]
  B --> D["transformers / nltk"]
  B --> E["scikit-learn / pandas"]
  D --> F["load_model: from_pretrained"]
  C --> G{"--device bernilai cuda?"}
  G -->|"ya"| H["model.cuda"]
  G -->|"tidak"| I["jalan di CPU"]
  C --> J{"--fp16 terisi?"}
  J -->|"ya"| K["from apex import amp"]
  K --> L["amp.initialize opt_level"]
  J -->|"tidak"| M["pelatihan fp32"]
  style A fill:#f59e0b,color:#000
  style K fill:#f59e0b,color:#000
  style L fill:#2d7d46,color:#fff
  style M fill:#2d7d46,color:#fff
  style I fill:#2d7d46,color:#fff
  style F fill:#8b5cf6,color:#fff
%% fig: Alur penyiapan lingkungan IndoNLU
%% desc: Berkas requirements memasang dependensi inti, lalu cabang device dan fp16 menentukan jalur eksekusi model.
Fig. 1: Alur penyiapan lingkungan IndoNLUBerkas requirements memasang dependensi inti, lalu cabang device dan fp16 menentukan jalur eksekusi model.

Berkas requirements untuk Contoh

examples/requirements.txt adalah daftar terpisah untuk notebook di direktori examples/. Isinya sepuluh nama paket tanpa batas versi: numpy, pandas, torch, tqdm, transformers, nltk, sklearn, matplotlib, seaborn, dan ipywidgets examples/requirements.txt:1-10. Berkas ini menulis sklearn, bukan scikit-learn, dan memuat empat paket yang tidak ada di requirements.txt utama, yaitu tqdm, matplotlib, seaborn, dan ipywidgets. tqdm sendiri sudah diimpor oleh skrip utama main.py:10-12, predict.py:9-11.

fp16 dan apex Opsional

apex tidak tercantum di requirements.txt requirements.txt:1-8. Pustaka itu hanya dibutuhkan bila flag --fp16 diisi. Parser pelatihan mendefinisikan --fp16 dengan nilai default string kosong dan keterangan Set to O0, O1, O2 or O3 for fp16 training (see apex documentation) utils/args_helper.py:48. Parser evaluasi mendefinisikan flag yang sama dengan default serupa utils/args_helper.py:73.

Import apex sengaja diletakkan di dalam cabang if args['fp16'], bukan di bagian atas modul, sehingga lingkungan tanpa apex tetap bisa menjalankan pelatihan fp32. Pada pelatihan, cabang itu memanggil amp.initialize(model, optimizer, opt_level=args['fp16']) main.py:163-165. Pada prediksi, cabang serupa berjalan sebelum model.cuda() predict.py:84-86.

⚠️ from apex import amp baru dieksekusi saat --fp16 bernilai tidak kosong main.py:163-165. Kegagalan import karena itu muncul di tengah pelatihan, bukan saat pip install, sehingga pasang apex lebih dulu bila ingin memakai O1 sampai O3.

Setelah paket terpasang, langkah berikutnya adalah memilih dataset dan model lewat argumen. Rinciannya ada di Konfigurasi Argumen dan Pemilihan Model, sedangkan urutan eksekusi pelatihan ada di Alur Training dan Evaluasi.