Skala pelatihan dan inferensi ribuan model ML dengan Amazon SageMaker | Layanan Web Amazon

Skala pelatihan dan inferensi ribuan model ML dengan Amazon SageMaker | Layanan Web Amazon

Karena pembelajaran mesin (ML) menjadi semakin umum di berbagai industri, organisasi menemukan kebutuhan untuk melatih dan melayani model ML dalam jumlah besar untuk memenuhi beragam kebutuhan pelanggan mereka. Khususnya untuk penyedia perangkat lunak sebagai layanan (SaaS), kemampuan untuk melatih dan melayani ribuan model secara efisien dan hemat biaya sangat penting untuk tetap kompetitif di pasar yang berkembang pesat.

Melatih dan melayani ribuan model membutuhkan infrastruktur yang kuat dan dapat diskalakan, di situlah tempatnya Amazon SageMaker bisa membantu. SageMaker adalah platform yang terkelola sepenuhnya yang memungkinkan pengembang dan ilmuwan data membangun, melatih, dan menerapkan model ML dengan cepat, sekaligus menawarkan manfaat hemat biaya menggunakan infrastruktur AWS Cloud.

Dalam postingan ini, kami mengeksplorasi bagaimana Anda dapat menggunakan fitur SageMaker, termasuk Pemrosesan SageMaker Amazon, tugas pelatihan SageMaker, dan titik akhir multi-model (MME) SageMaker, untuk melatih dan melayani ribuan model dengan cara yang hemat biaya. Untuk memulai dengan solusi yang dijelaskan, Anda dapat merujuk ke notebook terlampir di GitHub.

Kasus penggunaan: Perkiraan energi

Untuk postingan ini, kami berperan sebagai perusahaan ISV yang membantu pelanggan mereka menjadi lebih berkelanjutan dengan melacak konsumsi energi mereka dan memberikan prakiraan. Perusahaan kami memiliki 1,000 pelanggan yang ingin lebih memahami penggunaan energi mereka dan membuat keputusan berdasarkan informasi tentang cara mengurangi dampak lingkungan mereka. Untuk melakukannya, kami menggunakan kumpulan data sintetis dan melatih model ML berdasarkan nabi untuk setiap pelanggan untuk membuat prakiraan konsumsi energi. Dengan SageMaker, kami dapat melatih dan melayani 1,000 model ini secara efisien, memberi pelanggan kami wawasan yang akurat dan dapat ditindaklanjuti tentang penggunaan energi mereka.

Ada tiga fitur dalam dataset yang dihasilkan:

  • ID Pelanggan โ€“ Ini adalah pengidentifikasi bilangan bulat untuk setiap pelanggan, mulai dari 0โ€“999.
  • timestamp โ€“ Ini adalah nilai tanggal/waktu yang menunjukkan waktu pengukuran konsumsi energi. Stempel waktu dihasilkan secara acak antara tanggal mulai dan berakhir yang ditentukan dalam kode.
  • konsumsi โ€“ Ini adalah nilai float yang menunjukkan konsumsi energi, diukur dalam beberapa satuan arbitrer. Nilai konsumsi dihasilkan secara acak antara 0โ€“1,000 dengan musiman sinusoidal.

Ikhtisar solusi

Untuk melatih dan melayani ribuan model ML secara efisien, kita dapat menggunakan fitur SageMaker berikut:

  • Pengolahan SageMaker โ€“ Pemrosesan SageMaker adalah layanan persiapan data yang dikelola sepenuhnya yang memungkinkan Anda melakukan tugas pemrosesan data dan evaluasi model pada data input Anda. Anda dapat menggunakan Pemrosesan SageMaker untuk mengubah data mentah menjadi format yang diperlukan untuk pelatihan dan inferensi, serta untuk menjalankan evaluasi batch dan online model Anda.
  • Pekerjaan pelatihan SageMaker โ€“ Anda dapat menggunakan tugas pelatihan SageMaker untuk melatih model pada berbagai algoritme dan tipe data masukan, dan menentukan sumber daya komputasi yang diperlukan untuk pelatihan.
  • MME SageMaker โ€“ Titik akhir multi-model memungkinkan Anda menghosting beberapa model pada satu titik akhir, yang memudahkan untuk menyajikan prediksi dari beberapa model menggunakan satu API. MME SageMaker dapat menghemat waktu dan sumber daya dengan mengurangi jumlah titik akhir yang diperlukan untuk melayani prediksi dari beberapa model. MME mendukung hosting model yang didukung CPU dan GPU. Perhatikan bahwa dalam skenario kami, kami menggunakan 1,000 model, tetapi ini bukan batasan dari layanan itu sendiri.

