Đọc một dataset nghìn tỷ token mà không nạp vào RAM

Đọc một dataset nghìn tỷ token mà không nạp vào RAM An architecture diagram generated by Archify. Corpus đã token hoá · hàng nghìn tỷ token · Architecture component Corpus đã token hoá hàng nghìn tỷ token Shards nhị phân · shard_00000 … shard_99999 · Architecture component Shards nhị phân shard_00000 … shard_99999 Index mapping · sample → document, offset · Architecture component Index mapping sample → document, offset Memory-mapped read · chỉ chạm vùng đang cần · Architecture component Memory-mapped read chỉ chạm vùng đang cần Shuffle nhiều cấp · shard · document · sample · Architecture component Shuffle nhiều cấp shard · document · sample Distributed loader · mỗi rank một phần riêng · Architecture component Distributed loader mỗi rank một phần riêng Resume xác định · đã tiêu thụ bao nhiêu token · Architecture component Resume xác định đã tiêu thụ bao nhiêu token GPU ranks · rank 0 … rank N · Architecture component GPU ranks rank 0 … rank N chia nhỏ dựng bảng tra sample thứ i ở đâu đọc đúng vùng cần như một mảng lớn thứ tự sample batch cho từng rank quay lại đúng chỗ Legend Frontend Backend Database Cloud Security Message bus

Token stream là mô hình tư duy, không phải một file

  • • Dữ liệu nằm rải trên nhiều shard để đọc song song và retry được
  • • Megatron-LM dựng document index, sample index và shuffle index
  • • Nhờ đó lấy được sample thứ i mà không phải viết lại dataset

Shuffle ở quy mô này không phải random.shuffle

  • • Trộn ở nhiều cấp: shard, document, chỉ số sample và buffer
  • • Mục tiêu là ngẫu nhiên đủ mà không phải ghi lại toàn bộ dữ liệu
  • • Thứ tự phải tái lập được thì mới resume đúng sau khi crash

Data loader là một bài toán hệ thống phân tán

  • • Mỗi rank phải nhận phần khác nhau và tải cân bằng
  • • Throughput phải đủ để GPU không phải chờ dữ liệu
  • • Phải theo dõi đã tiêu thụ bao nhiêu token để checkpoint có nghĩa