Template Cookiecutter ini dirancang untuk mempercepat inisialisasi proyek Machine Learning dengan struktur yang terstandarisasi dan menggunakan perangkat Python modern untuk efisiensi pengembangan.
- Manajemen Dependensi: Menggunakan
uvuntuk pengelolaan paket yang sangat cepat dan menjamin reproduksibilitas lingkungan pengembangan melalui file lock yang konsisten. - Kualitas Kode: Terintegrasi dengan Ruff sebagai linter dan Black sebagai formatter untuk memastikan standar penulisan kode yang bersih dan seragam.
- Git Hooks: Automasi pengecekan kualitas kode sebelum proses commit menggunakan Pre-commit guna mencegah kode yang tidak standar masuk ke repositori.
- Kontainerisasi: Menyediakan
Dockerfilemulti-stage yang telah dioptimalkan untuk beban kerja Machine Learning serta konfigurasiDocker Composeuntuk orkestrasi layanan. - Ruang Kerja Terstruktur: Pengorganisasian direktori yang sistematis untuk pemisahan data, model, eksperimen (notebooks), dan kode sumber inti.
- Konsistensi Repositori: Penggunaan berkas
.gitkeepuntuk memastikan struktur direktori kosong tetap terjaga saat dilakukan sinkronisasi ke repositori jarak jauh.
Proyek ini sangat bergantung pada uv sebagai pengelola paket utama. Pastikan perangkat tersebut sudah terpasang di sistem Anda. Jika belum, Anda dapat menginstalnya melalui perintah berikut:
curl -LsSf https://astral.sh/uv/install.sh | shIkuti langkah-langkah di bawah ini untuk menginisialisasi proyek baru menggunakan template ini.
Jalankan perintah berikut untuk men-generate proyek baru:
uvx cookiecutter https://github.com/attmhd/ml-projects-templateSetelah menjalankan perintah di atas, Anda akan diminta memasukkan beberapa informasi untuk proyek ML Anda:
- project_name: Nama proyek yang lebih deskriptif (contoh:
My ML Project). - project_slug: Nama identitas proyek (contoh:
my-ml-project). - author_name: Nama penulis proyek.
- description: Deskripsi singkat proyek.
- python_version: Versi Python yang digunakan (contoh:
3.10).
Setelah proyek berhasil dibuat, masuk ke direktori proyek tersebut dan lakukan langkah-langkah berikut:
cd nama-project-anda
# Sinkronisasi dependensi dan pembuatan virtual environment secara otomatis.
# Anda dapat menambahkan dependensi dengan 'uv add <nama-paket>' atau melalui pyproject.toml secara manual lalu jalankan 'uv sync'.
# Gunakan 'uv run <nama-skrip/paket>' untuk menjalankan perintah di dalam environment.
uv sync
# Pemasangan git hooks untuk standarisasi kode
uv run pre-commit installBerikut adalah gambaran hierarki direktori yang akan dihasilkan oleh template ini:
{{project_slug}}/
├── configs/ # Berkas konfigurasi (YAML, JSON, dsb.)
├── data/ # Penyimpanan data mentah, data antara, dan hasil pemrosesan
├── docs/ # Dokumentasi teknis dan referensi proyek
├── examples/ # Contoh penggunaan atau skrip demonstrasi
├── models/ # Tempat penyimpanan artefak model dan metadata hasil pelatihan
├── notebooks/ # Jupyter Notebooks untuk analisis data dan eksperimen
├── src/ # Kode sumber utama (logika bisnis, pipeline data, pelatihan model)
├── tests/ # Kumpulan pengujian unit dan pengujian integrasi
├── Dockerfile # Definisi citra Docker untuk standarisasi lingkungan
├── pyproject.toml # Pusat konfigurasi alat pengembangan (uv, ruff, black)
└── README.md # Dokumentasi spesifik untuk proyek yang dihasilkan
Tersedia beberapa perintah utama untuk menjaga kualitas kode selama siklus pengembangan:
- Linting (Pengecekan Kode):
uv run ruff check . - Formatting (Merapikan Kode):
uv run black . - Testing (Pengujian):
uv run pytest - Docker (Kontainerisasi):
docker compose up --build
Proyek ini dikembangkan untuk mendukung standar pengembangan Machine Learning yang lebih profesional dan terorganisir.