Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menerapkan model dari Amazon S3, Amazon FSx, atau Hugging Face Hub menggunakan kubectl
Langkah-langkah berikut menunjukkan cara menerapkan model yang disimpan di Amazon S3, Amazon FSx, atau Hugging Face Hub ke cluster Amazon menggunakan kubectl. SageMaker HyperPod
Instruksi berikut berisi sel kode dan perintah yang dirancang untuk berjalan di terminal. Pastikan Anda telah mengonfigurasi lingkungan Anda dengan AWS kredensyal sebelum menjalankan perintah ini.
Prasyarat
Sebelum Anda mulai, verifikasi bahwa Anda telah:
Penyiapan dan konfigurasi
Ganti semua nilai placeholder dengan pengidentifikasi sumber daya Anda yang sebenarnya.
-
Pilih Wilayah Anda di lingkungan Anda.
export REGION=<region>
-
Inisialisasi nama cluster Anda. Ini mengidentifikasi HyperPod cluster tempat model Anda akan digunakan.
Periksa dengan admin klaster Anda untuk memastikan izin diberikan untuk peran atau pengguna ini. Anda dapat menjalankan !aws sts
get-caller-identity --query "Arn" untuk memeriksa peran atau pengguna yang Anda gunakan di terminal Anda.
# Specify your hyperpod cluster name here
HYPERPOD_CLUSTER_NAME="<Hyperpod_cluster_name>"
# NOTE: For sample deployment, we use g5.8xlarge for deepseek-r1 1.5b model which has sufficient memory and GPU
instance_type="ml.g5.8xlarge"
-
Inisialisasi namespace cluster Anda. Admin klaster Anda seharusnya sudah membuat akun layanan hyperpod-inference di namespace Anda.
cluster_namespace="<namespace>"
-
Buat CRD menggunakan salah satu opsi berikut:
- Using Amazon FSx as the model source
-
-
Siapkan nama SageMaker titik akhir.
export SAGEMAKER_ENDPOINT_NAME="deepseek15b-fsx"
-
Konfigurasikan ID sistem file Amazon FSx yang akan digunakan.
export FSX_FILE_SYSTEM_ID="fs-1234abcd"
-
Berikut ini adalah contoh file yaml untuk membuat titik akhir dengan Amazon FSx dan model. DeepSeek
Untuk cluster dengan partisi GPU diaktifkan, ganti nvidia.com/gpu dengan nama sumber daya MIG yang sesuai seperti. nvidia.com/mig-1g.10gb Untuk informasi selengkapnya, lihat Pengajuan Tugas dengan MIG.
cat <<EOF> deploy_fsx_cluster_inference.yaml
---
apiVersion: inference.sagemaker.aws.amazon.com/v1
kind: InferenceEndpointConfig
metadata:
name: lmcache-test
namespace: inf-update
spec:
modelName: Llama-3.1-8B-Instruct
instanceType: ml.g5.24xlarge
invocationEndpoint: v1/chat/completions
replicas: 2
modelSourceConfig:
fsxStorage:
fileSystemId: $FSX_FILE_SYSTEM_ID
modelLocation: deepseek-1-5b
modelSourceType: fsx
worker:
environmentVariables:
- name: HF_MODEL_ID
value: /opt/ml/model
- name: SAGEMAKER_PROGRAM
value: inference.py
- name: SAGEMAKER_SUBMIT_DIRECTORY
value: /opt/ml/model/code
- name: MODEL_CACHE_ROOT
value: /opt/ml/model
- name: SAGEMAKER_ENV
value: '1'
image: 763104351884.dkr.ecr.us-east-2.amazonaws.com/huggingface-pytorch-tgi-inference:2.4.0-tgi2.3.1-gpu-py311-cu124-ubuntu22.04-v2.0
modelInvocationPort:
containerPort: 8080
name: http
modelVolumeMount:
mountPath: /opt/ml/model
name: model-weights
resources:
limits:
nvidia.com/gpu: 1
# For MIG-enabled instances, use: nvidia.com/mig-1g.10gb: 1
requests:
cpu: 30000m
memory: 100Gi
nvidia.com/gpu: 1
# For MIG-enabled instances, use: nvidia.com/mig-1g.10gb: 1
EOF
- Using Amazon S3 as the model source
-
-
Siapkan nama SageMaker titik akhir.
export SAGEMAKER_ENDPOINT_NAME="deepseek15b-s3"
-
Konfigurasikan lokasi bucket Amazon S3 tempat model berada.
export S3_MODEL_LOCATION="deepseek-qwen-1-5b"
-
Berikut ini adalah contoh file yaml untuk membuat titik akhir dengan Amazon S3 dan model. DeepSeek
Untuk cluster dengan partisi GPU diaktifkan, ganti nvidia.com/gpu dengan nama sumber daya MIG yang sesuai seperti. nvidia.com/mig-1g.10gb Untuk informasi selengkapnya, lihat Pengajuan Tugas dengan MIG.
cat <<EOF> deploy_s3_inference.yaml
---
apiVersion: inference.sagemaker.aws.amazon.com/v1alpha1
kind: InferenceEndpointConfig
metadata:
name: $SAGEMAKER_ENDPOINT_NAME
namespace: $CLUSTER_NAMESPACE
spec:
modelName: deepseek15b
endpointName: $SAGEMAKER_ENDPOINT_NAME
instanceType: ml.g5.8xlarge
invocationEndpoint: invocations
modelSourceConfig:
modelSourceType: s3
s3Storage:
bucketName: $S3_MODEL_LOCATION
region: $REGION
modelLocation: deepseek15b
prefetchEnabled: true
worker:
resources:
limits:
nvidia.com/gpu: 1
# For MIG-enabled instances, use: nvidia.com/mig-1g.10gb: 1
requests:
nvidia.com/gpu: 1
# For MIG-enabled instances, use: nvidia.com/mig-1g.10gb: 1
cpu: 25600m
memory: 102Gi
image: 763104351884.dkr.ecr.us-east-2.amazonaws.com/djl-inference:0.32.0-lmi14.0.0-cu124
modelInvocationPort:
containerPort: 8000
name: http
modelVolumeMount:
name: model-weights
mountPath: /opt/ml/model
environmentVariables:
- name: PYTHONHASHSEED
value: "123"
- name: OPTION_ROLLING_BATCH
value: "vllm"
- name: SERVING_CHUNKED_READ_TIMEOUT
value: "480"
- name: DJL_OFFLINE
value: "true"
- name: NUM_SHARD
value: "1"
- name: SAGEMAKER_PROGRAM
value: "inference.py"
- name: SAGEMAKER_SUBMIT_DIRECTORY
value: "/opt/ml/model/code"
- name: MODEL_CACHE_ROOT
value: "/opt/ml/model"
- name: SAGEMAKER_MODEL_SERVER_WORKERS
value: "1"
- name: SAGEMAKER_MODEL_SERVER_TIMEOUT
value: "3600"
- name: OPTION_TRUST_REMOTE_CODE
value: "true"
- name: OPTION_ENABLE_REASONING
value: "true"
- name: OPTION_REASONING_PARSER
value: "deepseek_r1"
- name: SAGEMAKER_CONTAINER_LOG_LEVEL
value: "20"
- name: SAGEMAKER_ENV
value: "1"
- name: MODEL_SERVER_TYPE
value: "vllm"
- name: SESSION_KEY
value: "x-user-id"
EOF
- Using Amazon S3 as the model source
-
-
Siapkan nama SageMaker titik akhir.
export SAGEMAKER_ENDPOINT_NAME="deepseek15b-s3"
-
Konfigurasikan lokasi bucket Amazon S3 tempat model berada.
export S3_MODEL_LOCATION="deepseek-qwen-1-5b"
-
Berikut ini adalah contoh file yaml untuk membuat titik akhir dengan Amazon S3 dan model. DeepSeek
cat <<EOF> deploy_s3_inference.yaml
---
apiVersion: inference.sagemaker.aws.amazon.com/v1
kind: InferenceEndpointConfig
metadata:
name: lmcache-test
namespace: inf-update
spec:
modelName: Llama-3.1-8B-Instruct
instanceType: ml.g5.24xlarge
invocationEndpoint: v1/chat/completions
replicas: 2
modelSourceConfig:
modelSourceType: s3
s3Storage:
bucketName: bugbash-ada-resources
region: us-west-2
modelLocation: models/Llama-3.1-8B-Instruct
prefetchEnabled: false
kvCacheSpec:
enableL1Cache: true
# enableL2Cache: true
# l2CacheSpec:
# l2CacheBackend: redis/sagemaker
# l2CacheLocalUrl: redis://redis.redis-system.svc.cluster.local:6379
intelligentRoutingSpec:
enabled: true
tlsConfig:
tlsCertificateOutputS3Uri: s3://sagemaker-lmcache-fceb9062-tls-6f6ee470
metrics:
enabled: true
modelMetrics:
port: 8000
loadBalancer:
healthCheckPath: /health
worker:
resources:
limits:
nvidia.com/gpu: "4"
requests:
cpu: "6"
memory: 30Gi
nvidia.com/gpu: "4"
image: lmcache/vllm-openai:latest
args:
- "/opt/ml/model"
- "--max-model-len"
- "20000"
- "--tensor-parallel-size"
- "4"
modelInvocationPort:
containerPort: 8000
name: http
modelVolumeMount:
name: model-weights
mountPath: /opt/ml/model
environmentVariables:
- name: PYTHONHASHSEED
value: "123"
- name: OPTION_ROLLING_BATCH
value: "vllm"
- name: SERVING_CHUNKED_READ_TIMEOUT
value: "480"
- name: DJL_OFFLINE
value: "true"
- name: NUM_SHARD
value: "1"
- name: SAGEMAKER_PROGRAM
value: "inference.py"
- name: SAGEMAKER_SUBMIT_DIRECTORY
value: "/opt/ml/model/code"
- name: MODEL_CACHE_ROOT
value: "/opt/ml/model"
- name: SAGEMAKER_MODEL_SERVER_WORKERS
value: "1"
- name: SAGEMAKER_MODEL_SERVER_TIMEOUT
value: "3600"
- name: OPTION_TRUST_REMOTE_CODE
value: "true"
- name: OPTION_ENABLE_REASONING
value: "true"
- name: OPTION_REASONING_PARSER
value: "deepseek_r1"
- name: SAGEMAKER_CONTAINER_LOG_LEVEL
value: "20"
- name: SAGEMAKER_ENV
value: "1"
- name: MODEL_SERVER_TYPE
value: "vllm"
- name: SESSION_KEY
value: "x-user-id"
EOF
- Using Hugging Face Hub as the model source
-
-
Buat Kubernetes Secret yang berisi token API Hugging Face Anda. Token ini diperlukan untuk model yang terjaga keamanannya dan direkomendasikan untuk semua unduhan. Anda dapat menghasilkan token di huggingface. co/settings/token.
Menyebarkan model dari Hugging Face Hub memerlukan akses internet keluar dari node cluster Anda ke domain Hugging Face termasuk dan. *.huggingface.co *.hf.co Pastikan konfigurasi jaringan VPC Anda (gateway NAT, grup keamanan, dan ACL jaringan) memungkinkan jalan keluar HTTPS ke domain ini. Tanpa akses internet, unduhan model akan gagal.
Untuk lingkungan produksi, sebaiknya gunakan Amazon S3 atau Amazon FSx sebagai sumber model, bukan Hugging Face Hub. Dengan Amazon S3 dan Amazon FSx, artefak model disimpan dalam AWS akun Anda, menghilangkan ketergantungan pada konektivitas internet eksternal dan memberikan waktu penerapan yang lebih dapat diprediksi. Hugging Face Hub paling cocok untuk pengembangan, eksperimen, dan pembuatan prototipe cepat di mana akses langsung ke repositori model Hugging Face nyaman.
kubectl create secret generic hf-token-secret \
--from-literal=token=hf_YOUR_TOKEN_HERE \
-n $CLUSTER_NAMESPACE
-
Siapkan nama SageMaker titik akhir.
export SAGEMAKER_ENDPOINT_NAME="mistral7b-hf"
-
Berikut ini adalah contoh file YAMM untuk menerapkan model Mistral 7B dari Hugging Face Hub menggunakan VllM sebagai runtime inferensi. DenganprefetchEnabled: true, operator menggunakan kontainer init untuk mengunduh model sebelum wadah inferensi dimulai.
Untuk cluster dengan partisi GPU diaktifkan, ganti nvidia.com/gpu dengan nama sumber daya MIG yang sesuai seperti. nvidia.com/mig-1g.10gb Untuk informasi selengkapnya, lihat Pengajuan Tugas dengan MIG.
cat <<EOF> deploy_hf_inference.yaml
---
apiVersion: inference.sagemaker.aws.amazon.com/v1
kind: InferenceEndpointConfig
metadata:
name: $SAGEMAKER_ENDPOINT_NAME
namespace: $CLUSTER_NAMESPACE
spec:
modelName: mistral-7b
modelSourceConfig:
modelSourceType: huggingface
prefetchEnabled: true
huggingFaceModel:
modelId: "mistralai/Mistral-7B-Instruct-v0.3"
tokenSecretRef:
name: hf-token-secret
key: token
instanceType: "ml.g5.24xlarge"
invocationEndpoint: v1/chat/completions
worker:
image: "vllm/vllm-openai:v0.10.1"
modelInvocationPort:
containerPort: 8000
name: http
modelVolumeMount:
name: model-weights
mountPath: /opt/ml/model
resources:
requests:
nvidia.com/gpu: "4"
memory: "96Gi"
cpu: "16"
limits:
nvidia.com/gpu: "4"
memory: "96Gi"
cpu: "16"
args:
- "--model"
- "/opt/ml/model"
- "--port"
- "8000"
- "--tensor-parallel-size"
- "4"
- "--served-model-name"
- "mistralai/Mistral-7B-Instruct-v0.3"
environmentVariables:
- name: VLLM_REQUEST_TIMEOUT
value: "600"
EOF
-
Bidang konfigurasi utama Hugging Face adalah:
modelSourceType(wajib) - Setel kehuggingface.
huggingFaceModel.modelId(wajib) - Pengidentifikasi model Hugging Face Hub org/model dalam format (misalnyamistralai/Mistral-7B-Instruct-v0.3,).
huggingFaceModel.commitSHA(opsional) — Git 40 karakter berkomitmen SHA untuk menyematkan versi model tertentu. Jika dihilangkan, default ke cabang. main
huggingFaceModel.tokenSecretRef(opsional) — Referensi ke Kubernetes Secret yang berisi token API Hugging Face Anda. Diperlukan untuk model yang terjaga keamanannya. Token hanya digunakan selama pengunduhan model dan tidak terpapar ke wadah inferensi.
prefetchEnabled(opsional) - Kapantrue, kontainer init mengunduh model sebelum wadah inferensi dimulai. Kapanfalse, runtime inferensi (VllM, TGI, SGLang) mengunduh model secara asli saat startup. Default ke false.
Konfigurasikan caching KV dan perutean cerdas untuk meningkatkan kinerja
-
Aktifkan caching KV dengan mengatur enableL1Cache dan enableL2Cache ke true .Then, atur l2CacheSpec ke redis dan perbarui l2CacheLocalUrl dengan URL cluster Redis.
kvCacheSpec:
enableL1Cache: true
enableL2Cache: true
l2CacheSpec:
l2CacheBackend: <redis | tieredstorage>
l2CacheLocalUrl: <redis cluster URL if l2CacheBackend is redis >
Jika cluster redis tidak berada dalam VPC Amazon yang sama dengan cluster, enkripsi untuk data dalam perjalanan tidak dijamin. HyperPod
Tidak perlu l2 CacheLocalUrl jika tieredstorage dipilih.
-
Aktifkan perutean cerdas dengan mengatur enabled ke true bawahintelligentRoutingSpec. Anda dapat menentukan strategi perutean mana yang akan digunakan di bawahroutingStrategy. Jika tidak ada strategi routing yang ditentukan, defaultnya. prefixaware
intelligentRoutingSpec:
enabled: true
routingStrategy: <routing strategy to use>
-
Aktifkan metrik router dan metrik caching dengan menyetel enabled ke bawah. true metrics portNilai harus sama dengan containerPort nilai di bawahmodelInvocationPort.
metrics:
enabled: true
modelMetrics:
port: <port value>
...
modelInvocationPort:
containerPort: <port value>
Terapkan model Anda dari Amazon S3, Amazon FSx, atau Hugging Face Hub
-
Dapatkan nama cluster Amazon EKS dari ARN HyperPod cluster untuk otentikasi kubectl.
export EKS_CLUSTER_NAME=$(aws --region $REGION sagemaker describe-cluster --cluster-name $HYPERPOD_CLUSTER_NAME \
--query 'Orchestrator.Eks.ClusterArn' --output text | \
cut -d'/' -f2)
aws eks update-kubeconfig --name $EKS_CLUSTER_NAME --region $REGION
-
Terapkan InferenceEndpointConfig model Anda dengan salah satu opsi berikut:
- Deploy with Amazon FSx as a source
-
kubectl apply -f deploy_fsx_luster_inference.yaml
- Deploy with Amazon S3 as a source
-
kubectl apply -f deploy_s3_inference.yaml
- Deploy with Hugging Face Hub as a source
-
kubectl apply -f deploy_hf_inference.yaml
Jika penerapan gagal, periksa InferenceEndpointConfig peristiwa untuk informasi diagnostik. Untuk masalah umum seperti kesalahan token, konektivitas jaringan, dan model tidak ditemukan, lihatKegagalan penerapan model Hugging Face Hub.
Verifikasi status penerapan Anda
-
Periksa apakah model berhasil digunakan.
kubectl describe InferenceEndpointConfig $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
-
Periksa apakah titik akhir berhasil dibuat.
kubectl describe SageMakerEndpointRegistration $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
-
Uji titik akhir yang diterapkan untuk memverifikasi itu berfungsi dengan benar. Langkah ini mengonfirmasi bahwa model Anda berhasil diterapkan dan dapat memproses permintaan inferensi.
aws sagemaker-runtime invoke-endpoint \
--endpoint-name $SAGEMAKER_ENDPOINT_NAME \
--content-type "application/json" \
--body '{"inputs": "What is AWS SageMaker?"}' \
--region $REGION \
--cli-binary-format raw-in-base64-out \
/dev/stdout
Mengelola penyebaran Anda
Setelah selesai menguji penerapan, gunakan perintah berikut untuk membersihkan sumber daya Anda.
Verifikasi bahwa Anda tidak lagi memerlukan model yang digunakan atau data yang disimpan sebelum melanjutkan.
Bersihkan sumber daya Anda
-
Hapus penerapan inferensi dan sumber daya Kubernetes terkait. Ini menghentikan kontainer model yang sedang berjalan dan menghapus SageMaker titik akhir.
kubectl delete inferenceendpointconfig $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
-
Pastikan pembersihan berhasil dilakukan.
# # Check that Kubernetes resources are removed
kubectl get pods,svc,deployment,InferenceEndpointConfig,sagemakerendpointregistration -n $CLUSTER_NAMESPACE
# Verify SageMaker endpoint is deleted (should return error or empty)
aws sagemaker describe-endpoint --endpoint-name $SAGEMAKER_ENDPOINT_NAME --region $REGION
Pemecahan masalah
Gunakan perintah debugging ini jika penerapan Anda tidak berfungsi seperti yang diharapkan.
-
Periksa status penerapan Kubernetes.
kubectl describe deployment $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
-
Periksa InferenceEndpointConfig status untuk melihat status penerapan tingkat tinggi dan masalah konfigurasi apa pun.
kubectl describe InferenceEndpointConfig $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
-
Periksa status semua objek Kubernetes. Dapatkan tampilan komprehensif dari semua resource Kubernetes terkait di namespace Anda. Ini memberi Anda gambaran singkat tentang apa yang sedang berjalan dan apa yang mungkin hilang.
kubectl get pods,svc,deployment,InferenceEndpointConfig,sagemakerendpointregistration -n $CLUSTER_NAMESPACE