Amazon Bedrock ช่วยให้นักพัฒนาสามารถทำแคช (cache) บางส่วนของพรอมต์ (prompt) ได้แล้ว ซึ่งจะช่วยลดค่าใช้จ่ายในการใช้งานโทเคน (token) ได้มากถึง 90% และลดความหน่วงในการตอบสนอง (latency) ได้สูงสุดถึง 85% สำหรับแอปพลิเคชันที่มีการใช้ส่วนต้นของพรอมต์ (prompt prefix) แบบคงที่ซ้ำๆ

ทำไมการเปลี่ยนแปลงนี้จึงสำคัญ

การรันโมเดลภาษาขนาดใหญ่ (Large Language Models) ตามความต้องการนั้นมีค่าใช้จ่ายทุกครั้งที่มีการส่งโทเคนไปยังโมเดล แชทบอต (Chatbots), ผู้ช่วยเขียนโค้ด (code assistants) และเครื่องมือค้นหาเอกสาร มักจะส่งคำสั่งระบบ (system instructions) หรือข้อมูลอ้างอิงเดิมซ้ำๆ ซึ่งทำให้ค่าใช้จ่ายสูงขึ้นและทำให้การตอบสนองช้าลง

การทำงานของ prompt caching เป็นอย่างไร

Bedrock ได้เพิ่มแฟล็ก (flag) "cacheable" ซึ่งนักพัฒนาสามารถแนบไปกับส่วนใดก็ได้ของพรอมต์ โดยปกติจะเป็นคำสั่งระดับระบบ (system-level instructions), เอกสารพื้นหลังที่มีความยาว หรือการกำหนดค่าเครื่องมือ (tool definitions) ที่ไม่มีการเปลี่ยนแปลงระหว่างเซสชัน เมื่อมีคำขอเข้ามา Bedrock จะตรวจสอบว่าส่วนที่ทำเครื่องหมายไว้ตรงกับข้อมูลที่จัดเก็บไว้หรือไม่ หากตรงกัน บริการจะข้ามขั้นตอนการเข้ารหัสใหม่ (re-encoding) และการรันส่วนนั้นผ่านโมเดลซ้ำ แต่จะดึงข้อมูลที่ประมวลผลไว้ล่วงหน้าจากแคชมาใช้แทน

ตัวเลขที่น่าสนใจ

  • ค่าใช้จ่ายโทเคนขาเข้า (Input-token cost): ลดลงสูงสุด 90% เนื่องจากส่วนต้นที่ทำแคชไว้จะไม่ต้องใช้โทเคนในการเรียกใช้งานแต่ละครั้งอีกต่อไป
  • ความหน่วง (Latency): เร็วขึ้นสูงสุด 85% เนื่องจากไม่ต้องผ่านกระบวนการประมวลผลหนักๆ ของโมเดลในส่วนที่เป็นข้อมูลคงที่

สถานการณ์ที่เหมาะสมที่สุด

ฟีเจอร์นี้จะโดดเด่นมากเมื่อพรอมต์ประกอบด้วยบล็อกข้อมูลขนาดใหญ่ที่ไม่เปลี่ยนแปลง ตามด้วยคำถามของผู้ใช้ที่สั้นและเปลี่ยนแปลงไปมา รูปแบบที่พบบ่อย ได้แก่:

  • ไปป์ไลน์ Retrieval-augmented generation (RAG) ที่มีการเพิ่มเอกสารที่ดึงมาไว้ที่ส่วนหน้าของทุกคำถาม
  • บอตสนับสนุนลูกค้า (Customer-support bots) ที่มักจะเริ่มต้นด้วยข้อความนโยบายหรือข้อความกำหนดโทนเสียงแบบเดิมเสมอ
  • ผู้ช่วยเขียนโค้ดที่โหลดการกำหนดค่าเครื่องมือทางภาษาแบบคงที่ก่อนที่จะใส่โค้ดส่วนของนักพัฒนา

สิ่งที่นักพัฒนาต้องปรับเปลี่ยน

นักพัฒนาต้องจัดลำดับพรอมต์ใหม่เพื่อให้เนื้อหาที่คงที่อยู่ตอนต้นสุดและต้องเหมือนเดิมทุกประการ (byte-for-byte) ในทุกการเรียกใช้งาน ส่วนข้อมูลนำเข้าของผู้ใช้ที่เปลี่ยนแปลงได้จะตามหลังส่วนต้นที่ทำแคชไว้ ไม่จำเป็นต้องเปลี่ยนโมเดล โดยใช้ Bedrock endpoints เดิมในการจัดการคำขอ

ใครได้ประโยชน์ และใครที่ต้องระวัง

ข้อดีนี้จะใช้ได้กับเวิร์กโหลด (workloads) ที่ส่วนต้นของพรอมต์คงที่จริงๆ เท่านั้น แอปพลิเคชันที่มีการปรับแต่งคำสั่งระบบให้เหมาะกับผู้ใช้แต่ละราย หรือมีการเปลี่ยนบริบทบ่อยๆ จะได้รับประโยชน์เพียงเล็กน้อย และต้องชั่งน้ำหนักระหว่างความซับซ้อนในการเขียนพรอมต์ที่เพิ่มขึ้นกับผลประโยชน์ที่ได้รับเพียงเล็กน้อย

สรุป: Prompt caching ช่วยให้ผู้ใช้ Bedrock มีเครื่องมือที่ใช้งานง่ายในการลดต้นทุนการดำเนินงานด้าน AI และปรับปรุงเวลาในการตอบสนอง หากแอปพลิเคชันของพวกเขาสามารถแยกส่วนต้นของพรอมต์ที่นำกลับมาใช้ใหม่ได้