Marin Pulumi基础设施即代码:一个Stack管理全部云资源的终极方案

Marin Pulumi基础设施即代码:一个Stack管理全部云资源的终极方案
Marin Pulumi基础设施即代码一个Stack管理全部云资源的终极方案【免费下载链接】marinOpen-source framework for the research and development of foundation models.项目地址: https://gitcode.com/GitHub_Trending/ma/marinMarin 是用于基础模型研究与开发的开源框架其 infra/pulumi/ 目录用Pulumi 基础设施即代码IaC实现了「一个 Stack 管理全部云资源」每个训练集群一个 Stack一条pulumi up就能统一创建和管理 CoreWeave 与 GCP 上的 RBAC、预留 GPU 节点池、Kueue 调度对象、网关入口、DNS、静态 IP、负载均衡和全部 IAM 权限。 为什么基础模型项目需要 IaC训练大模型的基础设施不是几台虚拟机而是几十种异构资源Kubernetes RBAC、按机架预留的裸金属 NodePool、Kueue 队列、Traefik/cert-manager 网关、Cloudflare CNAME、GCP 静态 IP、GCLB/IAP 入口、防火墙规则、镜像仓库、IAM 授权……如果靠控制台手工点击会迅速失控资源没有版本、变更无法审计、新集群复制全靠人肉。Marin 的方案是把这一切写进 infra/pulumi/ 里的 Python 代码并确立一条铁律——Pulumi 是这些资源的唯一属主sole ownerIris 不再为这些资源做任何开通动作它只检查资源是否存在缺失时直接报错提示你用pulumi up修复。见 infra/pulumi/README.md这意味着云上现状永远可以回答一个问题它是否和代码一致️ 一个 Stack、一个集群资源布局速览Stack 文件是每个集群的一个三行指针例如 Pulumi.cw-rno2a.yamlconfig: marin-iac:cluster: cw-rno2a secretsprovider: gcpkms://projects/hai-gcp-models/.../cryptoKeys/marin-iac-key当前共有 5 个 Stack4 个 CoreWeave 集群cw-us-west-04a、cw-us-east-02a、cw-rno2a、cw-us-east-08a其中 08a 是 GB200加 1 个 GCPmarinStack对应 infra/pulumi/Pulumi.yaml 中的项目marin-iac。各文件职责一目了然文件 / 目录职责infra/pulumi/main.pyPulumi 入口调用build_stack()infra/pulumi/src/iac/program.pyStack 声明主逻辑按 provider 分发到 CoreWeave / GCPinfra/pulumi/src/iac/config.pyprovisioning:段的强类型 schema 与校验infra/pulumi/src/iac/coreweave/集群、RBAC、Kueue、Traefik、DNS 组件infra/pulumi/src/iac/gcp/静态 IP、GCLB/IAP、防火墙、镜像仓库、IAMinfra/pulumi/import_resources.py批量纳管线上存量资源的交易文件生成器infra/pulumi/iam_principal.py、infra/pulumi/iam_audit.py加密 IAM 主体管理、密钥批量轮换infra/pulumi/tests/13 个测试文件覆盖 IAM、GCLB、NodePool 等组件 读懂 Stack 声明从 4 行入口到一整个集群入口main.py 只有十几行核心是 program.py 里的build_stack()从 Stack 配置读出marin-iac:cluster即目标集群名加载该集群在 lib/iris/config/ 中已评审的集群配置如lib/iris/config/cw-rno2a.yaml的provisioning:段并用 config.py 做强类型校验——故意不读操作者本地覆盖目录保证生产计划可复现、可审查按 provider 分发CoreWeave 集群声明控制器 RBAC、由scale_groups推导出的预留 NodePoolnodepools.py、Kueue ClusterQueue、Traefik/cert-manager 入口栈与 Cloudflare CNAMEGCPmarin集群声明联邦出口静态 IP、Artifact Registry 拉取镜像、共享 GCLB/IAP 入口和全部仓库托管的 IAM 授权。这套「Stack 只是指针、真相来自已评审集群配置」的设计让新增一个集群的成本降到写一份集群配置 加一个三行 Stack 文件。此外iac包还沉淀了可复用的服务组件iac.gcp.cloud_run被infra/echo、infra/evaldash、infra/grafana复用、iac.iris被infra/ducky、infra/xprof复用和iac.kubernetes.finelog被 infra/finelog 复用使多个基础设施项目共享同一套经过验证的构建块。 日常操作三连preview / up / import先读 diff 再动手的安全变更流cd infra/pulumi pulumi stack select cluster pulumi preview # 先读 diff pulumi up # preview 干净后才执行有一条红线NodePool 的replace或delete绝对不允许放行——那意味着拆除一整个预留裸金属机群。发现破坏性 diff 时停下让代码与现实对齐而不是强推pulumi up见 README.md。一条命令纳管存量资源Marin 遵循 Pulumi 的 Program-first 批量导入流程先在代码里声明资源用 import_resources.py 生成「交易文件」apply时会重新校验文件是否过期、打印 SHA-256 摘要确认并默认启用删除保护——把「接管线上资源」这件高危操作变成一次可审查、可回滚的确定性流程。密钥与身份永不进状态签名密钥、IAP OAuth 密钥等材料被刻意排除在 Pulumi 状态之外README 的 Unsupported 一节IAM 主体邮箱则以 KMS 密文形式存放在 iam_data.yaml 的human-NNN匿名 ID 下配合add-grant/review-grant工作流个人邮箱永远不会以明文出现在公开仓库。️ 状态与密钥GCS KMS 的不对称权限设计状态后端gs://marin-iac-state/us-central1、开启版本控制密钥提供者GCP KMS 密钥marin-iac-key权限不对称——CI 只持有cryptoKeyDecrypter能预览、不能写入执行pulumi up的运维才额外拥有加密权限CI 纪律infra/pulumi/ 的 CI 工作流对每个 Stack并行跑pulumi preview并聚合为一条 PR 评论且永远不执行pulumi up——CI 服务账号本身就只有只读权限制度与权限双重兜底。 这套设施最终支撑什么这些看似琐碎的云资源是 Marin 从数据到模型全流程的地基。Marin 用它训练了 8B、32B 规模的模型见 docs/reports/marin-32b-retro.md并以 Delphi 扩展套件把 3e18 到 1e23 FLOPs 的完整训练曲线公开正是有了 IaC 保证的集群一致性跨集群的联邦调度、Grafana 观测与 GCLB/IAP 安全入口才能稳定运转支撑起这样的训练实验 关键文件速查表项目说明与运维手册infra/pulumi/README.mdStack 主程序infra/pulumi/src/iac/program.py类型化配置 schemainfra/pulumi/src/iac/config.py存量资源导入工具infra/pulumi/import_resources.pyIAM 加密主体与授权声明infra/pulumi/src/iac/gcp/iam_data.yamlGitHub 组织策略子项目独立 Pulumi 项目infra/pulumi/github/共享对象存储桶人工运营刻意排除在 CI 之外infra/buckets/README.md一句话总结Marin 用 Pulumi 把「集群的全部云资源」收敛为一份可评审、可 diff、可回滚的代码——一个 Stack 对应一个集群preview先行、up兜底、存量资源安全纳管这就是多集群基础模型基础设施的可扩展答案。【免费下载链接】marinOpen-source framework for the research and development of foundation models.项目地址: https://gitcode.com/GitHub_Trending/ma/marin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

最新新闻

日新闻

周新闻

月新闻