Gunakan pendekatan yang berpusat pada data untuk meminimalkan jumlah data yang diperlukan untuk melatih model Amazon SageMaker

Gunakan pendekatan yang berpusat pada data untuk meminimalkan jumlah data yang diperlukan untuk melatih model Amazon SageMaker

Karena model pembelajaran mesin (ML) telah meningkat, ilmuwan data, insinyur ML, dan peneliti telah mengalihkan lebih banyak perhatian mereka untuk mendefinisikan dan meningkatkan kualitas data. Hal ini menyebabkan munculnya pendekatan data-sentris untuk ML dan berbagai teknik untuk meningkatkan performa model dengan berfokus pada kebutuhan data. Menerapkan teknik ini memungkinkan praktisi ML mengurangi jumlah data yang diperlukan untuk melatih model ML.

Sebagai bagian dari pendekatan ini, teknik pemilihan subset data tingkat lanjut telah muncul untuk mempercepat pelatihan dengan mengurangi kuantitas data masukan. Proses ini didasarkan pada pemilihan sejumlah titik tertentu secara otomatis yang mendekati distribusi kumpulan data yang lebih besar dan menggunakannya untuk pelatihan. Menerapkan jenis teknik ini mengurangi jumlah waktu yang diperlukan untuk melatih model ML.

Dalam posting ini, kami menjelaskan penerapan prinsip AI data-sentris dengan Kebenaran Dasar Amazon SageMaker, bagaimana menerapkan teknik pemilihan subset data menggunakan TALI repositori aktif Amazon SageMaker untuk mengurangi jumlah data yang diperlukan untuk melatih model awal, dan cara menjalankan eksperimen menggunakan pendekatan ini Eksperimen Amazon SageMaker.

Pendekatan data-sentris untuk pembelajaran mesin

Sebelum mendalami teknik data-sentris yang lebih canggih seperti pemilihan subset data, Anda dapat menyempurnakan kumpulan data dengan berbagai cara dengan menerapkan serangkaian prinsip dasar pada proses pelabelan data. Untuk itu, Ground Truth mendukung berbagai mekanisme untuk meningkatkan konsistensi label dan kualitas data.

Konsistensi label penting untuk meningkatkan kinerja model. Tanpa itu, model tidak dapat menghasilkan batas keputusan yang memisahkan setiap titik milik kelas yang berbeda. Salah satu cara untuk memastikan konsistensi adalah dengan menggunakan konsolidasi anotasi di Ground Truth, yang memungkinkan Anda menyajikan contoh tertentu ke beberapa pemberi label dan menggunakan label gabungan yang disediakan sebagai kebenaran dasar untuk contoh tersebut. Perbedaan dalam label diukur dengan skor kepercayaan yang dihasilkan oleh Ground Truth. Jika ada perbedaan dalam label, Anda harus melihat apakah ada ketidakjelasan dalam petunjuk pelabelan yang diberikan kepada pemberi label Anda yang dapat dihapus. Pendekatan ini mengurangi efek bias dari masing-masing pemberi label, yang penting untuk membuat label lebih konsisten.

Cara lain untuk meningkatkan kinerja model dengan berfokus pada data melibatkan pengembangan metode untuk menganalisis kesalahan dalam label saat muncul untuk mengidentifikasi subkumpulan data yang paling penting untuk diperbaiki. Anda dapat melakukan ini untuk kumpulan data pelatihan Anda dengan kombinasi upaya manual yang melibatkan menyelami contoh berlabel dan menggunakan amazoncloudwatch log dan metrik yang dihasilkan oleh pekerjaan pelabelan Ground Truth. Penting juga untuk melihat error yang dibuat model pada waktu inferensi untuk mendorong iterasi pelabelan berikutnya untuk set data kita. Selain mekanisme tersebut, Memperjelas Amazon SageMaker memungkinkan ilmuwan data dan insinyur ML menjalankan algoritme seperti KernelSHAP untuk memungkinkan mereka menafsirkan prediksi yang dibuat oleh model mereka. Seperti yang disebutkan, penjelasan yang lebih dalam tentang prediksi model dapat dikaitkan kembali ke proses pelabelan awal untuk memperbaikinya.

Terakhir, Anda dapat mempertimbangkan untuk membuang contoh yang berisik atau berlebihan. Melakukan hal ini memungkinkan Anda mengurangi waktu pelatihan dengan menghapus contoh yang tidak berkontribusi untuk meningkatkan performa model. Namun, mengidentifikasi subset berguna dari dataset yang diberikan secara manual sulit dan memakan waktu. Menerapkan teknik pemilihan subset data yang dijelaskan dalam posting ini memungkinkan Anda mengotomatiskan proses ini di sepanjang kerangka kerja yang sudah ada.

