

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Gunakan Pelatihan Inkremental di Amazon AI SageMaker
<a name="incremental-training"></a>

Seiring waktu, Anda mungkin menemukan bahwa model menghasilkan inferensi yang tidak sebagus di masa lalu. Dengan pelatihan tambahan, Anda dapat menggunakan artefak dari model yang ada dan menggunakan dataset yang diperluas untuk melatih model baru. Pelatihan tambahan menghemat waktu dan sumber daya.

Gunakan pelatihan tambahan untuk:
+ Latih model baru menggunakan dataset yang diperluas yang berisi pola mendasar yang tidak diperhitungkan dalam pelatihan sebelumnya dan yang mengakibatkan kinerja model yang buruk.
+ Gunakan artefak model atau sebagian artefak model dari model populer yang tersedia untuk umum dalam pekerjaan pelatihan. Anda tidak perlu melatih model baru dari awal.
+ Lanjutkan pekerjaan pelatihan yang dihentikan.
+ Latih beberapa varian model, baik dengan pengaturan hyperparameter yang berbeda atau menggunakan kumpulan data yang berbeda.

Untuk informasi lebih lanjut tentang pekerjaan pelatihan, lihat[Latih Model dengan Amazon SageMaker](how-it-works-training.md).

Anda dapat berlatih secara bertahap menggunakan konsol SageMaker AI atau [ Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable).

**penting**  
Hanya tiga algoritma bawaan yang saat ini mendukung pelatihan tambahan:[Deteksi Objek - MxNet](object-detection.md),[Klasifikasi Gambar - MXNet](image-classification.md), dan[Algoritma Segmentasi Semantik](semantic-segmentation.md).

