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

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 ดังนี้:🚀 เพิ่มประสิทธิภาพการ InferencePyTorch 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 ของ CPUCUDA 12.1: เพื่อเพิ่มประสิทธิภาพสูงสุดในการประมวลผลบน GPUและต้องการ PyTorch เวอร์ชันตั้งแต่ 2.1 ขึ้นไป📈 การวัดผลและเปรียบเทียบประสิทธิภาพFMS มีการวัดผล Latency ในการ Inference โดยใช้ Prompt 1024 Token และสร้างข้อความอีก 256 Token บน AWS P4de instance nodes ที่มี GPU A100 จำนวน 8 ตัว (80GB ต่อตัว) ผลลัพธ์จะแสดงเป็น Median Latency เพื่อให้เห็นภาพประสิทธิภาพที่ชัดเจนโครงสร้างและการทำงานภายใน RepositoryRepository ของ 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 Facefms/datasets/: โค้ดสำหรับการโหลดข้อมูลที่ใช้ในการ Pre-training และ Fine-tuningfms/modules/: ส่วนประกอบที่ขยายความสามารถของ nn.Module ที่ใช้ในสถาปัตยกรรมโมเดลของ FMS โดยแต่ละ Module จะมีส่วนที่รองรับ Tensor Parallelism (TPModule) เพื่อให้สามารถ Shard โมเดลด้วยกลยุทธ์ Tensor Parallel ได้fms/training/: โค้ดสำหรับการ Pre-training และ Fine-tuning โมเดลfms/utils/: เครื่องมือและฟังก์ชัน Utility ต่างๆ ที่มีประโยชน์ในการทำงานกับ LLMs เช่น ฟังก์ชัน generate(), การจัดการ Checkpoint, และโค้ดสำหรับการ Tokenizationscripts/: สคริปต์ต่างๆ สำหรับการ Inference, การวัดประสิทธิภาพ (Benchmarking), และการประเมินผล (Evaluation) รวมถึงเป็นจุดเข้าใช้งานสำหรับการ Tuning/Trainingส่วนขยายและการใช้งานจริงFoundation Model Stack ถูกนำไปใช้งานจริงในหลายโปรเจกต์ของ IBM เช่น:fms-fsdp: แชร์โค้ดการฝึกฝนที่ใช้ในการ Pre-train โมเดล Llama ด้วย FMS บนข้อมูลภายในของ IBMfms-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 #MachineLearninghttps://github.com/foundation-model-stack/foundation-model-stack
Shared content
GITHUB.COM
GitHub - foundation-model-stack/foundation-model-stack: 🚀 Collection of components for development, training, tuning, and inference of foundation models leveraging PyTorch native components.
🚀 Collection of components for development, training, tuning, and inference of foundation models leveraging PyTorch native components. - foundation-model-stack/foundation-model-stack
3 التعليقات 0 المشاركات 1كيلو بايت مشاهدة 0 معاينة