การไล่ระดับสีทำให้การเปรียบเทียบ LLM คุ้มค่าและง่ายดายด้วย AWS Inferentia | อเมซอนเว็บเซอร์วิส

การไล่ระดับสีทำให้การเปรียบเทียบ LLM คุ้มค่าและง่ายดายด้วย AWS Inferentia | อเมซอนเว็บเซอร์วิส

นี่คือโพสต์รับเชิญที่เขียนร่วมกับ 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 แบบ

  1. โควต้าเริ่มต้นสำหรับการเรียกใช้อินสแตนซ์ Inf ตามความต้องการคือ 0 ดังนั้นคุณควรขอเพิ่มผ่านโควต้าบริการ เพิ่มคำขออื่นสำหรับคำขออินสแตนซ์ Inf Spot ทั้งหมด เพื่อให้คุณสามารถทดสอบกับอินสแตนซ์ Spot ได้ คุณจะต้องมีโควต้า 192 vCPU สำหรับตัวอย่างนี้โดยใช้อินสแตนซ์ inf2.48xlarge หรือโควต้า 4 vCPU สำหรับ inf2.xlarge พื้นฐาน (หากคุณกำลังปรับใช้โมเดล Mistral) โควต้าเป็นพื้นที่เฉพาะของ AWS ดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณได้ร้องขอ us-east-1 or us-west-2.
  2. ตัดสินใจเลือกอินสแตนซ์ของคุณตามโมเดลของคุณ เพราะ v-alpha-tross เป็นสถาปัตยกรรม 70B เราตัดสินใจใช้อินสแตนซ์ inf2.48xlarge ปรับใช้ inf2.xlarge (สำหรับรุ่น 7B Mistral) หากคุณกำลังทดสอบโมเดลอื่น คุณอาจต้องปรับอินสแตนซ์ของคุณโดยขึ้นอยู่กับขนาดของโมเดลของคุณ
  3. ปรับใช้อินสแตนซ์โดยใช้ กอดหน้า DLAMI เวอร์ชั่น 20240123เพื่อที่จะติดตั้งไดรเวอร์ที่จำเป็นทั้งหมด (ราคาที่แสดงรวมต้นทุนอินสแตนซ์และไม่มีค่าใช้จ่ายซอฟต์แวร์เพิ่มเติม)
  4. ปรับขนาดไดรฟ์เป็น 600 GB (100 GB สำหรับ Mistral 7B)
  5. โคลนและติดตั้ง lm-evaluation-harness บนอินสแตนซ์ เราระบุบิลด์เพื่อให้เราทราบว่าความแปรปรวนใดๆ เกิดจากการเปลี่ยนแปลงโมเดล ไม่ใช่การทดสอบหรือการเปลี่ยนแปลงโค้ด
git clone https://github.com/EleutherAI/lm-evaluation-harness
cd lm-evaluation-harness
# optional: pick specific revision from the main branch version to reproduce the exact results
git checkout 756eeb6f0aee59fc624c81dcb0e334c1263d80e3
# install the repository without overwriting the existing torch and torch-neuronx installation
pip install --no-deps -e . 
pip install peft evaluate jsonlines numexpr pybind11 pytablewriter rouge-score sacrebleu sqlitedict tqdm-multiprocess zstandard hf_transfer

  1. วิ่ง lm_eval ด้วยประเภทโมเดล hf-neuron และตรวจสอบให้แน่ใจว่าคุณมีลิงก์ไปยังเส้นทางกลับไปยังโมเดลบน Hugging Face:
# e.g use mistralai/Mistral-7B-v0.1 if you are on inf2.xlarge
MODEL_ID=gradientai/v-alpha-tross

python -m lm_eval --model "neuronx" --model_args "pretrained=$MODEL_ID,dtype=bfloat16" --batch_size 1 --tasks gsm8k

หากคุณรันตัวอย่างก่อนหน้านี้ด้วย Mistral คุณควรได้รับเอาต์พุตต่อไปนี้ (บน inf2.xlarge ที่เล็กกว่า อาจใช้เวลารัน 250 นาที):

███████████████████████| 1319/1319 [32:52<00:00,  1.50s/it]
neuronx (pretrained=mistralai/Mistral-7B-v0.1,dtype=bfloat16), gen_kwargs: (None), limit: None, num_fewshot: None, batch_size: 1
|Tasks|Version|  Filter  |n-shot|  Metric   |Value |   |Stderr|
|-----|------:|----------|-----:|-----------|-----:|---|-----:|
|gsm8k|      2|get-answer|     5|exact_match|0.3806|±  |0.0134|

ทำความสะอาด

เมื่อเสร็จแล้ว อย่าลืมหยุด EC2 instance ผ่านทาง Amazon EC2 Console

สรุป

ทีม Gradient และ Neuron รู้สึกตื่นเต้นที่ได้เห็นการนำการประเมิน LLM ไปใช้อย่างกว้างขวางมากขึ้นในการเปิดตัวครั้งนี้ ลองใช้ด้วยตัวเองและรันเฟรมเวิร์กการประเมินที่ได้รับความนิยมสูงสุดบนอินสแตนซ์ AWS Inferentia2 ตอนนี้คุณสามารถได้รับประโยชน์จากความพร้อมใช้งานตามความต้องการของ AWS Inferentia2 เมื่อคุณใช้งาน การพัฒนา LLM แบบกำหนดเองจาก Gradient- เริ่มต้นโฮสต์โมเดลบน AWS Inferentia ด้วยสิ่งเหล่านี้ บทเรียน.


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

การไล่ระดับสีทำให้การเปรียบเทียบ LLM คุ้มค่าและง่ายดายด้วย AWS Inferentia | Amazon Web Services PlatoBlockchain ข้อมูลอัจฉริยะ ค้นหาแนวตั้ง AI.ไมเคิล ฟีล เป็นวิศวกร AI ที่ Gradient และเคยทำงานเป็นวิศวกร ML ที่ Rodhe & Schwarz และนักวิจัยที่ Max-Plank Institute for Intelligent Systems และ Bosch Rexroth Michael เป็นผู้มีส่วนร่วมชั้นนำในไลบรารีอนุมานโอเพ่นซอร์สต่างๆ สำหรับ LLM และโครงการโอเพ่นซอร์ส เช่น StarCoder Michael สำเร็จการศึกษาระดับปริญญาตรีสาขาเมคคาทรอนิกส์และไอทีจาก KIT และปริญญาโทสาขาวิทยาการหุ่นยนต์จาก Technical University of Munich

การไล่ระดับสีทำให้การเปรียบเทียบ LLM คุ้มค่าและง่ายดายด้วย AWS Inferentia | Amazon Web Services PlatoBlockchain ข้อมูลอัจฉริยะ ค้นหาแนวตั้ง AI.จิม เบอร์ทอฟต์ เป็นสถาปนิกโซลูชันสตาร์ทอัพอาวุโสที่ AWS และทำงานโดยตรงกับสตาร์ทอัพอย่าง Gradient Jim เป็น CISSP ซึ่งเป็นส่วนหนึ่งของชุมชนภาคสนามด้านเทคนิค AWS AI/ML ซึ่งเป็น Neuron Ambassador และทำงานร่วมกับชุมชนโอเพ่นซอร์สเพื่อให้สามารถใช้ Inferentia และ Trainium ได้ จิมสำเร็จการศึกษาระดับปริญญาตรีสาขาคณิตศาสตร์จากมหาวิทยาลัยคาร์เนกี้ เมลลอน และปริญญาโทสาขาเศรษฐศาสตร์จากมหาวิทยาลัยเวอร์จิเนีย

ประทับเวลา:

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

บรรลุอัตราการส่งข้อมูลการอนุมาน ML ที่สูงขึ้นสี่เท่าด้วยต้นทุนต่อการอนุมานที่ต่ำลงสามเท่าด้วยอินสแตนซ์ Amazon EC2 G5 สำหรับรุ่น NLP และ CV PyTorch

โหนดต้นทาง: 1718670
ประทับเวลา: ตุลาคม 3, 2022