Diagram berikut menggambarkan arsitektur solusi.

arsitektur yang menampilkan proses yang dijelaskan

Alur kerja meliputi langkah-langkah berikut:

  1. Kami menggunakan Pemrosesan SageMaker untuk melakukan praproses data dan membuat satu file CSV per pelanggan dan menyimpannya Layanan Penyimpanan Sederhana Amazon (Amazon S3).
  2. Tugas pelatihan SageMaker dikonfigurasi untuk membaca output tugas Pemrosesan SageMaker dan mendistribusikannya dalam mode round-robin ke instans pelatihan. Perhatikan bahwa ini juga dapat dicapai dengan Pipa Amazon SageMaker.
  3. Artefak model disimpan di Amazon S3 oleh tugas pelatihan, dan disajikan langsung dari MME SageMaker.

Skalakan pelatihan ke ribuan model

Menskalakan pelatihan ribuan model dimungkinkan melalui distribution parameter dari PelatihanInput di SageMaker Python SDK, yang memungkinkan Anda menentukan cara data didistribusikan ke beberapa instans pelatihan untuk tugas pelatihan. Ada tiga pilihan untuk distribution parameter: FullyReplicated, ShardedByS3Key, dan ShardedByRecord. itu ShardedByS3Key opsi berarti bahwa data pelatihan dipecah oleh kunci objek S3, dengan setiap instans pelatihan menerima subset data yang unik, menghindari duplikasi. Setelah data disalin oleh SageMaker ke wadah pelatihan, kita dapat membaca folder dan struktur file untuk melatih model unik per file pelanggan. Berikut ini adalah cuplikan kode contoh:

# Assume that the training data is in an S3 bucket already, pass the parent folder
s3_input_train = sagemaker.inputs.TrainingInput( s3_data='s3://my-bucket/customer_data', distribution='ShardedByS3Key'
) # Create a SageMaker estimator and set the training input
estimator = sagemaker.estimator.Estimator(...)
estimator.fit(inputs=s3_input_train)

Setiap tugas pelatihan SageMaker menyimpan model yang disimpan di /opt/ml/model folder wadah pelatihan sebelum mengarsipkannya di a model.tar.gz file, lalu mengunggahnya ke Amazon S3 setelah menyelesaikan tugas pelatihan. Power user juga dapat mengotomatiskan proses ini dengan SageMaker Pipelines. Saat menyimpan beberapa model melalui tugas pelatihan yang sama, SageMaker akan membuat satu model model.tar.gz file yang berisi semua model terlatih. Ini berarti bahwa, untuk menyajikan model, kita perlu membongkar arsipnya terlebih dahulu. Untuk menghindari ini, kami menggunakan pos pemeriksaan untuk menyimpan status masing-masing model. SageMaker menyediakan fungsionalitas untuk menyalin titik pemeriksaan yang dibuat selama tugas pelatihan ke Amazon S3. Di sini, pos pemeriksaan perlu disimpan di lokasi yang ditentukan sebelumnya, dengan defaultnya /opt/ml/checkpoints. Pos pemeriksaan ini dapat digunakan untuk melanjutkan pelatihan di lain waktu atau sebagai model untuk diterapkan di titik akhir. Untuk ringkasan tingkat tinggi tentang cara platform pelatihan SageMaker mengelola jalur penyimpanan untuk dataset pelatihan, artefak model, pos pemeriksaan, dan output antara penyimpanan AWS Cloud dan tugas pelatihan di SageMaker, lihat Folder Penyimpanan Pelatihan Amazon SageMaker untuk Dataset Pelatihan, Pos Pemeriksaan, Artefak Model, dan Keluaran.

Kode berikut menggunakan fiktif model.save() fungsi di dalam train.py skrip yang berisi logika pelatihan:

