Menerapkan Model Pembelajaran Mesin di Heroku

Diterbitkan: 2021-01-05

Pembelajaran mesin adalah proses berkelanjutan yang melibatkan ekstraksi data, pembersihan, pemilihan fitur penting, pembuatan model, validasi, dan penerapan untuk menguji model pada data yang tidak terlihat.

Meskipun tahap awal rekayasa data dan pembuatan model adalah proses yang cukup melelahkan dan membutuhkan banyak waktu untuk dihabiskan dengan Data, penerapan model mungkin tampak sederhana, tetapi ini adalah proses yang kritis dan bergantung pada kasus penggunaan yang ingin Anda targetkan. Anda dapat memenuhi model untuk pengguna seluler, situs web, perangkat pintar, atau melalui perangkat IoT lainnya.

Seseorang dapat memilih untuk mengintegrasikan model dalam aplikasi utama, memasukkannya ke dalam SDLC, atau cloud. Ada berbagai strategi untuk menyebarkan dan menjalankan model di platform cloud, yang tampaknya merupakan pilihan yang lebih baik untuk sebagian besar kasus karena ketersediaan alat seperti Google Cloud Platform, Azure, Amazon Web Services, dan Heroku.

Meskipun Anda dapat memilih untuk mengekspos model dengan cara Pub/Sub, API (Application Program Interface) atau pembungkus REST lebih umum digunakan untuk menerapkan model dalam produksi. Seiring dengan meningkatnya kompleksitas model, tim yang berbeda ditugaskan untuk menangani situasi seperti itu yang umumnya dikenal sebagai Insinyur Pembelajaran Mesin. Dengan pengenalan sebanyak ini, mari kita lihat cara menerapkan model pembelajaran mesin sebagai API di platform Heroku.

Daftar isi

Apa itu Heroku?

Heroku adalah Platform sebagai alat layanan yang memungkinkan pengembang untuk meng-host kode tanpa server mereka. Artinya, seseorang dapat mengembangkan skrip untuk melayani satu atau yang lain untuk tujuan tertentu. Platform Heroku sendiri dihosting di AWS (Amazon Web Services), yang merupakan infrastruktur sebagai alat layanan.

Heroku adalah platform gratis tetapi terbatas hingga 500 jam waktu aktif. Aplikasi di-host sebagai dyno yang setelah tidak aktif selama 30 menit masuk ke mode tidur. Ini memastikan bahwa aplikasi Anda tidak menghabiskan semua waktu luang selama tidak aktif. Platform ini mendukung Ruby, Java, PHP, Python, Node, Go, Scala. Sebagian besar pemula Ilmu Data merujuk pada platform ini untuk memiliki pengalaman menjalankan dan menerapkan model di cloud.

Mempersiapkan Model

Sekarang setelah Anda mengetahui platform ini, mari kita siapkan modelnya untuk hal yang sama. Saat model pembelajaran mesin dilatih, parameter yang sesuai disimpan dalam memori itu sendiri. Model ini perlu diekspor dalam file terpisah sehingga kami dapat langsung memuat model ini, meneruskan data yang tidak terlihat, dan mendapatkan output.

Format model yang berbeda biasanya dipraktikkan seperti Pickle, job-lib yang mengubah Model Objek Python menjadi bitstream, ONNX, PMML, atau MOJO yang merupakan format ekspor H20.ai dan menawarkan model untuk diintegrasikan ke dalam aplikasi Java juga. Untuk mempermudah, pertimbangkan bahwa kami ingin mengekspor model melalui acar maka Anda dapat melakukannya dengan:

acar impor

Pkl_Nama File = “model.pkl”

dengan open(Pkl_Filename, 'wb') sebagai file:

pickle.dump(nama_model, file)

Model sekarang disimpan dalam file terpisah dan siap digunakan secara terintegrasi ke dalam API.

Logika Server

Untuk menyediakan akses ke model ini untuk prediksi, kami memerlukan kode server yang dapat mengarahkan dan menangani semua permintaan sisi klien. Python mendukung kerangka kerja pengembangan web dan yang terkenal adalah Flask.

Ini adalah kerangka kerja minimalis yang memungkinkan untuk mengatur server dengan beberapa baris kode. Karena ini adalah paket minimal, banyak fungsi seperti otentikasi dan sifat RESTful tidak didukung secara eksplisit. Ini dapat diintegrasikan dengan ekstensi.

Opsi lainnya adalah memilih kerangka FastAPI yang baru dirilis. Ini jauh lebih cepat, terukur, didokumentasikan dengan baik, dan dilengkapi dengan banyak paket terintegrasi. Untuk saat ini, mari lanjutkan dengan labu untuk menyiapkan rute prediksi sederhana.

dari labu impor Flask

acar impor

aplikasi = Labu(__nama__)

dengan open(Nama file, 'rb') sebagai file:

model = acar.load(file)

@app.route('/predict', metode = ['GET', 'POST'])

def pred():

# terapkan logika untuk mendapatkan parameter baik melalui kueri atau muatan

prediksi = model.predict([parameter diperoleh])

