Amazon SageMaker memberikan lebih dari sekadar kemampuan untuk mengelola notebook di Jupyter, tetapi layanan yang dapat dikonfigurasi yang memungkinkan Anda membuat, melatih, mengoptimalkan, dan menerapkan model pembelajaran mesin. Kesalahpahaman umum, terutama saat memulai dengan SageMaker, adalah Anda memerlukan Instans Notebook SageMaker atau Notebook SageMaker (Studio) untuk menggunakan layanan ini. Faktanya, Anda dapat menjalankan semua layanan langsung dari komputer lokal Anda atau bahkan IDE favorit Anda.
Sebelum melanjutkan, mari pahami cara berinteraksi dengan layanan Amazon SageMaker. Anda memiliki dua API:
SageMaker Python SDK - Python API tingkat tinggi yang mengabstraksi kode untuk membangun, melatih, dan menerapkan model pembelajaran mesin. Secara khusus, ini menyediakan evaluator untuk algoritma kelas satu atau built-in, dan juga mendukung kerangka kerja seperti TensorFlow, MXNET, dll. Dalam kebanyakan kasus, Anda akan menggunakannya untuk berinteraksi dengan tugas pembelajaran mesin interaktif.
AWS SDKAdalah API tingkat rendah yang digunakan untuk berinteraksi dengan semua layanan AWS yang didukung, tidak harus untuk SageMaker. AWS SDK tersedia untuk sebagian besar bahasa populer seperti Java, Javascript, Python (boto), dll. Dalam kebanyakan kasus, Anda akan menggunakan API ini untuk hal-hal seperti membuat sumber daya otomatisasi atau berinteraksi dengan layanan AWS lain yang tidak didukung oleh SageMaker Python SDK.
Mengapa lingkungan lokal?
Biaya adalah hal pertama yang terlintas dalam pikiran, tetapi fleksibilitas menggunakan IDE asli Anda dan kemampuan untuk bekerja secara offline dan menjalankan tugas di cloud AWS saat siap juga penting.
Bagaimana lingkungan lokal bekerja
Anda menulis kode untuk membuat model, tetapi sebagai ganti instance Notebook SageMake atau Notebook SageMaker Studio, Anda melakukannya di komputer lokal di Jupyter atau dari IDE Anda. Kemudian, setelah semuanya siap, Anda akan memulai pelatihan tentang instans SageMaker di AWS. Setelah pelatihan, model akan disimpan di AWS. Anda kemudian dapat menjalankan penerapan atau konversi batch dari mesin lokal Anda.
Menyiapkan lingkungan dengan conda
Direkomendasikan untuk menyiapkan lingkungan virtual Python. Dalam kasus kami, kami akan menggunakan conda untuk mengelola lingkungan virtual, tetapi Anda dapat menggunakan virtualenv. Sekali lagi Amazon SageMaker menggunakan conda untuk mengelola lingkungan dan paket. Diasumsikan bahwa Anda sudah menginstal conda, jika belum, buka di sini .
Buat lingkungan conda baru
conda create -n sagemaker python=3
Kami mengaktifkan dan memverifikasi lingkungan
Menginstal paket yang diperlukan
Untuk menginstal paket, gunakan perintah
conda
atau pip
. Mari pilih opsi dengan conda .
conda install -y pandas numpy matplotlib
Menginstal paket AWS
Instal AWS SDK untuk Python (boto), awscli, dan SageMaker Python SDK. SageMaker Python SDK tidak tersedia sebagai paket conda, jadi kami hanya akan menggunakannya di sini
pip
.
pip install boto3 awscli sagemaker
Jika ini pertama kalinya Anda menggunakan awscli, Anda perlu mengkonfigurasinya. Di sini Anda dapat melihat bagaimana melakukannya.
Versi kedua dari SageMaker Python SDK akan diinstal secara default. Pastikan untuk memeriksa perubahan yang mengganggu di versi kedua SDK.
Memasang Jupyter dan membangun intinya
conda install -c conda-forge jupyterlab
python -m ipykernel install --user --name sagemaker
Kami memverifikasi lingkungan dan memeriksa versinya
Luncurkan Jupyter melalui lab jupyter dan pilih inti yang
sagemaker
kami buat di atas.
Kemudian periksa versi di buku catatan untuk memastikan versi yang Anda inginkan.
Kami membuat dan melatih
Anda sekarang dapat mulai membangun model Anda secara lokal dan mulai belajar di AWS saat Anda siap.
Mengimpor paket
Impor paket yang diperlukan dan tentukan perannya. Perbedaan utamanya di sini adalah Anda perlu menentukan
arn
peran secara langsung , bukan get_execution_role()
. Karena Anda menjalankan semuanya dari mesin lokal Anda dengan kredensial AWS dan bukan instans notebook dengan peran, fitur get_execution_role()
tersebut tidak akan berfungsi.
from sagemaker import image_uris # Use image_uris instead of get_image_uri
from sagemaker import TrainingInput # Use instead of sagemaker.session.s3_input
region = boto3.Session().region_name
container = image_uris.retrieve('image-classification',region)
bucket= 'your-bucket-name'
prefix = 'output'
SageMakerRole='arn:aws:iam::xxxxxxxxxx:role/service-role/AmazonSageMaker-ExecutionRole-20191208T093742'
Buat penilai
Buat evaluator dan setel hyperparameter seperti biasa. Pada contoh di bawah ini, kami melatih pengklasifikasi gambar menggunakan algoritme klasifikasi gambar bawaan. Anda juga menentukan jenis instans Stagemaker dan jumlah instans yang ingin Anda gunakan untuk pelatihan.
s3_output_location = 's3://{}/output'.format(bucket, prefix)
classifier = sagemaker.estimator.Estimator(container,
role=SageMakerRole,
instance_count=1,
instance_type='ml.p2.xlarge',
volume_size = 50,
max_run = 360000,
input_mode= 'File',
output_path=s3_output_location)
classifier.set_hyperparameters(num_layers=152,
use_pretrained_model=0,
image_shape = "3,224,224",
num_classes=2,
mini_batch_size=32,
epochs=30,
learning_rate=0.01,
num_training_samples=963,
precision_dtype='float32')
Saluran pembelajaran
Tentukan saluran pembelajaran seperti yang selalu Anda lakukan, juga tidak ada perubahan dibandingkan dengan cara Anda melakukannya pada salinan buku catatan Anda.
train_data = TrainingInput(s3train, distribution='FullyReplicated',
content_type='application/x-image', s3_data_type='S3Prefix')
validation_data = TrainingInput(s3validation, distribution='FullyReplicated',
content_type='application/x-image', s3_data_type='S3Prefix')
train_data_lst = TrainingInput(s3train_lst, distribution='FullyReplicated',
content_type='application/x-image', s3_data_type='S3Prefix')
validation_data_lst = TrainingInput(s3validation_lst, distribution='FullyReplicated',
content_type='application/x-image', s3_data_type='S3Prefix')
data_channels = {'train': train_data, 'validation': validation_data,
'train_lst': train_data_lst, 'validation_lst': validation_data_lst}
Kami memulai pelatihan
Mulai tugas pelatihan di SageMaker dengan memanggil metode fit, yang akan memulai pelatihan pada instans SageMaker AWS Anda.
classifier.fit(inputs=data_channels, logs=True)
Anda dapat memeriksa status pekerjaan pelatihan dengan daftar-pelatihan-pekerjaan .
Itu saja. Hari ini kami menemukan cara menyiapkan lingkungan SageMaker secara lokal dan membuat model pembelajaran mesin di mesin lokal menggunakan Jupyter. Selain Jupyter, Anda dapat melakukan hal yang sama dari IDE Anda sendiri.
Selamat belajar!