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-81. Instalasi dijalankan dari akar repository dengan pip install -r requirements.txt, lalu semua perintah pelatihan memakai interpreter yang sama.
Dependensi Inti dan Batas Versi
| Paket | Constraint | Baris | Jejak pemakaian |
|---|---|---|---|
transformers | >=2.9.0 | requirements.txt:12 | main.py:10-123, utils/functions.py:286-2924 |
pandas | >=0.25.3 | requirements.txt:25 | predict.py:99-1056 |
numpy | >=1.17.4 | requirements.txt:37 | main.py:17-218 |
scikit-learn | >=0.22.1 | requirements.txt:49 | utils/metrics.py:210 |
tensorflow | >=1.15.0 | requirements.txt:511 | tidak diimpor; utils/functions.py:27012 |
torch | >=1.5.0 | requirements.txt:613 | main.py:17-218 |
nltk | ==3.4.5 | requirements.txt:714 | main.py:10-123, predict.py:9-1115 |
unidecode | >=1.1.1 | requirements.txt:816 | tidak diimpor |
Tujuh paket memakai batas minimum >=, sedangkan nltk dipin persis requirements.txt:714. pip karena itu memasang tepat nltk versi 3.4.5, bukan versi terbaru.
torch>=1.5.0 requirements.txt:613 dan numpy>=1.17.4 requirements.txt:37 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:12 memasok AdamW untuk optimizer main.py:10-123 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:511 dan unidecode>=1.1.1 requirements.txt:816. Pembacaan checkpoint tetap dilakukan sebagai tensor PyTorch karena load_eval_model memanggil from_pretrained(..., from_tf=False, ...) utils/functions.py:27012.
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.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-1017. 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-123, predict.py:9-1115.
fp16 dan apex Opsional
apex tidak tercantum di requirements.txt requirements.txt:1-81. 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:4818. Parser evaluasi mendefinisikan flag yang sama dengan default serupa utils/args_helper.py:7319.
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-16520. Pada prediksi, cabang serupa berjalan sebelum model.cuda() predict.py:84-8621.
⚠️
from apex import ampbaru dieksekusi saat--fp16bernilai tidak kosong main.py:163-16520. Kegagalan import karena itu muncul di tengah pelatihan, bukan saatpip install, sehingga pasangapexlebih dulu bila ingin memakaiO1sampaiO3.
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.