Exafunction รองรับ AWS Inferentia เพื่อปลดล็อกประสิทธิภาพราคาที่ดีที่สุดสำหรับการอนุมานของ Machine Learning PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

Exafunction รองรับ AWS Inferentia เพื่อปลดล็อกประสิทธิภาพด้านราคาที่ดีที่สุดสำหรับการอนุมานของแมชชีนเลิร์นนิง

โมเดลแมชชีนเลิร์นนิง (ML) มีความลึกมากขึ้นในทุกอุตสาหกรรม เวิร์กโฟลว์เริ่มซับซ้อนขึ้น และเวิร์กโหลดทำงานในระดับที่ใหญ่ขึ้น มีการใช้ความพยายามและทรัพยากรอย่างมากในการทำให้โมเดลเหล่านี้มีความแม่นยำมากขึ้น เนื่องจากการลงทุนนี้ส่งผลโดยตรงต่อผลิตภัณฑ์และประสบการณ์ที่ดีขึ้น ในทางกลับกัน การทำให้โมเดลเหล่านี้ทำงานได้อย่างมีประสิทธิภาพในการผลิตนั้นเป็นงานที่ไม่สำคัญซึ่งมักถูกมองข้าม แม้ว่าจะเป็นกุญแจสำคัญในการบรรลุเป้าหมายด้านประสิทธิภาพและงบประมาณก็ตาม ในโพสต์นี้ เราจะกล่าวถึงวิธีการ Exafunction และ การอนุมาน AWS ทำงานร่วมกันเพื่อปลดล็อกการปรับใช้โมเดล ML ที่ง่ายและประหยัดต้นทุนในการผลิต

เอ็กซาฟังก์ชัน เป็นการเริ่มต้นที่เน้นการช่วยให้บริษัทสามารถดำเนินการ ML ได้อย่างมีประสิทธิภาพมากที่สุดเท่าที่จะเป็นไปได้ หนึ่งในผลิตภัณฑ์ของพวกเขาคือ ExaDeployซึ่งเป็นโซลูชัน SaaS ที่ใช้งานง่ายเพื่อรองรับปริมาณงาน ML ตามขนาด ExaDeploy จัดการปริมาณงาน ML ของคุณอย่างมีประสิทธิภาพผ่านทรัพยากรแบบผสม (CPU และตัวเร่งฮาร์ดแวร์) เพื่อเพิ่มการใช้ทรัพยากรให้เกิดประโยชน์สูงสุด นอกจากนี้ยังดูแลการปรับขนาดอัตโนมัติ การคำนวณโคโลเคชั่น ปัญหาเครือข่าย ความทนทานต่อความผิดพลาด และอื่นๆ เพื่อให้การปรับใช้มีประสิทธิภาพและเชื่อถือได้ ตาม AWS Inferentia อินสแตนซ์ Amazon EC2 Inf1 มีจุดประสงค์เพื่อสร้างต้นทุนต่อการอนุมานที่ต่ำที่สุดในระบบคลาวด์ ขณะนี้ ExaDeploy รองรับอินสแตนซ์ Inf1 ซึ่งช่วยให้ผู้ใช้ได้รับทั้งการประหยัดตามฮาร์ดแวร์ของส่วนเร่งและประหยัดตามซอฟต์แวร์ของการปรับทรัพยากรเสมือนจริงและการประสานให้เหมาะสมตามขนาด

ภาพรวมโซลูชัน

ExaDeploy แก้ปัญหาการปรับใช้อย่างมีประสิทธิภาพได้อย่างไร

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

ExaDeploy ได้รับการออกแบบมาเพื่อแก้ไขจุดบอดด้านประสิทธิภาพการปรับใช้เหล่านี้ รวมถึงที่พบในปริมาณงานที่ซับซ้อนที่สุดบางส่วน เช่น ในแอปพลิเคชัน Autonomous Vehicle และการประมวลผลภาษาธรรมชาติ (NLP) ในปริมาณงาน ML จำนวนมาก ExaDeploy ลดต้นทุนได้มากกว่า 85% โดยไม่สูญเสียเวลาแฝงหรือความแม่นยำ โดยมีเวลาการผสานรวมต่ำเพียงหนึ่งวันวิศวกร ExaDeploy ได้รับการพิสูจน์แล้วว่าปรับขนาดอัตโนมัติและจัดการอินสแตนซ์ทรัพยากรตัวเร่งความเร็วฮาร์ดแวร์พร้อมกันหลายพันรายการโดยไม่ทำให้ระบบเสื่อมประสิทธิภาพ

