Halaman ini menjelaskan cara menyesuaikan deployment GKE Inference Gateway.
Halaman ini ditujukan bagi spesialis Jaringan yang bertanggung jawab mengelola infrastruktur GKE, dan administrator platform yang mengelola workload AI.
Untuk mengelola dan mengoptimalkan workload inferensi, Anda mengonfigurasi fitur lanjutan dari GKE Inference Gateway.
Pahami dan konfigurasi fitur lanjutan berikut:
- Untuk menggunakan integrasi Model Armor, konfigurasi pemeriksaan keamanan dan keselamatan AI.
- Untuk melihat metrik dan dasbor server model dan GKE Inference Gateway, serta mengaktifkan logging akses HTTP untuk informasi permintaan dan respons yang mendetail, konfigurasi kemampuan pengamatan
- Untuk menskalakan deployment GKE Inference Gateway secara otomatis, konfigurasi penskalaan otomatis.
Mengonfigurasi pemeriksaan keamanan dan keselamatan AI
GKE Inference Gateway terintegrasi dengan Model Armor untuk melakukan pemeriksaan keamanan pada perintah dan respons untuk aplikasi yang menggunakan model bahasa besar (LLM). Integrasi ini memberikan lapisan tambahan penegakan keamanan di tingkat infrastruktur yang melengkapi langkah-langkah keamanan tingkat aplikasi. Hal ini memungkinkan penerapan kebijakan terpusat di semua traffic LLM.
Diagram berikut mengilustrasikan integrasi Model Armor dengan GKE Inference Gateway pada cluster GKE:

