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
Persyaratan sistem operasi
Anda memerlukan salah satu sistem operasi berikut untuk terhubung dari jarak jauh ke ruang Studio:
-
macOS 13+
-
Windows 10
-
Windows 11
-
Linux
-
Instal Microsoft VS Code resmi untuk Linux
-
bukan versi open source
-
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:
-
- Ekstensi Standar VS Code Marketplace untuk pengembangan jarak jauh
-
Plugin Session Manager - Diperlukan untuk manajemen sesi yang aman
-
Klien SSH - Komponen standar pada sebagian besar mesin (OpenSSH direkomendasikan
untuk Windows) -
Biasanya disertakan dengan instalasi VS Code
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:
-
curlatauwget- 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:
-
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)
-
Siapkan sumber daya penyimpanan dan PersistentVolumeClaims ikuti dokumentasi driver CSI untuk jenis penyimpanan spesifik Anda
-
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/
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"