[ PROMPT_NODE_22500 ]
modal-serverless-gpu
[ SKILL_DOCUMENTATION ]
# Modal 无服务器 GPU
在 Modal 的无服务器 GPU 云平台上运行机器学习工作负载的综合指南。
## 何时使用 Modal
**在以下情况使用 Modal:**
- 运行 GPU 密集型机器学习工作负载,无需管理基础设施
- 将机器学习模型部署为自动扩缩容的 API
- 运行批处理任务(训练、推理、数据处理)
- 需要按秒计费的 GPU 定价,无闲置成本
- 快速原型化机器学习应用
- 运行定时任务(类似 cron 的工作负载)
**主要特性:**
- **无服务器 GPU**:按需提供 T4, L4, A10G, L40S, A100, H100, H200, B200
- **Python 原生**:在 Python 代码中定义基础设施,无需 YAML
- **自动扩缩容**:瞬间扩缩至零或 100+ GPU
- **亚秒级冷启动**:基于 Rust 的基础设施,实现快速容器启动
- **容器缓存**:镜像层缓存,支持快速迭代
- **Web 端点**:将函数部署为 REST API,支持零停机更新
**可替代方案:**
- **RunPod**:用于具有持久状态的长时间运行 Pod
- **Lambda Labs**:用于预留 GPU 实例
- **SkyPilot**:用于多云编排和成本优化
- **Kubernetes**:用于复杂的多服务架构
## 快速入门
### 安装
bash
pip install modal
modal setup # 打开浏览器进行认证
### GPU Hello World
python
import modal
app = modal.App("hello-gpu")
@app.function(gpu="T4")
def gpu_info():
import subprocess
return subprocess.run(["nvidia-smi"], capture_output=True, text=True).stdout
@app.local_entrypoint()
def main():
print(gpu_info.remote())
运行: `modal run hello_gpu.py`
### 基础推理端点
python
import modal
app = modal.App("text-generation")
image = modal.Image.debian_slim().pip_install("transformers", "torch", "accelerate")
@app.cls(gpu="A10G", image=image)
class TextGenerator:
@modal.enter()
def load_model(self):
from transformers import pipeline
self.pipe = pipeline("text-generation", model="gpt2", device=0)
@modal.method()
def generate(self, prompt: str) -> str:
return self.pipe(prompt, max_length=100)[0]["generated_text"]
@app.local_entrypoint()
def main():
print(TextGenerator().generate.remote("Hello, world"))
## 核心概念
### 关键组件
| 组件 | 用途 |
|-----------|---------|
| `App` | 函数和资源的容器 |
| `Function` | 带有计算规格的无服务器函数 |
| `Cls` | 带有生命周期钩子的类函数 |