

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

# Gerbang Inferensi untuk Inferensi Amazon SageMaker HyperPod
<a name="sagemaker-hyperpod-model-deployment-inference-gateway"></a>

Amazon SageMaker HyperPod Inference Gateway adalah lapisan Kubernetes-native perutean dan orkestrasi sadar model bahasa besar (LLM) untuk cluster di Amazon EKS. HyperPod Ini memeriksa permintaan inferensi, membaca nama model dari setiap permintaan, dan memilih pod yang melayani model berdasarkan beban GPU, sehingga lalu lintas untuk beberapa model dirutekan secara efisien melalui titik akhir gateway tunggal.

Gateway merutekan setiap permintaan melalui tiga lapisan. Body-Based Router (BBR), komponen bersama, membaca `model` bidang dari badan permintaan, menyelesaikan nama adaptor LoRa ke model dasarnya, dan menyetel dan header. `X-Gateway-Model-Name` `X-Gateway-Base-Model-Name` Gateway kemudian mencocokkan header tersebut ke HttpRoute dan meneruskan permintaan ke model yang `InferencePool` diminta. Di dalam pool tersebut, Endpoint Picker (EPP/scheduler) memilih pod yang melayani model dengan menilai kandidat pada metrik model-server seperti kedalaman antrian dan pemanfaatan cache KV, bersama dengan prefix-cache dan afinitas adaptor LoRa. Setiap entri yang Anda tentukan di bawah `spec.schedulers` menjalankan Endpoint Picker sendiri, jadi topik ini menggunakan istilah Endpoint Picker, EPP, dan scheduler secara bergantian.

Inference Gateway dibangun di atas [Operator HyperPod Inferensi](sagemaker-hyperpod-model-deployment.md) alih-alih menggantinya. Sementara operator terus mengatur penerapan model, gateway memperkenalkan lapisan LLM-aware perutean di depan pod yang melayani model. Gateway tidak bergantung pada server model atau lapisan orkestrasi tertentu, dan dikirimkan melalui add-on Inference HyperPod Amazon EKS.

