Kurangi waktu yang dibutuhkan untuk menerapkan model Anda ke Amazon SageMaker untuk menguji Intelijen Data PlatoBlockchain. Pencarian Vertikal. Ai.

Kurangi waktu yang dibutuhkan untuk menerapkan model Anda ke Amazon SageMaker untuk pengujian

Ilmuwan data sering melatih model mereka secara lokal dan mencari layanan hosting yang tepat untuk menerapkan model mereka. Sayangnya, tidak ada mekanisme atau panduan yang ditetapkan untuk menerapkan model yang telah dilatih sebelumnya ke cloud. Dalam posting ini, kami melihat penerapan model terlatih untuk Amazon SageMaker hosting untuk mengurangi waktu penerapan Anda.

SageMaker adalah layanan machine learning (ML) yang terkelola sepenuhnya. Dengan SageMaker, Anda dapat dengan cepat membangun dan melatih model ML dan menerapkannya secara langsung ke lingkungan yang dihosting untuk produksi. Selain itu, Anda tidak perlu mengelola server. Anda mendapatkan lingkungan notebook Jupyter terintegrasi dengan akses mudah ke sumber data Anda. Anda dapat melakukan analisis data, melatih model, dan mengujinya menggunakan algoritme Anda sendiri atau menggunakan algoritme ML yang disediakan SageMaker yang dioptimalkan untuk berjalan secara efisien terhadap kumpulan data besar yang tersebar di beberapa mesin. Pelatihan dan hosting ditagih berdasarkan menit penggunaan, tanpa biaya minimum dan tanpa komitmen di muka.

Ikhtisar solusi

Ilmuwan data terkadang melatih model secara lokal menggunakan IDE mereka dan mengirimkan model tersebut ke tim teknik ML untuk penerapan atau hanya menjalankan prediksi secara lokal pada mesin yang kuat. Dalam posting ini, kami memperkenalkan pustaka Python yang menyederhanakan proses penerapan model ke SageMaker untuk tuan pada titik akhir waktu nyata atau tanpa server.

Pustaka Python ini memberi ilmuwan data antarmuka sederhana untuk memulai dengan cepat di SageMaker tanpa perlu mengetahui fungsionalitas SageMaker tingkat rendah.

Jika Anda memiliki model yang dilatih secara lokal menggunakan IDE pilihan Anda dan ingin memanfaatkan skala cloud, Anda dapat menggunakan pustaka ini untuk menerapkan model Anda ke SageMaker. Dengan SageMaker, selain semua manfaat penskalaan platform ML berbasis cloud, Anda memiliki akses ke alat pelatihan yang dibuat khusus (pelatihan terdistribusi, penyetelan hyperparameter), manajemen eksperimen, manajemen model, deteksi bias, keterjelasan model, dan banyak lainnya. kemampuan yang dapat membantu Anda dalam aspek apa pun dari siklus hidup ML. Anda dapat memilih dari tiga kerangka kerja paling populer untuk ML: Scikit-learn, PyTorch, dan TensorFlow, dan dapat memilih jenis komputasi yang Anda inginkan. Default disediakan di sepanjang jalan sehingga pengguna perpustakaan ini dapat menerapkan model mereka tanpa perlu membuat keputusan yang rumit atau mempelajari konsep baru. Dalam posting ini, kami menunjukkan kepada Anda cara memulai perpustakaan ini dan mengoptimalkan penerapan model ML Anda di hosting SageMaker.

Perpustakaan dapat ditemukan di Repositori GitHub.

Perangkat Migrasi SageMaker

Grafik SageMakerMigration kelas tersedia melalui pustaka Python yang diterbitkan ke GitHub. Instruksi untuk menginstal perpustakaan ini disediakan di repositori; pastikan Anda mengikuti README untuk mengatur lingkungan Anda dengan benar. Setelah Anda menginstal perpustakaan ini, sisa posting ini berbicara tentang bagaimana Anda dapat menggunakannya.

Grafik SageMakerMigration class terdiri dari abstraksi tingkat tinggi di atas SageMaker API yang secara signifikan mengurangi langkah-langkah yang diperlukan untuk menerapkan model Anda ke SageMaker, seperti yang diilustrasikan pada gambar berikut. Ini dimaksudkan untuk eksperimen sehingga pengembang dapat dengan cepat memulai dan menguji SageMaker. Ini tidak dimaksudkan untuk migrasi produksi.

