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 mana 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.24xlarge for Llama 3.1 8B model which has sufficient memory and GPU
instance_type="ml.g5.24xlarge"
-
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="llama-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 endpoint dengan Amazon FSx dan model Llama.
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: $SAGEMAKER_ENDPOINT_NAME
namespace: $CLUSTER_NAMESPACE
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: Llama-3.1-8B-Instruct
modelSourceType: fsx
worker:
image: vllm/vllm-openai:v0.19.1
modelInvocationPort:
containerPort: 8000
name: http
modelVolumeMount:
mountPath: /opt/ml/model
name: model-weights
resources:
limits:
nvidia.com/gpu: 4
requests:
cpu: 30000m
memory: 100Gi
nvidia.com/gpu: 4
args:
- "--model"
- "/opt/ml/model"
- "--port"
- "8000"
- "--tensor-parallel-size"
- "4"
- "--served-model-name"
- "Llama-3.1-8B-Instruct"
environmentVariables:
- name: VLLM_REQUEST_TIMEOUT
value: "600"
EOF
- Using Amazon S3 as the model source
-
-
Siapkan nama SageMaker titik akhir.
export SAGEMAKER_ENDPOINT_NAME="llama-s3"
-
Konfigurasikan lokasi bucket Amazon S3 tempat model berada.
export S3_MODEL_LOCATION="<your-s3-bucket-name>"
-
Berikut ini adalah contoh file yaml untuk membuat titik akhir dengan Amazon S3 dan model Llama menggunakan VllM sebagai runtime inferensi.
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/v1
kind: InferenceEndpointConfig
metadata:
name: $SAGEMAKER_ENDPOINT_NAME
namespace: $CLUSTER_NAMESPACE
spec:
modelName: Llama-3.1-8B-Instruct
instanceType: ml.g5.24xlarge
invocationEndpoint: v1/chat/completions
replicas: 2
modelSourceConfig:
modelSourceType: s3
s3Storage:
bucketName: $S3_MODEL_LOCATION
region: $REGION
modelLocation: Llama-3.1-8B-Instruct
prefetchEnabled: true
worker:
image: vllm/vllm-openai:v0.19.1
modelInvocationPort:
containerPort: 8000
name: http
modelVolumeMount:
name: model-weights
mountPath: /opt/ml/model
resources:
limits:
nvidia.com/gpu: 4
requests:
cpu: 30000m
memory: 100Gi
nvidia.com/gpu: 4
args:
- "--model"
- "/opt/ml/model"
- "--port"
- "8000"
- "--tensor-parallel-size"
- "4"
- "--served-model-name"
- "Llama-3.1-8B-Instruct"
environmentVariables:
- name: VLLM_REQUEST_TIMEOUT
value: "600"
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.19.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, wadah init mengunduh model sebelum wadah inferensi dimulai. Kapanfalse, runtime inferensi (VllM, TGI, SGLang) mengunduh model secara asli saat startup. Default ke false.
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
Kelola penerapan 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
-
Verifikasi pembersihan telah 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