นี่คือโพสต์รับเชิญที่เขียนร่วมกับ Michael Feil ที่ Gradient
การประเมินประสิทธิภาพของโมเดลภาษาขนาดใหญ่ (LLM) เป็นขั้นตอนสำคัญของกระบวนการฝึกอบรมล่วงหน้าและปรับแต่งอย่างละเอียดก่อนการใช้งาน ยิ่งคุณสามารถตรวจสอบประสิทธิภาพได้เร็วและบ่อยมากขึ้นเท่าใด โอกาสที่คุณจะสามารถปรับปรุงประสิทธิภาพของแบบจำลองก็จะยิ่งมากขึ้นเท่านั้น
At ไล่โทนสีเราทำงานเกี่ยวกับการพัฒนา LLM แบบกำหนดเอง และเพิ่งเปิดตัวของเราเมื่อไม่นานมานี้ ห้องปฏิบัติการพัฒนา AIโดยนำเสนอบริการการพัฒนาแบบ end-to-end ที่เป็นส่วนตัวแก่องค์กรต่างๆ เพื่อสร้าง LLM ส่วนตัวแบบกำหนดเองและนักบินร่วมด้านปัญญาประดิษฐ์ (AI) ในส่วนหนึ่งของกระบวนการนี้ เราจะประเมินประสิทธิภาพของโมเดลของเรา (ปรับแต่ง ฝึกอบรม และเปิด) เป็นประจำ เทียบกับเกณฑ์มาตรฐานแบบเปิดและเป็นกรรมสิทธิ์ ขณะทำงานร่วมกับทีม AWS เพื่อฝึกอบรมโมเดลของเรา การฝึกอบรม AWSเรารู้ว่าเราถูกจำกัดไว้แค่ทั้ง VRAM และความพร้อมใช้งานของอินสแตนซ์ GPU เมื่อเป็นเรื่องของเครื่องมือหลักสำหรับการประเมิน LLM lm-การประเมินผลสายรัด- เฟรมเวิร์กโอเพ่นซอร์สนี้ช่วยให้คุณให้คะแนนโมเดลภาษาที่สร้างที่แตกต่างกันในงานประเมินและเกณฑ์มาตรฐานต่างๆ มันถูกใช้โดยลีดเดอร์บอร์ดเช่น กอดหน้า สำหรับการเปรียบเทียบสาธารณะ
เพื่อเอาชนะความท้าทายเหล่านี้ เราตัดสินใจสร้างและโอเพ่นซอร์สโซลูชันของเรา—การบูรณาการ AWS เซลล์ประสาท,ห้องสมุดด้านหลัง การอนุมาน AWS และ Trainium เข้าไป lm-evaluation-harness
- การบูรณาการนี้ทำให้สามารถเปรียบเทียบได้ v-alpha-tross ซึ่งเป็นรุ่นแรกของโมเดลอัลบาทรอสของเราเทียบกับรุ่นสาธารณะอื่น ๆ ในระหว่างกระบวนการฝึกอบรมและหลัง
สำหรับบริบท การบูรณาการนี้ทำงานเป็นคลาสโมเดลใหม่ภายใน lm-evalue-harness โดยสรุปการอนุมานของโทเค็นและการประมาณค่า log-likelihood ของลำดับโดยไม่กระทบต่องานการประเมินจริง การตัดสินใจย้ายไปป์ไลน์การทดสอบภายในของเราไปที่ อเมซอน อีลาสติก คอมพิวท์ คลาวด์ (อเมซอน อีซี2) อินสแตนซ์ Inf2 (สนับสนุนโดย AWS Inferentia2) ทำให้เราสามารถเข้าถึงหน่วยความจำ Accelerator ที่ใช้ร่วมกันได้สูงสุดถึง 384 GB ซึ่งปรับให้เข้ากับสถาปัตยกรรมสาธารณะในปัจจุบันทั้งหมดของเราได้อย่างง่ายดาย ด้วยการใช้ AWS Spot Instances เราสามารถใช้ประโยชน์จากความจุ EC2 ที่ไม่ได้ใช้ใน AWS Cloud ซึ่งช่วยให้ประหยัดต้นทุนได้สูงสุดถึง 90% โดยมีส่วนลดจากราคาตามความต้องการ ซึ่งช่วยลดเวลาที่ใช้ในการทดสอบและช่วยให้เราทดสอบได้บ่อยขึ้น เนื่องจากเราสามารถทดสอบหลายอินสแตนซ์ที่พร้อมใช้งานและปล่อยอินสแตนซ์เมื่อเราเสร็จสิ้น
ในโพสต์นี้ เราจะให้รายละเอียดการทดสอบ ความท้าทายที่เราพบ และตัวอย่างการใช้ชุดทดสอบบน AWS Inferentia
การเปรียบเทียบบน AWS Inferentia2
เป้าหมายของโครงการนี้คือการสร้างคะแนนที่เหมือนกันดังที่แสดงใน เปิดลีดเดอร์บอร์ด LLM (สำหรับรุ่น CausalLM หลายรุ่นที่มีใน Hugging Face) ในขณะที่ยังคงความยืดหยุ่นในการรันเทียบกับการวัดประสิทธิภาพส่วนตัว หากต้องการดูตัวอย่างเพิ่มเติมของรุ่นที่มีจำหน่าย โปรดดูที่ AWS Inferentia และ Trainium บนใบหน้ากอด
การเปลี่ยนแปลงโค้ดที่จำเป็นในการย้ายโมเดลจากหม้อแปลง Hugging Face ไปเป็น Hugging Face เซลล์ประสาทที่เหมาะสมที่สุด ไลบรารี Python ค่อนข้างต่ำ เพราะ lm-evaling-harness ใช้ AutoModelForCausalLM
มีการใช้ทดแทนลดลง NeuronModelForCausalLM
- หากไม่มีโมเดลที่คอมไพล์แล้ว โมเดลนั้นจะถูกคอมไพล์โดยอัตโนมัติในขณะนั้น ซึ่งอาจเพิ่มเวลาให้กับงาน 15–60 นาที สิ่งนี้ทำให้เรามีความยืดหยุ่นในการปรับใช้การทดสอบสำหรับอินสแตนซ์ AWS Inferentia2 และโมเดล CausalLM ที่รองรับ
ผลสอบ
เนื่องจากวิธีการทำงานของเกณฑ์มาตรฐานและแบบจำลอง เราจึงไม่คาดหวังว่าคะแนนจะตรงกันทุกประการในแต่ละการทดสอบ อย่างไรก็ตาม มันควรจะใกล้เคียงกันมากโดยอิงจากค่าเบี่ยงเบนมาตรฐาน และเราได้เห็นสิ่งนั้นมาโดยตลอด ดังแสดงในตารางต่อไปนี้ การวัดประสิทธิภาพเบื้องต้นที่เราใช้งานบน AWS Inferentia2 ล้วนได้รับการยืนยันจากกระดานผู้นำ Hugging Face
In lm-evaluation-harness
มีสองกระแสหลักที่ใช้ในการทดสอบที่แตกต่างกัน: generate_until
และ loglikelihood
- การทดสอบ gsm8k ใช้เป็นหลัก generate_until
เพื่อสร้างการตอบสนองเช่นเดียวกับในระหว่างการอนุมาน Loglikelihood
ส่วนใหญ่จะใช้ในการเปรียบเทียบและการทดสอบ และตรวจสอบความน่าจะเป็นของผลลัพธ์ที่แตกต่างกันที่เกิดขึ้น ทั้งสองทำงานใน Neuron แต่ loglikelihood
วิธีการใน SDK 2.16 ใช้ขั้นตอนเพิ่มเติมเพื่อกำหนดความน่าจะเป็นและอาจใช้เวลาเพิ่มเติม
ผลลัพธ์การประเมิน Lm-สายรัด | ||
การกำหนดค่าฮาร์ดแวร์ | ระบบเดิม | AWS Inferentia inf2.48xlarge |
เวลากับ batch_size=1 เพื่อประเมิน mistralai/Mistral-7B-Instruct-v0.1 บน gsm8k | 103 นาที | 32 นาที |
คะแนนบน gsm8k (รับคำตอบ - ตรงทั้งหมดกับมาตรฐาน) | 0.3813 – 0.3874 (± 0.0134) | 0.3806 – 0.3844 (± 0.0134) |
เริ่มต้นใช้งาน Neuron และ lm-evalue-harness
รหัสในส่วนนี้สามารถช่วยให้คุณใช้งานได้ lm-evaluation-harness
และรันกับรุ่นที่รองรับบน Hugging Face หากต้องการดูรุ่นที่มีจำหน่าย โปรดไปที่ AWS Inferentia และ Trainium บนใบหน้ากอด
หากคุณคุ้นเคยกับการรันโมเดลบน AWS Inferentia2 คุณอาจสังเกตเห็นว่าไม่มี num_cores
การตั้งค่าที่ส่งผ่านเข้ามา โค้ดของเราจะตรวจจับจำนวนคอร์ที่มีอยู่และส่งผ่านตัวเลขนั้นไปเป็นพารามิเตอร์โดยอัตโนมัติ ซึ่งจะทำให้คุณสามารถรันการทดสอบโดยใช้โค้ดเดียวกันได้ ไม่ว่าคุณจะใช้อินสแตนซ์ขนาดใดก็ตาม คุณอาจสังเกตเห็นว่าเรากำลังอ้างอิงถึงโมเดลดั้งเดิม ไม่ใช่เวอร์ชันที่คอมไพล์ของ Neuron สายรัดจะรวบรวมโมเดลให้คุณโดยอัตโนมัติตามความจำเป็น
ขั้นตอนต่อไปนี้จะแสดงวิธีการปรับใช้การไล่ระดับสี gradientai/v-alpha-tross
รุ่นที่เราทดสอบ หากคุณต้องการทดสอบด้วยตัวอย่างที่เล็กกว่าบนอินสแตนซ์ที่เล็กกว่า คุณสามารถใช้ mistralai/Mistral-7B-v0.1
แบบ
- โควต้าเริ่มต้นสำหรับการเรียกใช้อินสแตนซ์ Inf ตามความต้องการคือ 0 ดังนั้นคุณควรขอเพิ่มผ่านโควต้าบริการ เพิ่มคำขออื่นสำหรับคำขออินสแตนซ์ Inf Spot ทั้งหมด เพื่อให้คุณสามารถทดสอบกับอินสแตนซ์ Spot ได้ คุณจะต้องมีโควต้า 192 vCPU สำหรับตัวอย่างนี้โดยใช้อินสแตนซ์ inf2.48xlarge หรือโควต้า 4 vCPU สำหรับ inf2.xlarge พื้นฐาน (หากคุณกำลังปรับใช้โมเดล Mistral) โควต้าเป็นพื้นที่เฉพาะของ AWS ดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณได้ร้องขอ
us-east-1
orus-west-2
. - ตัดสินใจเลือกอินสแตนซ์ของคุณตามโมเดลของคุณ เพราะ
v-alpha-tross
เป็นสถาปัตยกรรม 70B เราตัดสินใจใช้อินสแตนซ์ inf2.48xlarge ปรับใช้ inf2.xlarge (สำหรับรุ่น 7B Mistral) หากคุณกำลังทดสอบโมเดลอื่น คุณอาจต้องปรับอินสแตนซ์ของคุณโดยขึ้นอยู่กับขนาดของโมเดลของคุณ - ปรับใช้อินสแตนซ์โดยใช้ กอดหน้า DLAMI เวอร์ชั่น 20240123เพื่อที่จะติดตั้งไดรเวอร์ที่จำเป็นทั้งหมด (ราคาที่แสดงรวมต้นทุนอินสแตนซ์และไม่มีค่าใช้จ่ายซอฟต์แวร์เพิ่มเติม)
- ปรับขนาดไดรฟ์เป็น 600 GB (100 GB สำหรับ Mistral 7B)
- โคลนและติดตั้ง
lm-evaluation-harness
บนอินสแตนซ์ เราระบุบิลด์เพื่อให้เราทราบว่าความแปรปรวนใดๆ เกิดจากการเปลี่ยนแปลงโมเดล ไม่ใช่การทดสอบหรือการเปลี่ยนแปลงโค้ด
- วิ่ง
lm_eval
ด้วยประเภทโมเดล hf-neuron และตรวจสอบให้แน่ใจว่าคุณมีลิงก์ไปยังเส้นทางกลับไปยังโมเดลบน Hugging Face:
หากคุณรันตัวอย่างก่อนหน้านี้ด้วย Mistral คุณควรได้รับเอาต์พุตต่อไปนี้ (บน inf2.xlarge ที่เล็กกว่า อาจใช้เวลารัน 250 นาที):
ทำความสะอาด
เมื่อเสร็จแล้ว อย่าลืมหยุด EC2 instance ผ่านทาง Amazon EC2 Console
สรุป
ทีม Gradient และ Neuron รู้สึกตื่นเต้นที่ได้เห็นการนำการประเมิน LLM ไปใช้อย่างกว้างขวางมากขึ้นในการเปิดตัวครั้งนี้ ลองใช้ด้วยตัวเองและรันเฟรมเวิร์กการประเมินที่ได้รับความนิยมสูงสุดบนอินสแตนซ์ AWS Inferentia2 ตอนนี้คุณสามารถได้รับประโยชน์จากความพร้อมใช้งานตามความต้องการของ AWS Inferentia2 เมื่อคุณใช้งาน การพัฒนา LLM แบบกำหนดเองจาก Gradient- เริ่มต้นโฮสต์โมเดลบน AWS Inferentia ด้วยสิ่งเหล่านี้ บทเรียน.
เกี่ยวกับผู้เขียน
ไมเคิล ฟีล เป็นวิศวกร AI ที่ Gradient และเคยทำงานเป็นวิศวกร ML ที่ Rodhe & Schwarz และนักวิจัยที่ Max-Plank Institute for Intelligent Systems และ Bosch Rexroth Michael เป็นผู้มีส่วนร่วมชั้นนำในไลบรารีอนุมานโอเพ่นซอร์สต่างๆ สำหรับ LLM และโครงการโอเพ่นซอร์ส เช่น StarCoder Michael สำเร็จการศึกษาระดับปริญญาตรีสาขาเมคคาทรอนิกส์และไอทีจาก KIT และปริญญาโทสาขาวิทยาการหุ่นยนต์จาก Technical University of Munich
จิม เบอร์ทอฟต์ เป็นสถาปนิกโซลูชันสตาร์ทอัพอาวุโสที่ AWS และทำงานโดยตรงกับสตาร์ทอัพอย่าง Gradient Jim เป็น CISSP ซึ่งเป็นส่วนหนึ่งของชุมชนภาคสนามด้านเทคนิค AWS AI/ML ซึ่งเป็น Neuron Ambassador และทำงานร่วมกับชุมชนโอเพ่นซอร์สเพื่อให้สามารถใช้ Inferentia และ Trainium ได้ จิมสำเร็จการศึกษาระดับปริญญาตรีสาขาคณิตศาสตร์จากมหาวิทยาลัยคาร์เนกี้ เมลลอน และปริญญาโทสาขาเศรษฐศาสตร์จากมหาวิทยาลัยเวอร์จิเนีย
- เนื้อหาที่ขับเคลื่อนด้วย SEO และการเผยแพร่ประชาสัมพันธ์ รับการขยายวันนี้
- PlatoData.Network Vertical Generative Ai เพิ่มพลังให้กับตัวเอง เข้าถึงได้ที่นี่.
- เพลโตไอสตรีม. Web3 อัจฉริยะ ขยายความรู้ เข้าถึงได้ที่นี่.
- เพลโตESG. คาร์บอน, คลีนเทค, พลังงาน, สิ่งแวดล้อม แสงอาทิตย์, การจัดการของเสีย. เข้าถึงได้ที่นี่.
- เพลโตสุขภาพ เทคโนโลยีชีวภาพและข่าวกรองการทดลองทางคลินิก เข้าถึงได้ที่นี่.
- ที่มา: https://aws.amazon.com/blogs/machine-learning/gradient-makes-llm-benchmarking-cost-effective-and-effortless-with-aws-inferentia/