Untuk model Scikit-learn, PyTorch, dan TensorFlow, library ini mendukung penerapan model terlatih ke titik akhir waktu nyata SageMaker atau titik akhir tanpa server. Untuk mempelajari lebih lanjut tentang opsi inferensi di SageMaker, lihat Menerapkan Model untuk Inferensi.

Titik akhir waktu nyata vs. tanpa server

Inferensi waktu nyata sangat ideal untuk beban kerja inferensi di mana Anda memiliki persyaratan waktu nyata, interaktif, dan latensi rendah. Anda dapat menerapkan model Anda ke layanan hosting SageMaker dan mendapatkan titik akhir yang dapat digunakan untuk inferensi. Titik akhir ini sepenuhnya dikelola dan mendukung penskalaan otomatis.

SageMaker Serverless Inference adalah opsi inferensi yang dibuat khusus yang memudahkan Anda untuk menerapkan dan menskalakan model ML. Inferensi Tanpa Server sangat ideal untuk beban kerja yang memiliki periode idle antara lonjakan lalu lintas dan dapat mentolerir cold start. Titik akhir tanpa server secara otomatis meluncurkan sumber daya komputasi dan menskalakannya masuk dan keluar bergantung pada lalu lintas, menghilangkan kebutuhan untuk memilih jenis instans atau mengelola kebijakan penskalaan. Ini menghilangkan beban berat yang tidak dapat dibedakan dalam memilih dan mengelola server.

Bergantung pada kasus penggunaan Anda, Anda mungkin ingin dengan cepat meng-host model Anda di SageMaker tanpa benar-benar memiliki instans yang selalu aktif dan menimbulkan biaya, dalam hal ini titik akhir tanpa server adalah solusi yang bagus.

Siapkan model terlatih dan skrip inferensi Anda

Setelah Anda mengidentifikasi model yang ingin Anda terapkan di SageMaker, Anda harus memastikan model tersebut disajikan ke SageMaker dalam format yang benar. Titik akhir SageMaker umumnya terdiri dari dua komponen: artefak model terlatih (.pth, .pkl, dan seterusnya) dan skrip inferensi. Skrip inferensi tidak selalu wajib, tetapi jika tidak disediakan, penangan default untuk wadah penyajian yang Anda gunakan akan diterapkan. Sangat penting untuk menyediakan skrip ini jika Anda perlu menyesuaikan fungsionalitas input/output Anda untuk inferensi.

Artefak model terlatih hanyalah model Scikit-learn, PyTorch, atau TensorFlow yang disimpan. Untuk Scikit-learn, ini biasanya file acar, untuk PyTorch ini adalah file .pt atau .pth, dan untuk TensorFlow ini adalah folder dengan aset, file .pb, dan variabel lainnya.

Secara umum, Anda harus dapat mengontrol bagaimana model Anda memproses input dan melakukan inferensi, dan mengontrol format output untuk respons Anda. Dengan SageMaker, Anda dapat memberikan skrip inferensi untuk menambahkan penyesuaian ini. Skrip inferensi apa pun yang digunakan oleh SageMaker harus memiliki satu atau lebih dari empat fungsi pengendali berikut: model_fn, input_fn, predict_fn, dan output_fn.

Perhatikan bahwa keempat fungsi ini berlaku untuk PyTorch dan Scikit-belajar wadah secara khusus. TensorFlow memiliki penangan yang sedikit berbeda karena terintegrasi dengan Melayani TensorFlow. Untuk skrip inferensi dengan TensorFlow, Anda memiliki dua penangan model: input_handler dan output_handler. Sekali lagi, ini memiliki tujuan prapemrosesan dan pascapemrosesan yang sama yang dapat Anda gunakan, tetapi dikonfigurasikan sedikit berbeda untuk diintegrasikan Melayani TensorFlow. Untuk model PyTorch, model_fn adalah fungsi wajib dalam skrip inferensi.

model_fn

Ini adalah fungsi yang pertama kali dipanggil saat Anda memanggil titik akhir SageMaker Anda. Di sinilah Anda menulis kode Anda untuk memuat model. Sebagai contoh:

def model_fn(model_dir):
    model = Your_Model()
    with open(os.path.join(model_dir, 'model.pth'), 'rb') as f:
        model.load_state_dict(torch.load(f))
    return model

Bergantung pada kerangka kerja dan jenis model, kode ini dapat berubah, tetapi fungsinya harus mengembalikan model yang diinisialisasi.

masukan_fn

