

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

# Jalankan kode lokal Anda sebagai pekerjaan SageMaker pelatihan
<a name="train-remote-decorator"></a>

Anda dapat menjalankan kode Python machine learning (ML) lokal Anda sebagai pekerjaan pelatihan SageMaker Amazon single-node yang besar atau sebagai beberapa pekerjaan paralel. Anda dapat melakukan ini dengan membuat anotasi kode Anda dengan dekorator @remote, seperti yang ditunjukkan pada contoh kode berikut. [Pelatihan terdistribusi](https://docs.aws.amazon.com/sagemaker/latest/dg/distributed-training.html) (di beberapa instance) tidak didukung dengan fungsi jarak jauh.

```
@remote(**settings)
def divide(x, y):
    return x / y
```

SDK SageMaker Python akan secara otomatis menerjemahkan lingkungan ruang kerja Anda yang ada dan kode pemrosesan data serta kumpulan data terkait ke dalam pekerjaan SageMaker pelatihan yang berjalan di platform pelatihan. SageMaker Anda juga dapat mengaktifkan fitur cache persisten, yang selanjutnya akan mengurangi latensi awal pekerjaan dengan menyimpan paket ketergantungan yang diunduh sebelumnya. Pengurangan latensi pekerjaan ini lebih besar daripada pengurangan latensi dari penggunaan kolam hangat yang dikelola SageMaker AI saja. Untuk informasi selengkapnya, lihat [Menggunakan cache persisten](train-warm-pools.md#train-warm-pools-persistent-cache).

**catatan**  
Pekerjaan pelatihan terdistribusi tidak didukung oleh fungsi jarak jauh.

Bagian berikut menunjukkan cara membuat anotasi kode HTML lokal Anda dengan dekorator @remote dan menyesuaikan pengalaman Anda untuk kasus penggunaan Anda. Ini termasuk menyesuaikan lingkungan Anda dan mengintegrasikan dengan SageMaker Eksperimen.

**Topics**
+ [Siapkan lingkungan Anda](#train-remote-decorator-env)
+ [Memanggil fungsi jarak jauh](train-remote-decorator-invocation.md)
+ [File konfigurasi](train-remote-decorator-config.md)
+ [Sesuaikan lingkungan runtime Anda](train-remote-decorator-customize.md)
+ [Kompatibilitas gambar kontainer](train-remote-decorator-container.md)
+ [Mencatat parameter dan metrik dengan Amazon Experiments SageMaker](train-remote-decorator-experiments.md)
+ [Menggunakan kode modular dengan dekorator @remote](train-remote-decorator-modular.md)
+ [Repositori pribadi untuk dependensi runtime](train-remote-decorator-private.md)
+ [Notebook contoh](train-remote-decorator-examples.md)

## Siapkan lingkungan Anda
<a name="train-remote-decorator-env"></a>

Pilih salah satu dari tiga opsi berikut untuk mengatur lingkungan Anda.

### Jalankan kode Anda dari Amazon SageMaker Studio Classic
<a name="train-remote-decorator-env-studio"></a>

Anda dapat membuat anotasi dan menjalankan kode HTML lokal Anda dari SageMaker Studio Classic dengan membuat SageMaker Notebook dan melampirkan gambar apa pun yang tersedia pada gambar SageMaker Studio Classic. Petunjuk berikut membantu Anda membuat SageMaker Notebook, menginstal SageMaker Python SDK, dan membubuhi keterangan kode Anda dengan dekorator.

1. Buat SageMaker Notebook dan lampirkan gambar di SageMaker Studio Classic sebagai berikut:

   1. Ikuti petunjuk di [Luncurkan Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html) di *Panduan Pengembang Amazon SageMaker AI*.

   1. Pilih **Studio** dari panel navigasi kiri. Ini membuka jendela baru.

   1. Di kotak dialog **Memulai**, pilih profil pengguna dari panah bawah. Ini membuka jendela baru.

   1. Pilih **Open Studio Classic**.

   1. Pilih **Buka Peluncur** dari area kerja utama. Ini membuka halaman baru.

   1. Pilih **Buat buku catatan** dari area kerja utama.

   1. Pilih **Base Python 3.0** dari panah bawah di sebelah **Gambar** di kotak dialog **Ubah lingkungan**. 

      Dekorator @remote secara otomatis mendeteksi gambar yang dilampirkan ke notebook SageMaker Studio Classic dan menggunakannya untuk menjalankan tugas SageMaker pelatihan. Jika `image_uri` ditentukan baik sebagai argumen di dekorator atau dalam file konfigurasi, maka nilai yang ditentukan dalam `image_uri` akan digunakan sebagai pengganti gambar yang terdeteksi.

      Untuk informasi selengkapnya tentang cara membuat buku catatan di SageMaker Studio Classic, lihat bagian **Membuat Buku Catatan dari Menu File** di [Membuat atau Membuka Notebook Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/notebooks-create-open.html#notebooks-create-file-menu).

      Untuk daftar gambar yang tersedia, lihat Gambar [Docker yang didukung](https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-decorator-container.html).

1. Instal SDK SageMaker Python.

   Untuk membuat anotasi kode Anda dengan fungsi @remote di dalam Notebook SageMaker Studio Classic, Anda harus menginstal SageMaker Python SDK. Instal SageMaker Python SDK, seperti yang ditunjukkan pada contoh kode berikut.

   ```
   !pip install sagemaker
   ```

1. Gunakan dekorator @remote untuk menjalankan fungsi dalam pekerjaan SageMaker pelatihan.

   Untuk menjalankan kode HTML lokal Anda, pertama-tama buat file dependensi untuk menginstruksikan SageMaker AI di mana menemukan kode lokal Anda. Untuk melakukannya, ikuti langkah-langkah berikut:

   1. Dari area kerja utama SageMaker Studio Classic Launcher, di **Utilitas dan file**, pilih **File teks**. Ini membuka tab baru dengan file teks yang disebut `untitled.txt.` 

      Untuk informasi selengkapnya tentang antarmuka pengguna (UI) SageMaker Studio Classic, lihat [Ikhtisar UI Amazon SageMaker Studio Classic](https://docs.aws.amazon.com//sagemaker/latest/dg/studio-ui.html).

   1. Ganti nama `untitled.txt ` ke `requirements.txt`.

   1. Tambahkan semua dependensi yang diperlukan untuk kode bersama dengan perpustakaan SageMaker AI ke. `requirements.txt` 

      Contoh kode minimal `requirements.txt` untuk `divide` fungsi contoh disediakan di bagian berikut, sebagai berikut.

      ```
      sagemaker
      ```

   1. Jalankan kode Anda dengan dekorator jarak jauh dengan meneruskan file dependensi, sebagai berikut.

      ```
      from sagemaker.remote_function import remote
      
      @remote(instance_type="ml.m5.xlarge", dependencies='./requirements.txt')
      def divide(x, y):
          return x / y
      
      divide(2, 3.0)
      ```

      Untuk contoh kode tambahan, lihat contoh notebook [quick\$1start.ipynb](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-remote-function/quick_start/quick_start.ipynb).

      **Jika Anda sudah menjalankan notebook SageMaker Studio Classic, dan Anda menginstal Python SDK seperti yang diinstruksikan dalam 2. Instal SageMaker Python SDK**, Anda harus me-restart kernel Anda. Untuk informasi selengkapnya, lihat [Menggunakan Toolbar Notebook SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/notebooks-menu.html) di *Panduan Pengembang Amazon SageMaker AI*.

### Jalankan kode Anda dari SageMaker notebook Amazon
<a name="train-remote-decorator-env-notebook"></a>

Anda dapat membuat anotasi kode HTML lokal Anda dari instance SageMaker notebook. Petunjuk berikut menunjukkan cara membuat instance notebook dengan kernel kustom, menginstal SageMaker Python SDK, dan membubuhi keterangan kode Anda dengan dekorator.

1. Buat instance notebook dengan `conda` kernel kustom.

   Anda dapat membuat anotasi kode HTML lokal Anda dengan dekorator @remote untuk digunakan di dalam pekerjaan pelatihan. SageMaker Pertama, Anda harus membuat dan menyesuaikan instance SageMaker notebook untuk menggunakan kernel dengan Python versi 3.7 atau lebih tinggi, hingga 3.10.x. Untuk melakukannya, ikuti langkah-langkah berikut:

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

   1. Di panel navigasi kiri, pilih **Notebook** untuk memperluas opsinya.

   1. Pilih **Instans Notebook** dari opsi yang diperluas.

   1. Pilih tombol **Create Notebook Instance**. Ini membuka halaman baru.

   1. Untuk **nama instance Notebook**, masukkan nama dengan maksimal 63 karakter dan tanpa spasi. **Karakter yang valid: **A-Z**, **a-z**, **0-9**, dan.** **:** **\$1** **=** **@** **\$1****%** **-** (tanda hubung).

   1. Di kotak dialog **Pengaturan instance Notebook**, perluas panah kanan di samping **Konfigurasi Tambahan**.

   1. Di bawah **Konfigurasi Siklus Hidup - opsional**, perluas panah bawah dan pilih **Buat konfigurasi siklus hidup baru**. Ini membuka kotak dialog baru.

   1. Di bawah **Nama**, masukkan nama untuk pengaturan konfigurasi Anda.

   1. Di kotak dialog **Skrip**, di tab **Mulai buku catatan**, ganti isi kotak teks yang ada dengan skrip berikut.

      ```
      #!/bin/bash
      
      set -e
      
      sudo -u ec2-user -i <<'EOF'
      unset SUDO_UID
      WORKING_DIR=/home/ec2-user/SageMaker/custom-miniconda/
      source "$WORKING_DIR/miniconda/bin/activate"
      for env in $WORKING_DIR/miniconda/envs/*; do
          BASENAME=$(basename "$env")
          source activate "$BASENAME"
          python -m ipykernel install --user --name "$BASENAME" --display-name "Custom ($BASENAME)"
      done
      EOF
      
      echo "Restarting the Jupyter server.."
      # restart command is dependent on current running Amazon Linux and JupyterLab
      CURR_VERSION_AL=$(cat /etc/system-release)
      CURR_VERSION_JS=$(jupyter --version)
      
      if [[ $CURR_VERSION_JS == *$"jupyter_core     : 4.9.1"* ]] && [[ $CURR_VERSION_AL == *$" release 2018"* ]]; then
       sudo initctl restart jupyter-server --no-wait
      else
       sudo systemctl --no-block restart jupyter-server.service
      fi
      ```

   1. Di kotak dialog **Skrip**, di tab **Buat buku catatan**, ganti isi kotak teks yang ada dengan skrip berikut.

      ```
      #!/bin/bash
      
      set -e
      
      sudo -u ec2-user -i <<'EOF'
      unset SUDO_UID
      # Install a separate conda installation via Miniconda
      WORKING_DIR=/home/ec2-user/SageMaker/custom-miniconda
      mkdir -p "$WORKING_DIR"
      wget https://repo.anaconda.com/miniconda/Miniconda3-4.6.14-Linux-x86_64.sh -O "$WORKING_DIR/miniconda.sh"
      bash "$WORKING_DIR/miniconda.sh" -b -u -p "$WORKING_DIR/miniconda" 
      rm -rf "$WORKING_DIR/miniconda.sh"
      # Create a custom conda environment
      source "$WORKING_DIR/miniconda/bin/activate"
      KERNEL_NAME="custom_python310"
      PYTHON="3.10"
      conda create --yes --name "$KERNEL_NAME" python="$PYTHON" pip
      conda activate "$KERNEL_NAME"
      pip install --quiet ipykernel
      # Customize these lines as necessary to install the required packages
      EOF
      ```

   1. Pilih tombol **Buat konfigurasi** di kanan bawah jendela.

   1. Pilih tombol **Create notebook instance** di kanan bawah jendela.

   1. Tunggu **Status** instance notebook berubah dari **Pending** ke **InService**.

1. Buat notebook Jupyter di instance notebook.

   Petunjuk berikut menunjukkan cara membuat notebook Jupyter menggunakan Python 3.10 di instance yang baru Anda buat. SageMaker 

   1. Setelah **status** instance notebook dari langkah sebelumnya adalah **InService**, lakukan hal berikut: 

      1. **Pilih **Buka Jupyter** di bawah **Tindakan** di baris yang berisi Nama instance notebook yang baru dibuat.** Ini membuka server Jupyter baru.

   1. Di server Jupyter, pilih **Baru** dari menu kanan atas. 

   1. Dari panah bawah, pilih **conda\$1custom\$1python310**. Ini menciptakan notebook Jupyter baru yang menggunakan kernel Python 3.10. Notebook Jupyter baru ini sekarang dapat digunakan mirip dengan notebook Jupyter lokal. 

1. Instal SDK SageMaker Python.

   Setelah lingkungan virtual Anda berjalan, instal SDK SageMaker Python dengan menggunakan contoh kode berikut.

   ```
   !pip install sagemaker
   ```

1. Gunakan dekorator @remote untuk menjalankan fungsi dalam pekerjaan SageMaker pelatihan.

   Saat Anda membuat anotasi kode HTML lokal Anda dengan dekorator @remote di dalam SageMaker buku catatan, SageMaker pelatihan akan secara otomatis menafsirkan fungsi kode Anda dan menjalankannya sebagai pekerjaan pelatihan. SageMaker Siapkan buku catatan Anda dengan melakukan hal berikut:

   1. Pilih nama kernel di menu notebook dari instance SageMaker notebook yang Anda buat di langkah 1, **Buat instance SageMaker Notebook dengan kernel kustom**.

      Untuk informasi selengkapnya, lihat [Mengubah Gambar atau Kernel](https://docs.aws.amazon.com/sagemaker/latest/dg/notebooks-run-and-manage-change-image.html). 

   1. Dari panah bawah, pilih `conda` kernel kustom yang menggunakan versi Python yang 3.7 atau lebih tinggi. 

      Sebagai contoh, memilih `conda_custom_python310` memilih kernel untuk Python 3.10.

   1. Pilih **Pilih**.

   1. Tunggu status kernel ditampilkan sebagai idle, yang menunjukkan bahwa kernel telah dimulai.

   1. Di Jupyter Server Home, pilih **New** dari menu kanan atas.

   1. Di sebelah panah bawah, pilih **File teks**. Ini membuat file teks baru yang disebut `untitled.txt.`

   1. Ganti nama `untitled.txt` menjadi `requirements.txt` dan tambahkan dependensi yang diperlukan untuk kode bersama. `sagemaker`

   1. Jalankan kode Anda dengan dekorator jarak jauh dengan meneruskan file dependensi seperti yang ditunjukkan di bawah ini.

      ```
      from sagemaker.remote_function import remote
      
      @remote(instance_type="ml.m5.xlarge", dependencies='./requirements.txt')
      def divide(x, y):
          return x / y
      
      divide(2, 3.0)
      ```

      Lihat contoh notebook [quick\$1start.ipnyb](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-remote-function/quick_start/quick_start.ipynb) untuk contoh kode tambahan.

### Jalankan kode Anda dari dalam IDE lokal Anda
<a name="train-remote-decorator-env-ide"></a>

Anda dapat membuat anotasi kode HTML lokal Anda dengan dekorator @remote di dalam IDE lokal pilihan Anda. Langkah-langkah berikut menunjukkan prasyarat yang diperlukan, cara menginstal SDK Python, dan cara membuat anotasi kode Anda dengan dekorator @remote.

1. Instal prasyarat dengan menyiapkan AWS Command Line Interface (AWS CLI) dan membuat peran, sebagai berikut:
   + Onboard ke domain SageMaker AI mengikuti instruksi di bagian **AWS CLI Prasyarat [Mengatur](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-set-up.html#gs-cli-prereq) Prasyarat** Amazon AI. SageMaker 
   + Buat peran IAM mengikuti bagian **Create execution role** dari [SageMaker AI Roles](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html).

1. Buat lingkungan virtual dengan menggunakan salah satu PyCharm atau `conda` dan menggunakan Python versi 3.7 atau lebih tinggi, hingga 3.10.x.
   + Siapkan lingkungan virtual menggunakan PyCharm sebagai berikut:

     1. Pilih **File** dari menu utama.

     1. Pilih **Proyek Baru**.

     1. Pilih **Conda** dari panah bawah di bawah **Lingkungan baru menggunakan**.

     1. Di bidang untuk **versi Python** gunakan panah bawah untuk memilih versi Python yang 3.7 atau lebih tinggi. Anda dapat naik ke 3.10.x dari daftar.  
![\[\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/training-pycharm-ide.png)
   + Jika Anda telah menginstal Anaconda, Anda dapat mengatur lingkungan virtual menggunakan`conda`, sebagai berikut:
     + Buka antarmuka terminal prompt Anaconda.
     + Buat dan aktifkan `conda` lingkungan baru menggunakan versi Python 3.7 atau lebih tinggi, hingga 3.10x. Contoh kode berikut menunjukkan cara membuat `conda` lingkungan menggunakan Python versi 3.10.

       ```
       conda create -n sagemaker_jobs_quick_start python=3.10 pip
       conda activate sagemaker_jobs_quick_start
       ```

1. Instal SDK SageMaker Python.

   Untuk mengemas kode Anda dari IDE pilihan Anda, Anda harus memiliki lingkungan virtual yang diatur menggunakan Python 3.7 atau lebih tinggi, hingga 3.10x. Anda juga memerlukan gambar kontainer yang kompatibel. Instal SDK SageMaker Python menggunakan contoh kode berikut.

   ```
   pip install sagemaker
   ```

1. Bungkus kode Anda di dalam dekorator @remote. SageMaker Python SDK akan secara otomatis menafsirkan fungsi kode Anda dan menjalankannya sebagai pekerjaan pelatihan. SageMaker Contoh kode berikut menunjukkan cara mengimpor pustaka yang diperlukan, menyiapkan SageMaker sesi, dan membuat anotasi fungsi dengan dekorator @remote.

   Anda dapat menjalankan kode Anda dengan menyediakan dependensi yang dibutuhkan secara langsung, atau dengan menggunakan dependensi dari lingkungan aktif. `conda`
   + Untuk memberikan dependensi secara langsung, lakukan hal berikut:
     + Buat `requirements.txt` file di direktori kerja tempat kode berada.
     + Tambahkan semua dependensi yang diperlukan untuk kode bersama dengan pustaka. SageMaker Bagian berikut memberikan contoh kode minimal `requirements.txt` untuk `divide` fungsi contoh.

       ```
       sagemaker
       ```
     + Jalankan kode Anda dengan dekorator @remote dengan meneruskan file dependensi. Dalam contoh kode berikut, ganti `The IAM role name` dengan ARN peran AWS Identity and Access Management (IAM) yang SageMaker ingin Anda gunakan untuk menjalankan pekerjaan Anda.

       ```
       import boto3
       import sagemaker
       from sagemaker.remote_function import remote
       
       sm_session = sagemaker.Session(boto_session=boto3.session.Session(region_name="us-west-2"))
       settings = dict(
           sagemaker_session=sm_session,
           role=<The IAM role name>,
           instance_type="ml.m5.xlarge",
           dependencies='./requirements.txt'
       )
       
       @remote(**settings)
       def divide(x, y):
           return x / y
       
       
       if __name__ == "__main__":
           print(divide(2, 3.0))
       ```
   + Untuk menggunakan dependensi dari `conda` lingkungan aktif, gunakan nilai `auto_capture` untuk `dependencies` parameter, seperti yang ditunjukkan pada berikut ini.

     ```
     import boto3
     import sagemaker
     from sagemaker.remote_function import remote
     
     sm_session = sagemaker.Session(boto_session=boto3.session.Session(region_name="us-west-2"))
     settings = dict(
         sagemaker_session=sm_session,
         role=<The IAM role name>,
         instance_type="ml.m5.xlarge",
         dependencies="auto_capture"
     )
     
     @remote(**settings)
     def divide(x, y):
         return x / y
     
     
     if __name__ == "__main__":
         print(divide(2, 3.0))
     ```
**catatan**  
Anda juga dapat menerapkan kode sebelumnya di dalam notebook Jupyter. PyCharm Edisi Profesional mendukung Jupyter secara asli. Untuk panduan selengkapnya, lihat [Dukungan notebook Jupyter](https://www.jetbrains.com/help/pycharm/ipython-notebook-support.html) dalam dokumentasi PyCharm.