คุณสมบัติที่สำคัญของ ExaDeploy รวมถึง:

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

Exafunction รองรับ AWS Inferentia เพื่อปลดล็อกประสิทธิภาพราคาที่ดีที่สุดสำหรับการอนุมานของ Machine Learning PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

  • โมเดลการปรับใช้แบบไร้เซิร์ฟเวอร์ที่ปรับขนาดได้: ExaDeploy ปรับขนาดอัตโนมัติตามความอิ่มตัวของทรัพยากรตัวเร่งความเร็ว ลดขนาดแบบไดนามิกเป็น 0 หรือมากถึงหลายพันทรัพยากร
  • รองรับประเภทการคำนวณที่หลากหลาย: คุณสามารถโหลดโมเดลการเรียนรู้เชิงลึกจากเฟรมเวิร์ก ML ที่สำคัญทั้งหมด รวมถึงโค้ด C++, เคอร์เนล CUDA, ops แบบกำหนดเอง และฟังก์ชัน Python ตามอำเภอใจ
  • การลงทะเบียนโมเดลไดนามิกและการกำหนดเวอร์ชัน: โมเดลใหม่หรือเวอร์ชันของโมเดลสามารถลงทะเบียนและรันได้โดยไม่ต้องสร้างใหม่หรือปรับใช้ระบบใหม่
  • การดำเนินการแบบจุดต่อจุด: ไคลเอนต์เชื่อมต่อโดยตรงกับทรัพยากรตัวเร่งความเร็วระยะไกล ซึ่งช่วยให้มีเวลาแฝงต่ำและปริมาณงานสูง พวกเขาสามารถจัดเก็บรัฐได้จากระยะไกล
  • การดำเนินการแบบอะซิงโครนัส: ExaDeploy รองรับการดำเนินการแบบอะซิงโครนัสของโมเดล ซึ่งช่วยให้ไคลเอ็นต์สามารถขนานการประมวลผลแบบโลคัลด้วยงานรีซอร์สตัวเร่งระยะไกล
  • ไปป์ไลน์ระยะไกลที่ทนต่อความผิดพลาด: ExaDeploy ช่วยให้ไคลเอนต์สร้างการคำนวณระยะไกลแบบไดนามิก (แบบจำลอง การประมวลผลล่วงหน้า ฯลฯ) ลงในไปป์ไลน์ที่มีการรับประกันความผิดพลาด ระบบ ExaDeploy จัดการกับความล้มเหลวของพ็อดหรือโหนดด้วยการกู้คืนอัตโนมัติและการเล่นซ้ำ ดังนั้นนักพัฒนาจึงไม่ต้องคิดเกี่ยวกับการรับรองความทนทานต่อข้อผิดพลาด
  • การตรวจสอบนอกกรอบ: ExaDeploy มีเมตริก Prometheus และแดชบอร์ด Grafana เพื่อแสดงภาพการใช้ทรัพยากรตัวเร่งความเร็วและเมตริกระบบอื่นๆ

ExaDeploy รองรับ AWS Inferentia

อินสแตนซ์ Amazon EC2 Inf1 ที่ใช้ AWS Inferentia ได้รับการออกแบบมาสำหรับปริมาณงานการอนุมานเฉพาะสำหรับการเรียนรู้เชิงลึก อินสแตนซ์เหล่านี้ให้ทรูพุตสูงถึง 2.3 เท่าและประหยัดค่าใช้จ่ายได้มากถึง 70% เมื่อเทียบกับอินสแตนซ์การอนุมาน GPU รุ่นปัจจุบัน

ขณะนี้ ExaDeploy รองรับ AWS Inferentia และร่วมกันปลดล็อกประสิทธิภาพที่เพิ่มขึ้นและการประหยัดต้นทุนที่ทำได้ผ่านการเร่งฮาร์ดแวร์ที่สร้างขึ้นตามวัตถุประสงค์และการจัดการทรัพยากรที่ปรับให้เหมาะสมตามขนาด มาดูประโยชน์รวมของ ExaDeploy และ AWS Inferentia โดยพิจารณาจากปริมาณงาน ML สมัยใหม่ที่พบได้บ่อยมาก: ปริมาณงานแบบผสมและแบบผสม

