Sesuaikan add-on - Amazon SageMaker AI

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

Sesuaikan add-on

Templat

Template adalah konfigurasi ruang kerja yang dapat digunakan kembali yang berfungsi sebagai cetak biru yang dikendalikan admin untuk pembuatan ruang kerja. Mereka menyediakan default untuk nilai konfigurasi ruang kerja, dan pagar pembatas untuk mengontrol apa yang dapat dilakukan para ilmuwan data. Template ada di tingkat cluster, dan dapat digunakan kembali di seluruh ruang nama.

SageMaker Spaces membuat dua templat sistem sebagai titik awal bagi ilmuwan data, satu untuk Editor Kode dan satu untuk JupyterLab. Template sistem ini dikelola oleh addon dan tidak dapat diedit secara langsung. Sebagai gantinya, admin dapat membuat template baru dan mengaturnya sebagai default.

Tata Kelola Tugas

apiVersion: workspace.jupyter.org/v1alpha1 kind: WorkspaceTemplate metadata: name: my-jupyter-template namespace: my-namespace labels: kueue.x-k8s.io/priority-class: <user-input>-priority spec: displayName: "My Custom Jupyter Lab" description: "Custom Jupyter Lab with specific configurations" defaultImage: "public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu" allowedImages: - "public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu" - "public.ecr.aws/sagemaker/sagemaker-distribution:latest-gpu" defaultResources: requests: cpu: "1" memory: "4Gi" limits: cpu: "4" memory: "16Gi" primaryStorage: defaultSize: "10Gi" minSize: "5Gi" maxSize: "50Gi" defaultStorageClassName: "sagemaker-spaces-default-storage-class" defaultMountPath: "/home/sagemaker-user" defaultContainerConfig: command: ["/opt/amazon/sagemaker/workspace/bin/entrypoint-workspace-jupyterlab"] defaultPodSecurityContext: fsGroup: 1000 defaultOwnershipType: "Public" defaultAccessStrategy: name: "hyperpod-access-strategy" allowSecondaryStorages: true appType: "jupyterlab"

Gambar SMD/Kustom

Pelanggan dapat mengonfigurasi kebijakan gambar melalui templat dengan menyediakan gambar default dan daftar gambar yang diizinkan. Selain itu, administrator dapat memilih apakah akan mengizinkan ilmuwan data untuk membawa gambar kustom mereka sendiri. Sistem default menggunakan SageMaker Distribusi terbaru, tetapi jika Anda ingin menyematkan ke versi tertentu, Anda dapat menentukan versi SMD yang tepat untuk digunakan dalam templat.

Persyaratan gambar khusus:

  • curljika Anda ingin menggunakan shutdown idle

  • pelabuhan 8888

  • akses jarak jauh

Persyaratan IDE Jarak Jauh

Persyaratan versi VS Code

VS Code versi v1.90 atau lebih tinggi diperlukan. Kami merekomendasikan menggunakan versi stabil terbaru dari VS Code.

Persyaratan sistem operasi

Anda memerlukan salah satu sistem operasi berikut untuk terhubung dari jarak jauh ke ruang Studio:

Prasyarat mesin lokal

Sebelum menghubungkan Kode Visual Studio lokal Anda ke ruang Studio, pastikan mesin lokal Anda memiliki dependensi dan akses jaringan yang diperlukan.

catatan

Lingkungan dengan batasan instalasi perangkat lunak dapat mencegah pengguna menginstal dependensi yang diperlukan. AWS Toolkit for Visual Studio Code secara otomatis mencari dependensi ini saat memulai koneksi jarak jauh dan akan meminta instalasi jika ada yang hilang. Berkoordinasi dengan departemen TI Anda untuk memastikan komponen ini tersedia.

Dependensi lokal yang diperlukan

Mesin lokal Anda harus memiliki komponen berikut yang diinstal:

Persyaratan khusus platform

  • Pengguna Windows - PowerShell 5.1 atau yang lebih baru diperlukan untuk koneksi terminal SSH

Persyaratan konektivitas jaringan

