Marin部署指南:从本地服务器到云端平台的无缝迁移
【免费下载链接】marinOpen-source framework for the research and development of foundation models.项目地址: https://gitcode.com/GitHub_Trending/ma/marin
Marin作为开源的基础模型研发框架,提供了从本地服务器到云端平台的完整部署方案。本指南将帮助你快速掌握Marin的部署技巧,实现从本地GPU环境到云端集群的无缝迁移,让基础模型训练和推理更加高效便捷。
本地GPU环境部署:快速启动基础模型训练
系统环境准备
部署Marin本地环境需要满足以下条件:
- Ubuntu 24.04操作系统
- NVIDIA驱动580或更高版本(支持CUDA 13)
- 已完成基础安装(参考安装指南)
首先验证NVIDIA驱动是否符合要求:
nvidia-smi安装GPU运行时
Marin使用JAX作为核心库,通过以下命令安装GPU支持的运行时:
uv sync --extra=gpu对于DGX Spark等具有统一内存的机器,建议设置内存分配比例:
export XLA_PYTHON_CLIENT_MEM_FRACTION=0.5可以将此配置添加到.bashrc或.zshrc文件中,使其永久生效。
运行本地实验
使用统一教程脚本即可启动训练:
export MARIN_PREFIX=local_store uv run python experiments/tutorials/train_tiny_model.py --device h100x8 --dataset wikitext脚本通过--device参数自动适配不同硬件配置,例如h100x8表示使用8块H100 GPU。设备配置在experiments/tutorials/train_tiny_model.py中定义:
resources = ResourceConfig.with_gpu("H100", count=8, cpu=32, disk="128G", ram="128G") batch_size = 256云端GPU部署:利用集群资源扩展训练能力
云端集群概览
Marin通过Iris调度系统连接到CoreWeave的H100 GPU集群,主要包含以下集群:
| 集群 | 位置 | 加速器配置 |
|---|---|---|
marin | GCP | TPU v4/v5e/v5p/v6e, CPU |
cw-rno2a | CoreWeave, Reno | H100 (8 per node) |
cw-us-east-02a | CoreWeave, US East | H100 (8 per node) |
提交云端GPU任务
使用以下命令提交GPU作业到云端集群:
uv run iris --cluster=marin job run \ --target-cluster cw-rno2a \ --cpu=1 --memory=2G --extra=cpu \ -e WANDB_API_KEY "$WANDB_API_KEY" \ -- python -m experiments.tutorials.train_tiny_model --device h100x8 --dataset wikitext关键参数说明:
--target-cluster:指定GPU集群(如cw-rno2a或cw-us-east-02a)MARIN_PREFIX:云端存储路径,默认使用s3://marin-us-east-02a/marin
资源配置与扩展
在代码中配置GPU资源需求:
from fray.types import ANY_REGION, ResourceConfig ResourceConfig.with_gpu("H100", count=8, cpu=32, disk="128G", ram="128G", regions=[ANY_REGION])支持的GPU配置包括:
- 单GPU:
count=1(8 vCPU,64G内存) - 多GPU:
count=8(32 vCPU,128G内存) - 多节点:增加
replicas参数实现跨节点扩展
监控云端任务
使用以下命令监控任务状态和日志:
uv run iris --cluster=marin job logs -f /<user>/<job-name> uv run iris --cluster=marin job summary /<user>/<job-name>从本地到云端的迁移策略
数据存储迁移
本地存储路径通常设置为:
export MARIN_PREFIX=local_store迁移到云端时,需要使用S3兼容的对象存储:
export MARIN_PREFIX="s3://marin-us-east-02a/scratch/my-experiment"所有训练数据、缓存和输出文件都需要存储在S3路径下,CoreWeave集群无法访问GCP存储(如gs://前缀)。
设备配置调整
本地与云端的设备配置差异主要体现在资源参数上:
本地配置示例:
# 本地8卡H100配置 resources = ResourceConfig.with_gpu("H100", count=8, cpu=32, disk="128G", ram="128G")云端配置示例:
# 云端8卡H100配置,添加区域参数 from fray.types import ANY_REGION resources = ResourceConfig.with_gpu("H100", count=8, cpu=32, disk="128G", ram="128G", regions=[ANY_REGION])训练流程迁移
Marin的统一脚本设计使迁移变得简单,只需修改以下参数:
| 配置项 | 本地环境 | 云端环境 |
|---|---|---|
| 设备参数 | --device h100x8 | --device h100x8 |
| 存储路径 | MARIN_PREFIX=local_store | MARIN_PREFIX=s3://... |
| 提交方式 | 直接运行脚本 | 通过iris job run提交 |
分布式训练架构解析
Marin采用先进的分布式训练架构,支持多设备并行计算。下图展示了2D设备网格的分布式布局:
该架构通过以下方式优化训练效率:
- 数据并行:跨设备拆分训练数据
- 模型并行:将模型层分布到不同设备
- 自动分片:Haliax库自动处理张量分片和通信
常见问题与解决方案
内存管理
问题:GPU内存不足导致训练中断
解决方案:调整内存分配比例
export XLA_PYTHON_CLIENT_MEM_FRACTION=0.5详细优化方法参见HBM优化指南
存储访问
问题:云端任务无法访问本地数据
解决方案:确保所有路径使用S3前缀
export MARIN_PREFIX="s3://marin-us-east-02a/scratch/my-experiment"设备识别
问题:JAX未正确识别GPU设备
解决方案:检查JAX安装和CUDA版本
uv sync --extra=gpu python -c "import jax; print(jax.devices())"总结与下一步
通过本指南,你已经掌握了Marin从本地到云端的部署方法。关键要点包括:
- 本地环境需要NVIDIA驱动580+和JAX GPU运行时
- 云端部署通过Iris提交到CoreWeave的H100集群
- 迁移时重点调整存储路径和资源配置
- 使用统一脚本实现环境无关的训练流程
下一步建议:
- 探索高级训练配置
- 学习资源优化技巧
- 尝试多节点分布式训练
Marin框架的设计理念是简化基础模型的研发流程,无论是本地实验还是大规模云端训练,都能提供一致的用户体验和高效的计算能力。
【免费下载链接】marinOpen-source framework for the research and development of foundation models.项目地址: https://gitcode.com/GitHub_Trending/ma/marin
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考