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