Mesin lokal Anda harus memiliki akses jaringan ke endpoint Session Manager. Misalnya, di AS Timur (Virginia N.) (us-east-1) ini dapat berupa:

Persyaratan gambar

SageMaker Gambar distribusi

Saat menggunakan SageMaker Distribusi dengan akses jarak jauh, gunakan SageMaker Distribusi versi 2.7 atau yang lebih baru.

Gambar kustom

Saat Anda Membawa gambar Anda sendiri (BYOI) dengan akses jarak jauh, pastikan Anda mengikuti spesifikasi gambar khusus dan memastikan dependensi berikut diinstal:

  • curlatau wget - Diperlukan untuk mengunduh AWS CLI komponen

  • unzip- Diperlukan untuk mengekstrak file AWS CLI instalasi

  • tar— Diperlukan untuk ekstraksi arsip

  • gzip- Diperlukan untuk penanganan file terkompresi

Persyaratan instans

  • Memori - 8GB atau lebih

  • Gunakan instans dengan memori minimal 8GB. Jenis instance berikut tidak didukung karena memori yang tidak mencukupi (kurang dari 8GB):ml.t3.medium,,ml.c7i.large, ml.c6i.largeml.c6id.large, danml.c5.large. Untuk daftar jenis instans yang lebih lengkap, lihat halaman Harga EC2 Sesuai Permintaan Amazon

Mengoptimalkan Waktu Startup Kubernetes dengan Pre-Warming Container Images

Kinerja penarikan gambar kontainer telah menjadi hambatan yang signifikan bagi banyak pelanggan EKS, terutama karena AI/ML beban kerja bergantung pada gambar kontainer yang semakin besar. Menarik dan membongkar gambar besar ini biasanya membutuhkan waktu beberapa menit saat pertama kali digunakan pada setiap simpul EKS. Penundaan ini menambah latensi besar saat meluncurkan SageMaker Spaces dan secara langsung memengaruhi pengalaman pengguna—terutama di lingkungan di mana startup cepat sangat penting, seperti notebook, pekerjaan pengembangan interaktif.

Pra-pemanasan gambar adalah teknik yang digunakan untuk memuat gambar kontainer tertentu ke setiap node di EKS/HyperPod cluster sebelum dibutuhkan. Alih-alih menunggu pod untuk memicu tarikan pertama dari gambar besar, cluster secara proaktif mengunduh dan menyimpan gambar di semua node. Ini memastikan bahwa ketika beban kerja diluncurkan, gambar yang diperlukan sudah tersedia secara lokal, menghilangkan penundaan awal dingin yang lama. Pra-pemanasan gambar meningkatkan kecepatan startup SageMaker Spaces dan memberikan pengalaman yang lebih dapat diprediksi dan responsif bagi pengguna akhir.

Pra-Pemanasan melalui DaemonSet

Sebaiknya gunakan a DaemonSet untuk memuat gambar terlebih dahulu. A DaemonSet memastikan bahwa satu pod berjalan pada setiap node di cluster. Setiap kontainer di dalam DaemonSet pod mereferensikan gambar yang ingin Anda cache. Ketika Kubernetes memulai pod, ia secara otomatis menarik gambar, menghangatkan cache pada setiap node.

Contoh berikut menunjukkan cara membuat pramuat dua gambar GPU. DaemonSet Setiap kontainer menjalankan sleep infinity perintah ringan untuk menjaga pod tetap aktif dengan overhead minimal.

cat <<EOF | kubectl apply -n "namespace_1" -f - apiVersion: apps/v1 kind: DaemonSet metadata: name: image-preload-ds spec: selector: matchLabels: app: image-preloader template: metadata: labels: app: image-preloader spec: containers: - name: preloader-3-4-2 image: public.ecr.aws/sagemaker/sagemaker-distribution:3.4.2-gpu command: ["sleep"] args: ["infinity"] resources: requests: cpu: 1m memory: 16Mi limits: cpu: 5m memory: 32Mi - name: preloader-3-3-2 image: public.ecr.aws/sagemaker/sagemaker-distribution:3.3.2-gpu command: ["sleep"] args: ["infinity"] resources: requests: cpu: 1m memory: 16Mi limits: cpu: 5m memory: 32Mi EOF

Cara Kerjanya

  • Setiap wadah mereferensikan satu gambar.

  • Kubernetes harus mengunduh setiap gambar sebelum memulai penampung.

  • Setelah pod berjalan di setiap node, gambar di-cache secara lokal.

  • Beban kerja apa pun yang menggunakan gambar-gambar ini sekarang dimulai jauh lebih cepat.

Penyimpanan default ruang (EBS)

Sistem menggunakan driver EBS CSI secara default untuk menyediakan volume penyimpanan EBS untuk setiap ruang kerja. SageMaker membuat kelas penyimpanan EBS untuk digunakan dengan ruang kerja, dan administrator dapat menyesuaikan ukuran default dan maksimum volume ini menggunakan pengaturan templat. Untuk pengguna tingkat lanjut yang bekerja dengan alat CLI, Anda juga dapat menyesuaikan kelas penyimpanan ruang kerja, yang memungkinkan pengguna untuk memanfaatkan kelas penyimpanan lain termasuk mengonfigurasi kunci KMS yang dikelola pelanggan untuk volume EBS mereka.

Perhatikan bahwa volume EBS terikat pada AZ tertentu, yang berarti ruang kerja hanya dapat dijadwalkan pada node di AZ yang sama dengan volume penyimpanannya. Hal ini dapat menyebabkan kegagalan penjadwalan jika kapasitas cluster ada tetapi tidak di AZ yang benar.

Penyimpanan tambahan

SageMaker Spaces mendukung pemasangan volume penyimpanan tambahan seperti Amazon EFS, FSx untuk Lustre, atau S3 Mountpoint ke ruang pengembangan Anda. Ini memungkinkan Anda mengakses kumpulan data bersama, berkolaborasi dalam proyek, atau menggunakan penyimpanan berkinerja tinggi untuk beban kerja Anda.

Prasyarat

Sebelum memasang penyimpanan tambahan ke ruang, Anda harus:

  1. Instal add-on driver CSI yang sesuai melalui add-on EKS (Amazon EFS CSI Driver, Amazon FSx untuk Lustre CSI Driver, atau Mountpoint untuk Amazon S3 CSI Driver)

  2. Siapkan sumber daya penyimpanan dan PersistentVolumeClaims ikuti dokumentasi driver CSI untuk jenis penyimpanan spesifik Anda

  3. Pastikan PVC tersedia di namespace yang sama di mana Anda berencana untuk membuat ruang Anda

Melampirkan penyimpanan ke ruang

Setelah Anda memiliki PersistentVolumeClaim konfigurasi, Anda dapat melampirkannya ke spasi menggunakan HyperPod CLI atau kubectl.

HyperPod CLI

hyp create hyp-space \ --name my-space \ --display-name "My Space with FSx" \ --memory 8Gi \ --volume name=shared-fsx,mountPath=/shared,persistentVolumeClaimName=my-fsx-pvc

kubectl

apiVersion: workspace.jupyter.org/v1alpha1 kind: Workspace metadata: name: my-space spec: displayName: "My Space with FSx" desiredStatus: Running volumes: - name: shared-fsx mountPath: /shared persistentVolumeClaimName: my-fsx-pvc

Beberapa volume

Anda dapat melampirkan beberapa volume penyimpanan tambahan ke satu spasi dengan menentukan beberapa --volume flag dengan CLI atau beberapa entri dalam array dengan kubectl. volumes

HyperPod CLI

hyp create hyp-space \ --name my-space \ --display-name "My Space with Multiple Storage" \ --memory 8Gi \ --volume name=shared-efs,mountPath=/shared,persistentVolumeClaimName=my-efs-pvc \ --volume name=datasets,mountPath=/datasets,persistentVolumeClaimName=my-s3-pvc

kubectl

apiVersion: workspace.jupyter.org/v1alpha1 kind: Workspace metadata: name: my-space spec: displayName: "My Space with Multiple Storage" desiredStatus: Running volumes: - name: shared-efs mountPath: /shared persistentVolumeClaimName: my-efs-pvc - name: datasets mountPath: /datasets persistentVolumeClaimName: my-s3-pvc

Konfigurasi sumber daya

SageMaker Spaces memungkinkan Anda mengonfigurasi sumber daya komputasi untuk lingkungan pengembangan Anda, termasuk sumber daya CPU, memori, dan GPU agar sesuai dengan persyaratan beban kerja Anda.

Konfigurasi GPU

SageMaker Spaces mendukung seluruh alokasi GPU dan partisi GPU menggunakan teknologi NVIDIA Multi-Instance GPU (MIG). Ini memungkinkan Anda mengoptimalkan pemanfaatan GPU untuk berbagai jenis beban kerja pembelajaran mesin.

Seluruh alokasi GPU

HyperPod CLI

hyp create hyp-space \ --name gpu-space \ --display-name "GPU Development Space" \ --image public.ecr.aws/sagemaker/sagemaker-distribution:latest-gpu \ --memory 16Gi \ --gpu 1 \ --gpu-limit 1

kubectl

apiVersion: workspace.jupyter.org/v1alpha1 kind: Workspace metadata: name: gpu-space spec: displayName: "GPU Development Space" image: "public.ecr.aws/sagemaker/sagemaker-distribution:latest-gpu" desiredStatus: Running resources: requests: memory: "16Gi" nvidia.com/gpu: "1" limits: memory: "16Gi" nvidia.com/gpu: "1"

Partisi GPU (MIG)

Partisi GPU menggunakan teknologi NVIDIA Multi-Instance GPU (MIG) memungkinkan Anda mempartisi satu GPU menjadi instance yang lebih kecil dan terisolasi. HyperPod Cluster Anda harus memiliki node GPU yang mendukung MIG dan memiliki profil MIG yang dikonfigurasi. Untuk informasi selengkapnya tentang pengaturan MIG di HyperPod cluster Anda, lihat partisi GPU menggunakan NVIDIA MIG.

HyperPod CLI

hyp create hyp-space \ --name mig-space \ --display-name "MIG GPU Space" \ --image public.ecr.aws/sagemaker/sagemaker-distribution:latest-gpu \ --memory 8Gi \ --accelerator-partition-type mig-3g.20gb \ --accelerator-partition-count 1

kubectl

apiVersion: workspace.jupyter.org/v1alpha1 kind: Workspace metadata: name: mig-space spec: displayName: "MIG GPU Space" image: "public.ecr.aws/sagemaker/sagemaker-distribution:latest-gpu" desiredStatus: Running resources: requests: memory: "8Gi" nvidia.com/mig-3g.20gb: "1" limits: memory: "8Gi" nvidia.com/mig-3g.20gb: "1"

Siklus hidup

Konfigurasi siklus hidup menyediakan skrip startup yang berjalan saat ruang kerja dibuat atau dimulai. Skrip ini memungkinkan administrator untuk menyesuaikan lingkungan ruang kerja selama startup. Ini adalah skrip bash dengan ukuran maksimum 1 KB. Jika Anda memerlukan konfigurasi pengaturan yang lebih besar, kami sarankan menambahkan skrip ke gambar kontainer dan memicu skrip dari konfigurasi siklus hidup.

Kami memanfaatkan kait siklus hidup kontainer Kubernetes untuk menyediakan fungsionalitas ini https://kubernetes. io/docs/concepts/containers/container-lifecycle-hooks/. Perhatikan bahwa Kubernetes tidak memberikan jaminan kapan skrip startup akan dijalankan sehubungan dengan entrypoint dari container.

Shutdown idle

Konfigurasikan shutdown otomatis ruang kerja idle untuk mengoptimalkan penggunaan sumber daya.

Shutdown idle

idleShutdown: enabled: true idleShutdownTimeoutMinutes: 30 detection: httpGet: path: /api/idle port: 8888 scheme: HTTP

Parameter

enabled (boolean, required) - Mengaktifkan atau menonaktifkan shutdown idle untuk ruang kerja.

idleShutdownTimeoutMenit (bilangan bulat, diperlukan) - Jumlah menit tidak aktif sebelum ruang kerja dimatikan. Nilai minimum adalah 1.

detection (object, required) - Mendefinisikan cara mendeteksi keadaan idle ruang kerja.

Detection.httpGet (objek, opsional) - Konfigurasi titik akhir HTTP untuk deteksi idle. Menggunakan spesifikasi Kubernetes Action. HTTPGet

  • path - jalur HTTP untuk meminta

  • port - Nomor port atau nama

  • skema - HTTP atau HTTPS (default: HTTP)

Lokasi Konfigurasi

Konfigurasi Ruang Kerja

Tentukan shutdown idle secara langsung dalam spesifikasi ruang kerja:

apiVersion: workspace.jupyter.org/v1alpha1 kind: Workspace metadata: name: my-workspace spec: displayName: "Development Workspace" image: jupyter/scipy-notebook:latest idleShutdown: enabled: true idleShutdownTimeoutMinutes: 30 detection: httpGet: path: /api/idle port: 8888

Konfigurasi Template

Tentukan perilaku shutdown idle default di: WorkspaceTemplate

apiVersion: workspace.jupyter.org/v1alpha1 kind: WorkspaceTemplate metadata: name: jupyter-template spec: displayName: "Jupyter Template" defaultImage: jupyter/scipy-notebook:latest defaultIdleShutdown: enabled: true idleShutdownTimeoutMinutes: 30 detection: httpGet: path: /api/idle port: 8888 idleShutdownOverrides: allow: true minTimeoutMinutes: 60 maxTimeoutMinutes: 240

Warisan Template dan Overrides

Ruang kerja menggunakan template secara otomatis mewarisi konfigurasi template. defaultIdleShutdown Ruang kerja dapat mengganti konfigurasi ini jika templat mengizinkannya.

Mengesampingkan Kebijakan

Template mengontrol perilaku mengesampingkan melaluiidleShutdownOverrides:

allow (boolean, default: true) - Apakah ruang kerja dapat mengganti konfigurasi shutdown idle default.

minTimeoutMinutes(integer, opsional) - Nilai batas waktu minimum yang diizinkan untuk penggantian ruang kerja.

maxTimeoutMinutes(integer, opsional) - Nilai batas waktu maksimum yang diizinkan untuk penggantian ruang kerja.

Contoh Warisan

Ruang kerja mewarisi default template:

apiVersion: workspace.jupyter.org/v1alpha1 kind: Workspace metadata: name: my-workspace spec: displayName: "My Workspace" templateRef: name: jupyter-template # Inherits defaultIdleShutdown from template

Contoh Ganti

Ruang kerja mengganti default template:

apiVersion: workspace.jupyter.org/v1alpha1 kind: Workspace metadata: name: my-workspace spec: displayName: "My Workspace" templateRef: name: jupyter-template idleShutdown: enabled: true idleShutdownTimeoutMinutes: 60 # Must be within template bounds detection: httpGet: path: /api/idle port: 8888

Konfigurasi Terkunci

Mencegah penggantian ruang kerja:

apiVersion: workspace.jupyter.org/v1alpha1 kind: WorkspaceTemplate metadata: name: locked-template spec: displayName: "Locked Template" defaultImage: jupyter/scipy-notebook:latest defaultIdleShutdown: enabled: true idleShutdownTimeoutMinutes: 30 detection: httpGet: path: /api/idle port: 8888 idleShutdownOverrides: allow: false # Workspaces cannot override

Perilaku

Ketika shutdown idle diaktifkan, sistem secara berkala memeriksa ruang kerja untuk aktivitas menggunakan titik akhir HTTP yang dikonfigurasi. Jika titik akhir menunjukkan ruang kerja tidak digunakan untuk durasi batas waktu yang ditentukan, ruang kerja akan berhenti secara otomatis. Anda dapat me-restart ruang kerja secara manual bila diperlukan.

Pembaruan template

Alat klien seperti Kubectl atau Hyperpod CLI dan SDK dapat digunakan untuk mengelola Spaces dalam klaster EKS. Administrator dapat menyediakan Template Space untuk konfigurasi Space default, sementara Data Scientist dapat menyesuaikan lingkungan pengembangan terintegrasi mereka tanpa perlu memahami kompleksitas Kubernetes yang mendasarinya. Untuk petunjuk penggunaan terperinci, silakan merujuk ke dokumentasi CLI dan SDK di. https://sagemaker-hyperpod-cli.readthedocs.io/en/latest/index.html

