用途:Modal 是面向 AI 工作负载的无服务器 Python 计算平台。用 Python 定义容器镜像、函数和资源,远程运行,冷启动可达亚秒级,按秒计费;无需 YAML、Dockerfile 或 Kubernetes,容器、GPU、扩缩容和存储都通过 Python 装饰器配置。常见场景包括 GPU 推理、模型微调训练、沙箱运行不可信或 LLM 生成代码、批处理与 cron 任务、带 GPU 的 HTTP 端点,以及用 .map()/.spawn() 做并行扇出。仅支持 Python。
安装与认证:pip install modal;modal setup 会打开浏览器创建/认证令牌并写入 ~/.modal.toml。CI 或脚本环境可改用 MODAL_TOKEN_ID 和 MODAL_TOKEN_SECRET。
主要能力:用 modal.App 和 @app.function 定义应用与函数;调用方式有 .remote()、.local()、.map()、.starmap()、.for_each()、.spawn()。@app.local_entrypoint() 是 modal run 默认调用的入口,带类型注解的参数会变成 CLI 标志。镜像通过链式方法构建并逐层缓存,如 debian_slim、from_registry、from_dockerfile、pip_install/uv_pip_install、apt_install、env、add_local_dir 等。GPU 在装饰器上用 gpu= 指定,支持 T4、L4、L40S、A10G、A100、H100、H200、B200 及多卡如 gpu="H100:8"。需要昂贵一次性初始化时用 @app.cls() 配合 @modal.enter()/@modal.exit()。Web 端点可用 @modal.fastapi_endpoint()、@modal.asgi_app()、@modal.wsgi_app()、@modal.web_server(port=...)。扩缩容参数包括 min_containers、max_containers、buffer_containers、scaledown_window、timeout、retries,以及 @modal.concurrent 处理 IO 密集任务。存储方面有 Volume、Secret、Dict、Queue;定时任务用 modal.Cron 或 modal.Period;沙箱用 modal.Sandbox 运行任意代码。已部署应用可用 modal.Function.from_name / modal.Cls.from_name 调用。
使用方式:modal run script.py 临时运行一次;modal serve script.py 临时运行并热重载,适合迭代 Web 端点;modal deploy script.py 持久部署。CLI 还包括 modal app list/stop/logs、modal volume、modal secret create、modal shell 等。
限制:仅支持 Python;定时任务只在已部署应用上运行;沙箱需 terminate() 或使用上下文管理器避免容器残留;GPU 数量越大排队越久;版本应严格固定以保证构建可复现。更多参数签名、区域固定、OIDC、代理认证、自定义域名等请查阅 https://modal.com/docs。