import tarfile
import boto3
import os [ ... argument parsing ... ] for customer in os.list_dir(args.input_path): # Read data locally within the Training job df = pd.read_csv(os.path.join(args.input_path, customer, 'data.csv')) # Define and train the model model = MyModel() model.fit(df) # Save model to output directory with open(os.path.join(output_dir, 'model.json'), 'w') as fout: fout.write(model_to_json(model)) # Create the model.tar.gz archive containing the model and the training script with tarfile.open(os.path.join(output_dir, '{customer}.tar.gz'), "w:gz") as tar: tar.add(os.path.join(output_dir, 'model.json'), "model.json") tar.add(os.path.join(args.code_dir, "training.py"), "training.py")

Menskalakan inferensi ke ribuan model dengan MME SageMaker

MME SageMaker memungkinkan Anda menyajikan beberapa model sekaligus dengan membuat konfigurasi titik akhir yang mencakup daftar semua model yang akan ditayangkan, lalu membuat titik akhir menggunakan konfigurasi titik akhir tersebut. Tidak perlu menerapkan ulang titik akhir setiap kali Anda menambahkan model baru karena titik akhir akan secara otomatis melayani semua model yang disimpan di jalur S3 yang ditentukan. Ini dicapai dengan Server Multi Model (MMS), kerangka kerja sumber terbuka untuk melayani model ML yang dapat dipasang di penampung untuk menyediakan ujung depan yang memenuhi persyaratan untuk API penampung MME baru. Selain itu, Anda dapat menggunakan server model lain termasuk Layanan obor dan Pelaut. MMS dapat dipasang di wadah khusus Anda melalui Perangkat Inferensi SageMaker. Untuk mempelajari lebih lanjut tentang cara mengonfigurasi Dockerfile Anda untuk menyertakan MMS dan menggunakannya untuk melayani model Anda, lihat Bangun Kontainer Anda Sendiri untuk Titik Akhir Multi-Model SageMaker.

Cuplikan kode berikut menunjukkan cara membuat MME menggunakan SageMaker Python SDK:

from sagemaker.multidatamodel import MultiDataModel # Create the MultiDataModel definition
multimodel = MultiDataModel( name='customer-models', model_data_prefix=f's3://{bucket}/scaling-thousand-models/models', model=your_model,
) # Deploy on a real-time endpoint
predictor = multimodel.deploy( initial_instance_count=1, instance_type='ml.c5.xlarge',
)

Saat MME aktif, kita dapat memanggilnya untuk menghasilkan prediksi. Pemanggilan dapat dilakukan di AWS SDK apa pun serta dengan SageMaker Python SDK, seperti yang ditampilkan dalam cuplikan kode berikut:

predictor.predict( data='{"period": 7}', # the payload, in this case JSON target_model='{customer}.tar.gz' # the name of the target model
)

Saat memanggil model, model awalnya dimuat dari Amazon S3 pada instans, yang dapat menyebabkan cold start saat memanggil model baru. Model yang sering digunakan di-cache di memori dan di disk untuk menyediakan inferensi latensi rendah.

Kesimpulan

SageMaker adalah platform yang andal dan hemat biaya untuk melatih dan melayani ribuan model ML. Fitur-fiturnya, termasuk Pemrosesan SageMaker, tugas pelatihan, dan MME, memungkinkan organisasi untuk melatih dan melayani ribuan model secara efisien dalam skala besar, sekaligus mendapatkan keuntungan dari penghematan biaya menggunakan infrastruktur AWS Cloud. Untuk mempelajari selengkapnya tentang cara menggunakan SageMaker untuk melatih dan melayani ribuan model, lihat Data proses, Latih Model dengan Amazon SageMaker dan Host beberapa model dalam satu wadah di belakang satu titik akhir.


Tentang Penulis

Gambar DavidDavide Gallitelli adalah Arsitek Solusi Spesialis untuk AI/ML di wilayah EMEA. Dia berbasis di Brussel dan bekerja sama dengan pelanggan di seluruh Benelux. Dia telah menjadi pengembang sejak dia masih sangat muda, mulai membuat kode pada usia 7 tahun. Dia mulai belajar AI/ML di universitas, dan telah jatuh cinta padanya sejak saat itu.

Gambar MauritMaurit de Groot adalah Arsitek Solusi di Amazon Web Services, berbasis di Amsterdam. Dia suka mengerjakan topik terkait pembelajaran mesin dan memiliki kecenderungan untuk memulai. Di waktu luangnya, dia menikmati bermain ski dan bermain squash.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS