← Semua pembelajaran / AWS untuk AI Engineer
Fase 3 · Bedrock Dasar

Provisioned Throughput

Provisioned Throughput menukar bayar-per-token dengan bayar-per-jam. Ia menjamin kapasitas, tapi menagih walaupun tidak dipakai.

Intisari

  • Ditagih per jam per model unit (MU), bukan per token.
  • Satu MU menentukan berapa token masuk dan keluar yang bisa diproses per menit.
  • Komitmen: tanpa komitmen (bisa dihapus kapan saja), 1 bulan, atau 6 bulan — makin panjang makin murah per jam.
  • Wajib kalau kamu memakai model yang sudah dikustomisasi.
  • Penagihan berlanjut sampai kamu menghapusnya — bukan sampai kamu berhenti memakainya.

Kapan ini masuk akal

SituasiPilihan
Trafik naik-turun, prototipe, aplikasi internalOn-demand
Beban stabil dan besar sepanjang hariProvisioned Throughput mungkin lebih murah — hitung dulu
Butuh jaminan kapasitas (SLA internal)Provisioned Throughput
Memakai model kustom hasil fine-tuningProvisioned Throughput — tidak ada pilihan lain
Butuh perutean lintas regionOn-demand + inference profile — PT tidak mendukungnya

Yang menentukan harga

  1. Model yang dipilih. Untuk model kustom, harganya mengikuti model dasarnya.
  2. Jumlah model unit. Satu MU menetapkan berapa token masukan yang bisa diproses dan berapa token keluaran yang bisa dihasilkan per menit.
  3. Durasi komitmen. Tanpa komitmen paling mahal per jam tapi paling luwes; 1 bulan dan 6 bulan makin murah, tapi tidak bisa dihapus sebelum masanya habis.

Jebakan biaya yang paling mahal di seluruh roadmap ini. Provisioned Throughput ditagih per jam sejak dibuat sampai dihapus, terlepas dari ada tidaknya permintaan. Membuatnya untuk "mencoba sebentar" lalu lupa menghapusnya berarti tagihan berjalan 24 jam sehari. Kalau kamu belum benar-benar butuh, jangan buat.

Alurnya

kelola = boto3.client("bedrock", region_name="us-east-1")

pt = kelola.create_provisioned_model_throughput(
    modelId="anthropic.claude-3-5-haiku-20241022-v1:0",
    provisionedModelName="chat-produksi",
    modelUnits=1,
    commitmentDuration="OneMonth",   # atau hilangkan untuk tanpa komitmen
)

# Setelah aktif, ARN-nya dipakai sebagai modelId saat memanggil
resp = runtime.converse(
    modelId=pt["provisionedModelArn"],
    messages=[{"role": "user", "content": [{"text": "halo"}]}],
)

Perhatikan: yang berubah cuma modelId — ia berisi ARN provisioned model, bukan ID model biasa. Sisa kodenya identik, jadi berpindah antara on-demand dan PT tetap cuma soal konfigurasi.

Cara memutuskan

Hitung titik impasnya sebelum berkomitmen, bukan sesudah:

  1. Jalankan on-demand dulu selama beberapa minggu.
  2. Kumpulkan usage.inputTokens dan usage.outputTokens dari log — data ini kamu punya kalau sejak awal mencatatnya seperti di materi Converse API.
  3. Hitung biaya on-demand bulanan nyata.
  4. Bandingkan dengan biaya per jam PT × 730 jam.
  5. Perhitungkan juga puncak trafikmu: PT dengan MU terlalu sedikit tetap akan throttle.
Cara menurunkan biaya, urut dari yang paling murah dicoba
1. Pilih model yang lebih kecil untuk tugas yang sederhana (Fase 7)
2. Prompt caching untuk prefiks yang berulang
3. Batch inference untuk pekerjaan yang tidak buru-buru
4. Turunkan maxTokens dan rapikan prompt
5. Baru pertimbangkan Provisioned Throughput

Latihan: jangan membuat Provisioned Throughput. Sebagai gantinya, ambil log usage dari latihan-latihan sebelumnya, hitung proyeksi biaya on-demand bulanan kalau aplikasimu melayani 10.000 percakapan, dan tuliskan pada tingkat trafik berapa PT baru masuk akal. Kemampuan menghitung ini yang diuji di Domain 4.

Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.