kembali {'hasil': prediksi}

Ini adalah kode kasar untuk menunjukkan bagaimana melanjutkan dengan logika server. Ada berbagai strategi yang dapat Anda pilih untuk implementasi yang lebih baik.

Lihat: Panduan untuk Menerapkan Model ML Menggunakan Streamlit

Menyiapkan File Penerapan

Heroku membutuhkan daftar semua dependensi yang dibutuhkan oleh aplikasi kita. Ini disebut file persyaratan. Ini adalah file teks yang mencantumkan semua pustaka eksternal yang digunakan aplikasi. Dalam contoh ini, konten file akan berisi:

labu

sklearn

numpy </p>

panda

gunicorn

Pustaka terakhir, gunicorn memungkinkan kita untuk mengatur implementasi server WSGI yang membentuk antarmuka untuk klien dan server yang menangani lalu lintas HTTP. Heroku juga menuntut file lain yang dikenal sebagai Procfile yang digunakan untuk menentukan titik masuk aplikasi. Perhatikan bahwa file logika server disimpan dengan nama main.py, maka perintah yang akan dimasukkan ke dalam file ini adalah:

web: gunicorn utama: aplikasi

"web" adalah jenis dyno yang kami gunakan, "gunicorn" bertindak sebagai mediator untuk meneruskan permintaan ke kode server "utama" dan mencari "aplikasi" di "utama". Aplikasi ini menangani semua rute di sini.

Penerapan Akhir

Semua persiapan sudah selesai, dan sekarang saatnya menjalankan aplikasi di cloud. Buat akun jika tidak di Heroku, klik buat aplikasi, pilih wilayah mana saja. Setelah itu hubungkan akun GitHub Anda, dan pilih repo yang berisi file-file ini: kode server, model.pkl, requirements.txt, dan Procfile.

Setelah ini cukup tekan menyebarkan cabang! Jika berhasil, kunjungi tautan yang dibuat dan aplikasi Anda akan aktif. Sekarang Anda dapat membuat permintaan ke appname.herokuapp.com/predict route dan itu akan memberikan prediksi. Pelajari lebih lanjut tentang model pembelajaran mesin.

Kesimpulan

Ini adalah pengenalan tentang apa itu Heroku, mengapa itu diperlukan, dan bagaimana menggunakan model dengan bantuan Flask. Ada banyak platform hosting yang menawarkan fitur lebih canggih seperti Data Pipelines, streaming, tetapi Heroku sebagai platform gratis masih merupakan pilihan yang baik untuk pemula yang hanya ingin merasakan penerapan.

Jika Anda tertarik untuk mempelajari lebih lanjut tentang pembelajaran mesin, lihat PG Diploma IIIT-B & upGrad dalam Pembelajaran Mesin & AI yang dirancang untuk para profesional yang bekerja dan menawarkan 450+ jam pelatihan ketat, 30+ studi kasus & tugas, IIIT- B Status alumni, 5+ proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan-perusahaan top.

Apa kerugian menggunakan platform Heroku?

Heroku tidak ideal untuk perusahaan besar karena dokumentasi platform tidak luas. Masalah lainnya adalah sistem file hanya-baca, yang membuat unggahan file besar seperti film atau foto resolusi tinggi sulit ditangani. Heroku adalah penyedia platform sebagai layanan dengan jumlah penyesuaian terbatas. Heroku hanya menerima pembayaran dalam USD dan tidak dalam mata uang lain, seperti EUR. Untuk pemilik bisnis yang lebih memilih untuk membayar dalam mata uang mereka sendiri, ini mungkin ketidaknyamanan kecil. Selain itu, dalam CRE (Common Runtime Environment), Heroku tidak menyediakan alamat IP statis.

Apa perbedaan Heroku dengan AWS?

Prosedur penerapan di AWS tidak sederhana, dan akibatnya, tidak terlalu ramah pengguna dalam hal kerumitan. Heroku menyediakan lingkungan siap pakai yang mudah dioperasikan. Heroku lebih mahal daripada AWS karena membutuhkan lebih sedikit intervensi manusia. AWS dapat menangani kebutuhan komputasi yang tinggi atau sangat tinggi, sedangkan Heroku dapat menangani tuntutan komputasi yang sederhana. Heroku, tidak seperti AWS, tidak memerlukan pemeliharaan infrastruktur rutin. AWS dan Heroku sama-sama cepat dalam hal penerapan.

Berapa lama saya bisa menggunakan Heroku tanpa biaya?

Akun Heroku memiliki kumpulan jam dyno gratis yang dapat digunakan pada aplikasi gratis. Ini menggantikan batas 18 jam pada program gratis, memungkinkan mereka untuk berfungsi 24 jam sehari jika perlu. Akun baru mendapatkan 550 jam dyno gratis, dengan tambahan 450 jam jika Anda memvalidasi identitas Anda dengan kartu kredit. Heroku menyediakan paket gratis untuk membantu Anda mempelajari teknologi dan memulai. Banyak Pengaya Heroku menyediakan paket gratis, seperti halnya Tombol dan Paket Build Heroku.