Gunakan kasing

Seperti yang telah disebutkan, AI yang berpusat pada data berfokus pada peningkatan input model daripada arsitektur model itu sendiri. Setelah menerapkan prinsip-prinsip ini selama pelabelan data atau rekayasa fitur, Anda dapat terus berfokus pada input model dengan menerapkan pemilihan subkumpulan data pada waktu pelatihan.

Untuk posting ini, kami menerapkan Pemilihan Subset Data Berbasis Generalisasi untuk Pembelajaran yang Efisien dan Kuat (KILAU), yang merupakan salah satu dari banyak teknik pemilihan subset data yang diimplementasikan dalam repositori CORDS, hingga algoritme pelatihan a ResNet-18 model untuk meminimalkan waktu yang diperlukan untuk melatih model untuk mengklasifikasikan CIFAR-10 gambar-gambar. Berikut adalah beberapa contoh gambar dengan label masing-masing yang diambil dari kumpulan data CIFAR-10.

Kumpulan Data CIFAR

ResNet-18 sering digunakan untuk tugas klasifikasi. Ini adalah jaringan saraf konvolusional sedalam 18 lapis. Dataset CIFAR-10 sering digunakan untuk mengevaluasi validitas berbagai teknik dan pendekatan dalam ML. Ini terdiri dari 60,000 gambar berwarna berukuran 32ร—32 yang diberi label di 10 kelas.

Di bagian berikut, kami akan menunjukkan bagaimana GLISTER dapat membantu Anda menjawab beberapa pertanyaan berikut:

Berapa persentase dari set data tertentu yang dapat kita gunakan dan tetap mencapai performa model yang baik selama pelatihan?

Menerapkan GLISTER ke algoritme pelatihan Anda akan memperkenalkan pecahan sebagai hyperparameter dalam algoritme pelatihan Anda. Ini mewakili persentase dari kumpulan data tertentu yang ingin Anda gunakan. Seperti halnya hyperparameter apa pun, menemukan nilai yang menghasilkan hasil terbaik untuk model dan data Anda memerlukan penyetelan. Kami tidak membahas secara mendalam penyetelan hyperparameter di pos ini. Untuk informasi lebih lanjut, lihat Optimalkan hyperparameter dengan Amazon SageMaker Automatic Model Tuning.

Kami menjalankan beberapa pengujian menggunakan Eksperimen SageMaker untuk mengukur dampak pendekatan. Hasil akan bervariasi bergantung pada set data awal, jadi penting untuk menguji pendekatan tersebut terhadap data kami pada ukuran subset yang berbeda.

Meskipun kami membahas penggunaan GLISTER pada gambar, Anda juga dapat menerapkannya pada algoritme pelatihan yang bekerja dengan data terstruktur atau tabular.

Pemilihan subset data

Tujuan pemilihan subset data adalah untuk mempercepat proses pelatihan sambil meminimalkan efek pada akurasi dan meningkatkan ketahanan model. Lebih khusus lagi, GLISTER-ONLINE memilih subset saat model belajar dengan mencoba memaksimalkan kemungkinan log dari subset data pelatihan tersebut pada set validasi yang Anda tentukan. Mengoptimalkan pemilihan subset data dengan cara ini mengurangi kebisingan dan ketidakseimbangan kelas yang sering ditemukan dalam kumpulan data dunia nyata dan memungkinkan strategi pemilihan subset untuk beradaptasi saat model belajar.

Awal kertas GLISTER menjelaskan trade-off kecepatan/akurasi pada berbagai ukuran subset data sebagai berikut menggunakan a LeNet model:

Ukuran subset Percepatan Ketepatan
10% 6x -3%
30% 2.5x -1.20%
50% 1.5x -0.20%

Untuk melatih model, kami menjalankan a Pekerjaan pelatihan SageMaker menggunakan skrip pelatihan khusus. Kami juga telah mengunggah dataset gambar kami ke Layanan Penyimpanan Sederhana Amazon (Amazon S3). Seperti tugas pelatihan SageMaker lainnya, kita perlu menentukan an Estimator obyek. Estimator PyTorch dari sagemaker.pytorch paket memungkinkan kita untuk menjalankan skrip pelatihan kita sendiri dalam wadah PyTorch yang dikelola. Itu inputs variabel diteruskan ke estimator .fit fungsi berisi kamus pelatihan dan validasi dataset lokasi S3.

Grafik train.py skrip dijalankan saat tugas pelatihan diluncurkan. Dalam skrip ini, kami mengimpor model ResNet-18 dari pustaka CORDS dan mengirimkannya sejumlah kelas dalam kumpulan data kami sebagai berikut:

