SuperAPI AI 工具集

modal

部署与运维

查看项目

更新于 10-21 16:21

技能介绍

用途

Modal 是一个无服务器云计算平台,用于按需运行 Python 代码,重点面向 AI/ML 工作负载。适合在云端部署或服务 AI/ML 模型、运行 GPU 加速计算(训练、推理、微调)、创建无服务器 Web API 或端点、并行扩展批处理任务、调度周期性任务(数据管道、重训练、抓取)、为模型权重或数据集提供持久化云存储、在自定义容器环境中运行代码,以及构建作业队列或异步任务处理系统。

主要能力

  • GPU 计算:按需提供 T4、L4、A10、L40S、A100-40GB、A100-80GB、RTX-PRO-6000、H100、H200、B200、B200+ 等 GPU。GPU 以字符串指定(如 gpu="H100"、gpu="H100:4")。每容器最多 8 块 GPU(A10 最多 4 块)。L40S 推荐用于推理。H100/A100 可免费自动升级为 H200/A100-80GB,使用 gpu="H100!" 可阻止自动升级。
  • 无服务器函数:使用 @app.function() 装饰的函数在云端远程运行,支持从零自动扩展到数千容器。
  • 容器镜像:完全用 Python 代码构建容器镜像,推荐使用 uv 安装包,支持 .uv_pip_install()、.pip_install()、.apt_install()、.run_commands()、.run_function()、.add_local_python_source()、.env() 等方法。
  • Volumes 持久化存储:提供分布式持久文件存储,适合写一次读多次的工作负载(模型权重、数据集),支持 CLI 访问与后台自动提交。
  • Secrets:安全地向函数传递凭据,可通过 CLI 或 .env 文件创建。
  • Web 端点:将模型和 API 作为 Web 端点服务,支持 FastAPI、ASGI(Starlette、FastHTML)、WSGI(Flask、Django)、WebSockets。请求体最大 4 GiB,响应大小不限。
  • 定时任务:使用 modal.Cron 或 modal.Period 按计划运行函数。
  • 扩展与并发:自动扩展容器,可配置 max_containers、min_containers、buffer_containers、scaledown_window。使用 .map() 并行处理输入,@modal.concurrent 启用每容器并发请求处理。
  • 资源配�置:可配置 cpu、memory、ephemeral_disk、timeout。默认 0.125 CPU 核心、128 MiB 内存。
  • 类与生命周期钩子:使用 @app.cls 配合 @modal.enter()、@modal.method()、@modal.exit() 处理有状态工作负载。
  • Sandboxes:用于运行不受信任或动态生成的代码(如 AI 智能体输出或代码解释器),是隔离容器,可通过 outbound_cidr_allowlist 限制网络访问。

使用方式

安装:uv pip install modal。认证:优先检查环境中是否已设置 MODAL_TOKEN_ID 和 MODAL_TOKEN_SECRET;若未设置,仅在本地 .env 文件中查找这两个键;若两者均无,则回退到交互式 modal setup 或生成新令牌。CI/CD 或无头环境使用环境变量。Modal 提供免费层,每月 30 美元额度。

核心概念包括 App 与 Functions、容器镜像、GPU 计算、Volumes、Secrets、Web 端点、定时任务、扩展与并发、资源配置、类与生命周期钩子、Sandboxes。

CLI 命令:modal setup(认证)、modal run script.py(运行本地入口点)、modal serve script.py(热重载开发服务器)、modal deploy script.py(生产部署)、modal volume ls/put/get(卷文件管理)、modal secret create/list(密钥管理)、modal app list/stop(应用管理)。

适用场景

  • GPU 模型推理服务
  • 批处理管道
  • 定时数据管道
  • 无服务器 Web API
  • 代码解释器与智能体工具执行
  • 每用户隔离

限制与安全注意事项

  • 凭据:仅需 MODAL_TOKEN_ID 和 MODAL_TOKEN_SECRET 进行认证,不要读取、记录或转发任何其他环境变量或 .env 条目。
  • 子进程/自定义服务器:保持参数列表固定硬编码,切勿从不受信任的用户输入构造子进程或 shell 参数。
  • 不受信任代码:在 modal.Sandbox 中运行,而非普通 Function,并使用 CIDR 允许列表限制网络访问。
  • 版本特定细节可能过时,需对照已安装版本的官方文档确认。
  • 涉及花钱、消耗共享 GPU 或云配额、接触个人或患者数据、或不可撤销的操作前需先询问。
  • 本资料未提供具体价格信息(除免费层每月 30 美元额度外),其他收费细节暂未提供。