ลักษณะภาระงานสมมุติ:

  • 15 มิลลิวินาทีของกระบวนการก่อนการประมวลผล/หลังการประมวลผลของ CPU เท่านั้น
  • การอนุมานโมเดล (15 ms บน GPU, 5 ms บน AWS Inferentia)
  • ไคลเอ็นต์ 10 ราย แต่ละรายส่งคำขอทุกๆ 20 มิลลิวินาที
  • ค่าใช้จ่ายสัมพัทธ์โดยประมาณของ CPU:Inferentia:GPU คือ 1:2:4 (อิงตามราคา Amazon EC2 On-Demand สำหรับ c5.xlarge, inf1.xlarge และ g4dn.xlarge)

ตารางด้านล่างแสดงให้เห็นว่าแต่ละตัวเลือกมีรูปร่างอย่างไร:

การติดตั้ง ทรัพยากรที่จำเป็น ราคา ความแอบแฝง
GPU ที่ไม่มี ExaDeploy 2 CPU, 2 GPU ต่อไคลเอนต์ (รวม 20 CPU, 20 GPU) 100 ms 30
GPU พร้อม ExaDeploy 8 GPU ที่ใช้ร่วมกันใน 10 ไคลเอนต์ 1 CPU ต่อไคลเอนต์ 42 ms 30
AWS Inferentia ที่ไม่มี ExaDeploy 1 CPU, 1 AWS Inferentia ต่อไคลเอ็นต์ (รวม 10 CPU, 10 Inferentia) 30 ms 20
AWS Inferentia พร้อม ExaDeploy 3 AWS Inferentia ที่ใช้ร่วมกันใน 10 ไคลเอ็นต์ 1 CPU ต่อไคลเอ็นต์ 16 ms 20

ตัวอย่าง ExaDeploy บน AWS Inferentia

ในส่วนนี้ เราจะอธิบายขั้นตอนการกำหนดค่า ExaDeploy ผ่านตัวอย่างที่มีโหนด inf1 บนโมเดล BERT PyTorch เราเห็นปริมาณงานเฉลี่ย 1140 ตัวอย่าง/วินาทีสำหรับโมเดล bert-base ซึ่งแสดงให้เห็นว่า ExaDeploy นำเสนอโอเวอร์เฮดเพียงเล็กน้อยหรือไม่มีเลยสำหรับโมเดลเดียว สถานการณ์เวิร์กโหลดเดียว

ขั้นตอนที่ 1: ตั้งค่า บริการ Amazon Elastic Kubernetes (Amazon EKS) คลัสเตอร์

สามารถนำคลัสเตอร์ Amazon EKS มาใช้กับเราได้ โมดูล Terraform AWS. สำหรับตัวอย่างของเรา เราใช้ an inf1.xlarge สำหรับ AWS Inferentia

ขั้นตอนที่ 2: ตั้งค่า ExaDepoy

ขั้นตอนที่สองคือการตั้งค่า ExaDeploy โดยทั่วไป การปรับใช้ ExaDeploy บนอินสแตนซ์ inf1 นั้นตรงไปตรงมา การตั้งค่าส่วนใหญ่จะทำตามขั้นตอนเดียวกับที่ทำกับอินสแตนซ์หน่วยประมวลผลกราฟิก (GPU) ข้อแตกต่างหลักคือการเปลี่ยนแท็กโมเดลจาก GPU เป็น AWS Inferentia และคอมไพล์โมเดลอีกครั้ง ตัวอย่างเช่น การย้ายจากอินสแตนซ์ g4dn เป็น inf1 โดยใช้ Application Programming Interfaces (API) ของ ExaDeploy จำเป็นต้องเปลี่ยนโค้ดประมาณ 10 บรรทัดเท่านั้น

  • วิธีง่ายๆ วิธีหนึ่งคือใช้ Exafunction's โมดูล Terraform AWS Kubernetes or แผนภูมิหางเสือ. สิ่งเหล่านี้ปรับใช้ส่วนประกอบ ExaDeploy หลักเพื่อทำงานในคลัสเตอร์ Amazon EKS
  • รวบรวมโมเดลเป็นรูปแบบซีเรียลไลซ์ (เช่น TorchScript, โมเดลที่บันทึก TF, ONNX เป็นต้น) สำหรับ AWS Inferentia เราทำตาม บทช่วยสอนนี้.
  • ลงทะเบียนโมเดลที่คอมไพล์ในที่เก็บโมดูลของ ExaDeploy
    with exa.ModuleRepository(MODULE_REPOSITORY_ADDRESS) as repo:
       repo.register_py_module(
           "BertInferentia",
           module_class="TorchModule",
           context_data=BERT_NEURON_TORCHSCRIPT_AS_BYTES,
           config={
               "_torchscript_input_names": ",".join(BERT_INPUT_NAMES).encode(),
               "_torchscript_output_names": BERT_OUTPUT_NAME.encode(),
               "execution_type": "inferentia".encode(),
           },
       )

  • เตรียมข้อมูลสำหรับโมเดล (เช่น ไม่ใช่ ExaDeploy-specific).
    tokenizer = transformers.AutoTokenizer.from_pretrained(
       "bert-base-cased-finetuned-mrpc"
    )
    
    batch_encoding = tokenizer.encode_plus(
       "The company Exafunction is based in the Bay Area",
       "Exafunction’s headquarters are situated in Mountain View",
       max_length=MAX_LENGTH,
       padding="max_length",
       truncation=True,
       return_tensors="pt",
    )

  • เรียกใช้โมเดลจากระยะไกลจากไคลเอนต์
    with exa.Session(
       scheduler_address=SCHEDULER_ADDRESS,
       module_tag="BertInferentia",
       constraint_config={
           "KUBERNETES_NODE_SELECTORS": "role=runner-inferentia",
           "KUBERNETES_ENV_VARS": "AWS_NEURON_VISIBLE_DEVICES=ALL",
       },
    ) as sess:
       bert = sess.new_module("BertInferentia")
       classification_logits = bert.run(
           **{
               key: value.numpy()
               for key, value in batch_encoding.items()
           }
       )[BERT_OUTPUT_NAME].numpy()
    
       # Assert that the model classifies the two statements as paraphrase.
       assert classification_logits[0].argmax() == 1

ExaDeploy และ AWS Inferentia: ทำงานร่วมกันได้ดีขึ้น

AWS Inferentia กำลังขยายขอบเขตของปริมาณงานสำหรับการอนุมานแบบจำลองและมอบต้นทุนต่อการอนุมานที่ต่ำที่สุดในระบบคลาวด์ ดังที่ได้กล่าวไปแล้ว บริษัทต่างๆ จำเป็นต้องมีการจัดการที่เหมาะสมเพื่อให้ได้รับประโยชน์จากประสิทธิภาพด้านราคาของ Inf1 ในวงกว้าง การให้บริการ ML เป็นปัญหาที่ซับซ้อนซึ่งหากจัดการภายในองค์กร ต้องใช้ความเชี่ยวชาญซึ่งไม่ได้มาจากเป้าหมายของบริษัท และมักจะทำให้ลำดับเวลาของผลิตภัณฑ์ล่าช้า ExaDeploy ซึ่งเป็นโซลูชันซอฟต์แวร์การปรับใช้ ML ของ Exafunction ได้กลายเป็นผู้นำในอุตสาหกรรม ให้บริการแม้กระทั่งปริมาณงาน ML ที่ซับซ้อนที่สุด ในขณะที่มอบประสบการณ์การผสานรวมที่ราบรื่นและการสนับสนุนจากทีมงานระดับโลก เมื่อทำงานร่วมกัน ExaDeploy และ AWS Inferentia จะปลดล็อกประสิทธิภาพที่เพิ่มขึ้นและประหยัดค่าใช้จ่ายสำหรับปริมาณงานการอนุมานตามขนาด

สรุป

ในโพสต์นี้ เราได้แสดงให้คุณเห็นว่า Exafunction รองรับ AWS Inferentia สำหรับ ML ประสิทธิภาพได้อย่างไร สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างแอปพลิเคชันด้วย Exafunction โปรดไปที่ เอ็กซาฟังก์ชัน. สำหรับแนวทางปฏิบัติที่ดีที่สุดในการสร้างปริมาณงานการเรียนรู้เชิงลึกบน Inf1 โปรดไปที่ อินสแตนซ์ Amazon EC2 Inf1


เกี่ยวกับผู้เขียน

Nicholas Jiang วิศวกรซอฟต์แวร์ Exafunction

Jonathan Ma วิศวกรซอฟต์แวร์ Exafunction

เปรม แนร์ วิศวกรซอฟต์แวร์ Exafunction

Ansul Ramachandran วิศวกรซอฟต์แวร์ Exafunction

Shruti Koparkar ผู้จัดการอาวุโสฝ่ายการตลาดผลิตภัณฑ์ AWS

ประทับเวลา:

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