from cords.utils.models import ResNet18 numclasses = 10
model = ResNet18(numclasses)

Kemudian, kami menggunakan gen_dataset fungsi dari CORDS untuk membuat dataset pelatihan, validasi, dan pengujian:

from cords.utils.data.datasets.SL import gen_dataset train_set, validation_set, test_set, numclasses = gen_dataset(
datadir="/opt/ml/input/data/training",
dset_name="cifar10",
feature="dss",
type="image")

Dari setiap kumpulan data, kami membuat pemuat data PyTorch yang setara:

train_loader = torch.utils.data.DataLoader(train_set,
batch_size=batch_size,
shuffle=True) validation_loader = torch.utils.data.DataLoader(validation_set,
batch_size=batch_size,
shuffle=False)

Terakhir, kami menggunakan dataloader ini untuk membuat file GLISTERDataLoader dari perpustakaan CORDS. Ini menggunakan penerapan strategi pemilihan GLISTER-ONLINE, yang menerapkan pemilihan subset saat kami memperbarui model selama pelatihan, seperti yang dibahas sebelumnya dalam posting ini.

Untuk membuat objek, kami melewatkan argumen khusus strategi pemilihan sebagai a DotMap objek bersama dengan train_loader, validation_loader, dan logger:

import logging
from cords.utils.data.dataloader.SL.adaptive import GLISTERDataLoader
from dotmap import DotMap dss_args = # GLISTERDataLoader specific arguments
dss_args = DotMap(dss_args)
dataloader = GLISTERDataLoader(train_loader,
validation_loader,
dss_args,
logger,
batch_size=batch_size,
shuffle=True,
pin_memory=False)

Grafik GLISTERDataLoader sekarang dapat diterapkan sebagai dataloader reguler ke loop pelatihan. Ini akan memilih subset data untuk batch pelatihan berikutnya saat model belajar berdasarkan kerugian model tersebut. Seperti yang ditunjukkan pada tabel sebelumnya, menambahkan strategi pemilihan subset data memungkinkan kita untuk secara signifikan mengurangi waktu pelatihan, bahkan dengan langkah tambahan pemilihan subset data, dengan sedikit kompromi dalam akurasi.

Ilmuwan data dan insinyur ML sering kali perlu mengevaluasi validitas suatu pendekatan dengan membandingkannya dengan beberapa baseline. Kami mendemonstrasikan cara melakukan ini di bagian selanjutnya.

Pelacakan percobaan

Anda dapat menggunakan Eksperimen SageMaker untuk mengukur validitas pendekatan pemilihan subset data. Untuk informasi lebih lanjut, lihat Eksperimen Amazon SageMaker generasi berikutnya โ€“ Atur, lacak, dan bandingkan pelatihan pembelajaran mesin Anda dalam skala besar.

Dalam kasus kami, kami melakukan empat eksperimen: baseline tanpa menerapkan pemilihan subset data, dan tiga lainnya dengan perbedaan fraction parameter, yang mewakili ukuran subset relatif terhadap keseluruhan dataset. Secara alami, menggunakan yang lebih kecil fraction parameter harus menghasilkan waktu pelatihan yang berkurang, tetapi juga akurasi model yang lebih rendah.

Untuk postingan ini, setiap latihan yang dijalankan direpresentasikan sebagai a Run dalam Eksperimen SageMaker. Proses yang terkait dengan eksperimen kami semuanya dikelompokkan dalam satu Experiment obyek. Proses dapat dilampirkan ke eksperimen umum saat membuat Estimator dengan SDK-nya. Lihat kode berikut:

from sagemaker.utils import unique_name_from_base
from sagemaker.experiments.run import Run, load_run experiment_name = unique_name_from_base("data-centric-experiment")
with Run(
experiment_name=experiment_name,
sagemaker_session=sess
) as run:
estimator = PyTorch('train.py',
source_dir="source",
role=role,
instance_type=instance_type,
instance_count=1,
framework_version=framework_version,
py_version='py3',
env={ 'SAGEMAKER_REQUIREMENTS': 'requirements.txt',
})
estimator.fit(inputs)

Sebagai bagian dari skrip pelatihan khusus, Anda dapat mengumpulkan metrik yang dijalankan dengan menggunakan load_run:

from sagemaker.experiments.run import load_run
from sagemaker.session import Session if __name__ == "__main__":
args = parse_args()
session = Session(boto3.session.Session(region_name=args.region))
with load_run(sagemaker_session=session) as run:
train(args, run)

