Sebagai data scientist, kita biasanya tidak terlibat dalam deployment dan maintenance—kita membangun model statistik, dan para engineer yang mengurus sisanya.
Namun, keadaan mulai berubah!
Dengan meningkatnya permintaan terhadap data scientist yang mampu menjembatani pembuatan model hingga ke produksi, membiasakan diri dengan alat automasi dan CI/CD (Continuous Integration/Continuous Deployment) dapat menjadi keunggulan strategis.
Dalam tutorial ini, kita akan mempelajari dua alat automasi populer: Make (automasi lokal) dan GitHub Actions (automasi berbasis cloud). Fokus utama kita adalah mengintegrasikan alat-alat ini ke dalam proyek data kita.
GitHub Action dan Make. Gambar oleh Abid Ali Awan.
Jika Anda ingin mempelajari lebih lanjut tentang automasi dalam konteks data science, lihat kursus Fully Automated MLOps ini.
Mengenal MakeFile
Makefile adalah cetak biru untuk membangun dan mengelola proyek perangkat lunak. Ini adalah berkas yang berisi instruksi untuk mengotomatiskan tugas, menyederhanakan proses build yang kompleks, dan memastikan konsistensi.
Untuk mengeksekusi perintah dalam Makefile, kita menggunakan alat baris perintah make. Alat ini dapat dijalankan seperti program Python dengan memberikan argumen atau menjalankannya begitu saja.
Komponen inti
Sebuah Makefile biasanya terdiri dari daftar target, dependensi, aksi, dan variabel:
Target: Hasil yang diinginkan, seperti "build," "test," atau "clean." Anggap saja sebagai tujuan yang ingin dicapai melalui Makefile.
Dependensi: Berkas-berkas yang dibutuhkan untuk membangun target. Pikirkan sebagai bahan yang diperlukan untuk setiap resep (target).
Aksi: Instruksi atau skrip yang memberi tahu sistem cara membangun target. Dapat berupa perintah seperti python test.py.
Variabel: Makefile menyediakan variabel global yang bertindak seperti argumen yang diteruskan ke aksi. Menggunakan contoh aksi di atas, kita bisa memiliki python test.py $variable_1 $variable_2.
Singkatnya, berikut adalah tampilan template MakeFile:
Variable = some_value
Target: Dependencies
Actions (commands to build the target) $VariableDidukung oleh
Menggunakan contoh kita di atas, MakeFile dapat terlihat seperti ini:
# Define variables
variable_1 =5
variable_2 =10# Target to run a test with variables
test: test_data.txt # Dependency on test data file
python test.py $variable_1$variable_2Didukung oleh
Menginstal Alat CLI Make
Kita dapat menginstal alat CLI Make di semua sistem operasi.
Linux
Untuk Linux, kita perlu menggunakan perintah berikut di terminal:
Untuk menggunakannya sebagai alat baris perintah di terminal, kita perlu menambahkan lokasi folder ke variabel lingkungan Windows. Berikut langkah-langkah yang dapat kita lakukan:
Cari "environment variables" di menu Start—ini akan mengarahkan kita ke jendela System Properties.
Di dalam jendela System Properties, klik tombol Environment Variables.
Pada bagian variabel sistem, temukan variabel "Path" dan edit—ini akan meluncurkan jendela lain tempat kita dapat menambahkan path baru ke direktori alat Make.
Untuk menguji apakah Make berhasil diinstal, kita dapat mengetik make -h di PowerShell.
Menggunakan MakeFile untuk Proyek Data Science
Di bagian ini, kita akan mempelajari cara menggunakan Makefile dan alat CLI Make dalam proyek data science.
Kita akan menggunakan dataset World Happiness Report 2023 untuk mencakup pemrosesan data, analisis, serta penyimpanan ringkasan data dan visualisasi.
Menyiapkan
Kita mulai dengan masuk ke direktori proyek dan membuat folder bernama Makefile-Action. Lalu kita membuat berkas data_processing.py di dalam folder tersebut dan meluncurkan editor VSCode.
$ cd GitHub
$ mkdir Makefile-Action
$ cd .\Makefile-Action\
$ code data_processing.pyDidukung oleh
Pemrosesan data
Kita mulai memproses data menggunakan Python. Pada blok kode di bawah, kita melakukan langkah-langkah berikut (catatan: ini adalah kode contoh—dalam skenario nyata, kita mungkin perlu melakukan lebih banyak langkah):
Memuat dataset mentah dari lokasi direktori yang diberikan oleh pengguna.
Mengganti nama semua kolom agar lebih mudah dibaca.
Mengisi nilai yang hilang.
Menyimpan dataset yang telah dibersihkan.
Berkas: data_processing.py
import sys
import pandas as pd
# Check if the data location argument is providediflen(sys.argv)!=2:print("Usage: python data_processing.py <data_location>")
sys.exit(1)# Load the raw dataset (step 1)
df = pd.read_csv(sys.argv[1])# Rename columns to more descriptive names (step 2)
df.columns =["Country","Happiness Score","Happiness Score Error","Upper Whisker","Lower Whisker","GDP per Capita","Social Support","Healthy Life Expectancy","Freedom to Make Life Choices","Generosity","Perceptions of Corruption","Dystopia Happiness Score","GDP per Capita","Social Support","Healthy Life Expectancy","Freedom to Make Life Choices","Generosity","Perceptions of Corruption","Dystopia Residual",]# Handle missing values by replacing them with the mean (step 3)
df.fillna(df.mean(numeric_only=True), inplace=True)# Check for missing values after cleaningprint("Missing values after cleaning:")print(df.isnull().sum())print(df.head())# Save the cleaned and normalized dataset to a new CSV file (step 4)
df.to_csv("processed_data\WHR2023_cleaned.csv", index=False)Didukung oleh
Analisis data
Sekarang kita lanjut menganalisis data dan menyimpan seluruh kode kita ke dalam berkas bernama data_analysis.py. Kita dapat membuat berkas ini dengan perintah terminal berikut:
Memuat dataset bersih menggunakan input yang diberikan pengguna.
Menghasilkan ringkasan data, informasi data, dan 5 baris pertama DataFrame lalu menyimpannya dalam berkas TXT.
Memplot visualisasi untuk:
Distribusi skor kebahagiaan
20 negara teratas berdasarkan skor kebahagiaan
Skor kebahagiaan versus PDB per kapita
Skor kebahagiaan versus dukungan sosial
Peta panas korelasi
Menyimpan semua visualisasi di folder “figures”.
Berkas: data_analysis.py
import io
import sys
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
# Check if the data location argument is providediflen(sys.argv)!=2:print("Usage: python data_analysis.py <data_location>")
sys.exit(1)# Load the clean dataset (step 1)
df = pd.read_csv(sys.argv[1])# Data summary (step 2)print("Data Summary:")
summary = df.describe()
data_head = df.head()print(summary)print(data_head)# Collecting data informationbuffer= io.StringIO()
df.info(buf=buffer)
info =buffer.getvalue()## Write metrics to filewithopen("processed_data/summary.txt","w")as outfile:f"\n## Data Summary\n\n{summary}\n\n## Data Info\n\n{info}\n\n## Dataframe\n\n{data_head}"print("Data summary saved in processed_data folder!")# Distribution of Happiness Score (step 3)
plt.figure(figsize=(10,6))
sns.displot(df["Happiness Score"])
plt.title("Distribution of Happiness Score")
plt.xlabel("Happiness Score")
plt.ylabel("Frequency")
plt.savefig("figures/happiness_score_distribution.png")# Top 20 countries by Happiness Score
top_20_countries = df.nlargest(20,"Happiness Score")
plt.figure(figsize=(10,6))
sns.barplot(x="Country", y="Happiness Score", data=top_20_countries)
plt.title("Top 20 Countries by Happiness Score")
plt.xlabel("Country")
plt.ylabel("Happiness Score")
plt.xticks(rotation=90)
plt.savefig("figures/top_20_countries_by_happiness_score.png")# Scatter plot of Happiness Score vs GDP per Capita
plt.figure(figsize=(10,6))
sns.scatterplot(x="GDP per Capita", y="Happiness Score", data=df)
plt.title("Happiness Score vs GDP per Capita")
plt.xlabel("GDP per Capita")
plt.ylabel("Happiness Score")
plt.savefig("figures/happiness_score_vs_gdp_per_capita.png")# Visualize the relationship between Happiness Score and Social Support
plt.figure(figsize=(10,6))
plt.scatter(x="Social Support", y="Happiness Score", data=df)
plt.xlabel("Social Support")
plt.ylabel("Happiness Score")
plt.title("Relationship between Social Support and Happiness Score")
plt.savefig("figures/social_support_happiness_relationship.png")# Heatmap of correlations between variables
corr_matrix = df.drop("Country", axis=1).corr()
plt.figure(figsize=(12,10))
sns.heatmap(corr_matrix, annot=True, cmap="coolwarm", square=True)
plt.title("Correlation Heatmap")
plt.savefig("figures/correlation_heatmap.png")print("Visualizations saved to figures folder!")Didukung oleh
Membuat Makefile
Sebelum kita membuat Makefile, kita perlu menyiapkan berkas requirements.txt untuk memasang semua paket Python yang diperlukan pada mesin baru. Berikut tampilan berkas requirements.txt:
Makefile kita terdiri dari variabel, dependensi, target, dan aksi—kita akan mempelajari semua blok pembangunnya. Kita membuat berkas bernama Makefile dan mulai menambahkan aksi untuk target:
install: Ini memperbarui versi pip dan memasang semua paket Python yang diperlukan menggunakan berkas requirements.txt.
format: Ini memformat semua berkas Python menggunakan alat Black.
process: Ini menjalankan berkas Python `data_processing.py` dengan path data mentah sebagai variabel dan dependensi.
analyze: Ini menjalankan berkas Python `data_analysis.py` dengan path data yang sudah diproses sebagai variabel dan dependensi.
clean: Ini menghapus semua berkas dan gambar yang dihasilkan saat menjalankan berkas Python.
all: Ini menjalankan semua target yang valid secara berurutan.
Mari coba menjalankan skrip Python untuk pemrosesan data.
Penting untuk dicatat bahwa ia memeriksa dependensi target sebelum menjalankan target process. Dalam kasus kita, ia memeriksa apakah berkas data mentah ada. Jika tidak, perintah tidak akan dijalankan.
Anda bahkan dapat menimpa variabel yang ada dengan memberikan argumen tambahan pada perintah make.
Dalam kasus kita, kita mengubah path data mentah.
$ make process RAW_DATA_PATH="WHR2022.csv"Didukung oleh
Skrip Python berjalan dengan argumen input yang berbeda.
Untuk mengotomatiskan seluruh workflow, kita akan menggunakan all sebagai target, yang akan menjalankan install, format, process, dan analyze satu per satu.
Perintah make memasang paket Python, memformat kode, memproses data, serta menyimpan ringkasan dan visualisasi.
Beginilah tampilan direktori proyek Anda setelah menjalankan perintah make all:
Mengenal GitHub Actions
Sementara Make unggul untuk automasi lokal dalam lingkungan pengembangan kita, GitHub Actions menawarkan alternatif berbasis cloud.
GitHub Actions umumnya digunakan untuk CI/CD, yang memungkinkan developer mengompilasi, membangun, menguji, dan men-deploy aplikasi ke produksi langsung dari GitHub.
Sebagai contoh, kita dapat membuat workflow kustom yang akan dipicu berdasarkan peristiwa spesifik seperti push atau pull request. Workflow tersebut akan menjalankan shell script dan skrip Python, atau kita bahkan dapat menggunakan action siap pakai. Workflow kustom adalah berkas YML, dan biasanya cukup mudah dipahami dan mulai menulis run serta action kustom.
Komponen inti
Mari telusuri komponen inti GitHub Actions:
Workflows didefinisikan menggunakan berkas YML, yang menentukan langkah-langkah yang harus dijalankan dan kondisi kapan langkah-langkah tersebut dijalankan.
Events adalah aktivitas spesifik yang memicu menjalankan workflow seperti push, pull_request, schedule, dan lainnya.
Runners adalah mesin yang menjalankan workflow saat dipicu. GitHub menyediakan runner terhosting gratis untuk Linux, Windows, dan macOS.
Jobs adalah sekumpulan langkah yang dijalankan pada runner yang sama. Secara default, job berjalan paralel tetapi bisa diatur untuk berjalan berurutan.
Steps adalah tugas yang menjalankan perintah atau action mirip dengan aksi dalam Makefile.
Actions adalah aplikasi kustom untuk platform GitHub Actions yang melakukan tugas kompleks namun sering diulang. Ada banyak action yang bisa dipilih, sebagian besar didukung oleh komunitas open-source.
Mulai Menggunakan GitHub Actions
Di bagian ini, kita akan belajar menggunakan GitHub Actions dan mencoba mereplikasi perintah yang sebelumnya kita gunakan dalam Makefile.
Untuk mentransfer kode kita ke GitHub, kita harus mengonversi folder proyek menjadi repositori Git menggunakan:
Lalu, kita membuat repositori baru di GitHub dan menyalin URL-nya.
Di terminal, kita ketik perintah di bawah untuk:
Menambahkan tautan repositori remote.
Menarik berkas dari repositori remote.
Menambahkan dan melakukan commit semua berkas dengan pesan commit.
Mendorong berkas dari master lokal ke branch main remote.
$ git remote add github https://github.com/kingabzpro/Makefile-Actions.git
$ git pull github main
$ gitadd.
$ git commit -m"adding all the files"
$ git push github master:mainDidukung oleh
Sebagai catatan, jika Anda memerlukan kilas balik singkat tentang GitHub atau Git, lihat tutorial ramah pemula ini tentang GitHub dan Git. Ini akan membantu Anda melakukan versioning proyek data science dan membagikannya dengan tim menggunakan alat Git CLI.
Melanjutkan pelajaran kita—kita melihat bahwa semua berkas telah berhasil ditransfer ke repositori remote.
Selanjutnya, kita akan membuat workflow GitHub Action. Pertama kita perlu pergi ke tab Actions pada repositori kingabzpro/Makefile-Actions. Lalu, klik teks biru “set up a workflow yourself.”
Kita akan diarahkan ke berkas YML, tempat kita akan menulis semua kode untuk menyiapkan lingkungan dan mengeksekusi perintah. Kita akan:
Memberikan nama workflow.
Menyiapkan event pemicu untuk mengeksekusi workflow saat kode didorong ke branch main atau ada pull request pada branch main.
Menyiapkan job dengan mesin Ubuntu Linux terbaru.
Menggunakan checkout v3 action pada bagian step. Ini membantu workflow kita mengakses repositori.
Memasang paket Python yang diperlukan, memformat kode, dan menjalankan kedua skrip Python dengan variabel.
name: Data Processing and Analysis
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Packages
run: |
pip install --upgrade pip
pip install -r requirements.txt
- name: Format
run: black *.py --line-length 88
- name: Data Processing
env:
RAW_DATA_DIR: "./raw_data/WHR2023.csv"
run: python data_processing.py $RAW_DATA_DIR
- name: Data Analysis
env:
CLEAN_DATA_DIR: "./processed_data/WHR2023_cleaned.csv"
run: python data_analysis.py $CLEAN_DATA_DIRDidukung oleh
Setelah melakukan commit pada berkas workflow dengan pesan, ia akan otomatis mulai menjalankan workflow.
Akan butuh setidaknya 20 detik untuk menyelesaikan semua langkah.
Untuk memeriksa log, pertama kita klik pada workflow run, lalu tombol Build, kemudian klik pada setiap job untuk mengakses log.
Jika ini menyenangkan bagi Anda, Anda pasti akan menikmati Panduan Pemula CI/CD untuk Machine Learning ini, yang membahas dasar-dasar membangun dan mengotomatiskan workflow machine learning.
Menggabungkan GitHub Actions dengan MakeFile
Untuk menyederhanakan dan menstandarkan workflow GitHub Action, developer menggunakan perintah Make di dalam berkas workflow. Di bagian ini, kita akan belajar menyederhanakan kode workflow menggunakan perintah Make dan belajar menggunakan action continuous machine learning (CML).
Sebelum mulai, kita harus menarik berkas workflow dari repositori remote.
Continuous Machine Learning (CML) adalah pustaka open-source oleh iterative.ai yang memungkinkan kita menerapkan continuous integration dalam proyek data science.
Dalam proyek ini, kita akan menggunakan GitHub Action iterative/setup-cml yang menggunakan fungsi CML dalam workflow untuk menghasilkan laporan analisis menggunakan gambar dan statistik data.
Laporan akan dibuat dan dilampirkan ke commit GitHub kita untuk ditinjau dan disetujui tim sebelum digabungkan.
Kita akan memodifikasi Makefile dan menambahkan target lain “summary.” Perhatikan bahwa:
Target adalah skrip multi-baris yang memindahkan data teks dari summary.txt ke report.md.
Kemudian, satu per satu, ia menambahkan heading untuk setiap gambar dan kode Markdown untuk menampilkan gambar di berkas report.md.
Di akhir, kita akan menggunakan alat cml untuk membuat laporan analitis data dan menampilkannya di bawah komentar commit.
Bayangkan menambahkan begitu banyak baris ke berkas workflow GitHub—itu akan sulit dibaca dan diubah. Sebagai gantinya, kita akan menggunakan make summary.
Berkas: Makefile
summary: ./processed_data/summary.txt
echo "# Data Summary" > report.md
cat ./processed_data/summary.txt >> report.md
echo '\n# Data Analysis' >> report.md
echo '\n## Correlation Heatmap' >> report.md
echo '' >> report.md echo '\n## Happiness Score Distribution' >> report.md
echo '' >> report.md echo '\n## Happiness Score vs GDP per Capita' >> report.md
echo '' >> report.md echo '\n## Social Support vs Happiness Relationship' >> report.md
echo '' >> report.md echo '\n## Top 20 Countries by Happiness Score' >> report.md
echo '' >> report.md cml comment create report.mdDidukung oleh
Memodifikasi berkas GiHub Action
Sekarang kita akan mengedit berkas main.yml, yang dapat kita temukan di direktori .github/workflows.
Kita mengubah semua perintah dan skrip Python dengan perintah make dan memberikan izin untuk CML Action agar membuat laporan data di komentar commit. Selain itu, pastikan kita tidak lupa menambahkan Action iterative/setup-cml@v3 ke run kita.
name: Data Processing and Analysis
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions: write-all
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: iterative/setup-cml@v3
- name: Install Packages
run: make install
- name: Format
run: make format
- name: Data Processing
env:
RAW_DATA_DIR: "./raw_data/WHR2023.csv"
run: make process RAW_DATA_PATH=$RAW_DATA_DIR
- name: Data Analysis
env:
CLEAN_DATA_DIR: "./processed_data/WHR2023_cleaned.csv"
run: make analyze PROCESSED_DATA=$CLEAN_DATA_DIR
- name: Data Summary
env:
REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: make summaryDidukung oleh
Menjalankan workflow
Untuk mengeksekusi workflow, kita hanya perlu melakukan commit semua perubahan dan menyinkronkannya dengan branch main remote.
$ git commit -am"makefile and github action combo"
$ git push github master:mainDidukung oleh
Butuh 32 detik untuk menjalankan workflow—laporan kita siap ditinjau. Untuk melakukannya, kita pergi ke ringkasan build, gulir ke bawah untuk klik tab Data Summary , lalu klik tautan komentar (tautan yang Anda lihat pada baris 20 pada gambar di bawah):
Seperti yang kita lihat, ringkasan data dan visualisasi data dilampirkan ke commit kita.
Proyek tersedia di kingabzpro/Makefile-Actions, dan Anda dapat menggunakannya sebagai panduan saat mengalami kendala. Repositori ini bersifat publik, jadi silakan fork dan rasakan sendiri kemudahannya!
Ingin mendapatkan sertifikasi GitHub? Lihat panduan komprehensif kami tentang berbagai sertifikasi GitHub!
Kesimpulan
Dalam tutorial ini, kita berfokus pada Makefile dan GitHub Actions untuk mengotomatiskan pembuatan laporan analitis data.
Kita juga mempelajari cara membangun dan menjalankan workflow serta menggunakan alat Make di dalam workflow GitHub untuk mengoptimalkan dan menyederhanakan proses automasi. Alih-alih menulis banyak baris kode, kita dapat menggunakan make summary untuk menghasilkan laporan analisis data yang akan dilampirkan pada commit kita.
Jika Anda ingin menguasai seni CI/CD untuk data science, coba kursus CI/CD for Machine Learning ini. Kursus ini membahas dasar-dasar CI/CD, GitHub Actions, versioning data, serta automasi optimasi dan evaluasi hyperparameter model.
Sebagai data scientist tersertifikasi, saya bersemangat memanfaatkan teknologi mutakhir untuk menciptakan aplikasi machine learning yang inovatif. Dengan latar belakang kuat di pengenalan ucapan, analisis dan pelaporan data, MLOps, conversational AI, dan NLP, saya mengasah keterampilan dalam mengembangkan sistem cerdas yang berdampak nyata. Selain keahlian teknis, saya juga komunikator andal yang mampu menyederhanakan konsep kompleks menjadi bahasa yang jelas dan ringkas. Karena itu, saya menjadi blogger yang dicari di bidang data science, membagikan wawasan dan pengalaman kepada komunitas profesional data yang terus berkembang. Saat ini, saya berfokus pada pembuatan dan penyuntingan konten, bekerja dengan large language model untuk mengembangkan konten yang kuat dan menarik agar membantu bisnis dan individu memaksimalkan data mereka.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Lintasan karier ini akan mengajarkan Anda segala hal yang perlu Anda ketahui tentang rekayasa pembelajaran mesin (machine learning engineering) dan MLOps.
Dapatkan keterampilan yang sangat dicari untuk mengelola data dengan efisien, termasuk mengimpor, membersihkan, mengelola data, serta menjadwalkan dan memantau pipeline, sehingga Anda dapat menonjol di bidang data engineering.
Sebagai data scientist, kita biasanya tidak terlibat dalam deployment dan maintenance—kita membangun model statistik, dan para engineer yang mengurus sisanya.
Namun, keadaan mulai berubah!
Dengan meningkatnya permintaan terhadap data scientist yang mampu menjembatani pembuatan model hingga ke produksi, membiasakan diri dengan alat automasi dan CI/CD (Continuous Integration/Continuous Deployment) dapat menjadi keunggulan strategis.
Dalam tutorial ini, kita akan mempelajari dua alat automasi populer: Make (automasi lokal) dan GitHub Actions (automasi berbasis cloud). Fokus utama kita adalah mengintegrasikan alat-alat ini ke dalam proyek data kita.
GitHub Action dan Make. Gambar oleh Abid Ali Awan.
Jika Anda ingin mempelajari lebih lanjut tentang automasi dalam konteks data science, lihat kursus Fully Automated MLOps ini.
Mengenal MakeFile
Makefile adalah cetak biru untuk membangun dan mengelola proyek perangkat lunak. Ini adalah berkas yang berisi instruksi untuk mengotomatiskan tugas, menyederhanakan proses build yang kompleks, dan memastikan konsistensi.
Untuk mengeksekusi perintah dalam Makefile, kita menggunakan alat baris perintah
make. Alat ini dapat dijalankan seperti program Python dengan memberikan argumen atau menjalankannya begitu saja.Komponen inti
Sebuah Makefile biasanya terdiri dari daftar target, dependensi, aksi, dan variabel:
python test.py.python test.py $variable_1 $variable_2.Singkatnya, berikut adalah tampilan template MakeFile:
Menggunakan contoh kita di atas, MakeFile dapat terlihat seperti ini:
Menginstal Alat CLI Make
Kita dapat menginstal alat CLI Make di semua sistem operasi.
Linux
Untuk Linux, kita perlu menggunakan perintah berikut di terminal:
MacOS
Untuk macOS, kita dapat menggunakan homebrew untuk memasang make:
Windows
Windows sedikit berbeda. Alat Make dapat digunakan dengan beberapa cara. Opsi paling populer adalah WSL (Ubuntu Linxus), w64devkit, dan GnuWin32.
Mari unduh dan instal GnuWin32 dari halaman SourceForge.
Untuk menggunakannya sebagai alat baris perintah di terminal, kita perlu menambahkan lokasi folder ke variabel lingkungan Windows. Berikut langkah-langkah yang dapat kita lakukan:
Untuk menguji apakah Make berhasil diinstal, kita dapat mengetik
make -hdi PowerShell.Menggunakan MakeFile untuk Proyek Data Science
Di bagian ini, kita akan mempelajari cara menggunakan Makefile dan alat CLI Make dalam proyek data science.
Kita akan menggunakan dataset World Happiness Report 2023 untuk mencakup pemrosesan data, analisis, serta penyimpanan ringkasan data dan visualisasi.
Menyiapkan
Kita mulai dengan masuk ke direktori proyek dan membuat folder bernama
Makefile-Action. Lalu kita membuat berkasdata_processing.pydi dalam folder tersebut dan meluncurkan editor VSCode.Pemrosesan data
Kita mulai memproses data menggunakan Python. Pada blok kode di bawah, kita melakukan langkah-langkah berikut (catatan: ini adalah kode contoh—dalam skenario nyata, kita mungkin perlu melakukan lebih banyak langkah):
Berkas: data_processing.py
Analisis data
Sekarang kita lanjut menganalisis data dan menyimpan seluruh kode kita ke dalam berkas bernama data_analysis.py. Kita dapat membuat berkas ini dengan perintah terminal berikut:
Kita juga dapat menggunakan perintah
echountuk membuat berkas Python dan membukanya di editor kode lain.Pada blok kode di bawah, kita:
Berkas: data_analysis.py
Membuat Makefile
Sebelum kita membuat Makefile, kita perlu menyiapkan berkas requirements.txt untuk memasang semua paket Python yang diperlukan pada mesin baru. Berikut tampilan berkas requirements.txt:
Makefile kita terdiri dari variabel, dependensi, target, dan aksi—kita akan mempelajari semua blok pembangunnya. Kita membuat berkas bernama Makefile dan mulai menambahkan aksi untuk target:
Berkas: Makefile
Untuk mengeksekusi target, kita akan menggunakan alat
makedan memberikan nama target di terminal.Skrip Black berjalan dengan sukses.
Mari coba menjalankan skrip Python untuk pemrosesan data.
Penting untuk dicatat bahwa ia memeriksa dependensi target sebelum menjalankan target
process. Dalam kasus kita, ia memeriksa apakah berkas data mentah ada. Jika tidak, perintah tidak akan dijalankan.Seperti yang kita lihat, semudah itu.
Anda bahkan dapat menimpa variabel yang ada dengan memberikan argumen tambahan pada perintah
make.Dalam kasus kita, kita mengubah path data mentah.
Skrip Python berjalan dengan argumen input yang berbeda.
Untuk mengotomatiskan seluruh workflow, kita akan menggunakan
allsebagai target, yang akan menjalankan install, format, process, dan analyze satu per satu.Perintah
makememasang paket Python, memformat kode, memproses data, serta menyimpan ringkasan dan visualisasi.Beginilah tampilan direktori proyek Anda setelah menjalankan perintah
make all:Mengenal GitHub Actions
Sementara Make unggul untuk automasi lokal dalam lingkungan pengembangan kita, GitHub Actions menawarkan alternatif berbasis cloud.
GitHub Actions umumnya digunakan untuk CI/CD, yang memungkinkan developer mengompilasi, membangun, menguji, dan men-deploy aplikasi ke produksi langsung dari GitHub.
Sebagai contoh, kita dapat membuat workflow kustom yang akan dipicu berdasarkan peristiwa spesifik seperti push atau pull request. Workflow tersebut akan menjalankan shell script dan skrip Python, atau kita bahkan dapat menggunakan action siap pakai. Workflow kustom adalah berkas YML, dan biasanya cukup mudah dipahami dan mulai menulis run serta action kustom.
Komponen inti
Mari telusuri komponen inti GitHub Actions:
Mulai Menggunakan GitHub Actions
Di bagian ini, kita akan belajar menggunakan GitHub Actions dan mencoba mereplikasi perintah yang sebelumnya kita gunakan dalam Makefile.
Untuk mentransfer kode kita ke GitHub, kita harus mengonversi folder proyek menjadi repositori Git menggunakan:
Lalu, kita membuat repositori baru di GitHub dan menyalin URL-nya.
Di terminal, kita ketik perintah di bawah untuk:
masterlokal ke branchmainremote.Sebagai catatan, jika Anda memerlukan kilas balik singkat tentang GitHub atau Git, lihat tutorial ramah pemula ini tentang GitHub dan Git. Ini akan membantu Anda melakukan versioning proyek data science dan membagikannya dengan tim menggunakan alat Git CLI.
Melanjutkan pelajaran kita—kita melihat bahwa semua berkas telah berhasil ditransfer ke repositori remote.
Selanjutnya, kita akan membuat workflow GitHub Action. Pertama kita perlu pergi ke tab Actions pada repositori kingabzpro/Makefile-Actions. Lalu, klik teks biru “set up a workflow yourself.”
Kita akan diarahkan ke berkas YML, tempat kita akan menulis semua kode untuk menyiapkan lingkungan dan mengeksekusi perintah. Kita akan:
mainatau ada pull request pada branchmain.Setelah melakukan commit pada berkas workflow dengan pesan, ia akan otomatis mulai menjalankan workflow.
Akan butuh setidaknya 20 detik untuk menyelesaikan semua langkah.
Untuk memeriksa log, pertama kita klik pada workflow run, lalu tombol Build, kemudian klik pada setiap job untuk mengakses log.
Jika ini menyenangkan bagi Anda, Anda pasti akan menikmati Panduan Pemula CI/CD untuk Machine Learning ini, yang membahas dasar-dasar membangun dan mengotomatiskan workflow machine learning.
Menggabungkan GitHub Actions dengan MakeFile
Untuk menyederhanakan dan menstandarkan workflow GitHub Action, developer menggunakan perintah Make di dalam berkas workflow. Di bagian ini, kita akan belajar menyederhanakan kode workflow menggunakan perintah Make dan belajar menggunakan action continuous machine learning (CML).
Sebelum mulai, kita harus menarik berkas workflow dari repositori remote.
Menggunakan CML
Continuous Machine Learning (CML) adalah pustaka open-source oleh iterative.ai yang memungkinkan kita menerapkan continuous integration dalam proyek data science.
Dalam proyek ini, kita akan menggunakan GitHub Action
iterative/setup-cmlyang menggunakan fungsi CML dalam workflow untuk menghasilkan laporan analisis menggunakan gambar dan statistik data.Laporan akan dibuat dan dilampirkan ke commit GitHub kita untuk ditinjau dan disetujui tim sebelum digabungkan.
Kita akan memodifikasi Makefile dan menambahkan target lain “summary.” Perhatikan bahwa:
cmluntuk membuat laporan analitis data dan menampilkannya di bawah komentar commit.Bayangkan menambahkan begitu banyak baris ke berkas workflow GitHub—itu akan sulit dibaca dan diubah. Sebagai gantinya, kita akan menggunakan
make summary.Berkas: Makefile
Memodifikasi berkas GiHub Action
Sekarang kita akan mengedit berkas main.yml, yang dapat kita temukan di direktori .github/workflows.
Kita mengubah semua perintah dan skrip Python dengan perintah
makedan memberikan izin untuk CML Action agar membuat laporan data di komentar commit. Selain itu, pastikan kita tidak lupa menambahkan Actioniterative/setup-cml@v3ke run kita.Menjalankan workflow
Untuk mengeksekusi workflow, kita hanya perlu melakukan commit semua perubahan dan menyinkronkannya dengan branch
mainremote.Butuh 32 detik untuk menjalankan workflow—laporan kita siap ditinjau. Untuk melakukannya, kita pergi ke ringkasan build, gulir ke bawah untuk klik tab Data Summary , lalu klik tautan komentar (tautan yang Anda lihat pada baris 20 pada gambar di bawah):
Seperti yang kita lihat, ringkasan data dan visualisasi data dilampirkan ke commit kita.
Proyek tersedia di kingabzpro/Makefile-Actions, dan Anda dapat menggunakannya sebagai panduan saat mengalami kendala. Repositori ini bersifat publik, jadi silakan fork dan rasakan sendiri kemudahannya!
Ingin mendapatkan sertifikasi GitHub? Lihat panduan komprehensif kami tentang berbagai sertifikasi GitHub!
Kesimpulan
Dalam tutorial ini, kita berfokus pada Makefile dan GitHub Actions untuk mengotomatiskan pembuatan laporan analitis data.
Kita juga mempelajari cara membangun dan menjalankan workflow serta menggunakan alat Make di dalam workflow GitHub untuk mengoptimalkan dan menyederhanakan proses automasi. Alih-alih menulis banyak baris kode, kita dapat menggunakan
make summaryuntuk menghasilkan laporan analisis data yang akan dilampirkan pada commit kita.Jika Anda ingin menguasai seni CI/CD untuk data science, coba kursus CI/CD for Machine Learning ini. Kursus ini membahas dasar-dasar CI/CD, GitHub Actions, versioning data, serta automasi optimasi dan evaluasi hyperparameter model.