0Pricing
Learn AI with Python · บทเรียน

การให้บริการประสิทธิภาพสูงด้วย Triton Inference Server

คลังแบบจำลอง การตั้งค่าแบบจำลอง config.pbtxt อินสแตนซ์แบบจำลองพร้อมกัน และการจัดชุดข้อมูลแบบไดนามิก

การให้บริการประสิทธิภาพสูงด้วย Triton Inference Server เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

Triton คืออะไร

NVIDIA Triton Inference Server คือระบบให้บริการระดับพร้อมใช้งานจริงที่โฮสต์โมเดลจำนวนมากพร้อมกันบน CPU และ GPU โดยรองรับแบ็กเอนด์หลายแบบ (TensorRT, ONNX, PyTorch, TensorFlow, Python) ผ่าน API HTTP/gRPC เดียว พร้อมการจัดกลุ่มคำขอและการทำงานพร้อมกันในตัว

คลังโมเดล

Triton จะโหลดโมเดลจาก คลังโมเดล ซึ่งเป็นไดเรกทอรีที่แต่ละโมเดลมีโฟลเดอร์ของตัวเอง โฟลเดอร์ย่อยสำหรับเวอร์ชันที่เป็นตัวเลข และไฟล์ config.pbtxt

model_repository/
  resnet50/
    config.pbtxt
    1/
      model.onnx
  bert/
    config.pbtxt
    1/
      model.pt

config.pbtxt: แบ็กเอนด์

ไฟล์ config.pbtxt อธิบายว่า Triton ควรเรียกใช้โมเดลอย่างไร ส่วน แบ็กเอนด์ (หรือแพลตฟอร์ม) จะระบุรันไทม์ที่ Triton ต้องใช้

name: "resnet50"
backend: "onnxruntime"
max_batch_size: 32

เทนเซอร์อินพุตและเอาต์พุต

คุณต้องประกาศอินพุตและเอาต์พุตแต่ละรายการ ได้แก่ ชื่อ ชนิดข้อมูล และ มิติ ของเทนเซอร์ (รูปร่าง) รูปร่างเหล่านี้ต้องตรงกับสิ่งที่โมเดลคาดไว้ มิติแบตช์ที่อยู่ด้านหน้าจะถูกกำหนดโดยนัยจาก max_batch_size

input [
  {
    name: "input"
    data_type: TYPE_FP32
    dims: [ 3, 224, 224 ]
  }
]
output [
  {
    name: "output"
    data_type: TYPE_FP32
    dims: [ 1000 ]
  }
]

ชนิดข้อมูล

Triton ใช้ชนิดข้อมูลเทนเซอร์ที่ระบุอย่างชัดเจน เพื่อให้ไคลเอ็นต์และโมเดลใช้รูปแบบการจัดวางไบต์ตรงกัน:

  • TYPE_FP32 เลขทศนิยมแบบ 32 บิต (ใช้บ่อยกับรูปภาพ)
  • TYPE_FP16 ความละเอียดครึ่งหนึ่ง (ทำงานเร็วขึ้นบน GPU)
  • TYPE_INT64 รหัสโทเค็นสำหรับ NLP
  • TYPE_INT8 โมเดลที่ผ่านการลดความละเอียด

การจัดกลุ่มคำขอแบบไดนามิก: แนวคิด

การจัดกลุ่มคำขอแบบไดนามิก ช่วยให้ Triton รวมคำขอขาเข้าหลายรายการเป็นแบตช์ขนาดใหญ่รายการเดียวก่อนเรียกใช้โมเดล GPU จะทำงานได้มีประสิทธิภาพกว่ามากกับแบตช์ขนาดใหญ่ จึงเพิ่มปริมาณงานได้อย่างมากโดยไม่ต้องเปลี่ยนโค้ดของไคลเอ็นต์

การกำหนดค่าการจัดกลุ่มคำขอแบบไดนามิก

คุณเปิดใช้ฟีเจอร์นี้ในการกำหนดค่าและตั้งระยะเวลาที่ Triton จะรอเพื่อรวบรวมคำขอ ค่า max_queue_delay_microseconds ที่ต่ำจะแลกเวลาแฝงเล็กน้อยกับปริมาณงานที่สูงขึ้นมาก

dynamic_batching {
  preferred_batch_size: [ 8, 16 ]
  max_queue_delay_microseconds: 1000
}

อินสแตนซ์โมเดลที่ทำงานพร้อมกัน

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

instance_group [
  {
    count: 2
    kind: KIND_GPU
    gpus: [ 0 ]
  }
]

การจัดกลุ่มคำขอเทียบกับการทำงานพร้อมกัน

แนวทางทั้งสองแก้ปัญหาคนละด้าน:

  • การจัดกลุ่มคำขอแบบไดนามิก รวมคำขอหลายรายการเป็นการเรียกใช้โมเดลครั้งเดียว (ปริมาณงานต่อการเรียกใช้)
  • อินสแตนซ์ที่ทำงานพร้อมกัน เรียกใช้โมเดลหลายครั้งในเวลาเดียวกัน (การทำงานแบบขนาน)

ทั้งสองแนวทางเสริมกัน การกำหนดค่าสำหรับใช้งานจริงมักใช้ทั้งคู่

perf_analyzer

perf_analyzer คือเครื่องมือของ Triton ที่ส่งคำขอสังเคราะห์เพื่อสร้างภาระให้เซิร์ฟเวอร์ และรายงานปริมาณงาน (การอนุมานต่อวินาที) กับเปอร์เซ็นไทล์ของเวลาแฝง ใช้เครื่องมือนี้เพื่อค้นหาการตั้งค่าแบตช์และการทำงานพร้อมกันที่เพิ่มปริมาณงานสูงสุดภายใต้งบประมาณเวลาแฝงของคุณ

perf_analyzer -m resnet50 \
  --concurrency-range 1:8 \
  --percentile 95

การอ่านเอาต์พุตของ perf_analyzer

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

# Concurrency: 4, throughput: 1820 infer/sec, p95 latency: 9.1 ms
# Concurrency: 8, throughput: 1905 infer/sec, p95 latency: 17.4 ms

ตรวจสอบอย่างรวดเร็ว

ทดสอบความรู้ของคุณเกี่ยวกับ Triton

สรุปทบทวน

คุณได้เรียนรู้การให้บริการประสิทธิภาพสูงด้วย Triton:

  • คลังโมเดล: โฟลเดอร์แยกตามโมเดล พร้อมโฟลเดอร์ย่อยตามเวอร์ชันและ config.pbtxt
  • config.pbtxt ประกาศแบ็กเอนด์ รูปร่างและชนิดข้อมูลของเทนเซอร์อินพุต/เอาต์พุต
  • การจัดกลุ่มคำขอแบบไดนามิก เพิ่มปริมาณงาน ส่วน อินสแตนซ์ที่ทำงานพร้อมกัน เพิ่มการทำงานแบบขนาน
  • perf_analyzer ใช้เปรียบเทียบปริมาณงานกับเวลาแฝงเพื่อปรับการตั้งค่า

คำถามที่พบบ่อย

บทเรียน “การให้บริการประสิทธิภาพสูงด้วย Triton Inference Server” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การให้บริการประสิทธิภาพสูงด้วย Triton Inference Server” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การให้บริการประสิทธิภาพสูงด้วย Triton Inference Server”

คลังแบบจำลอง การตั้งค่าแบบจำลอง config.pbtxt อินสแตนซ์แบบจำลองพร้อมกัน และการจัดชุดข้อมูลแบบไดนามิก คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การให้บริการประสิทธิภาพสูงด้วย Triton Inference Server” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม

ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การบรรจุโมเดลแมชชีนเลิร์นนิงลงคอนเทนเนอร์ด้วย Docker
  2. การนำไปใช้งานบนคลาวด์: AWS SageMaker
  3. การให้บริการประสิทธิภาพสูงด้วย Triton Inference Server
  4. การปรับขนาดและปรับขนาดอัตโนมัติของจุดปลายทางแบบจำลอง
← กลับไปที่ Learn AI with Python