Anda menentukan gateway dengan sumber daya `InferenceGatewayConfig` kustom. Satu `InferenceGatewayConfig` menjelaskan satu gateway: Body-Based Router bersama, penghentian TLS, otentikasi permintaan, dan satu penjadwal untuk setiap model yang dilayani gateway. Untuk skema lengkapnya, lihat[InferenceGatewayConfig Referensi CRD](#sagemaker-hyperpod-model-deployment-inference-gateway-crd).

**penting**  
Titik akhir yang dibuat oleh Inference Gateway tidak memiliki otentikasi atau otorisasi tingkat permintaan secara default. Kecuali Anda mengonfigurasinya `spec.auth.jwt``InferenceGatewayConfig`, gateway menerima permintaan apa pun yang mencapainya; akses hanya dibatasi oleh VPC dan kontrol jaringan Anda. Kami sangat menyarankan untuk mengaktifkan otentikasi JWT di setiap gateway. Untuk mengonfigurasi otentikasi, lihat [Prasyarat dan penyebaran](#sagemaker-hyperpod-model-deployment-inference-gateway-prereqs) dan `spec.auth` di bawah[bidang spesifikasi](#sagemaker-hyperpod-model-deployment-inference-gateway-spec).

## Prasyarat dan penyebaran
<a name="sagemaker-hyperpod-model-deployment-inference-gateway-prereqs"></a>

Inference Gateway dikirimkan sebagai bagian dari add-on HyperPod Inference Amazon EKS. Menginstal add-on membuat gateway tersedia, jadi tidak diperlukan instalasi terpisah. Anda kemudian mengaktifkan perutean gateway untuk model melalui `spec.inferenceGateway.enabled` bidang pada `InferenceEndpointConfig` sumber daya model. Untuk versi di mana kemampuan diperkenalkan, lihat[Catatan rilis Amazon SageMaker HyperPod Inference](sagemaker-hyperpod-inference-release-notes.md).

Sebelum Anda merutekan lalu lintas melalui gateway, verifikasi hal berikut:

Pod yang melayani model yang digunakan  
Setiap penjadwal merutekan ke pod yang melayani model yang dipilih oleh pemilih label. Terapkan model Anda dengan Operator HyperPod Inferensi, dan perhatikan label yang diterapkan pada pod mereka sehingga Anda dapat mereferensikannya dalam konfigurasi gateway. Untuk membuat daftar label pada pod model Anda, jalankan perintah berikut:  

```
kubectl get pods -n NAMESPACE --show-labels
```

Versi server model  
Inference Gateway membutuhkan VllM v0.9.2 atau yang lebih baru dan SGlang v0.3.5.post1 atau yang lebih baru. Pada versi VLLM sebelumnya, metrik cache KV diterbitkan dengan nama yang berbeda dari yang dibaca gateway. Permintaan masih dirutekan menggunakan sinyal yang tersisa, tetapi penggunaan cache KV diabaikan dan tidak ada kesalahan yang dilaporkan. Versi SGLang sebelumnya tidak mendukung `--enable-metrics` bendera dan penampung gagal dimulai. Mulai SGLang dengan flag ini sehingga gateway dapat membaca metrik yang dibutuhkan untuk keputusan perutean.

Add-on versi  
Inference Gateway tersedia dimulai dengan versi `v2.0.0-eksbuild.2` add-on SageMaker HyperPod Inference Amazon. Instal atau perbarui ke versi add-on terbaru yang tersedia. Jika klaster Anda tidak mengenali `InferenceGatewayConfig` sumber daya, add-on menjalankan versi sebelumnya yang tidak menyertakan gateway.

Dependensi cluster  
+ cert-manager harus diinstal di cluster untuk jalur TLS masalah otomatis, yang digunakan gateway saat `spec.tls` disetel tanpa file. `acmArn`
+  AWS Load Balancer Controller harus diinstal untuk tipe titik akhir Application Load Balancer.
+ Gateway menggunakan `hyperpod-inference-system` namespace.

Sertifikat TLS  
Untuk mengakhiri HTTPS di gateway, berikan ARN sertifikat ACM yang ada atau biarkan gateway mengeluarkan sertifikat secara otomatis. Auto-issue menggunakan cert-manager dan mengimpor sertifikat ke ACM. Alur ini mengharuskan peran eksekusi operator untuk memiliki`acm:ImportCertificate`,`acm:AddTagsToCertificate`,`acm:DescribeCertificate`, dan `acm:DeleteCertificate` izin melalui IRSA.

Minta otentikasi (disarankan)  
Kami sangat menyarankan untuk mengaktifkan otentikasi JWT di setiap gateway dengan menyetel pada. `spec.auth.jwt` `InferenceGatewayConfig` Ketika `spec.auth` dihilangkan, gateway tidak memiliki otentikasi tingkat permintaan dan akses hanya dibatasi oleh VPC dan kontrol jaringan Anda. Untuk mengaktifkan otentikasi JWT, siapkan hal-hal berikut sebelum Anda membuat`InferenceGatewayConfig`: URL penerbit OIDC, titik akhir HTTPS JWKS yang menerbitkan kunci penandatanganan penerbit, dan nilai audiens (atau klaim wajib) yang harus dibawa oleh token untuk gateway ini. Lihat `spec.auth` di bawah [bidang spesifikasi](#sagemaker-hyperpod-model-deployment-inference-gateway-spec) untuk skema lengkap.

### Mengatur peran IAM penerbit sertifikat
<a name="sagemaker-hyperpod-model-deployment-inference-gateway-prereqs-certrole"></a>

Saat gateway mengeluarkan sertifikat TLS secara otomatis, cert-manager menghasilkan sertifikat di cluster dan pengontrol gateway mengimpornya ke ACM. Karena impor adalah panggilan AWS API, pengontrol memerlukan AWS kredensil. Menyediakannya dengan membuat peran IAM yang diasumsikan oleh akun `inference-gateway-controller` layanan di `hyperpod-inference-system` namespace melalui peran IAM untuk akun layanan (IRSA).

**penting**  
Masalah otomatis TLS diaktifkan secara default, dan pengontrol gateway membaca peran ini saat dimulai. Buat peran sebelum Anda menginstal add-on.

Tetapkan variabel lingkungan berikut dan ambil penerbit OIDC untuk klaster Anda.

```
export CLUSTER=EKS_CLUSTER_NAME
export REGION=REGION
export ACCOUNT=AWS_ACCOUNT_ID
export ROLE_NAME=CERT_ISSUER_ROLE_NAME

export OIDC_ID=$(aws eks describe-cluster --name $CLUSTER --region $REGION \
  --query 'cluster.identity.oidc.issuer' --output text | sed 's|https://||')
```

Buat kebijakan kepercayaan yang memungkinkan akun layanan pengontrol gateway untuk mengambil peran.

```
cat > trust-policy.json <<EOF
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": {
      "Federated": "arn:aws:iam::${ACCOUNT}:oidc-provider/${OIDC_ID}"
    },
    "Action": "sts:AssumeRoleWithWebIdentity",
    "Condition": {
      "StringEquals": {
        "${OIDC_ID}:sub": "system:serviceaccount:hyperpod-inference-system:inference-gateway-controller",
        "${OIDC_ID}:aud": "sts.amazonaws.com"
      }
    }
  }]
}
EOF
```

Buat peran dan lampirkan kebijakan `AmazonSageMakerHyperPodInferenceGatewayAccess` terkelola. Kebijakan memberikan izin ACM yang diperlukan pengontrol untuk mengimpor, menandai, mendeskripsikan, dan menghapus sertifikat yang dibuatnya.

```
aws iam create-role --role-name $ROLE_NAME --assume-role-policy-document file://trust-policy.json
aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerHyperPodInferenceGatewayAccess
```

Berikan peran ARN ini seperti `inferenceGateway.serviceAccount.roleArn` saat Anda menginstal add-on.

**catatan**  
Jika peran sudah ada dari klaster lain, verifikasi bahwa kebijakan kepercayaannya mencakup penyedia OIDC untuk klaster ini.

### Instal add-on
<a name="sagemaker-hyperpod-model-deployment-inference-gateway-prereqs-install"></a>

Add-on HyperPod Inference menginstal Operator Inference dan Inference Gateway. Instal dengan perintah berikut. Untuk`inferenceGateway.serviceAccount.roleArn`, gunakan peran penerbit sertifikat yang Anda buat di bagian sebelumnya. Ganti nilai placeholder yang tersisa dengan peran dan bucket untuk akun Anda.

```
aws eks create-addon \
  --cluster-name $CLUSTER --region $REGION \
  --addon-name amazon-sagemaker-hyperpod-inference \
  --addon-version v2.0.0-eksbuild.2 \
  --configuration-values '{
    "executionRoleArn": "arn:aws:iam::<ACCOUNT>:role/<EXEC_ROLE>",
    "tlsCertificateS3Bucket": "<TLS_BUCKET>",
    "inferenceOperator": { "enabled": true },
    "inferenceGateway": {
      "enabled": true,
      "serviceAccount": { "roleArn": "arn:aws:iam::<ACCOUNT>:role/<CERT_ISSUER_ROLE_NAME>" }
    },
    "keda": { "enabled": true, "auth": { "aws": { "irsa": { "enabled": true, "roleArn": "arn:aws:iam::<ACCOUNT>:role/<KEDA_IRSA_ROLE>" } } } },
    "alb": { "enabled": true, "serviceAccount": { "create": true, "roleArn": "arn:aws:iam::<ACCOUNT>:role/<ALB_IRSA_ROLE>" } },
    "jumpstartGatedModelDownloadRoleArn": "arn:aws:iam::<ACCOUNT>:role/<JUMPSTART_ROLE>"
  }'
```

Jika add-on sudah diinstal pada cluster, ganti `create-addon` dengan `update-addon` dan tambahkan`--resolve-conflicts OVERWRITE`. Sisa perintah tidak berubah. `OVERWRITE`menerapkan nilai konfigurasi dalam perintah atas konfigurasi add-on yang ada.

Konfirmasikan bahwa pengontrol gateway sedang berjalan dan sumber daya gateway terdaftar.

```
kubectl rollout status deploy/inference-gateway-controller \
  -n hyperpod-inference-system --timeout=150s

kubectl get crd inferencegatewayconfigs.inference.sagemaker.aws.amazon.com

kubectl get gatewayclass inference-gateway
```

Konfirmasikan bahwa add-on itu sendiri aktif dan tidak melaporkan masalah kesehatan.

```
aws eks describe-addon \
  --cluster-name $CLUSTER --region $REGION \
  --addon-name amazon-sagemaker-hyperpod-inference \
  --query 'addon.{version:addonVersion,status:status,health:health.issues}'
```

## Integrasi dengan HyperPod Operator Inferensi
<a name="sagemaker-hyperpod-model-deployment-inference-gateway-operator-integration"></a>

Operator HyperPod Inferensi dan Gerbang Inferensi memiliki tanggung jawab yang berbeda. Operator memiliki penyebaran model, orkestrasi, dan kabel yang menempelkan model ke gateway. Gateway memiliki perutean permintaan dan menghasilkan sumber daya perutean untuk setiap penjadwal. Untuk informasi selengkapnya tentang penerapan model dengan operator, lihat[Menerapkan model di Amazon SageMaker HyperPod](sagemaker-hyperpod-model-deployment.md).

HyperPod Operator Inferensi  
Rekonsiliasi sumber daya kustom model `InferenceEndpointConfig` dan `JumpStartModel` (grup`inference.sagemaker.aws.amazon.com`, versi`v1`). Operator membuat model Deployment and Service, Application Load Balancer, penskalaan otomatis KEDA, sertifikat manajer sertifikat, dan pendaftaran titik akhir AI. SageMaker Ketika gateway diaktifkan untuk model, operator juga menghubungkan model itu ke gateway.

Gerbang Inferensi  
Memiliki routing permintaan, dari Body-Based Router melalui gateway dan HttpRoute ke Endpoint Picker, dan menghasilkan sumber daya routing hilir untuk setiap penjadwal: konfigurasi, Endpoint Picker, HttpRoute, dan. `InferencePool` `EnvoyExtensionPolicy`

**catatan**  
Sumber daya kustom model operator menggunakan versi`v1`, sedangkan `InferenceGatewayConfig` sumber daya gateway menggunakan versi`v1alpha1`. Keduanya termasuk dalam `inference.sagemaker.aws.amazon.com` kelompok.

Anda melampirkan model ke gateway melalui operator, pada sumber daya model `InferenceEndpointConfig` (atau`JumpStartModel`), menggunakan `spec.inferenceGateway` bidang:

`spec.inferenceGateway.enabled`(Opsional, Boolean)  
Apakah model ini dilampirkan ke gateway. Default: `false`.

`spec.inferenceGateway.name`(Opsional, String)  
Nama sumber `InferenceGatewayConfig` daya untuk dilampirkan. Model yang berbagi nama dan namespace berbagi satu gateway. Ketika bidang ini kosong, operator menghasilkan nama formulir`inf-igw-<uuid>`.

Cuplikan berikut menunjukkan `inferenceGateway` keikutsertaan pada sumber daya. `InferenceEndpointConfig`

```
apiVersion: inference.sagemaker.aws.amazon.com/v1
kind: InferenceEndpointConfig
metadata:
  name: my-model
spec:
  # ... model deployment fields ...
  inferenceGateway:
    enabled: true
    name: my-gateway        # Optional. When empty, the operator generates inf-igw-<uuid>.
```

Operator mencerminkan status lampiran pada sumber daya model di bawah`status.inferenceGateway`, yang melaporkan `State` dari`Pending`,`Ready`, atau`Failed`, dan `Name` terlampir`InferenceGatewayConfig`. Anda tidak dapat mengatur `inferenceGateway.enabled` bersama dengan `intelligentRoutingSpec.enabled` model yang sama; bidang-bidang ini saling eksklusif.

Ketika gateway diaktifkan untuk model, operator membuat atau memperbarui `InferenceGatewayConfig` sumber daya tunggal dan menggabungkan entri untuk model ke dalam `spec.schedulers` daftarnya. Operator menetapkan scheduler`name`,, `modelName``targetPort`, dan`modelSelector`, dan default `scheduler` ke `llm-d` saat pertama kali membuat entri. Pada rekonsiliasi selanjutnya, operator mempertahankan nilai-nilai yang disediakan pelanggan seperti,, dan. `scheduler` `weights` `loraAdapters` Body-BasedRouter diaktifkan secara otomatis ketika ada lebih dari satu penjadwal.

Operator tidak menghapus `InferenceGatewayConfig` sumber daya atau sumber daya routing hilir. Saat Anda menonaktifkan gateway untuk model atau menghapus model, operator hanya menghapus entri penjadwal model tersebut. Pengontrol gateway memiliki pembersihan sumber daya perutean.

Anda dapat menulis `InferenceGatewayConfig` dalam dua cara, dan dua jalur hidup berdampingan pada sumber daya yang sama:
+ Aktifkan gateway per model melalui operator, dengan menyetel `spec.inferenceGateway.enabled` pada model`InferenceEndpointConfig`. Operator membuat dan memelihara entri penjadwal untuk model.
+ Penulis `InferenceGatewayConfig` sumber daya secara langsung, seperti yang ditunjukkan pada[Contoh](#sagemaker-hyperpod-model-deployment-inference-gateway-examples).

Komponen gateway dan `InferenceGatewayConfig` CRD harus diinstal melalui add-on HyperPod Inference Amazon EKS sebelum sumber daya model dengan gateway diaktifkan dapat direkonsiliasi. Untuk instalasi add-on operator, lihat[Menginstal Operator Inferensi dengan add-on EKS](sagemaker-hyperpod-model-deployment-setup.md#sagemaker-hyperpod-model-deployment-setup-install-inference-operator-addon). Untuk menerapkan pod yang melayani model yang dirutekan oleh penjadwal, lihat. [Menyebarkan model pondasi dan model yang disesuaikan khusus](sagemaker-hyperpod-model-deployment-deploy.md)

**catatan**  
Menjaga kesehatan Operator SageMaker HyperPod Inferensi adalah tanggung jawab bersama antara AWS dan pelanggan. AWS bertanggung jawab untuk memberikan dan memelihara Operator SageMaker HyperPod Inferensi. Setelah instalasi, pelanggan bertanggung jawab untuk memantau kesehatan operasional operator dalam cluster mereka.

## InferenceGatewayConfig Referensi CRD
<a name="sagemaker-hyperpod-model-deployment-inference-gateway-crd"></a>

Anda mengonfigurasi Inference Gateway dengan satu sumber daya `InferenceGatewayConfig` kustom. Sumber daya adalah singleton untuk gateway tertentu: ia memegang konfigurasi Body-Based Router bersama dan daftar penjadwal per-model. Pengontrol menghasilkan sumber daya yang mendasari`InferencePool`, Endpoint Picker, HttpRoute, dan `EnvoyExtensionPolicy` sumber daya untuk setiap penjadwal; Anda hanya membuat sumber daya. `InferenceGatewayConfig`


**InferenceGatewayConfig metadata sumber daya**  

| Properti | Nilai | 
| --- | --- | 
| Jenis | InferenceGatewayConfig | 
| Kelompok | inference.sagemaker.aws.amazon.com | 
| Versi | v1alpha1 | 
| Jamak | inferencegatewayconfigs | 
| Nama pendek | igwc | 
| Lingkup | Ruang nama | 
| Subsumber daya status | /status | 

### bidang spesifikasi
<a name="sagemaker-hyperpod-model-deployment-inference-gateway-spec"></a>

`spec`Bidang `InferenceGatewayConfig` sumber daya berisi konfigurasi Body-Based Router bersama, pengaturan TLS, daftar penjadwal yang diperlukan, dan observabilitas opsional dan pengaturan pod-default.

`bbr` (Wajib)  
Konfigurasi untuk Body-Based Router bersama. Berisi bidang-bidang berikut:    
`bbr.enabled`(Diperlukan, Boolean)  
Apakah Body-Based router diaktifkan. Router harus diaktifkan ketika lebih dari satu penjadwal dikonfigurasi.  
`bbr.replicas`(Opsional, Integer)  
Jumlah replika Body-Based Router. Minimal:`1`. Default: `2`.  
`bbr.defaultBackend` (Opsional)  
Backend yang menerima permintaan bahwa router tidak dapat cocok dengan penjadwal. Berisi `name` string dan `port` integer (default:`8000`).  
`bbr.maxRequestBodyBytes`(Opsional, Integer)  
Ukuran badan permintaan maksimum, dalam byte, yang disangga router untuk membaca bidang. `model` Default dan maksimum: `268435456` (256 MiB).

`tls`  
Konfigurasi penghentian HTTPS untuk gateway. Berisi `acmArn` bidang yang mereferensikan sertifikat ACM yang ada. Jika `tls` disetel dengan kosong`acmArn`, gateway akan mengeluarkan sertifikat secara otomatis dengan cert-manager dan mengimpornya ke ACM.

`auth` (Opsional, Direkomendasikan)  
Minta konfigurasi otentikasi. Kami sangat menyarankan untuk mengaktifkan otentikasi token pembawa JWT di setiap gateway; ketika dihilangkan, gateway tidak memiliki otentikasi tingkat permintaan. Rute pemeriksaan kesehatan penyeimbang beban tetap tidak diautentikasi sehingga pemeriksaan kesehatan dapat berhasil tanpa token.  
Berisi `auth.jwt.provider` dengan bidang berikut:    
`name`(Diperlukan, String)  
Nama unik untuk penyedia.  
`issuer`(Diperlukan, String)  
URL penerbit OIDC (). `https://...` Gateway memvalidasi `iss` klaim token terhadap nilai ini.  
`remoteJWKS.uri`(Diperlukan, String)  
Titik akhir HTTPS JWKS digunakan untuk memverifikasi tanda tangan JWT.  
`audiences`(Opsional, Daftar)  
Nilai `aud` klaim yang diterima (hingga 8). Setidaknya satu dari `audiences` atau `requiredClaims` harus ditetapkan.  
`requiredClaims`(Opsional, Daftar)  
Claim-based otorisasi (hingga 16 entri). Setiap entri memiliki`name`, `valueType` (`String`atau`StringArray`), dan `values` (1-128 entri, masing-masing 1-1024 karakter). Saat disetel, gateway menolak permintaan secara default dan hanya menerima token yang nilai klaimnya cocok.

`observability` (Opsional)  
Konfigurasi observabilitas. Berisi`metrics.enabled`, yang mengontrol OpenTelemetry sespan metrik. Metrik diaktifkan secara default.

`podDefaults` (Opsional)  
Pengaturan pod default diterapkan pada pod Body-Based Router dan Endpoint Picker. Mendukung `resources``nodeSelector`,`tolerations`,`affinity`,,`labels`,`annotations`,`env`, dan`envFrom`.

`schedulers`(Diperlukan, Daftar)  
Daftar konfigurasi penjadwal per-model, yang dikunci oleh. `name` Setidaknya satu penjadwal diperlukan, dan Anda dapat menentukan hingga 100. Setiap entri adalah`SchedulerSpec`, dijelaskan dalam[SchedulerSpec bidang](#sagemaker-hyperpod-model-deployment-inference-gateway-scheduler).

### SchedulerSpec bidang
<a name="sagemaker-hyperpod-model-deployment-inference-gateway-scheduler"></a>

Setiap entri dalam `spec.schedulers` mengonfigurasi pemilihan routing dan endpoint untuk satu model. Penjadwal memberi nama yang dihasilkan`InferencePool`, Endpoint Picker, HttpRoute, dan sumber daya. `EnvoyExtensionPolicy`

`name`(Diperlukan, String)  
Nama penjadwal. Digunakan untuk memberi nama yang dihasilkan`InferencePool`, Endpoint Picker, HttpRoute, dan sumber daya. `EnvoyExtensionPolicy` Panjang maksimum: 63 karakter.

`modelSelector` (Wajib)  
Selector label Kubernetes yang memilih pod yang melayani model yang menjadi rute scheduler ini.

`modelName`(Diperlukan, String)  
Nama model cocok dengan `model` bidang di badan permintaan dan digunakan sebagai pencocokan header HttpRoute. Harus unik di seluruh penjadwal. Panjang maksimum: 253 karakter.

`targetPort`(Opsional, Integer)  
Port pada pod yang melayani model yang menerima lalu lintas yang diteruskan. Rentang: 1—65535. Default: `8000`.

`appProtocol`(Opsional, String)  
Protokol aplikasi yang digunakan untuk menjangkau pod yang melayani model. Nilai-nilai yang valid: `http`, `kubernetes.io/h2c`. Default: `http`.

`scheduler`(Opsional, String)  
Jenis scheduler, yang memilih gambar Endpoint Picker. Nilai-nilai yang valid: `llm-d`, `epp`. Default: `llm-d`.

`engineType`(Opsional, String)  
Mesin inferensi berjalan di pod yang melayani model. Nilai ini memilih kumpulan nama metrik Prometheus yang digores oleh Endpoint Picker. Nilai-nilai yang valid: `vllm`, `sglang`. Default: `vllm`.

`weights` (Opsional)  
Bobot penilaian yang digunakan Endpoint Picker untuk menentukan peringkat pod kandidat. Semua bobot adalah bilangan bulat non-negatif. Saling eksklusif dengan`configMapRef`. Bobot yang didukung:    
`queue`  
Berat untuk kedalaman antrian permintaan yang tertunda. Default: `2`.  
`kvCache`  
Berat untuk pemanfaatan cache KV. Default: `2`.  
`prefix`  
Berat untuk afinitas awalan-cache. Default: `3`.  
`lru`  
Berat untuk penilaian yang paling jarang digunakan. Hanya berlaku bila `scheduler` ada`llm-d`.  
`loraAffinity`  
Berat untuk afinitas adaptor LoRa.  
`runningRequests`  
Bobot untuk jumlah permintaan yang berjalan pada sebuah pod.  
`predictedLatency`  
Bobot untuk latensi permintaan yang diprediksi.

`configMapRef` (Opsional)  
Referensi ke ConfigMap yang memasok konfigurasi Endpoint Picker kustom, sebagai alternatif. `weights` Berisi wajib `name` dan a `key` (default:`default-plugins.yaml`). Saling eksklusif dengan`weights`.

`replicas`(Opsional, Integer)  
Jumlah replika Endpoint Picker untuk scheduler ini. Minimal:`1`. Default: `2`. Ketika `replicas` lebih besar dari 1, Endpoint Picker berjalan dalam ketersediaan tinggi dengan pemilihan pemimpin.

`env`dan `envFrom` (Opsional)  
Variabel lingkungan ditambahkan ke wadah Endpoint Picker scheduler ini.

`loraAdapters`(Opsional, Daftar)  
Nama adaptor LoRa disajikan di belakang model penjadwal ini. Maksimum: 50 item, masing-masing hingga 253 karakter.

`routeTimeout`(Opsional, String)  
Batas waktu permintaan HttpRoute, sebagai durasi API Gateway (misalnya, `30s` atau). `5m` Setel `0s` untuk menonaktifkan batas waktu.

`logLevel`(Opsional, Integer)  
Verbositas log Endpoint Picker. Rentang: 0—5.

### Aturan validasi
<a name="sagemaker-hyperpod-model-deployment-inference-gateway-validation"></a>

Sumber `InferenceGatewayConfig` daya memberlakukan aturan validasi berikut. Sumber daya yang melanggar salah satu aturan ini ditolak.
+  Body-Based Router harus diaktifkan (`bbr.enabled: true`) ketika lebih dari satu penjadwal dikonfigurasi.
+ `modelName`harus unik di semua penjadwal.
+ Dalam penjadwal, `weights` dan `configMapRef` saling eksklusif.
+ `weights.lru`Bobot hanya berlaku ketika `scheduler` tipe penjadwal adalah`llm-d`.

### bidang status
<a name="sagemaker-hyperpod-model-deployment-inference-gateway-status"></a>

Pengontrol melaporkan status gateway yang diamati di `status` subsumber daya.

`conditions`  
Kondisi Kubernetes standar yang menjelaskan keseluruhan status konfigurasi gateway.

`schedulers`  
Per-scheduler status. Setiap entri berisi:    
`name`  
Nama penjadwal.  
`conditions`  
Kondisi yang menggambarkan keadaan penjadwal ini.  
`currentScheduler`  
Jenis penjadwal saat ini berlaku untuk entri ini.  
`rolloutState`  
Status peluncuran penjadwal. Salah satu`Pending`,`Progressing`,`Available`, atau`Degraded`.

`observedGeneration`  
Generasi sumber daya yang paling baru direkonsiliasi oleh controller.

`tls`  
Status TLS, dilaporkan dalam mode masalah otomatis saja. Berisi`acmArn`,`issuedAt`, dan`dnsNames`.

## Izin Kubernetes RBAC
<a name="sagemaker-hyperpod-model-deployment-inference-gateway-rbac"></a>

Inference Gateway berjalan sebagai pengontrol tunggal di bawah akun `inference-gateway-controller` layanan Kubernetes di namespace. `hyperpod-inference-system` Body-Based Router, Endpoint Pickers per-scheduler, controller Gateway, dan `InferenceGatewayConfig` reconciler semuanya berjalan di bawah controller yang satu ini. Izin dengan cakupan klaster diberikan oleh nama dan pencocokan. `ClusterRole` `sagemaker-inference-gateway-controller-supplement` `ClusterRoleBinding` Bersama-sama mereka melengkapi akun layanan dan izin yang sudah disediakan bagan Gateway yang dibundel. Izin ini tercakup dan paling tidak memiliki hak istimewa, dan pengontrol tidak berjalan sebagai administrator klaster.

Tabel berikut mencantumkan izin cakupan cluster controller, dikelompokkan berdasarkan tujuan. Dalam tabel ini, *akses penuh* berarti`create`,`get`,`list`,`watch`, `update``patch`, dan `delete` kata kerja.


**Izin pengontrol Inferensi Gateway**  

| Grup API | Sumber daya | Kata kerja | Tujuan | 
| --- | --- | --- | --- | 
| inference.sagemaker.aws.amazon.com | inferencegatewayconfigs, termasuk status dan finalizers subsumber dayanya | get, listwatch,update,, dan patch untukinferencegatewayconfigs; getupdate, dan patch update untuk itustatus; finalizers | Rekonsiliasi InferenceGatewayConfig sumber daya, tulis statusnya, dan kelola finalisernya. | 
| gateway.networking.k8s.io | httproutes, gateways, gatewayclasses | Akses penuh untuk httproutes dangateways;get,list,watch,create, dan patch untuk gatewayclasses | Perutean permintaan program melalui API Gateway. | 
| inference.networking.k8s.io | inferencepools | Akses penuh | Buat backend routing untuk setiap penjadwal. | 
| inference.networking.x-k8s.io | inferencepools, inferenceobjectives, inferencemodelrewrites | get, list, watch | Baca maksud perutean untuk pemilihan titik akhir. | 
| gateway.envoyproxy.io | envoyextensionpolicies, envoyproxies, httproutefilters, clienttrafficpolicies, securitypolicies | Akses penuh | Konfigurasikan bidang data gateway dan telemetri-nya. | 
| Inti ("") | configmaps, services, serviceaccounts, events, secrets, pods | Akses penuh untuk configmapsservices,, create danserviceaccounts; dan patch untukevents; getlist,, secrets dan watch pods | Kelola beban kerja yang dihasilkan dan baca perutean dan status penyajian. | 
| apps | deployments | Akses penuh | Kelola penerapan Body-Based Router dan Endpoint Picker. | 
| rbac.authorization.k8s.io | roles, rolebindings | Akses penuh | Buat Pemilih Titik Akhir per-scheduler. Role | 
| discovery.k8s.io, coordination.k8s.io | endpointslices; leases | get,list, dan watch untukendpointslices; getlist,watch,create,update, dan patch untuk leases | Penemuan titik akhir dan pemilihan pemimpin Endpoint Picker. | 
| networking.k8s.io | ingresses, networkpolicies | Akses penuh | Menyediakan jalur Application Load Balancer melalui Load AWS Balancer Controller. | 
| cert-manager.io | issuers, certificates (denganget,list, dan watch pada intisecrets) | Akses penuh | Auto-issue sertifikat TLS bila spec.tls disetel tanpa. acmArn | 
| apiextensions.k8s.io | customresourcedefinitions | create; danget,update,patch, dan delete dibatasi oleh nama sumber daya ke CRD API Gateway tertentu yang dikelola gateway | Instal definisi sumber daya khusus yang bergantung pada gateway. | 

**catatan**  
`create`Kata kerja on tidak `customresourcedefinitions` terbatas pada nama sumber daya tertentu. Pengontrol menginstal definisi sumber daya kustom Gateway API yang bergantung padanya dengan menerapkannya saat startup dari image kontainernya sendiri, karena ukuran gabungannya melebihi batas muatan add-on Amazon EKS. Kubernetes tidak mengizinkan `create` kata kerja dibatasi pada sumber daya bernama, jadi izin ini harus luas. Semua operasi lain pada definisi sumber daya kustom— `get``update`,`patch`,, dan `delete` —dibatasi pada definisi sumber daya khusus tertentu yang dikelola gateway. Izin ini memungkinkan mendefinisikan hanya jenis CRD tersebut; itu tidak memberikan akses ke data sumber daya kustom apa pun.

Pengontrol juga membuat peran namespaced berikut saat runtime, tergantung pada konfigurasi gateway Anda:
+ *Body-Based Router* —Ruang nama `Role` yang memberikan`get`,, dan `watch` seterusnya`list`, yang dibaca router untuk `configmaps` menyelesaikan adaptor LoRa. Ketika router berjalan di beberapa ruang nama, ini adalah sebagai `ClusterRole` gantinya.
+ *Endpoint Picker* —Namespace yang memberikan akses baca ke`Role`. `pods` Ketika Endpoint Picker berjalan dengan lebih dari satu replika, pengontrol juga membuat pemilihan pemimpin `Role` untuk dan. `leases` `events` Saat metrik Prometheus diaktifkan, pengontrol membuat `ClusterRole` opsional yang `create` memberikan `tokenreviews` akses aktif dan baca ke titik akhir. `subjectaccessreviews` `/metrics`

**catatan**  
Saat Anda mengaktifkan gateway melalui Operator HyperPod Inferensi, pengontrol operator sendiri memiliki izin untuk membuat dan memperbarui `InferenceGatewayConfig` sumber daya. Untuk bagaimana operator menghubungkan model ke gateway, lihat[Integrasi dengan HyperPod Operator Inferensi](#sagemaker-hyperpod-model-deployment-inference-gateway-operator-integration).

Beberapa izin ini hanya berlaku ketika fitur yang sesuai diaktifkan.

## Observabilitas
<a name="sagemaker-hyperpod-model-deployment-inference-gateway-observability"></a>

Inference Gateway memancarkan metrik Prometheus dari setiap komponen gateway. Baik Body-Based Router dan masing-masing Endpoint Picker mengekspos endpoint Prometheus standar pada pod mereka. `/metrics` Body-Based Pod router berjalan di `hyperpod-inference-system` namespace; Pod Endpoint Picker berjalan di namespace yang sama dengan. `InferenceGatewayConfig` Metrik mencakup penghitung dan durasi permintaan per model, latensi penjadwalan dan waktu eksekusi per plugin di dalam Endpoint Picker, dan metrik kumpulan agregat seperti pemanfaatan cache KV rata-rata dan kedalaman antrian. Model-server Metrik pod (misalnya, dari VllM atau SGLang) dipancarkan oleh server model itu sendiri; Endpoint Picker menggoresnya untuk mencetak pod kandidat.

`spec.observability.metrics.enabled`Kapan `true` (default), pengontrol gateway menyuntikkan sespan OpenTelemetry Kolektor ke setiap pod Body-Based Router dan Endpoint Picker. Sidecar meneruskan metrik ini ke tumpukan observabilitas HyperPod inferensi, di mana dasbor Grafana bawaan memunculkannya di samping metrik model-server dan cluster. Untuk detail penyiapan dan dasbor, lihat[Menerapkan observabilitas inferensi pada cluster HyperPod](sagemaker-hyperpod-model-deployment-observability.md). Atur bidang `false` untuk melewati injeksi sespan. Untuk referensi bidang, lihat `observability` di bawah[bidang spesifikasi](#sagemaker-hyperpod-model-deployment-inference-gateway-spec).

*Untuk melihat metrik gateway di Grafana Terkelola Amazon, buka folder Dasbor *Inferensi dan pilih dasbor Inference* Gateway.* Dasbor melaporkan ketersediaan di seluruh gateway, tingkat permintaan, dan latensi ujung ke ujung, throughput per penjadwal, latensi, dan kesalahan untuk setiap model, dan tingkat di mana Router menyelesaikan nama model dari badan permintaan. Body-Based 

## Contoh
<a name="sagemaker-hyperpod-model-deployment-inference-gateway-examples"></a>

Contoh berikut menunjukkan `InferenceGatewayConfig` konfigurasi umum dan cara memanggil gateway.

### Konfigurasi multi-model minimal
<a name="sagemaker-hyperpod-model-deployment-inference-gateway-examples-multimodel"></a>

Contoh ini merutekan ke penjadwal llm-d dengan TLS yang dikeluarkan secara otomatis. Karena `tls` disetel ke objek kosong, gateway mengeluarkan sertifikat secara otomatis dan mengimpornya ke ACM.

```
apiVersion: inference.sagemaker.aws.amazon.com/v1alpha1
kind: InferenceGatewayConfig
metadata:
  name: inference-gateway-demo
  namespace: inference-gateway
spec:
  bbr:
    enabled: true
  tls: {}                       # Auto-issue a certificate via cert-manager and import to ACM.
  schedulers:
    - name: llama
      modelName: "meta-llama/Llama-3.2-1B-Instruct"
      modelSelector:
        matchLabels:
          app: vllm-llama
      targetPort: 8000
      scheduler: llm-d
```

### Penjadwal SGlang dengan bobot eksplisit
<a name="sagemaker-hyperpod-model-deployment-inference-gateway-examples-sglang"></a>

Contoh ini menggunakan tipe `epp` scheduler dengan `sglang` engine dan menetapkan bobot penilaian Endpoint Picker eksplisit.

```
spec:
  bbr:
    enabled: true
  schedulers:
    - name: qwen7b
      modelName: "Qwen/Qwen2.5-7B-Instruct"
      modelSelector:
        matchLabels:
          app: sglang-qwen7b
      targetPort: 8000
      scheduler: epp
      engineType: sglang
      logLevel: 4
      weights:
        kvCache: 2
        prefix: 3
        runningRequests: 2
```

### Adaptor LoRa ConfigMap
<a name="sagemaker-hyperpod-model-deployment-inference-gateway-examples-lora"></a>

 Body-Based Router menemukan adaptor LoRa dan model dasarnya dari ConfigMap label untuk manajemen BBR. Router menggunakan pemetaan ini untuk menyelesaikan nama adaptor di badan permintaan ke model dasarnya.

```
apiVersion: v1
kind: ConfigMap
metadata:
  name: deepseek-adapters
  labels:
    inference.networking.k8s.io/bbr-managed: "true"
data:
  baseModel: deepseek/vllm-deepseek-r1
  adapters: |
    - ski-resorts
    - movie-critique
```

### Memanggil gateway
<a name="sagemaker-hyperpod-model-deployment-inference-gateway-examples-invoke"></a>

Gateway melayani titik akhir OpenAI-compatible inferensi. Ini adalah kontrak pemanggilan runtime untuk mengirim permintaan inferensi melalui gateway; ini bukan operasi API. AWS Kirim permintaan ke titik akhir gateway dengan `model` bidang yang disetel ke `modelName` penjadwal target. Body-Based Router membaca bidang ini untuk merutekan permintaan.

```
curl https://your-gateway-endpoint/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "meta-llama/Llama-3.1-8B-Instruct",
    "messages": [
      {"role": "user", "content": "Hello"}
    ]
  }'
```