Ray Clusters cho AI: Kiến trúc Điện toán Phân tán
Cập nhật ngày 11 tháng 12 năm 2025
Cập nhật tháng 12 năm 2025: OpenAI sử dụng Ray để điều phối quá trình huấn luyện ChatGPT. Ray gia nhập PyTorch Foundation xác nhận việc áp dụng trong doanh nghiệp. Framework có khả năng mở rộng từ laptop đến hàng nghìn GPU. Đạt được hàng triệu tác vụ mỗi giây với độ trễ dưới mili giây—nhanh hơn Spark một bậc cho các mẫu AI. Hỗ trợ điện toán không đồng nhất nguyên bản cho phép kết hợp khối lượng công việc CPU/GPU.
OpenAI sử dụng Ray để điều phối quá trình huấn luyện ChatGPT và các mô hình khác.¹ Framework này có thể mở rộng từ laptop đến các cụm cluster với hàng nghìn GPU, xử lý độ phức tạp của điện toán phân tán mà nếu không có nó sẽ đòi hỏi cơ sở hạ tầng tùy chỉnh cho mỗi dự án. Việc áp dụng Ray bùng nổ trong suốt năm 2025, được xác nhận bởi việc framework gia nhập PyTorch Foundation và Anyscale huy động vốn để hỗ trợ triển khai doanh nghiệp.² Hiểu kiến trúc và các mẫu triển khai của Ray giúp các tổ chức xây dựng cơ sở hạ tầng AI phân tán có khả năng mở rộng từ thử nghiệm đến sản xuất.
Ray cung cấp một framework thống nhất cho các khối lượng công việc AI phân tán—huấn luyện, tinh chỉnh, suy luận và xử lý dữ liệu—trừu tượng hóa độ phức tạp của quản lý cluster trong khi vẫn duy trì quyền kiểm soát chi tiết đối với phân bổ tài nguyên. Đối với các tổ chức đang chuyển từ thử nghiệm GPU đơn sang hệ thống sản xuất đa nút, Ray cung cấp con đường trực tiếp nhất đến cơ sở hạ tầng AI có khả năng mở rộng.
Tại sao chọn Ray cho cơ sở hạ tầng AI
Ray xuất hiện từ RISELab của UC Berkeley để giải quyết các thách thức cụ thể của khối lượng công việc AI phân tán mà các framework truyền thống như Apache Spark xử lý kém:
Yêu cầu khối lượng công việc AI
Điện toán không đồng nhất: Các pipeline AI kết hợp xử lý dữ liệu nặng CPU với huấn luyện và suy luận tăng tốc GPU. Ray hỗ trợ nguyên bản việc phân bổ tài nguyên không đồng nhất, lập lịch các tác vụ trên CPU và GPU theo yêu cầu khối lượng công việc.³
Song song hóa chi tiết: Huấn luyện deep learning đòi hỏi điều phối gradient giữa các worker, quản lý trạng thái mô hình và xử lý lỗi một cách graceful. Các trừu tượng task và actor của Ray cung cấp các nguyên thủy cần thiết cho các mẫu này.
Tính toán có trạng thái: Không giống như các framework kiểu MapReduce, khối lượng công việc AI thường duy trì trạng thái qua các lần lặp. Ray actor duy trì trạng thái giữa các lần gọi, hỗ trợ các mẫu như parameter server và reinforcement learning agent.
Độ trễ thấp: Suy luận thời gian thực và tìm kiếm siêu tham số đòi hỏi lập lịch tác vụ ở mức micro giây. Ray đạt được hàng triệu tác vụ mỗi giây với độ trễ dưới mili giây—nhanh hơn Spark một bậc cho các mẫu này.⁴
So sánh với các giải pháp thay thế
Apache Spark: Tối ưu hóa cho xử lý dữ liệu theo lô với SQL và DataFrame. Xuất sắc trong ETL, feature engineering và phân tích dữ liệu có cấu trúc. Ít phù hợp hơn cho khối lượng công việc GPU, tính toán có trạng thái và yêu cầu độ trễ thấp.⁵
Dask: Điện toán phân tán native Python với API DataFrame và array. Nhẹ hơn Spark nhưng thiếu mô hình actor và các thư viện ML chuyên biệt của Ray.
Horovod: Tập trung cụ thể vào huấn luyện deep learning phân tán. Ít linh hoạt hơn Ray cho các khối lượng công việc AI đa dạng nhưng đơn giản hơn cho các kịch bản huấn luyện thuần túy.
Lợi thế của Ray: Một framework duy nhất xử lý xử lý dữ liệu, huấn luyện, tinh chỉnh siêu tham số và phục vụ suy luận. Các team tránh được việc quản lý nhiều hệ thống và độ phức tạp tích hợp giữa chúng.
Áp dụng trong sản xuất
Các tổ chức lớn chạy Ray trong sản xuất:⁶
- OpenAI: Điều phối huấn luyện ChatGPT
- Uber: Nền tảng ML phân tán
- Instacart: Xương sống cơ sở hạ tầng ML
- Shopify: Khối lượng công việc ML sản xuất
- Ant Group: ML tài chính quy mô lớn
Ray cluster chính thức hỗ trợ đến 2.000 nút, cho phép quy mô cần thiết cho huấn luyện mô hình tiên tiến và suy luận khối lượng lớn.
Kiến trúc Ray
Các trừu tượng cốt lõi
Ray cung cấp hai trừu tượng cơ bản cho tính toán phân tán:
Task: Các hàm không trạng thái được thực thi từ xa. Ray tự động lập lịch các task trên các worker khả dụng, xử lý lỗi và trả về kết quả.
import ray
ray.init()
@ray.remote
def process_batch(data):
# Chạy trên bất kỳ worker khả dụng nào
return transform(data)
# Thực thi song song
futures = [process_batch.remote(batch) for batch in batches]
results = ray.get(futures)
Actor: Các đối tượng có trạng thái được phân tán trên cluster. Mỗi actor duy trì trạng thái giữa các lần gọi phương thức, cho phép các mẫu như phục vụ mô hình, parameter server và môi trường game.
@ray.remote
class ModelServer:
def __init__(self, model_path):
self.model = load_model(model_path)
def predict(self, input_data):
return self.model(input_data)
# Tạo instance actor
server = ModelServer.remote("model.pt")
# Gọi phương thức từ xa
prediction = ray.get(server.predict.remote(data))
Kiến trúc cluster
Ray cluster bao gồm nút head và các nút worker:
Nút head: Chạy Global Control Store (GCS) quản lý trạng thái cluster, object directory theo dõi vị trí dữ liệu và scheduler điều phối việc đặt task.
Nút worker: Thực thi task và actor. Mỗi worker chạy một daemon Raylet xử lý lập lịch cục bộ và quản lý object.
Object store: Bộ nhớ chia sẻ phân tán cho phép truyền dữ liệu zero-copy giữa các task trên cùng nút và serialization hiệu quả giữa các nút.
Quản lý tài nguyên
Ray quản lý tài nguyên không đồng nhất một cách tường minh:
@ray.remote(num_cpus=4, num_gpus=1)
def train_step(model, data):
# Đảm bảo 4 CPU và 1 GPU
return model.train(data)
Tài nguyên tùy chỉnh cho phép lập lịch chi tiết:
# Yêu cầu phần cứng cụ thể
@ray.remote(resources={"TPU": 1})
def tpu_inference(data):
return run_on_tpu(data)
Các thư viện AI của Ray
Ray bao gồm các thư viện được xây dựng chuyên biệt cho các khối lượng công việc AI phổ biến:
Ray Train
Trừu tượng huấn luyện phân tán hỗ trợ PyTorch, TensorFlow và các framework khác:
from ray.train.torch import TorchTrainer
from ray.train import ScalingConfig
def train_func():
# Code huấn luyện PyTorch tiêu chuẩn
model = MyModel()
for epoch in range(10):
train_epoch(model)
trainer = TorchTrainer(
train_loop_per_worker=train_func,
scaling_config=ScalingConfig(
num_workers=8,
use_gpu=True
),
)
result = trainer.fit()
Các khả năng chính:⁷ - Mở rộng từ GPU đơn đến cluster đa nút chỉ với 2 dòng code thay đổi - Tải dữ liệu phân tán tự động và đồng bộ hóa gradient - Quản lý checkpoint và phục hồi lỗi - Tích hợp với PyTorch Lightning, Hugging Face Transformers và DeepSpeed
Ray Tune
Tối ưu hóa siêu tham số phân tán:
from ray import tune
from ray.tune.schedulers import ASHAScheduler
def training_function(config):
model = build_model(config["learning_rate"], config["batch_size"])
for epoch in range(100):
loss = train_epoch(model)
tune.report(loss=loss)
analysis = tune.run(
training_function,
config={
"learning_rate": tune.loguniform(1e-4, 1e-1),
"batch_size": tune.choice([32, 64, 128])
},
scheduler=ASHAScheduler(metric="loss", mode="min"),
num_samples=100,
)
Ray Tune cung cấp: - Thực thi trial song song trên cluster - Dừng sớm với ASHA, Population-Based Training và các scheduler khác - Tích hợp với Optuna, HyperOpt và các thư viện tối ưu hóa khác - Checkpoint và tiếp tục
Ray Serve
Phục vụ mô hình sản xuất với autoscaling:
from ray import serve
@serve.deployment(num_replicas=2, ray_actor_options={"num_gpus": 1})
class LLMDeployment:
def __init__(self):
self.model = load_llm()
async def __call__(self, request):
prompt = await request.json()
return self.model.generate(prompt["text"])
serve.run(LLMDeployment.bind())
Các khả năng của Ray Serve:⁸ - Autoscaling dựa trên tốc độ request - Triển khai không downtime - Kết hợp đa mô hình và định tuyến request - API tương thích OpenAI cho phục vụ LLM - Giảm 60% thời gian đến token đầu tiên với định tuyến nhận biết prefix⁹
Ray Data
Tải và tiền xử lý dữ liệu phân tán:
import ray
ds = ray.data.read_parquet("s3://bucket/data/")
ds = ds.map(preprocess)
ds = ds.filter(lambda x: x["label"] > 0)
# Chuyển đổi sang PyTorch DataLoader
train_loader = ds.iter_torch_batches(batch_size=32)
Ray Data cung cấp: - Thực thi streaming cho dataset lớn - Tiền xử lý tăng tốc GPU - Tích hợp với Ray Train cho huấn luyện phân tán - Hỗ trợ nguyên bản cho dữ liệu hình ảnh, văn bản và dạng bảng
Triển khai Kubernetes với KubeRay
Các triển khai Ray sản xuất thường chạy trên Kubernetes sử dụng KubeRay, operator Kubernetes chính thức:¹⁰
Các thành phần KubeRay
RayCluster CRD: Định nghĩa cấu hình cluster bao gồm đặc tả nút head và worker, chính sách autoscaling và yêu cầu tài nguyên.
apiVersion: ray.io/v1
kind: RayCluster
metadata:
name: ml-cluster
spec:
headGroupSpec:
rayStartParams:
dashboard-host: '0.0.0.0'
template:
spec:
containers:
- name: ray-head
image: rayproject/ray:2.52.0-py310-gpu
resources:
limits:
nvidia.com/gpu: 1
workerGroupSpecs:
- replicas: 4
minReplicas: 2
maxReplicas: 10
groupName: gpu-workers
rayStartParams: {}
template:
spec:
containers:
- name: ray-worker
image: rayproject/ray:2.52.0-py310-gpu
resources:
limits:
nvidia.com/gpu: 1
RayJob CRD: Gửi job đến cluster được cấp phát tự động. KubeRay tạo cluster, chạy job và tùy chọn xóa cluster khi hoàn thành.
RayService CRD: Triển khai Ray Serve được quản lý với nâng cấp không downtime và kiểm tra health.
Các thực hành tốt nhất cho sản xuất
Container image: Đóng gói dependency vào Docker image được publish thay vì cài đặt lúc runtime. Điều này đảm bảo khả năng tái tạo và khởi động nhanh hơn.¹¹
Autoscaling: Kích hoạt cả Ray autoscaling (mở rộng worker trong cluster) và Kubernetes autoscaling (mở rộng nút cluster):
spec:
enableInTreeAutoscaling: true
autoscalerOptions:
upscalingMode: Default
idleTimeoutSeconds: 60
Storage: Sử dụng persistent volume cho checkpoint và shared storage cho dataset lớn:
volumes:
- name: shared-storage
persistentVolumeClaim:
claimName: ml-data-pvc
Monitoring: Tích hợp với Prometheus và Grafana để quan sát:
metadata:
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8080"
Triển khai theo cloud cụ thể
GKE: Ray trên GKE add-on cung cấp Ray cluster được quản lý với cấp phát tự động và tích hợp với các dịch vụ Google Cloud.¹²
EKS: Triển khai KubeRay với Cluster Autoscaler hoặc Karpenter để mở rộng nút. Tích hợp với FSx for Lustre cung cấp shared storage hiệu suất cao.
AKS: Microsoft và Anyscale cung cấp Anyscale trên Azure như một dịch vụ first-party có thể truy cập từ Azure Portal.¹³
Anyscale managed Ray
Anyscale, công ty được thành lập bởi những người tạo ra Ray, cung cấp triển khai Ray được quản lý:
Anyscale Platform
Managed cluster: Ray cluster cấp độ sản xuất với autoscaling tự động, khả năng chịu lỗi và monitoring mà không cần quản lý cơ sở hạ tầng.
RayTurbo runtime: Cải tiến hiệu suất độc quyền mang lại khả năng phục hồi cao hơn, hiệu suất nhanh hơn và chi phí thấp hơn so với Ray mã nguồn mở.¹⁴
Tính năng enterprise: Kiểm soát truy cập dựa trên vai trò, ghi nhật ký audit, VPC peering và chứng nhận compliance.
Quan hệ đối tác cloud
CoreWeave: Anyscale BYOC (Bring Your Own Cloud) triển khai trực tiếp trong tài khoản khách hàng CoreWeave thông qua CoreWeave Kubernetes Service.¹⁵
Azure: Dịch vụ Anyscale first-party có sẵn trong Azure Portal với tích hợp nguyên bản.
AWS: Anyscale hoạt động trên AWS với tích hợp vào các dịch vụ AWS hiện có.
Khi nào sử dụng Anyscale
**Cân nhắc Anysc