Kemudian, dengan menggunakan objek run yang dikembalikan oleh operasi sebelumnya, Anda dapat mengumpulkan poin data per zaman dengan menelepon run.log_metric(name, value, step) dan memberikan nama metrik, nilai, dan nomor zaman saat ini.

Untuk mengukur validitas pendekatan kami, kami mengumpulkan metrik yang sesuai dengan kehilangan pelatihan, akurasi pelatihan, kehilangan validasi, akurasi validasi, dan waktu untuk menyelesaikan zaman. Kemudian, setelah menjalankan pekerjaan pelatihan, kita bisa meninjau hasil percobaan kami in Studio Amazon SageMaker atau melalui SDK Eksperimen SageMaker.

Untuk melihat akurasi validasi dalam Studio, pilih Menganalisa pada percobaan Berjalan .

Daftar Eksperimen

Tambahkan bagan, atur properti bagan, dan pilih membuat. Seperti yang ditunjukkan pada tangkapan layar berikut, Anda akan melihat sebidang akurasi validasi pada setiap zaman untuk semua proses.

Bagan Eksperimen

SDK juga memungkinkan Anda mengambil informasi terkait eksperimen sebagai kerangka data Pandas:

from sagemaker.analytics import ExperimentAnalytics trial_component_analytics = ExperimentAnalytics(
sagemaker_session=sess.sagemaker_client,
experiment_name=experiment_name
)
analytic_table = trial_component_analytics.dataframe()

Opsional, pekerjaan pelatihan dapat diurutkan. Misalnya, kita bisa menambahkan "metrics.validation:accuracy.max" sebagai nilai dari sort_by parameter diteruskan ke ExperimentAnalytics untuk mengembalikan hasil yang dipesan oleh akurasi validasi.

Seperti yang diharapkan, eksperimen kami menunjukkan bahwa penerapan GLISTER dan pemilihan subset data ke algoritme pelatihan mengurangi waktu pelatihan. Saat menjalankan algoritme pelatihan dasar kami, waktu rata-rata untuk menyelesaikan satu zaman berkisar sekitar 27 detik. Sebaliknya, menerapkan GLISTER untuk memilih subset yang setara dengan 50%, 30%, dan 10% dari keseluruhan dataset menghasilkan waktu untuk menyelesaikan epoch masing-masing sekitar 13, 8.5, dan 2.75 detik, pada instans ml.p3.2xlarge .

Kami juga mengamati dampak yang relatif minimal pada akurasi validasi, terutama saat menggunakan subkumpulan data 50%. Setelah pelatihan selama 100 epoch, baseline menghasilkan akurasi validasi sebesar 92.72%. Sebaliknya, menerapkan GLISTER untuk memilih subset yang setara dengan 50%, 30%, dan 10% dari keseluruhan dataset menghasilkan akurasi validasi masing-masing sebesar 91.42%, 89.76%, dan 82.82%.

Kesimpulan

Eksperimen SageMaker Ground Truth dan SageMaker memungkinkan pendekatan yang berpusat pada data untuk pembelajaran mesin dengan memungkinkan ilmuwan data dan insinyur ML menghasilkan kumpulan data yang lebih konsisten dan melacak dampak dari teknik yang lebih canggih saat mereka menerapkannya dalam fase pembangunan model. Menerapkan pendekatan data-centric untuk ML memungkinkan Anda mengurangi jumlah data yang diperlukan oleh model Anda dan meningkatkan ketahanannya.

Cobalah, dan beri tahu kami pendapat Anda di komentar.


Tentang penulis

Gunakan pendekatan data-sentris untuk meminimalkan jumlah data yang diperlukan untuk melatih model Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Nicolas Bernier adalah Arsitek Solusi, bagian dari tim Sektor Publik Kanada di AWS. Dia saat ini sedang menyelesaikan gelar master dengan area penelitian di Deep Learning dan memegang lima sertifikasi AWS, termasuk ML Specialty Certification. Nicolas bersemangat membantu pelanggan memperdalam pengetahuan mereka tentang AWS dengan bekerja bersama mereka untuk menerjemahkan tantangan bisnis mereka menjadi solusi teknis.

Gunakan pendekatan data-sentris untuk meminimalkan jumlah data yang diperlukan untuk melatih model Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Givanildo Alves adalah Arsitek Prototyping dengan tim Prototyping dan Cloud Engineering di Amazon Web Services, membantu klien berinovasi dan mempercepat dengan menunjukkan seni kemungkinan di AWS, setelah menerapkan beberapa prototipe seputar kecerdasan buatan. Dia memiliki karir panjang dalam rekayasa perangkat lunak dan sebelumnya bekerja sebagai Insinyur Pengembangan Perangkat Lunak di Amazon.com.br.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS