Foundation Model Stack: เครื่องมือครบวงจรสำหรับพัฒนาโมเดลภาษาขนาดใหญ่ด้วย PyTorch
การพัฒนาโมเดลภาษาขนาดใหญ่ (Foundation Models) หรือ LLMs ในปัจจุบันมีความซับซ้อนและต้องการเครื่องมือที่หลากหลาย ตั้งแต่การพัฒนา การฝึกฝน การปรับแต่ง ไปจนถึงการนำไปใช้งานจริง (Inference) เพื่อตอบโจทย์ความต้องการเหล่านี้ Foundation Model Stack (FMS) ได้ถูกสร้างขึ้นมาเพื่อเป็นชุดเครื่องมือที่รวบรวมส่วนประกอบที่จำเป็นสำหรับการทำงานกับ Foundation Models โดยเฉพาะ โดยใช้ PyTorch เป็นแกนหลัก
Foundation Model Stack คืออะไร?
Foundation Model Stack คือชุดส่วนประกอบที่ออกแบบมาเพื่ออำนวยความสะดวกในการพัฒนา, ฝึกฝน, ปรับแต่ง, และนำ Foundation Models ไปใช้งานจริง โดยใช้ความสามารถของ PyTorch เป็นหัวใจหลัก FMS มุ่งเน้นการเพิ่มประสิทธิภาพในการ Inference ด้วยเทคโนโลยีอย่าง PyTorch Compile, Accelerated Transformers, และ Tensor Parallelism รวมถึงการรองรับ FSDP (Fully Sharded Data Parallel) และ Accelerated Transformers ในระหว่างการฝึกฝน
เพื่อให้สามารถใช้ประโยชน์จากการปรับปรุงประสิทธิภาพเหล่านี้ FMS จึงมีการนำสถาปัตยกรรมโมเดลยอดนิยมหลายตัวมาสร้างใหม่ด้วย PyTorch Native components โดยเริ่มต้นจากโมเดล Llama และ GPT-BigCode
ทำไมต้องใช้ Foundation Model Stack?
FMS ถูกพัฒนาขึ้นมาเพื่อแก้ปัญหาและเพิ่มประสิทธิภาพในขั้นตอนต่างๆ ของการทำงานกับ Foundation Models ดังนี้:
🚀 เพิ่มประสิทธิภาพการ Inference
- PyTorch Compile: ช่วยคอมไพล์โค้ด PyTorch ให้เป็น Kernel ที่มีการปรับปรุงประสิทธิภาพสูงสุด ลด Overhead และเพิ่มความเร็วในการประมวลผล
- Accelerated Transformers: ใช้ประโยชน์จาก Scaled Dot-Product Attention (SDPA) เพื่อเร่งความเร็วในการคำนวณ Attention Mechanism โดยเฉพาะอย่างยิ่งในส่วนของโมเดล Transformer ซึ่งช่วยลดการใช้หน่วยความจำลงได้
- Tensor Parallelism: จำเป็นอย่างยิ่งสำหรับการทำงานกับโมเดลขนาดใหญ่ที่ต้องกระจายการคำนวณไปยัง GPU หลายตัว เพื่อให้สามารถประมวลผลได้ทัน
🛠️ สนับสนุนการฝึกฝนและปรับแต่ง
- FSDP Support: รองรับ Fully Sharded Data Parallel ซึ่งเป็นเทคนิคสำคัญในการฝึกฝนโมเดลขนาดใหญ่ให้มีประสิทธิภาพ
- Accelerated Transformers: ช่วยเร่งการคำนวณในระหว่างการฝึกฝนเช่นกัน
- PyTorch Compile: สามารถนำมาใช้เพื่อปรับปรุงประสิทธิภาพในขั้นตอนการฝึกฝนได้
💡 การนำไปใช้งานจริง
FMS ได้รับการออกแบบมาให้ทำงานร่วมกับสภาพแวดล้อมที่เหมาะสมเพื่อประสิทธิภาพสูงสุด แนะนำให้ใช้งานบน:
- Python 3.11: เพื่อลด Overhead ของ CPU
- CUDA 12.1: เพื่อเพิ่มประสิทธิภาพสูงสุดในการประมวลผลบน GPU
และต้องการ PyTorch เวอร์ชันตั้งแต่ 2.1 ขึ้นไป
📈 การวัดผลและเปรียบเทียบประสิทธิภาพ
FMS มีการวัดผล Latency ในการ Inference โดยใช้ Prompt 1024 Token และสร้างข้อความอีก 256 Token บน AWS P4de instance nodes ที่มี GPU A100 จำนวน 8 ตัว (80GB ต่อตัว) ผลลัพธ์จะแสดงเป็น Median Latency เพื่อให้เห็นภาพประสิทธิภาพที่ชัดเจน
โครงสร้างและการทำงานภายใน Repository
Repository ของ Foundation Model Stack ถูกจัดระเบียบเพื่อให้ง่ายต่อการพัฒนาและใช้งาน:
- fms/models/: พื้นที่สำหรับสถาปัตยกรรมโมเดลที่เขียนด้วย PyTorch แบบ Native โดยตรง ไม่ต้องพึ่งพา Interface เฉพาะทางใดๆ นอกเหนือจาก
nn.Moduleโมเดลแต่ละตัวจะถูกลงทะเบียนกับfms.models.registermodel()ทำให้สามารถเรียกใช้งานได้ง่ายผ่านfms.models.getmodel()นอกจากนี้ยังรองรับการลงทะเบียนแหล่งข้อมูลและรูปแบบของข้อมูลที่จะใช้ในการโหลด (เช่น Checkpoints จาก Meta, Hugging Face, หรือที่ฝึกฝนจาก Repository นี้) - fms/models/hf/: ส่วนที่ทำหน้าที่เป็น Adapter เพื่อเชื่อมต่อสถาปัตยกรรมโมเดล Native ของ FMS เข้ากับ Interface ที่เข้ากันได้กับ Hugging Face
- fms/datasets/: โค้ดสำหรับการโหลดข้อมูลที่ใช้ในการ Pre-training และ Fine-tuning
- fms/modules/: ส่วนประกอบที่ขยายความสามารถของ
nn.Moduleที่ใช้ในสถาปัตยกรรมโมเดลของ FMS โดยแต่ละ Module จะมีส่วนที่รองรับ Tensor Parallelism (TPModule) เพื่อให้สามารถ Shard โมเดลด้วยกลยุทธ์ Tensor Parallel ได้ - fms/training/: โค้ดสำหรับการ Pre-training และ Fine-tuning โมเดล
- fms/utils/: เครื่องมือและฟังก์ชัน Utility ต่างๆ ที่มีประโยชน์ในการทำงานกับ LLMs เช่น ฟังก์ชัน
generate(), การจัดการ Checkpoint, และโค้ดสำหรับการ Tokenization - scripts/: สคริปต์ต่างๆ สำหรับการ Inference, การวัดประสิทธิภาพ (Benchmarking), และการประเมินผล (Evaluation) รวมถึงเป็นจุดเข้าใช้งานสำหรับการ Tuning/Training
ส่วนขยายและการใช้งานจริง
Foundation Model Stack ถูกนำไปใช้งานจริงในหลายโปรเจกต์ของ IBM เช่น:
- fms-fsdp: แชร์โค้ดการฝึกฝนที่ใช้ในการ Pre-train โมเดล Llama ด้วย FMS บนข้อมูลภายในของ IBM
- fms-extras: แชร์โค้ดสำหรับโมเดล FMS เพิ่มเติมที่ฝึกฝนโดย IBM และอาจเป็นแหล่งรวมงานวิจัยหรือการพัฒนาอื่นๆ ที่มีเป้าหมายเพื่อส่งกลับไปยัง FMS ในอนาคต
- TGIS (Text Generation Inference Server): Server สำหรับ Inference ที่รองรับการให้บริการโมเดล FMS
ข้อควรพิจารณา
- PyTorch Compile Issues: ปัจจุบันมี Issue ที่เกี่ยวข้องกับ
torch.compileที่อาจส่งผลกระทบต่อการฝึกฝน/Fine-tuning (เช่นpytorch/pytorch#107824) - Inference Stability: มีการติดตาม Issue ที่เกี่ยวข้องกับการปรับปรุงความเสถียรและปริมาณการใช้หน่วยความจำในการ Inference
สรุป
Foundation Model Stack (FMS) เป็นเครื่องมือที่มีประสิทธิภาพและครบวงจรสำหรับนักพัฒนาที่ต้องการทำงานกับ Foundation Models โดยเฉพาะอย่างยิ่งผู้ที่ใช้ PyTorch เป็นหลัก ด้วยการมุ่งเน้นที่การเพิ่มประสิทธิภาพทั้งในขั้นตอนการ Inference และการฝึกฝน ทำให้ FMS เป็นตัวเลือกที่น่าสนใจสำหรับการสร้างและปรับใช้โมเดลภาษาขนาดใหญ่ให้ประสบความสำเร็จ
#FoundationModelStack #LLM #PyTorch #AI #MachineLearning
ขอบคุณ แหล่งข้อมูล
https://github.com/foundation-model-stack/foundation-model-stack