

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 pembelajaran mesin (ML) lokal Anda sebagai pekerjaan SageMaker pelatihan Amazon simpul tunggal 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 ](https://docs.aws.amazon.com/sagemaker/latest/dg/distributed-training.html) terdistribusi (di beberapa instance) tidak didukung dengan fungsi jarak jauh.

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

 SageMaker Python SDK akan secara otomatis menerjemahkan lingkungan ruang kerja Anda yang ada dan kode pemrosesan data terkait dan kumpulan data ke dalam pekerjaan SageMaker pelatihan yang berjalan di platform SageMaker pelatihan. 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 ML 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)
+ [Pencatatan parameter dan metrik dengan Amazon SageMaker Experiments](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 ML lokal Anda dari SageMaker Studio Classic dengan membuat SageMaker Notebook dan melampirkan gambar apa pun yang tersedia di gambar SageMaker Studio Classic. Petunjuk berikut membantu Anda membuat SageMaker Notebook, menginstal SageMaker Python SDK, dan membuat anotasi 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 Get Started, pilih profil pengguna dari panah bawah. Ini membuka jendela baru.

   1. Pilih ** Buka Studio Klasik**.

   1. Pilih ** Open Launcher ** 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 U ** bah lingkungan. 

      Dekorator @remote secara otomatis mendeteksi gambar yang dilampirkan ke notebook SageMaker Studio Classic dan menggunakannya untuk menjalankan pekerjaan SageMaker pelatihan. Jika `image_uri` ditentukan baik sebagai argumen di dekorator atau dalam file konfigurasi, maka nilai yang ditentukan `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 Di [ dukung. ](https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-decorator-container.html)

1. Instal SageMaker Python SDK.

   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 ML 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 Ikh [ tis SageMaker ar UI Amazon 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\_ ](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-remote-function/quick_start/quick_start.ipynb) 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 SageMaker AI * Amazon*.

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

Anda dapat membuat anotasi kode ML lokal Anda dari instance buku SageMaker catatan. Petunjuk berikut menunjukkan cara membuat instance notebook dengan kernel khusus, menginstal SageMaker Python SDK, dan membuat anotasi kode Anda dengan dekorator.

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

   Anda dapat membuat anotasi kode ML lokal Anda dengan dekorator @remote untuk digunakan di dalam pekerjaan SageMaker pelatihan. 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 Inst ** ans Notebook ** dari opsi yang diperluas.

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

   1. Untuk nama instance ** Notebook**, masukkan nama dengan maksimum 63 karakter dan tanpa spasi. Karakter yang valid: ** A-Z**, ** a-z**, ** 0-9**, dan. ** ****: ** ** \+ ** ** = ** ** @ ** ** \_ ****% ** ** - ** (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 konten yang ada dari kotak teks 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 konten yang ada dari kotak teks 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 ** Buat instance notebook di kanan bawah jendela.

   1. Tunggu ** Status ** instans notebook berubah dari Ter ** tunda ** menjadi ** InService**.

1. Buat buku catatan Jupyter di instance notebook.

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

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

      1. Pilih ** Buka Jupyter ** di bawah Tind ** akan ** di baris yang berisi Nama instance buku catatan yang baru dibuat. ** ** Ini membuka server Jupyter baru.

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

   1. Dari panah bawah, pilih ** conda ** \_custom\_python310. 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 SageMaker Python SDK.

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

   ```
   !pip install sagemaker
   ```

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

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

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

      Untuk informasi selengkapnya, lihat Meng [ ubah 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 khusus 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 ** Baru ** dari menu kanan atas.

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

   1. G `untitled.txt` anti nama ke `requirements.txt` dan tambahkan dependensi apa pun yang diperlukan untuk kode bersama dengan`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\_start.ipny ](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-remote-function/quick_start/quick_start.ipynb) b 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 ML lokal Anda dengan dekorator @remote di dalam IDE lokal pilihan Anda. Langkah-langkah berikut menunjukkan prasyarat yang diperlukan, cara menginstal Python SDK, dan cara membuat anotasi kode Anda dengan dekorator @remote.

1. Instal prasyarat dengan mengatur AWS Command Line Interface (AWS CLI) dan membuat peran, sebagai berikut:
   + Masuk ke domain SageMaker AI mengikuti petunjuk di ** bagian Pras **AWS CLI yarat Menyi [ apkan Prasyarat SageMaker AI Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-set-up.html#gs-cli-prereq).
   + Buat peran IAM mengikuti ** bagian ** Buat peran eksekusi dari Peran [ SageMaker AI. ](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.  
![Lingkungan baru Python dipilih sebagai Conda, dengan versi Python dipilih di 3.10.](https://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 SageMaker Python SDK.

   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 wadah yang kompatibel. Instal SageMaker Python SDK 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 SageMaker pelatihan. Contoh kode berikut menunjukkan cara mengimpor pustaka yang diperlukan, mengatur SageMaker sesi, dan membuat anotasi fungsi dengan dekorator @remote.

   Anda dapat menjalankan kode Anda dengan menyediakan dependensi yang diperlukan secara langsung, atau dengan menggunakan dependensi dari lingkungan aktif`conda`.
   + Untuk menyediakan 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 pust SageMaker aka. Bagian berikut memberikan contoh kode minimal `requirements.txt` untuk `divide` fungsi contoh.

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

       ```
       import boto3
       from sagemaker.core.helper.session_helper import Session
       from sagemaker.remote_function import remote
       
       sm_session = 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 di bawah ini.

     ```
     import boto3
     from sagemaker.core.helper.session_helper import Session
     from sagemaker.remote_function import remote
     
     sm_session = 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 mengimplementasikan kode sebelumnya di dalam notebook Jupyter. PyCharm Edisi Profesional mendukung Jupyter secara native. Untuk panduan lebih lanjut, lihat dukungan notebook [ Jupyter ](https://www.jetbrains.com/help/pycharm/ipython-notebook-support.html) dalam PyCharm dokumentasi.