Untuk mengonfigurasi pemeriksaan keamanan AI, lakukan langkah-langkah berikut:
Pastikan prasyarat berikut terpenuhi:
- Aktifkan layanan Model Armor di project Trusted Cloud by S3NS Anda.
- Buat template Model Armor menggunakan konsol Model Armor, Google Cloud CLI, atau API.
Pastikan Anda telah membuat template Model Armor bernama
my-model-armor-template-name-id
.Untuk mengonfigurasi
GCPTrafficExtension
, lakukan langkah-langkah berikut:Simpan manifes contoh berikut sebagai
gcp-traffic-extension.yaml
:kind: GCPTrafficExtension apiVersion: networking.gke.io/v1 metadata: name: my-model-armor-extension spec: targetRefs: - group: "gateway.networking.k8s.io" kind: Gateway name: GATEWAY_NAME extensionChains: - name: my-model-armor-chain1 matchCondition: celExpressions: - celMatcher: request.path.startsWith("/") extensions: - name: my-model-armor-service supportedEvents: - RequestHeaders timeout: 1s googleAPIServiceName: "modelarmor.us-central1.rep.googleapis.com" metadata: 'extensionPolicy': MODEL_ARMOR_TEMPLATE_NAME 'sanitizeUserPrompt': 'true' 'sanitizeUserResponse': 'true'
Ganti kode berikut:
GATEWAY_NAME
: nama Gateway.MODEL_ARMOR_TEMPLATE_NAME
: nama template Model Armor Anda.
File
gcp-traffic-extension.yaml
mencakup setelan berikut:targetRefs
: menentukan Gateway tempat ekstensi ini diterapkan.extensionChains
: menentukan rangkaian ekstensi yang akan diterapkan ke traffic.matchCondition
: menentukan kondisi penerapan ekstensi.extensions
: menentukan ekstensi yang akan diterapkan.supportedEvents
: menentukan peristiwa saat ekstensi dipanggil.timeout
: menentukan waktu tunggu untuk ekstensi.googleAPIServiceName
: menentukan nama layanan untuk ekstensi.metadata
: menentukan metadata untuk ekstensi, termasukextensionPolicy
dan setelan pembersihan respons atau perintah.
Terapkan manifes contoh ke cluster Anda:
kubectl apply -f `gcp-traffic-extension.yaml`
Setelah Anda mengonfigurasi pemeriksaan keamanan AI dan mengintegrasikannya dengan Gateway, Model Armor akan otomatis memfilter perintah dan respons berdasarkan aturan yang ditentukan.
Mengonfigurasi kemampuan observasi
Gateway Inferensi GKE memberikan insight tentang kondisi, performa, dan perilaku workload inferensi Anda. Hal ini membantu Anda mengidentifikasi dan menyelesaikan masalah, mengoptimalkan pemanfaatan resource, dan memastikan keandalan aplikasi Anda.
Trusted Cloud by S3NS menyediakan dasbor Cloud Monitoring berikut yang menawarkan kemampuan observasi inferensi untuk GKE Inference Gateway:
- Dasbor GKE Inference Gateway:
menyediakan metrik penting untuk penayangan LLM, seperti throughput permintaan dan token, latensi, error, dan pemanfaatan cache untuk
InferencePool
. Untuk melihat daftar lengkap metrik GKE Inference Gateway yang tersedia, lihat Metrik yang diekspos. - Dasbor server model: menyediakan dasbor untuk sinyal utama server model. Hal ini memungkinkan Anda memantau beban dan performa server model, seperti
KVCache Utilization
danQueue length
. Hal ini memungkinkan Anda memantau beban dan performa server model. - Dasbor load balancer: melaporkan metrik dari load balancer, seperti permintaan per detik, latensi penayangan permintaan end-to-end, dan kode status permintaan-respons. Metrik ini membantu Anda memahami performa penayangan permintaan end-to-end dan mengidentifikasi error.
- Metrik Data Center GPU Manager (DCGM): menyediakan metrik dari GPU NVIDIA, seperti performa dan penggunaan GPU NVIDIA. Anda dapat mengonfigurasi metrik NVIDIA Data Center GPU Manager (DCGM)di Cloud Monitoring. Untuk mengetahui informasi selengkapnya, lihat Mengumpulkan dan melihat metrik DCGM.
Melihat dasbor GKE Inference Gateway
Untuk melihat dasbor GKE Inference Gateway, lakukan langkah-langkah berikut:
Di konsol Trusted Cloud , buka halaman Monitoring.
Di panel navigasi, pilih Dashboard.
Di bagian Integrasi, pilih GMP.
Di halaman Cloud Monitoring Dashboard Templates, telusuri "Gateway".
Lihat dasbor GKE Inference Gateway.
Atau, Anda dapat mengikuti petunjuk di Dasbor pemantauan.
Mengonfigurasi dasbor kemampuan observasi server model
Untuk mengumpulkan sinyal penting dari setiap server model dan memahami faktor-faktor yang berkontribusi terhadap performa GKE Inference Gateway, Anda dapat mengonfigurasi pemantauan otomatis untuk server model. Hal ini mencakup server model seperti berikut:
Untuk melihat dasbor integrasi, lakukan langkah-langkah berikut:
- Kumpulkan metrik dari server model Anda.
Di konsol Trusted Cloud , buka halaman Monitoring.
Di panel navigasi, pilih Dashboard.
Di bagian Integrations, pilih GMP. Dasbor integrasi yang sesuai akan ditampilkan.
Gambar: Dasbor integrasi
Untuk informasi selengkapnya, lihat Menyesuaikan pemantauan untuk aplikasi.
Mengonfigurasi pemberitahuan Cloud Monitoring
Untuk mengonfigurasi pemberitahuan Cloud Monitoring untuk GKE Inference Gateway, lakukan langkah-langkah berikut:
Ubah nilai minimum dalam pemberitahuan. Simpan manifes contoh berikut sebagai
alerts.yaml
:groups: - name: gateway-api-inference-extension rules: - alert: HighInferenceRequestLatencyP99 annotations: title: 'High latency (P99) for model {{ $labels.model_name }}' description: 'The 99th percentile request duration for model {{ $labels.model_name }} and target model {{ $labels.target_model_name }} has been consistently above 10.0 seconds for 5 minutes.' expr: histogram_quantile(0.99, rate(inference_model_request_duration_seconds_bucket[5m])) > 10.0 for: 5m labels: severity: 'warning' - alert: HighInferenceErrorRate annotations: title: 'High error rate for model {{ $labels.model_name }}' description: 'The error rate for model {{ $labels.model_name }} and target model {{ $labels.target_model_name }} has been consistently above 5% for 5 minutes.' expr: sum by (model_name) (rate(inference_model_request_error_total[5m])) / sum by (model_name) (rate(inference_model_request_total[5m])) > 0.05 for: 5m labels: severity: 'critical' impact: 'availability' - alert: HighInferencePoolAvgQueueSize annotations: title: 'High average queue size for inference pool {{ $labels.name }}' description: 'The average number of requests pending in the queue for inference pool {{ $labels.name }} has been consistently above 50 for 5 minutes.' expr: inference_pool_average_queue_size > 50 for: 5m labels: severity: 'critical' impact: 'performance' - alert: HighInferencePoolAvgKVCacheUtilization annotations: title: 'High KV cache utilization for inference pool {{ $labels.name }}' description: 'The average KV cache utilization for inference pool {{ $labels.name }} has been consistently above 90% for 5 minutes, indicating potential resource exhaustion.' expr: inference_pool_average_kv_cache_utilization > 0.9 for: 5m labels: severity: 'critical' impact: 'resource_exhaustion'
Untuk membuat kebijakan pemberitahuan, jalankan perintah berikut:
gcloud alpha monitoring policies migrate --policies-from-prometheus-alert-rules-yaml=alerts.yaml
Anda akan melihat kebijakan pemberitahuan baru di halaman Pemberitahuan.
Mengubah pemberitahuan
Anda dapat menemukan daftar lengkap metrik terbaru yang tersedia di repositori GitHub kubernetes-sigs/gateway-api-inference-extension, dan Anda dapat menambahkan pemberitahuan baru ke manifes menggunakan metrik lain.
Untuk mengubah contoh pemberitahuan, ambil contoh pemberitahuan berikut:
- alert: HighInferenceRequestLatencyP99
annotations:
title: 'High latency (P99) for model {{ $labels.model_name }}'
description: 'The 99th percentile request duration for model {{ $labels.model_name }} and target model {{ $labels.target_model_name }} has been consistently above 10.0 seconds for 5 minutes.'
expr: histogram_quantile(0.99, rate(inference_model_request_duration_seconds_bucket[5m])) > 10.0
for: 5m
labels:
severity: 'warning'
Pemberitahuan akan dipicu jika persentil ke-99 durasi permintaan dalam 5 menit adalah lebih dari 10 detik. Anda dapat mengubah bagian expr
dari pemberitahuan untuk menyesuaikan
batas berdasarkan persyaratan Anda.
Mengonfigurasi logging untuk GKE Inference Gateway
Mengonfigurasi logging untuk GKE Inference Gateway memberikan informasi mendetail tentang permintaan dan respons, yang berguna untuk pemecahan masalah, audit, dan analisis performa. Log akses HTTP mencatat setiap permintaan dan respons, termasuk header, kode status, dan stempel waktu. Tingkat detail ini dapat membantu Anda mengidentifikasi masalah, menemukan error, dan memahami perilaku beban kerja inferensi Anda.
Untuk mengonfigurasi logging untuk GKE Inference Gateway, aktifkan logging akses HTTP untuk setiap objek InferencePool
Anda.
Simpan manifes contoh berikut sebagai
logging-backend-policy.yaml
:apiVersion: networking.gke.io/v1 kind: GCPBackendPolicy metadata: name: logging-backend-policy namespace: NAMESPACE_NAME spec: default: logging: enabled: true sampleRate: 500000 targetRef: group: inference.networking.x-k8s.io kind: InferencePool name: INFERENCE_POOL_NAME
Ganti kode berikut:
NAMESPACE_NAME
: nama namespace tempatInferencePool
Anda di-deploy.INFERENCE_POOL_NAME
: namaInferencePool
.
Terapkan manifes contoh ke cluster Anda:
kubectl apply -f logging-backend-policy.yaml
Setelah Anda menerapkan manifes ini, GKE Inference Gateway akan mengaktifkan log akses HTTP untuk InferencePool
yang ditentukan. Anda dapat melihat log ini di Cloud Logging. Log mencakup informasi mendetail tentang setiap permintaan dan respons, seperti URL permintaan, header, kode status respons, dan latensi.
Konfigurasi penskalaan otomatis
Penskalaan otomatis menyesuaikan alokasi resource sebagai respons terhadap variasi beban, mempertahankan performa dan efisiensi resource dengan menambahkan atau menghapus Pod secara dinamis berdasarkan permintaan. Untuk GKE Inference Gateway, hal ini melibatkan
penskalaan otomatis horizontal Pod di setiap InferencePool
. Horizontal Pod Autoscaler (HPA) GKE menskalakan otomatis Pod berdasarkan metrik server model
seperti KVCache Utilization
. Hal ini memastikan layanan inferensi menangani
berbagai workload dan volume kueri sekaligus mengelola penggunaan resource secara efisien.
Untuk mengonfigurasi instance InferencePool
agar menskalakan otomatis berdasarkan metrik yang dihasilkan oleh GKE Inference Gateway, lakukan langkah-langkah berikut:
Deploy objek
PodMonitoring
di cluster untuk mengumpulkan metrik yang dihasilkan oleh GKE Inference Gateway. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi kemampuan pengamatan.Deploy Custom Metrics Stackdriver Adapter untuk memberi HPA akses ke metrik:
Simpan manifes contoh berikut sebagai
adapter_new_resource_model.yaml
:apiVersion: v1 kind: Namespace metadata: name: custom-metrics --- apiVersion: v1 kind: ServiceAccount metadata: name: custom-metrics-stackdriver-adapter namespace: custom-metrics --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: custom-metrics:system:auth-delegator roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:auth-delegator subjects: - kind: ServiceAccount name: custom-metrics-stackdriver-adapter namespace: custom-metrics --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: custom-metrics-auth-reader namespace: kube-system roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: extension-apiserver-authentication-reader subjects: - kind: ServiceAccount name: custom-metrics-stackdriver-adapter namespace: custom-metrics --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: custom-metrics-resource-reader namespace: custom-metrics rules: - apiGroups: - "" resources: - pods - nodes - nodes/stats verbs: - get - list - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: custom-metrics-resource-reader roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: custom-metrics-resource-reader subjects: - kind: ServiceAccount name: custom-metrics-stackdriver-adapter namespace: custom-metrics --- apiVersion: apps/v1 kind: Deployment metadata: run: custom-metrics-stackdriver-adapter k8s-app: custom-metrics-stackdriver-adapter spec: replicas: 1 selector: matchLabels: run: custom-metrics-stackdriver-adapter k8s-app: custom-metrics-stackdriver-adapter template: metadata: labels: run: custom-metrics-stackdriver-adapter k8s-app: custom-metrics-stackdriver-adapter kubernetes.io/cluster-service: "true" spec: serviceAccountName: custom-metrics-stackdriver-adapter containers: - image: gcr.io/gke-release/custom-metrics-stackdriver-adapter:v0.15.2-gke.1 imagePullPolicy: Always name: pod-custom-metrics-stackdriver-adapter command: - /adapter - --use-new-resource-model=true - --fallback-for-container-metrics=true resources: limits: cpu: 250m memory: 200Mi requests: cpu: 250m memory: 200Mi --- apiVersion: v1 kind: Service metadata: labels: run: custom-metrics-stackdriver-adapter k8s-app: custom-metrics-stackdriver-adapter kubernetes.io/cluster-service: 'true' kubernetes.io/name: Adapter name: custom-metrics-stackdriver-adapter namespace: custom-metrics spec: ports: - port: 443 protocol: TCP targetPort: 443 selector: run: custom-metrics-stackdriver-adapter k8s-app: custom-metrics-stackdriver-adapter type: ClusterIP --- apiVersion: apiregistration.k8s.io/v1 kind: APIService metadata: name: v1beta1.custom.metrics.k8s.io spec: insecureSkipTLSVerify: true group: custom.metrics.k8s.io groupPriorityMinimum: 100 versionPriority: 100 service: name: custom-metrics-stackdriver-adapter namespace: custom-metrics version: v1beta1 --- apiVersion: apiregistration.k8s.io/v1 kind: APIService metadata: name: v1beta2.custom.metrics.k8s.io spec: insecureSkipTLSVerify: true group: custom.metrics.k8s.io groupPriorityMinimum: 100 versionPriority: 200 service: name: custom-metrics-stackdriver-adapter namespace: custom-metrics version: v1beta2 --- apiVersion: apiregistration.k8s.io/v1 kind: APIService metadata: name: v1beta1.external.metrics.k8s.io spec: insecureSkipTLSVerify: true group: external.metrics.k8s.io groupPriorityMinimum: 100 versionPriority: 100 service: name: custom-metrics-stackdriver-adapter namespace: custom-metrics version: v1beta1 --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: external-metrics-reader rules: - apiGroups: - "external.metrics.k8s.io" resources: - "*" verbs: - list - get - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: external-metrics-reader roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: external-metrics-reader subjects: - kind: ServiceAccount name: horizontal-pod-autoscaler namespace: kube-system
Terapkan manifes contoh ke cluster Anda:
kubectl apply -f adapter_new_resource_model.yaml
Untuk memberikan izin adapter guna membaca metrik dari project, jalankan perintah berikut:
$ PROJECT_ID=PROJECT_ID $ PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") $ gcloud projects add-iam-policy-binding projects/PROJECT_ID \ --role roles/monitoring.viewer \ --member=principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/$PROJECT_ID.svc.id.goog/subject/ns/custom-metrics/sa/custom-metrics-stackdriver-adapter
Ganti
PROJECT_ID
dengan Trusted Cloud project ID Anda.Untuk setiap
InferencePool
, deploy satu HPA yang mirip dengan berikut ini:apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: INFERENCE_POOL_NAME namespace: INFERENCE_POOL_NAMESPACE spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: INFERENCE_POOL_NAME minReplicas: MIN_REPLICAS maxReplicas: MAX_REPLICAS metrics: - type: External external: metric: name: prometheus.googleapis.com|inference_pool_average_kv_cache_utilization|gauge selector: matchLabels: metric.labels.name: INFERENCE_POOL_NAME resource.labels.cluster: CLUSTER_NAME resource.labels.namespace: INFERENCE_POOL_NAMESPACE target: type: AverageValue averageValue: TARGET_VALUE
Ganti kode berikut:
INFERENCE_POOL_NAME
: namaInferencePool
.INFERENCE_POOL_NAMESPACE
: namespaceInferencePool
.CLUSTER_NAME
: nama cluster.MIN_REPLICAS
: ketersediaan minimumInferencePool
(kapasitas dasar). HPA mempertahankan jumlah replika ini saat penggunaan berada di bawah nilai minimum target HPA. Workload dengan ketersediaan tinggi harus menyetel nilai ini ke nilai yang lebih tinggi dari1
untuk memastikan ketersediaan berkelanjutan selama gangguan Pod.MAX_REPLICAS
: nilai yang membatasi jumlah akselerator yang harus ditetapkan ke workload yang dihosting diInferencePool
. HPA tidak akan meningkatkan jumlah replika di luar nilai ini. Selama waktu traffic puncak, pantau jumlah replika untuk memastikan nilai kolomMAX_REPLICAS
memberikan ruang yang cukup sehingga beban kerja dapat di-scaling untuk mempertahankan karakteristik performa beban kerja yang dipilih.TARGET_VALUE
: nilai yang merepresentasikan target yang dipilihKV-Cache Utilization
per server model. Nilai ini adalah angka antara 0-100 dan sangat bergantung pada server model, model, akselerator, dan karakteristik traffic masuk. Anda dapat menentukan nilai target ini secara eksperimental melalui pengujian beban dan memetakan grafik throughput versus latensi. Pilih kombinasi throughput dan latensi yang diinginkan dari grafik, dan gunakan nilaiKV-Cache Utilization
yang sesuai sebagai target HPA. Anda harus menyesuaikan dan memantau nilai ini dengan cermat untuk mencapai hasil performa harga yang diinginkan. Anda dapat menggunakan Rekomendasi Inferensi GKE untuk menentukan nilai ini secara otomatis.
Langkah berikutnya
- Baca tentang GKE Inference Gateway.
- Baca tentang men-deploy GKE Inference Gateway.
- Baca tentang operasi peluncuran GKE Inference Gateway.
- Baca tentang penayangan dengan GKE Inference Gateway.