ชุดเครื่องมือการอนุมานแบบแบทช์ (การอนุมานแบบแบทช์) เป็นแพ็คเกจ Python ที่จัดกลุ่มเทนเซอร์อินพุตโมเดลที่มาจากคำขอหลายรายการแบบไดนามิก ดำเนินการโมเดล ยกเลิกการแบทช์เอาท์พุตเทนเซอร์ จากนั้นส่งคืนกลับไปยังแต่ละคำขอตามลำดับ สิ่งนี้จะปรับปรุงปริมาณงานของระบบเนื่องจากการประมวลผลแบบขนานที่ดีขึ้นและตำแหน่งแคชที่ดีขึ้น กระบวนการทั้งหมดโปร่งใสสำหรับนักพัฒนา
เมื่อคุณต้องการโฮสต์การอนุมานโมเดล Deep Learning บนเซิร์ฟเวอร์คลาวด์ โดยเฉพาะบน GPU
สามารถปรับปรุงปริมาณงานเซิร์ฟเวอร์ของคุณได้หลายครั้ง
แบบอย่าง | ปริมาณงานเมื่อเปรียบเทียบกับพื้นฐาน | ลิงค์ |
---|---|---|
เบิร์ต เอ็มเบดดิ้ง | 4.7x | บทช่วยสอน |
GPT เสร็จสิ้น | 16x | บทช่วยสอน |
ติดตั้งจาก Pip
python -m pip install batch-inference --upgrade
สร้างและติดตั้งจากแหล่งที่มา (สำหรับนักพัฒนา)
git clone https://github.com/microsoft/batch-inference.git
python -m pip install -e .[docs,testing]
# if you want to format the code before commit
pip install pre-commit
pre-commit install
# run unittests
python -m unittest discover tests
เริ่มจากโมเดลของเล่นเพื่อเรียนรู้ API กันก่อน ขั้นแรก คุณต้องกำหนดวิธี การ Predict_batch ในคลาสโมเดลของคุณ จากนั้นเพิ่มตัวตกแต่ง แบบแบตช์ ให้กับคลาสโมเดลของคุณ
มัณฑนากร แบบแบตช์ จะเพิ่มเมธอด host() เพื่อสร้างอ็อบเจ็กต์ ModelHost วิธี การทำนาย ของ ModelHost ใช้การสืบค้นเดียวเป็นอินพุต และจะรวมการสืบค้นหลาย ๆ ครั้งเป็นชุดก่อนที่จะเรียกใช้วิธี การคาดการณ์_batch วิธีการทำนายยังแยกเอาต์พุตออกจากวิธี Predict_batch ก่อนที่จะส่งคืนผลลัพธ์
import numpy as np
from batch_inference import batching
from batch_inference . batcher . concat_batcher import ConcatBatcher
@ batching ( batcher = ConcatBatcher (), max_batch_size = 32 )
class MyModel :
def __init__ ( self , k , n ):
self . weights = np . random . randn ( k , n ). astype ( "f" )
# shape of x: [batch_size, m, k]
def predict_batch ( self , x ):
y = np . matmul ( x , self . weights )
return y
# initialize MyModel with k=3 and n=3
host = MyModel . host ( 3 , 3 )
host . start ()
# shape of x: [1, 3, 3]
def process_request ( x ):
y = host . predict ( x )
return y
host . stop ()
Batcher มีหน้าที่ในการรวมแบบสอบถามและแยกเอาต์พุต ในกรณีนี้ ConcatBatcher จะต่อเทนเซอร์อินพุตเข้ากับเทนเซอร์แบบแบตช์ในมิติแรก เรามีชุด Batcher ในตัวสำหรับสถานการณ์ทั่วไป และคุณยังสามารถใช้ Batcher ของคุณเองได้อีกด้วย ดู Batcher คืออะไรสำหรับข้อมูลเพิ่มเติม