Cách Mình Vận Hành AI Infrastructure

Chạy AI models trên Runpod, Google Colab, và các compute platforms khác

Có những workload cần GPU mà Railway không cung cấp. Gọi Claude API hay OpenAI API thì Railway xử lý tốt -- nhưng chạy custom model, fine-tune, hay batch embedding quy mô lớn thì cần platform khác.

Nguyên tắc: Dùng đúng tool cho đúng việc. Railway cho web apps, GPU platforms cho AI workloads nặng.

Khi nào cần rời Railway

WorkloadPlatformLý do
Web app gọi LLM APIRailwayAPI calls không cần local GPU
Embedding generation (nhỏ)Railway + OpenAI APIAPI lo phần compute
Custom model inferenceRunpodCần GPU cho model
Model fine-tuningGoogle Colab / RunpodHeavy compute, dùng tạm rồi tắt
Batch embedding (quy mô lớn)RunpodGPU compute tiết kiệm hơn API

Nói đơn giản: nếu gọi API được thì gọi API. Chỉ khi nào cần chạy model trực tiếp thì mới cần GPU infrastructure.

Tổng quan Platform

Railway (mặc định)

Platform chính cho mọi web application:

  • NextJS frontends
  • FastAPI backends
  • Không hỗ trợ GPU
  • Tốt cho API-based AI (Claude, OpenAI)

Đa số workloads của mình nằm ở đây. Chỉ khi nào Railway không đáp ứng được mới tính chuyện dùng platform khác.

Runpod

GPU theo yêu cầu, trả tiền theo phút:

  • Chạy custom models
  • Docker-based deployments
  • Tốt cho inference và batch processing

Ưu điểm lớn nhất: bật lên khi cần, tắt khi xong. Không phải trả tiền 24/7 cho GPU mà chỉ dùng vài giờ mỗi tuần.

Google Colab

Notebook environment có GPU:

  • Free tier có GPU access (dù không ổn định)
  • Tốt cho experiments và prototyping
  • Không dùng cho production -- uptime không đảm bảo
  • Tốt để chia sẻ notebooks với team

Setup Runpod

Chọn GPU và tạo Pod

  1. Đăng ký tại runpod.io
  2. Nạp credits (pay-as-you-go)
  3. Chọn GPU type theo workload:
GPUVRAMUse CaseChi phí (ước tính)
RTX 309024GBModels nhỏ$0.30/hr
RTX 409024GBModels trung bình$0.50/hr
A10040GBModels lớn$1.50/hr

Đừng chọn A100 mặc định cho mọi thứ -- RTX 3090 đủ cho phần lớn workloads mà rẻ hơn 5 lần.

Chạy Model

# SSH vào pod
ssh root@pod-ip

# Pull model
git clone https://github.com/your-org/your-model

# Cài dependencies
pip install -r requirements.txt

# Chạy inference server
python serve.py --port 8000

Expose thành API

Runpod cung cấp public URL cho pod:

https://pod-id-8000.proxy.runpod.net

FastAPI app trên Railway gọi endpoint này cho inference. Kiến trúc hybrid: Railway xử lý web, Runpod xử lý GPU -- mỗi thằng làm việc nó giỏi.

Google Colab

Dùng khi nào

  • Prototyping -- test model ideas nhanh, không cần setup gì
  • One-off tasks -- fine-tune model một lần rồi thôi
  • Học tập -- thử nghiệm kỹ thuật mới
  • Chia sẻ -- collaborate trên notebooks, ai cũng mở được

Không dùng khi nào

Production workloads, nhu cầu performance ổn định, sensitive data, hoặc tasks chạy lâu (có timeout limits). Colab mà disconnect giữa chừng thì mất hết progress -- không chấp nhận được cho production.

Best Practices

# 1. Kiểm tra GPU availability
import torch
print(f"GPU available: {torch.cuda.is_available()}")
print(f"GPU: {torch.cuda.get_device_name(0)}")

# 2. Mount Google Drive để lưu trữ
from google.colab import drive
drive.mount('/content/drive')

# 3. Cài dependencies
!pip install transformers accelerate

# 4. Download model vào Drive (để tái sử dụng)
model_path = "/content/drive/MyDrive/models/my-model"

Quản lý chi phí

GPU không rẻ. Quên tắt pod Runpod qua đêm là mất mấy chục đô. Cần chủ động quản lý.

Runpod

Chiến lượcCách làm
Spot instancesDùng community cloud cho non-critical work
Auto-shutdownSet idle timeout -- tránh trả tiền khi không dùng
Right-size GPURTX 3090 đủ thì đừng lấy A100
Batch processingGom requests lại, maximize GPU utilization

API costs (Claude/OpenAI)

Chiến lượcCách làm
Model nhỏ hơnClaude Haiku cho simple tasks, đừng dùng Opus cho mọi thứ
CacheLưu embeddings lại, đừng generate lại cái đã có
Batch API callsDùng batch endpoints khi available
MonitorSetup billing alerts trước khi nhận bill bất ngờ

Architecture Patterns

Hybrid Architecture

┌──────────────┐     API calls     ┌───────────────┐
│   Railway    │ ───────────────→  │  Claude API   │
│  (Web App)   │                   │  OpenAI API   │
└──────────────┘                   └───────────────┘
       │ Heavy workloads
┌──────────────┐
│   Runpod     │
│  (GPU Pod)   │
└──────────────┘

Tách workloads như thế nào

Giữ trong RailwayChuyển sang Runpod
API routingModel inference
User authBatch embeddings
Database opsCustom model serving
Frontend servingImage/video processing

Ranh giới rõ ràng: Railway xử lý mọi thứ liên quan web và database. Runpod chỉ nhận workloads cần GPU.

Quyết định dùng GPU hay không

Hỏi theo thứ tự, dừng ở câu đầu tiên trả lời "có":

  1. API xử lý được không? (Claude, OpenAI) -> Dùng API, ở lại Railway
  2. Task một lần? -> Google Colab
  3. Task liên tục cần GPU? -> Runpod
  4. Production-critical? -> Runpod với redundancy

Đa số trường hợp dừng ở bước 1. API providers đã đầu tư infrastructure rồi, tận dụng thôi.

Tham khảo nhanh

Mình cần...Platform
Gọi Claude/OpenAIRailway (API calls)
Chạy custom modelRunpod
Prototype với GPUGoogle Colab
Fine-tune modelRunpod hoặc Colab
Batch process embeddingsRunpod
Serve web appRailway

Tài nguyên