**Topics**
+ [Lakukan Pelatihan Inkremental (Konsol)](#incremental-training-console)
+ [Lakukan Pelatihan Inkremental (API)](#incremental-training-api)

## Lakukan Pelatihan Inkremental (Konsol)
<a name="incremental-training-console"></a>

Untuk menyelesaikan prosedur ini, Anda perlu:
+ URI bucket Amazon Simple Storage Service (Amazon S3) tempat Anda menyimpan data pelatihan.
+ URI bucket S3 tempat Anda ingin menyimpan output pekerjaan. 
+ Jalur Amazon Elastic Container Registry tempat kode pelatihan disimpan. Untuk informasi selengkapnya, lihat [ Docker Registry Paths dan Contoh Kode](https://docs.aws.amazon.com/sagemaker/latest/dg-ecr-paths/sagemaker-algo-docker-registry-paths).
+ URL bucket S3 tempat Anda menyimpan artefak model yang ingin Anda gunakan dalam pelatihan tambahan. Untuk menemukan URL untuk artefak model, lihat halaman detail pekerjaan pelatihan yang digunakan untuk membuat model. Untuk menemukan halaman detail, di konsol SageMaker AI, pilih ** Inferensi**, pilih ** Model**, lalu pilih model.

Untuk memulai ulang pekerjaan pelatihan yang dihentikan, gunakan URL ke artefak model yang disimpan di halaman detail seperti yang Anda lakukan dengan model atau pekerjaan pelatihan yang diselesaikan.

**Untuk melakukan pelatihan tambahan (konsol)**

1. Buka konsol Amazon SageMaker AI di [ https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Di panel navigasi, pilih Pel ** atihan**, lalu pilih ** Pekerjaan pelatihan**. 

1. Pilih ** Buat pekerjaan pelatihan**.

1. Berikan nama untuk pekerjaan pelatihan. Nama harus unik dalam Wil AWS ayah dalam AWS akun. Nama pekerjaan pelatihan harus memiliki 1 hingga 63 karakter. Karakter yang valid: a-z, A-Z, 0-9, dan.: \+ = @ \_% - (tanda hubung).

1. Pilih algoritma yang ingin Anda gunakan. Untuk informasi tentang algoritma, lihat[Built-in algoritma dan model terlatih di Amazon SageMaker](algos.md). 

1. (Opsional) Untuk konfigurasi Sumber ** daya**, tinggalkan nilai default atau tingkatkan konsumsi sumber daya untuk mengurangi waktu komputasi.

   1. (Opsional) ** Untuk tipe Inst ** ance, pilih jenis instance komputasi ML yang ingin Anda gunakan. Dalam kebanyakan kasus, ** ml.m4. ** xlarge sudah cukup. 

   1. Untuk ** Jumlah contoh**, gunakan default, 1.

   1. (Opsional) Untuk Volume ** tambahan per instans (GB)**, pilih ukuran volume penyimpanan ML yang ingin Anda sediakan. Dalam kebanyakan kasus, Anda dapat menggunakan default, 1. Jika Anda menggunakan dataset besar, gunakan ukuran yang lebih besar.

1. Berikan informasi tentang data input untuk dataset pelatihan.

   1. Untuk nama Sal ** ** uran, tinggalkan default (**train**) atau masukkan nama yang lebih bermakna untuk kumpulan data pelatihan, seperti**expanded-training-dataset**.

   1. Untuk ** InputMode**, pilih ** File**. Untuk pelatihan tambahan, Anda perlu menggunakan mode input file.

   1. Untuk tipe distribusi data ** S3**, pilih ** FullyReplicated**. Hal ini menyebabkan setiap instance komputasi ML menggunakan ulangan penuh dari kumpulan data yang diperluas saat berlatih secara bertahap.

   1. Jika dataset yang diperluas tidak terkompresi, setel tipe ** Kompresi ** ke Tidak Ada**. ** Jika dataset yang diperluas dikompresi menggunakan Gzip, atur ke ** G ** zip.

   1. (Opsional) Jika Anda menggunakan mode input File, biarkan jenis ** Konten ** kosong. Untuk mode input Pipe, tentukan jenis MIME yang sesuai. *Jenis konten * adalah jenis ekstensi surat internet multiguna (MIME) dari data.

   1. Untuk ** Record wrapper**, jika dataset disimpan dalam format Recordio, pilih ** Recordio. ** Jika dataset Anda tidak disimpan sebagai file berformat Recordio, pilih Tidak Ada**. **

   1. Untuk tipe data ** S3**, jika dataset disimpan sebagai satu file, pilih ** S3 ** Prefix. Jika dataset disimpan sebagai beberapa file dalam folder, pilih ** Manifest**.

   1. Untuk lokasi ** S3**, berikan URL ke jalur tempat Anda menyimpan dataset yang diperluas.

   1. Pilih **Selesai**.

1. Untuk menggunakan artefak model dalam pekerjaan pelatihan, Anda perlu menambahkan saluran baru dan memberikan informasi yang diperlukan tentang artefak model.

   1. Untuk Konfigur ** asi data input**, pilih ** Tambah saluran**.

   1. Untuk Nama ** saluran**, masukkan **model** untuk mengidentifikasi saluran ini sebagai sumber artefak model.

   1. Untuk ** InputMode**, pilih ** File**. Artefak model disimpan sebagai file.

   1. Untuk tipe distribusi data ** S3**, pilih ** FullyReplicated**. Ini menunjukkan bahwa setiap instance komputasi ML harus menggunakan semua artefak model untuk pelatihan. 

   1. Untuk tipe ** kompresi**, ** pilih ** Tidak ada karena kita menggunakan model untuk saluran.

   1. Biarkan jenis ** Konten ** kosong. Jenis konten adalah jenis ekstensi surat internet multiguna (MIME) dari data. Untuk artefak model, kami membiarkannya kosong.

   1. Set ** el Record wrapper ** ke ** None ** karena artefak model tidak disimpan dalam format Recordio.

   1. Untuk tipe data ** S3**, jika Anda menggunakan algoritma bawaan atau algoritma yang menyimpan model sebagai satu file, pilih ** S3 ** Prefix. Jika Anda menggunakan algoritma yang menyimpan model sebagai beberapa file, pilih ** Manifest**.

   1. Untuk lokasi ** S3**, berikan URL ke jalur tempat Anda menyimpan artefak model. Biasanya, model disimpan dengan nama`model.tar.gz`. Untuk menemukan URL untuk artefak model, di panel navigasi, pilih ** Inferensi**, lalu pilih ** Model**. Dari daftar model, pilih model untuk menampilkan halaman detailnya. URL untuk artefak model tercantum di bawah wadah ** utama**.

   1. Pilih **Selesai**.

1. Untuk konfigurasi data ** keluaran**, berikan informasi berikut:

   1. Untuk lokasi ** S3**, ketik jalur ke bucket S3 tempat Anda ingin menyimpan data keluaran.

   1. (Opsional) Untuk kunci ** enkripsi**, Anda dapat menambahkan kunci enkripsi AWS Key Management Service (AWS KMS) untuk mengenkripsi data keluaran saat diam. Berikan ID kunci atau Nomor Sumber Daya Amazon (ARN). Untuk informasi selengkapnya, lihat K [ KMS-Managed unci Enkripsi](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).

1. (Opsional) Untuk ** Tag**, tambahkan satu atau beberapa tag ke pekerjaan pelatihan. *Tag * adalah metadata yang dapat Anda tentukan dan tetapkan ke AWS sumber daya. Dalam hal ini, Anda dapat menggunakan tag untuk membantu mengelola pekerjaan pelatihan Anda. Tag terdiri dari kunci dan nilai, yang Anda tentukan. Misalnya, Anda mungkin ingin membuat tag dengan **Project** sebagai kunci dan nilai yang mengacu pada proyek yang terkait dengan pekerjaan pelatihan, seperti**Home value forecasts**.

1. Pilih ** Buat pekerjaan pelatihan**. SageMaker AI menciptakan dan menjalankan pekerjaan pelatihan.

Setelah pekerjaan pelatihan selesai, artefak model yang baru dilatih disimpan di bawah jalur keluaran ** S3 ** yang Anda berikan di ** bidang konfigurasi data ** keluaran. Untuk menerapkan model untuk mendapatkan prediksi, lihat[Terapkan model ke Amazon EC2](ex1-model-deployment.md).

## Lakukan Pelatihan Inkremental (API)
<a name="incremental-training-api"></a>

Contoh ini menunjukkan cara menggunakan API SageMaker AI untuk melatih model menggunakan algoritma klasifikasi gambar SageMaker AI dan Dataset Gambar [ Caltech 256](https://data.caltech.edu/records/nyy15-4j048), kemudian melatih model baru menggunakan yang pertama. Ini menggunakan Amazon S3 untuk sumber input dan output. Silakan lihat buku [ catatan sampel pelatihan tambahan ](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/imageclassification_caltech/Image-classification-incremental-training-highlevel.html) untuk detail lebih lanjut tentang menggunakan pelatihan tambahan.

**catatan**  
Dalam contoh ini kami menggunakan kumpulan data asli dalam pelatihan tambahan, namun Anda dapat menggunakan kumpulan data yang berbeda, seperti yang berisi sampel yang baru ditambahkan. Unggah kumpulan data baru ke S3 dan buat penyesuaian pada `data_channels` variabel yang digunakan untuk melatih model baru.

Dapatkan peran AWS Identity and Access Management (IAM) yang memberikan izin yang diperlukan dan menginisialisasi variabel lingkungan:

```
import sagemaker
from sagemaker.core.helper.session_helper import Session, get_execution_role
from sagemaker.train import ModelTrainer
from sagemaker.train.configs import Compute

role = get_execution_role()
print(role)

sess = Session()

bucket=sess.default_bucket()
print(bucket)
prefix = 'ic-incr-training'
```

Dapatkan gambar pelatihan untuk algoritma klasifikasi gambar:

```
from sagemaker.amazon.amazon_estimator import get_image_uri

training_image = get_image_uri(sess.boto_region_name, 'image-classification', repo_version="latest")
#Display the training image
print (training_image)
```

Unduh kumpulan data pelatihan dan validasi, lalu unggah ke Amazon Simple Storage Service (Amazon S3):

```
import os
import urllib.request
import boto3

# Define a download function
def download(url):
    filename = url.split("/")[-1]
    if not os.path.exists(filename):
        urllib.request.urlretrieve(url, filename)

# Download the caltech-256 training and validation datasets
download('http://data.mxnet.io/data/caltech-256/caltech-256-60-train.rec')
download('http://data.mxnet.io/data/caltech-256/caltech-256-60-val.rec')

# Create four channels: train, validation, train_lst, and validation_lst
s3train = 's3://{}/{}/train/'.format(bucket, prefix)
s3validation = 's3://{}/{}/validation/'.format(bucket, prefix)

# Upload the first files to the train and validation channels
!aws s3 cp caltech-256-60-train.rec $s3train --quiet
!aws s3 cp caltech-256-60-val.rec $s3validation --quiet
```

Tentukan hyperparameter pelatihan:

```
# Define hyperparameters for the estimator
hyperparams = { "num_layers": "18",
                "resize": "32",
                "num_training_samples": "50000",
                "num_classes": "10",
                "image_shape": "3,28,28",
                "mini_batch_size": "128",
                "epochs": "3",
                "learning_rate": "0.1",
                "lr_scheduler_step": "2,3",
                "lr_scheduler_factor": "0.1",
                "augmentation_type": "crop_color",
                "optimizer": "sgd",
                "momentum": "0.9",
                "weight_decay": "0.0001",
                "beta_1": "0.9",
                "beta_2": "0.999",
                "gamma": "0.9",
                "eps": "1e-8",
                "top_k": "5",
                "checkpoint_frequency": "1",
                "use_pretrained_model": "0",
                "model_prefix": "" }
```

Buat objek estimator dan latih model pertama menggunakan kumpulan data pelatihan dan validasi:

```
from sagemaker.train.configs import InputData, StoppingCondition
from sagemaker.core.shapes import OutputDataConfig, Channel, DataSource, S3DataSource

# Train the base ModelTrainer
s3_output_location = 's3://{}/{}/output'.format(bucket, prefix)
ic = ModelTrainer(training_image=training_image,
                                   role=role,
                                   compute=Compute(
                                       instance_count=1,
                                       instance_type='ml.p2.xlarge',
                                       volume_size_in_gb=50,
                                   ),
                                   stopping_condition=StoppingCondition(max_runtime_in_seconds=360000),
                                   training_input_mode='File',
                                   output_data_config=OutputDataConfig(s3_output_path=s3_output_location),
                                   hyperparameters=hyperparams)

train_data = Channel(
    channel_name="train",
    data_source=DataSource(
        s3_data_source=S3DataSource(
            s3_data_type='S3Prefix',
            s3_uri=s3train,
            s3_data_distribution_type='FullyReplicated',
        )
    ),
    content_type='application/x-recordio',
)
validation_data = Channel(
    channel_name="validation",
    data_source=DataSource(
        s3_data_source=S3DataSource(
            s3_data_type='S3Prefix',
            s3_uri=s3validation,
            s3_data_distribution_type='FullyReplicated',
        )
    ),
    content_type='application/x-recordio',
)

data_channels = {'train': train_data, 'validation': validation_data}

ic.train(input_data_config=[train_data, validation_data])
```

Untuk menggunakan model untuk melatih model lain secara bertahap, buat objek estimator baru dan gunakan artefak model (`ic.model_data`, dalam contoh ini) untuk argumen `model_uri` input:

```
# Given the base ModelTrainer, create a new one for incremental training
incr_ic = ModelTrainer(training_image=training_image,
                                        role=role,
                                        compute=Compute(
                                            instance_count=1,
                                            instance_type='ml.p2.xlarge',
                                            volume_size_in_gb=50,
                                        ),
                                        stopping_condition=StoppingCondition(max_runtime_in_seconds=360000),
                                        training_input_mode='File',
                                        output_data_config=OutputDataConfig(s3_output_path=s3_output_location),
                                        hyperparameters=hyperparams,
                                        # Pass the previous model artifacts as an input data channel
                                        input_data_config=[
                                            InputData(channel_name="model", data_source=ic.model_data),
                                        ])
incr_ic.train(input_data_config=[train_data, validation_data])
```

Setelah pekerjaan pelatihan selesai, artefak model yang baru dilatih disimpan di bawah `S3 output path` yang Anda berikan`Output_path`. Untuk menerapkan model untuk mendapatkan prediksi, lihat[Terapkan model ke Amazon EC2](ex1-model-deployment.md).