Ini adalah fungsi kedua yang dipanggil saat titik akhir Anda dipanggil. Fungsi ini mengambil data yang dikirim ke titik akhir untuk inferensi dan mem-parsingnya ke dalam format yang diperlukan model untuk menghasilkan prediksi. Sebagai contoh:

def input_fn(request_body, request_content_type):
    """An input_fn that loads a pickled tensor"""
    if request_content_type == 'application/python-pickle':
        return torch.load(BytesIO(request_body))
    else:
        # Handle other content-types here or raise an Exception
        # if the content type is not supported.
        pass

Grafik request_body berisi data yang akan digunakan untuk menghasilkan inferensi dari model dan diuraikan dalam fungsi ini sehingga dalam format yang diperlukan.

prediksi_fn

Ini adalah fungsi ketiga yang dipanggil saat model Anda dipanggil. Fungsi ini mengambil data input yang telah diproses sebelumnya yang dikembalikan dari input_fn dan menggunakan model yang dikembalikan dari model_fn untuk membuat prediksi. Sebagai contoh:

def predict_fn(input_data, model):
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    model.to(device)
    model.eval()
    with torch.no_grad():
        return model(input_data.to(device))

Anda dapat secara opsional menambahkan output_fn untuk mengurai output dari predict_fn sebelum mengembalikannya ke klien. Tanda tangan fungsi adalah def output_fn(prediction, content_type).

Pindahkan model Anda yang sudah terlatih ke SageMaker

Setelah Anda memiliki file model terlatih dan skrip inferensi, Anda harus meletakkan file-file ini dalam folder sebagai berikut:

#SKLearn Model

model_folder/
    model.pkl
    inference.py
    
# Tensorflow Model
model_folder/
    0000001/
        assets/
        variables/
        keras_metadata.pb
        saved_model.pb
    inference.py
    
# PyTorch Model
model_folder/
    model.pth
    inference.py

Setelah model dan skrip inferensi Anda disiapkan dan disimpan dalam struktur folder ini, model Anda siap untuk diterapkan di SageMaker. Lihat kode berikut:

from sagemaker_migration import frameworks as fwk

if __name__ == "__main__":
    ''' '''
    sk_model = fwk.SKLearnModel(
        version = "0.23-1", 
        model_data = 'model.joblib',
        inference_option = 'real-time',
        inference = 'inference.py',
        instance_type = 'ml.m5.xlarge'
    )
    sk_model.deploy_to_sagemaker()

Setelah penyebaran titik akhir Anda, pastikan untuk membersihkan semua sumber daya yang tidak akan Anda gunakan melalui konsol SageMaker atau melalui hapus_titik akhir Panggilan API Boto3.

Kesimpulan

Tujuan dari proyek Alat Migrasi SageMaker adalah untuk memudahkan para ilmuwan data untuk memasukkan model mereka ke SageMaker untuk memanfaatkan inferensi berbasis cloud. Repositori akan terus berkembang dan mendukung lebih banyak opsi untuk memigrasikan beban kerja ke SageMaker. Kode ini open source dan kami menyambut kontribusi komunitas melalui pull request dan masalah.

Check out Repositori GitHub untuk menjelajahi lebih lanjut tentang penggunaan SageMaker Migration Toolkit, dan jangan ragu untuk juga menyumbangkan contoh atau permintaan fitur untuk ditambahkan ke proyek!


Tentang penulis

Kurangi waktu yang dibutuhkan untuk menerapkan model Anda ke Amazon SageMaker untuk menguji Intelijen Data PlatoBlockchain. Pencarian Vertikal. Ai.Kirit Tadaka adalah Arsitek Solusi ML yang bekerja di tim SA Amazon SageMaker Service. Sebelum bergabung dengan AWS, Kirit menghabiskan waktu bekerja di startup AI tahap awal diikuti dengan beberapa waktu dalam konsultasi di berbagai peran dalam penelitian AI, MLOps, dan kepemimpinan teknis.

Kurangi waktu yang dibutuhkan untuk menerapkan model Anda ke Amazon SageMaker untuk menguji Intelijen Data PlatoBlockchain. Pencarian Vertikal. Ai.Ram Vegaraju adalah Arsitek ML dengan tim Layanan SageMaker. Dia berfokus untuk membantu pelanggan membangun dan mengoptimalkan solusi AI/ML mereka di Amazon SageMaker. Di waktu luangnya, dia suka bepergian dan menulis.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS