Amazon Search ลดค่าใช้จ่ายในการอนุมาน ML ลง 85% ด้วย AWS Inferentia . ได้อย่างไร

เครื่องมือค้นหาผลิตภัณฑ์ของ Amazon จัดทำดัชนีผลิตภัณฑ์หลายพันล้านรายการ ให้บริการลูกค้าหลายร้อยล้านรายทั่วโลก และเป็นหนึ่งในบริการที่มีการใช้งานมากที่สุดในโลก ทีม Amazon Search พัฒนาเทคโนโลยีแมชชีนเลิร์นนิง (ML) ที่ขับเคลื่อน Amazon.com เสิร์ชเอ็นจิ้นและช่วยให้ลูกค้าค้นหาได้อย่างง่ายดาย เพื่อมอบประสบการณ์ที่ยอดเยี่ยมให้กับลูกค้าและดำเนินการในขนาดมหึมาที่ Amazon.com เสิร์ชเอ็นจิ้น ทีมงานนี้มักจะมองหาวิธีสร้างระบบที่คุ้มค่ามากขึ้นด้วยความต้องการเวลาแฝงและปริมาณงานตามเวลาจริง ทีมงานสำรวจฮาร์ดแวร์และคอมไพเลอร์อย่างต่อเนื่องที่ปรับให้เหมาะสมสำหรับการเรียนรู้เชิงลึกเพื่อเร่งการฝึกอบรมแบบจำลองและการอนุมาน ในขณะที่ลดต้นทุนการดำเนินงานทั่วทั้งกระดาน

ในโพสต์นี้ เราจะอธิบายวิธีที่ Amazon Search ใช้ การอนุมาน AWSซึ่งเป็นตัวเร่งความเร็วประสิทธิภาพสูงที่สร้างขึ้นโดย AWS เพื่อเร่งปริมาณงานการอนุมานเชิงลึกของการเรียนรู้เชิงลึก ทีมงานใช้การอนุมาน ML ที่มีความหน่วงต่ำด้วยโมเดล NLP แบบ Transformer-based บน AWS Inferentia-based อเมซอน อีลาสติก คอมพิวท์ คลาวด์ (Amazon EC2) อินสแตนซ์ Inf1 และประหยัดต้นทุนโครงสร้างพื้นฐานได้มากถึง 85% ในขณะที่รักษาปริมาณงานและเวลาแฝงที่แข็งแกร่ง

การเรียนรู้เชิงลึกสำหรับการทำนายเจตนาที่ซ้ำซ้อนและค้นหา

การค้นหา Amazon Marketplace เป็นปัญหาแบบหลายงานและหลายรูปแบบ โดยเกี่ยวข้องกับอินพุตต่างๆ เช่น ASIN (หมายเลขประจำตัวมาตรฐานของ Amazon ตัวเลขและตัวอักษร 10 หลักที่ระบุผลิตภัณฑ์โดยไม่ซ้ำกัน) รูปภาพผลิตภัณฑ์ คำอธิบายแบบข้อความ และข้อความค้นหา เพื่อสร้างประสบการณ์ผู้ใช้ที่ปรับให้เหมาะกับแต่ละบุคคล การคาดคะเนจากแบบจำลองต่างๆ จะใช้สำหรับแง่มุมต่างๆ ของการค้นหา นี่เป็นความท้าทายเพราะระบบการค้นหามีโมเดลหลายพันรายการที่มีธุรกรรมหลายหมื่นรายการต่อวินาที (TPS) ที่โหลดสูงสุด เรามุ่งเน้นไปที่สององค์ประกอบของประสบการณ์นั้น:

  • การคาดการณ์ซ้ำซ้อนที่ลูกค้ารับรู้ – หากต้องการแสดงรายการที่เกี่ยวข้องมากที่สุดของผลิตภัณฑ์ที่ตรงกับคำถามของผู้ใช้ การระบุผลิตภัณฑ์ที่ลูกค้ามีปัญหาในการแยกแยะระหว่าง
  • การคาดการณ์เจตนาของแบบสอบถาม – ในการปรับหน้าการค้นหาและรูปแบบผลิตภัณฑ์ให้เหมาะสมกับสิ่งที่ลูกค้ากำลังมองหามากขึ้น สิ่งสำคัญคือต้องคาดการณ์ความตั้งใจและประเภทของข้อความค้นหาของผู้ใช้ (เช่น ข้อความค้นหาที่เกี่ยวข้องกับสื่อ คำค้นหาความช่วยเหลือ และประเภทการสืบค้นอื่นๆ)

การคาดคะเนทั้งสองนี้สร้างขึ้นโดยใช้สถาปัตยกรรมโมเดล Transformer ได้แก่ โมเดลที่ใช้ BERT อันที่จริงแล้ว ทั้งสองใช้โมเดล BERT เดียวกันเป็นพื้นฐาน และแต่ละอันจะวางการแบ่งหมวดหมู่/การถดถอยที่ด้านบนของแกนหลักนี้

การคาดคะเนที่ซ้ำกันจะใช้คุณสมบัติข้อความที่หลากหลายสำหรับคู่ของผลิตภัณฑ์ที่ประเมินเป็นอินพุต (เช่น ประเภทผลิตภัณฑ์ ชื่อ คำอธิบาย และอื่นๆ) และคำนวณเป็นระยะสำหรับชุดข้อมูลขนาดใหญ่ โมเดลนี้ได้รับการฝึกฝนแบบ end to end ในแบบมัลติทาสกิ้ง งานประมวลผล Amazon SageMaker ถูกใช้เพื่อรันปริมาณงานแบบกลุ่มเหล่านี้เป็นระยะๆ เพื่อทำให้การเปิดตัวเป็นอัตโนมัติ และจ่ายเฉพาะเวลาประมวลผลที่ใช้เท่านั้น สำหรับกรณีการใช้ปริมาณงานแบบกลุ่มนี้ ข้อกำหนดสำหรับปริมาณงานการอนุมานคือ 8,800 TPS ทั้งหมด

การคาดคะเนเจตนาใช้ข้อความค้นหาของผู้ใช้เป็นข้อมูลป้อนเข้า และจำเป็นต้องใช้ในแบบเรียลไทม์เพื่อให้บริการการรับส่งข้อมูลแบบไดนามิกทุกวัน และปรับปรุงประสบการณ์ผู้ใช้ใน Amazon Marketplace โมเดลนี้ได้รับการฝึกอบรมตามวัตถุประสงค์การจำแนกประเภทหลายคลาส โมเดลนี้จะถูกปรับใช้บน บริการ Amazon Elastic Container (Amazon ECS) ซึ่งช่วยให้ปรับขนาดอัตโนมัติได้อย่างรวดเร็วและ คำจำกัดความและการจัดการการปรับใช้ที่ง่าย. เนื่องจากเป็นกรณีการใช้งานแบบเรียลไทม์ จึงต้องการเวลาแฝง P99 ที่ต่ำกว่า 10 มิลลิวินาทีเพื่อให้แน่ใจว่าผู้ใช้จะได้รับประสบการณ์ที่น่าพึงพอใจ

AWS Inferentia และ AWS Neuron SDK

อินสแตนซ์ EC2 Inf1 ขับเคลื่อนโดย AWS Inferentia ซึ่งเป็นจุดประสงค์ของตัวเร่ง ML แรกที่สร้างขึ้นโดย AWS เพื่อเร่งปริมาณงานการอนุมานเชิงลึกของการเรียนรู้ อินสแตนซ์ Inf1 ให้ปริมาณงานที่สูงขึ้นถึง 2.3 เท่า และลดต้นทุนต่อการอนุมานได้ถึง 70% เมื่อเทียบกับอินสแตนซ์ EC2 ที่ใช้ GPU ที่เปรียบเทียบกันได้ คุณสามารถฝึกฝนโมเดลของคุณต่อไปได้โดยใช้เฟรมเวิร์กที่คุณเลือก (PyTorch, TensorFlow, MXNet) จากนั้นปรับใช้โมเดลเหล่านี้บน AWS Inferentia ได้อย่างง่ายดายเพื่อรับประโยชน์จากการเพิ่มประสิทธิภาพในตัว คุณสามารถปรับใช้โมเดลประเภทต่างๆ ได้หลากหลายโดยใช้อินสแตนซ์ Inf1 ตั้งแต่การจดจำรูปภาพ การตรวจจับวัตถุ การประมวลผลภาษาธรรมชาติ (NLP) และโมเดลผู้แนะนำที่ทันสมัย

AWS เซลล์ประสาท เป็นชุดพัฒนาซอฟต์แวร์ (SDK) ที่ประกอบด้วยคอมไพเลอร์ รันไทม์ และเครื่องมือทำโปรไฟล์ที่ปรับประสิทธิภาพการอนุมาน ML ของอินสแตนซ์ EC2 Inf1 ให้เหมาะสม Neuron ถูกรวมเข้ากับเฟรมเวิร์ก ML ยอดนิยม เช่น TensorFlow และ PyTorch ดังนั้น คุณสามารถปรับใช้โมเดลการเรียนรู้เชิงลึกบน AWS Inferentia ด้วย API ที่คุ้นเคยแบบเดียวกันกับเฟรมเวิร์กที่คุณเลือก และได้รับประโยชน์จากการเพิ่มประสิทธิภาพและต้นทุนต่อการอนุมานที่ต่ำที่สุดในคลาวด์

นับตั้งแต่เปิดตัว Neuron SDK ได้เพิ่มรูปแบบต่างๆ ที่สนับสนุนอย่างต่อเนื่อง ในขณะที่ยังคงปรับปรุงประสิทธิภาพและลดต้นทุนการอนุมานต่อไป ซึ่งรวมถึงโมเดล NLP (BERT) โมเดลการจัดประเภทภาพ (ResNet, VGG) และโมเดลการตรวจจับวัตถุ (OpenPose และ SSD)

ปรับใช้บนอินสแตนซ์ Inf1 สำหรับเวลาแฝงต่ำ ปริมาณงานสูง และประหยัดต้นทุน

ทีม Amazon Search ต้องการประหยัดค่าใช้จ่ายในขณะที่ตอบสนองความต้องการปริมาณงานสูงในการคาดการณ์ความซ้ำซ้อน และความต้องการเวลาแฝงต่ำในการคาดการณ์ความตั้งใจในการค้นหา พวกเขาเลือกที่จะปรับใช้บนอินสแตนซ์ Inf1 ที่ใช้ AWS Inferentia และไม่เพียงตรงตามข้อกำหนดด้านประสิทธิภาพสูงเท่านั้น แต่ยังช่วยประหยัดค่าใช้จ่ายในการอนุมานได้ถึง 85%

การคาดการณ์ซ้ำซ้อนที่ลูกค้ารับรู้

ก่อนการใช้งาน Inf1 อเมซอน EMR คลัสเตอร์กำลังทำงานโดยใช้อินสแตนซ์ที่ใช้ CPU ไม่จำเป็นต้องอาศัยการเร่งด้วยฮาร์ดแวร์ อินสแตนซ์จำนวนมากมีความจำเป็นเพื่อตอบสนองความต้องการปริมาณงานสูงที่ 8,800 ธุรกรรมทั้งหมดต่อวินาที ทีมเปลี่ยนไปใช้อินสแตนซ์ inf1.6xlarge โดยแต่ละตัวมีตัวเร่ง AWS Inferentia 4 ตัวและ NeuronCore 16 ตัว (4 คอร์ต่อชิป AWS Inferentia) พวกเขาติดตามโมเดลที่ใช้ Transformer สำหรับ NeuronCore เดียวและโหลดหนึ่งโหมดต่อ NeuronCore เพื่อเพิ่มปริมาณงานสูงสุด การใช้ประโยชน์จาก NeuronCores ที่มีอยู่ 16 ตัวทำให้ต้นทุนการอนุมานลดลง 85% (อิงจากราคาแบบออนดีมานด์ของ Amazon EC2 แบบสาธารณะในปัจจุบัน)

การคาดการณ์เจตนาของแบบสอบถาม

ด้วยความต้องการเวลาแฝง P99 ที่ 10 มิลลิวินาทีหรือน้อยกว่า ทีมงานจึงโหลดโมเดลไปยัง NeuronCore ทุกตัวที่มีอยู่บนอินสแตนซ์ inf1.6xlarge คุณสามารถทำสิ่งนี้ได้อย่างง่ายดายด้วย PyTorch Neuron โดยใช้ปุ่ม torch.neuron.DataParallel เอพีไอ ด้วยการปรับใช้ Inf1 เวลาแฝงของโมเดลคือ 3 มิลลิวินาที เวลาแฝงแบบ end-to-end อยู่ที่ประมาณ 10 มิลลิวินาที และปริมาณงานสูงสุดที่โหลดสูงสุดถึง 16,000 TPS

เริ่มต้นด้วยการคอมไพล์ตัวอย่างและโค้ดการปรับใช้

ต่อไปนี้คือโค้ดตัวอย่างบางส่วนที่จะช่วยให้คุณเริ่มต้นใช้งานอินสแตนซ์ Inf1 และตระหนักถึงประสิทธิภาพและประโยชน์ด้านต้นทุน เช่น ทีม Amazon Search เราแสดงวิธีการคอมไพล์และทำการอนุมานด้วยโมเดล PyTorch โดยใช้ PyTorch เซลล์ประสาท.

ขั้นแรกให้รวบรวมโมเดลด้วย torch.neuron.trace():

m = torch.jit.load(f="./cpu_model.pt", map_location=torch.device('cpu'))
m.eval()
model_neuron = torch.neuron.trace(
    m,
    inputs,
    compiler_workdir="work_" + str(cores) + "_" + str(batch_size),
    compiler_args=[
        '--fp32-cast=all', '--neuroncore-pipeline-cores=' + str(cores)
    ])
model_neuron.save("m5_batch" + str(batch_size) + "_cores" + str(cores) +
                  "_with_extra_op_and_fp32cast.pt")

สำหรับรายการอาร์กิวเมนต์ที่เป็นไปได้ทั้งหมดสำหรับ trace วิธีการอ้างถึง PyTorch-Neuron ติดตาม Python API. อย่างที่เห็น, คอมไพเลอร์อาร์กิวเมนต์ สามารถส่งผ่านไปยัง torch.neuron API โดยตรง โอเปอเรเตอร์ FP32 ทั้งหมดถูกส่งไปที่ BF16 with --fp32-cast=allให้ประสิทธิภาพสูงสุดในขณะที่รักษาช่วงไดนามิกไว้ มีตัวเลือกการหล่อเพิ่มเติมเพื่อให้คุณควบคุมประสิทธิภาพเพื่อแลกกับความแม่นยำของแบบจำลอง แบบจำลองที่ใช้สำหรับกรณีการใช้งานทั้งสองได้รับการรวบรวมสำหรับ NeuronCore เดียว (no ไปป์ไลน์).

จากนั้นเราโหลดโมเดลบน Inferentia ด้วย torch.jit.loadและใช้ในการทำนาย ดิ รันไทม์ของเซลล์ประสาท โหลดโมเดลไปยัง NeuronCores โดยอัตโนมัติ

cm_cpd_preprocessing_jit = torch.jit.load(f=CM_CPD_PROC,
                                          map_location=torch.device('cpu'))
cm_cpd_preprocessing_jit.eval()
m5_model = torch.jit.load(f=CM_CPD_M5)
m5_model.eval()

input = get_input()
with torch.no_grad():
    batch_cm_cpd = cm_cpd_preprocessing_jit(input)
    input_ids, attention_mask, position_ids, valid_length, token_type_ids = (
        batch_cm_cpd['input_ids'].type(torch.IntTensor),
        batch_cm_cpd['attention_mask'].type(torch.HalfTensor),
        batch_cm_cpd['position_ids'].type(torch.IntTensor),
        batch_cm_cpd['valid_length'].type(torch.IntTensor),
        batch_cm_cpd['token_type_ids'].type(torch.IntTensor))
    model_res = m5_model(input_ids, attention_mask, position_ids, valid_length,
                         token_type_ids)

สรุป

ทีมงาน Amazon Search สามารถลดต้นทุนการอนุมานได้ 85% โดยใช้อินสแตนซ์ Inf1 ที่ใช้ AWS Inferentia ภายใต้การรับส่งข้อมูลจำนวนมากและข้อกำหนดด้านประสิทธิภาพที่มีความต้องการสูง AWS Inferentia และ Neuron SDK ช่วยให้ทีมมีความยืดหยุ่นในการเพิ่มประสิทธิภาพกระบวนการปรับใช้โดยแยกจากการฝึกอบรม และนำเสนอเส้นโค้งการเรียนรู้ที่ตื้นผ่านเครื่องมือที่มีความรอบรู้และ API เฟรมเวิร์กที่คุ้นเคย

คุณสามารถปลดล็อกประสิทธิภาพและผลประโยชน์ด้านต้นทุนโดยเริ่มต้นจากโค้ดตัวอย่างที่ให้ไว้ในโพสต์นี้ ตรวจสอบตั้งแต่ต้นจนจบ บทเรียน เพื่อเรียกใช้โมเดล ML บน Inferentia ด้วย ไพทอร์ช และ TensorFlow.


เกี่ยวกับผู้แต่ง

วิธีที่ Amazon Search ลดต้นทุนการอนุมาน ML ลง 85% ด้วย AWS Inferentia PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ชูเอา มูร่า เป็นสถาปนิกโซลูชันผู้เชี่ยวชาญ AI/ML ที่ Amazon Web Services เขามุ่งเน้นไปที่กรณีการใช้งาน NLP เป็นหลัก และช่วยลูกค้าเพิ่มประสิทธิภาพการฝึกอบรมและการปรับใช้โมเดลการเรียนรู้เชิงลึก เขายังเป็นผู้สนับสนุนฮาร์ดแวร์เฉพาะของ ML และโซลูชัน ML แบบ low-code

วิธีที่ Amazon Search ลดต้นทุนการอนุมาน ML ลง 85% ด้วย AWS Inferentia PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.เหวยฉี จาง เป็นผู้จัดการวิศวกรรมซอฟต์แวร์ที่ Search M5 ซึ่งเขาทำงานเกี่ยวกับการผลิตโมเดลขนาดใหญ่สำหรับแอปพลิเคชันการเรียนรู้ของเครื่องของ Amazon ความสนใจของเขารวมถึงการดึงข้อมูลและโครงสร้างพื้นฐานการเรียนรู้ของเครื่อง

วิธีที่ Amazon Search ลดต้นทุนการอนุมาน ML ลง 85% ด้วย AWS Inferentia PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.เจสัน คาร์ลสัน เป็นวิศวกรซอฟต์แวร์เพื่อพัฒนาไปป์ไลน์แมชชีนเลิร์นนิงเพื่อช่วยลดจำนวนการแสดงผลการค้นหาที่ถูกขโมยอันเนื่องมาจากการซ้ำซ้อนที่ลูกค้ารับรู้ เขาทำงานร่วมกับ Apache Spark, AWS และ PyTorch เป็นส่วนใหญ่เพื่อช่วยปรับใช้และป้อน/ประมวลผลข้อมูลสำหรับโมเดล ML เวลาว่างชอบอ่านหนังสือและวิ่ง

วิธีที่ Amazon Search ลดต้นทุนการอนุมาน ML ลง 85% ด้วย AWS Inferentia PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.เฉาหุยซี เป็น SDE ที่ทีม Infra ทำความเข้าใจคำค้นหา เขาเป็นผู้นำความพยายามในการสร้างบริการอนุมานออนไลน์เชิงลึกขนาดใหญ่ที่มีเวลาแฝงต่ำและความพร้อมใช้งานสูง นอกเวลางาน เขาชอบเล่นสกีและสำรวจอาหารดีๆ

วิธีที่ Amazon Search ลดต้นทุนการอนุมาน ML ลง 85% ด้วย AWS Inferentia PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.จั่วฉี จาง เป็นวิศวกรพัฒนาซอฟต์แวร์ที่ทีม Infra ทำความเข้าใจคำค้นหา เขาทำงานเกี่ยวกับการสร้างแบบจำลองการให้บริการเฟรมเวิร์กเพื่อปรับปรุงเวลาแฝงและปริมาณงานสำหรับบริการอนุมานออนไลน์เชิงลึก นอกเวลางาน เขาชอบเล่นบาสเก็ตบอล สโนว์บอร์ด และขับรถ

วิธีที่ Amazon Search ลดต้นทุนการอนุมาน ML ลง 85% ด้วย AWS Inferentia PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ห่าวเหว่ย ซุน เป็นวิศวกรซอฟต์แวร์ในทีม Infra ทำความเข้าใจคำค้นหา เธอทำงานเกี่ยวกับการออกแบบ API และโครงสร้างพื้นฐานที่สนับสนุนบริการอนุมานออนไลน์เชิงลึก ความสนใจของเธอรวมถึงการออกแบบ API การบริการ การตั้งค่าโครงสร้างพื้นฐาน และการบำรุงรักษา นอกงาน เธอชอบวิ่ง เดินป่า และท่องเที่ยว

วิธีที่ Amazon Search ลดต้นทุนการอนุมาน ML ลง 85% ด้วย AWS Inferentia PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.จัสปรีต์ ซิงห์ เป็นนักวิทยาศาสตร์ประยุกต์ในทีม M5 ซึ่งเขาทำงานเกี่ยวกับโมเดลพื้นฐานขนาดใหญ่เพื่อปรับปรุงประสบการณ์การช็อปปิ้งของลูกค้า ความสนใจในงานวิจัยของเขา ได้แก่ การเรียนรู้แบบมัลติทาสก์ การดึงข้อมูล และการเรียนรู้แบบเป็นตัวแทน

วิธีที่ Amazon Search ลดต้นทุนการอนุมาน ML ลง 85% ด้วย AWS Inferentia PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ชรูติ โคปาร์การ์ เป็นผู้จัดการอาวุโสฝ่ายการตลาดผลิตภัณฑ์ของ AWS เธอช่วยลูกค้าสำรวจ ประเมิน และปรับใช้โครงสร้างพื้นฐานการประมวลผลเร่ง EC2 สำหรับความต้องการแมชชีนเลิร์นนิง

ประทับเวลา:

เพิ่มเติมจาก AWS Machine Learning AWS