Administrator dapat melakukan operasi CRUD pada Template Space, yang berfungsi sebagai konfigurasi dasar saat membuat Space. Ilmuwan Data dapat melakukan operasi CRUD di Spaces dan mengganti berbagai parameter, termasuk profil GPU Multi-Instance untuk node komputasi tertentu. Mereka dapat memulai, berhenti, dan terhubung ke Spaces melalui VSCode akses jarak jauh dan UI Web. Ketika Template Space diperbarui, Space yang dibuat selanjutnya akan dikonfigurasi dengan pengaturan di template yang diperbarui. Pemeriksaan kepatuhan akan dilakukan saat Spasi yang ada diperbarui atau dimulai. Jika ada pengaturan di luar batas atau tidak cocok, Spaces akan gagal untuk memperbarui atau memulai.

Menggunakan hyp cli dan kubectl

Pengguna dapat melakukan CRUD pada template dengan Hyperpod CLI

### 1. Create a Space Template hyp create hyp-space-template --file template.yaml ### 2. List Space Templates hyp list hyp-space-template hyp list hyp-space-template --output json ### 3. Describe a Space Template hyp describe hyp-space-template --name my-template hyp describe hyp-space-template --name my-template --output json ### 4. Update a Space Template hyp update hyp-space-template --name my-template --file updated-template.yaml ### 5. Delete a Space Template hyp delete hyp-space-template --name my-template

Untuk membuat templat khusus, Anda dapat menggunakan templat sistem kami sebagai titik awal. Template ini akan bekerja untuk gambar seperti SMD, namun dapat disesuaikan berdasarkan gambar yang digunakan oleh admin.

Contoh JupyterLab template kustom:

apiVersion: workspace.jupyter.org/v1alpha1 kind: WorkspaceTemplate metadata: name: my-jupyter-template namespace: my-namespace spec: displayName: "My Custom Jupyter Lab" description: "Custom Jupyter Lab with specific configurations" defaultImage: "public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu" allowedImages: - "public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu" - "public.ecr.aws/sagemaker/sagemaker-distribution:latest-gpu" defaultResources: requests: cpu: "1" memory: "4Gi" limits: cpu: "4" memory: "16Gi" primaryStorage: defaultSize: "10Gi" minSize: "5Gi" maxSize: "50Gi" defaultStorageClassName: "sagemaker-spaces-default-storage-class" defaultMountPath: "/home/sagemaker-user" defaultContainerConfig: command: ["/opt/amazon/sagemaker/workspace/bin/entrypoint-workspace-jupyterlab"] defaultPodSecurityContext: fsGroup: 1000 defaultOwnershipType: "Public" defaultAccessStrategy: name: "hyperpod-access-strategy" allowSecondaryStorages: true appType: "jupyterlab"

Contoh template Editor Kode kustom:

apiVersion: workspace.jupyter.org/v1alpha1 kind: WorkspaceTemplate metadata: name: my-code-editor-template namespace: my-namespace spec: displayName: "My Custom Code Editor" description: "Custom Code Editor with specific configurations" defaultImage: "public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu" allowedImages: - "public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu" - "public.ecr.aws/sagemaker/sagemaker-distribution:latest-gpu" defaultResources: requests: cpu: "1" memory: "4Gi" limits: cpu: "4" memory: "16Gi" primaryStorage: defaultSize: "10Gi" minSize: "5Gi" maxSize: "50Gi" defaultStorageClassName: "sagemaker-spaces-default-storage-class" defaultMountPath: "/home/sagemaker-user" defaultContainerConfig: command: ["/opt/amazon/sagemaker/workspace/bin/entrypoint-workspace-code-editor"] defaultPodSecurityContext: fsGroup: 1000 defaultOwnershipType: "Public" defaultAccessStrategy: name: "hyperpod-access-strategy" allowSecondaryStorages: true appType: "code-editor"